[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xkb-data: Help needed for Macintosh keyboards



On Wed, 2006-08-30 at 11:50 +0200, Yves-Alexis Perez wrote:
> >   * If some keys have a different definition, please run
> >       xkbcomp :0
> >     after running the setxkbmap command above, and send the
> generated
> >     server-0.xkb file with explanations of these differences. 
> 
> I'll send this one later when i'll be using my "own" keymap. 

Ok here we go. Attached are the server-0.xkb generated with my "own"
keymap and the diff against a server-0.xkb generated with the keymap
from xkb-data/experimental.

I currently use "Apple" key as Alt and "Alt" key as Mode_Switch but it's
not really an issue. I've modified keymap to use keys mainly like (fr)
OSX but I guess there are some differences between them.

Regards,
-- 
Yves-Alexis
xkb_keymap {
xkb_keycodes "macintosh+aliases(azerty)" {
    minimum = 8;
    maximum = 255;
     <ESC> = 9;
    <AE01> = 10;
    <AE02> = 11;
    <AE03> = 12;
    <AE04> = 13;
    <AE05> = 14;
    <AE06> = 15;
    <AE07> = 16;
    <AE08> = 17;
    <AE09> = 18;
    <AE10> = 19;
    <AE11> = 20;
    <AE12> = 21;
    <BKSP> = 22;
     <TAB> = 23;
    <AD01> = 24;
    <AD02> = 25;
    <AD03> = 26;
    <AD04> = 27;
    <AD05> = 28;
    <AD06> = 29;
    <AD07> = 30;
    <AD08> = 31;
    <AD09> = 32;
    <AD10> = 33;
    <AD11> = 34;
    <AD12> = 35;
    <RTRN> = 36;
    <LCTL> = 37;
    <AC01> = 38;
    <AC02> = 39;
    <AC03> = 40;
    <AC04> = 41;
    <AC05> = 42;
    <AC06> = 43;
    <AC07> = 44;
    <AC08> = 45;
    <AC09> = 46;
    <AC10> = 47;
    <AC11> = 48;
    <TLDE> = 49;
    <LFSH> = 50;
    <BKSL> = 51;
    <AB01> = 52;
    <AB02> = 53;
    <AB03> = 54;
    <AB04> = 55;
    <AB05> = 56;
    <AB06> = 57;
    <AB07> = 58;
    <AB08> = 59;
    <AB09> = 60;
    <AB10> = 61;
    <RTSH> = 62;
    <KPMU> = 63;
    <LALT> = 64;
    <SPCE> = 65;
    <CAPS> = 66;
    <FK01> = 67;
    <FK02> = 68;
    <FK03> = 69;
    <FK04> = 70;
    <FK05> = 71;
    <FK06> = 72;
    <FK07> = 73;
    <FK08> = 74;
    <FK09> = 75;
    <FK10> = 76;
    <NMLK> = 77;
    <SCLK> = 78;
     <KP7> = 79;
     <KP8> = 80;
     <KP9> = 81;
    <KPSU> = 82;
     <KP4> = 83;
     <KP5> = 84;
     <KP6> = 85;
    <KPAD> = 86;
     <KP1> = 87;
     <KP2> = 88;
     <KP3> = 89;
     <KP0> = 90;
    <KPDL> = 91;
    <SYRQ> = 92;
    <MDSW> = 93;
    <LSGT> = 94;
    <FK11> = 95;
    <FK12> = 96;
    <HOME> = 97;
      <UP> = 98;
    <PGUP> = 99;
    <LEFT> = 100;
    <RGHT> = 102;
     <END> = 103;
    <DOWN> = 104;
    <PGDN> = 105;
     <INS> = 106;
    <DELE> = 107;
    <KPEN> = 108;
    <RCTL> = 109;
    <PAUS> = 110;
    <PRSC> = 111;
    <KPDV> = 112;
    <RALT> = 113;
     <BRK> = 114;
    <LWIN> = 115;
    <RWIN> = 116;
    <MENU> = 117;
    <FK16> = 121;
    <FK17> = 122;
    <KPDC> = 123;
    <LVL3> = 124;
     <ALT> = 125;
    <SUPR> = 127;
    <HYPR> = 128;
    <XFER> = 129;
     <I02> = 130;
    <NFER> = 131;
     <I04> = 132;
    <AE13> = 133;
     <I06> = 134;
     <I07> = 135;
     <I08> = 136;
     <I09> = 137;
     <I0A> = 138;
     <I0B> = 139;
     <I0C> = 140;
     <I0D> = 141;
     <I0E> = 142;
     <I0F> = 143;
     <I10> = 144;
     <I11> = 145;
     <I12> = 146;
     <I13> = 147;
     <I14> = 148;
     <I15> = 149;
     <I16> = 150;
     <I17> = 151;
     <I18> = 152;
     <I19> = 153;
     <I1A> = 154;
     <I1B> = 155;
    <META> = 156;
    <KPEQ> = 157;
     <I1E> = 158;
     <I1F> = 159;
     <I20> = 160;
     <I21> = 161;
     <I22> = 162;
     <I23> = 163;
     <I24> = 164;
     <I25> = 165;
     <I26> = 166;
     <I27> = 167;
     <I28> = 168;
     <I29> = 169;
     <K5A> = 170;
     <I2B> = 171;
     <I2C> = 172;
     <I2D> = 173;
     <I2E> = 174;
     <I2F> = 175;
     <I30> = 176;
     <I31> = 177;
     <I32> = 178;
     <I33> = 179;
     <I34> = 180;
     <K5B> = 181;
    <FK13> = 182;
    <FK14> = 183;
    <FK15> = 184;
     <I39> = 185;
     <I3A> = 186;
     <I3B> = 187;
     <I3C> = 188;
     <K62> = 189;
     <K63> = 190;
     <K64> = 191;
     <K65> = 192;
     <K66> = 193;
     <I42> = 194;
     <I43> = 195;
     <I44> = 196;
     <I45> = 197;
     <K67> = 198;
     <K68> = 199;
     <K69> = 200;
     <K6A> = 201;
     <I4A> = 202;
     <K6B> = 203;
     <K6C> = 204;
     <K6D> = 205;
     <K6E> = 206;
     <K6F> = 207;
    <HKTG> = 208;
     <K71> = 209;
     <K72> = 210;
    <AB11> = 211;
     <I54> = 212;
     <I55> = 213;
     <I56> = 214;
     <I57> = 215;
     <I58> = 216;
     <I59> = 217;
     <I5A> = 218;
     <K74> = 219;
     <K75> = 220;
     <K76> = 221;
     <I5E> = 222;
     <I5F> = 223;
     <I60> = 224;
     <I61> = 225;
     <I62> = 226;
     <I63> = 227;
     <I64> = 228;
     <I65> = 229;
     <I66> = 230;
     <I67> = 231;
     <I68> = 232;
     <I69> = 233;
     <I6A> = 234;
     <I6B> = 235;
     <I6C> = 236;
     <I6D> = 237;
     <I6E> = 238;
     <I6F> = 239;
     <I70> = 240;
     <I71> = 241;
     <I72> = 242;
     <I73> = 243;
     <I74> = 244;
     <I75> = 245;
     <I76> = 246;
     <I77> = 247;
     <I78> = 248;
     <I79> = 249;
     <I7A> = 250;
     <I7B> = 251;
     <I7C> = 252;
     <I7D> = 253;
     <I7E> = 254;
     <I7F> = 255;
    indicator 1 = "Caps Lock";
    indicator 2 = "Num Lock";
    indicator 3 = "Scroll Lock";
    virtual indicator 4 = "Shift Lock";
    virtual indicator 5 = "Group 2";
    virtual indicator 6 = "Mouse Keys";
    alias <HZTG> = <TLDE>;
    alias <HNGL> = <FK16>;
    alias <HJCV> = <FK17>;
    alias  <I01> = <XFER>;
    alias  <I03> = <NFER>;
    alias  <I05> = <AE13>;
    alias  <K5C> = <KPEQ>;
    alias  <K70> = <HKTG>;
    alias  <K73> = <AB11>;
    alias <LMTA> = <LWIN>;
    alias <RMTA> = <RWIN>;
    alias <COMP> = <MENU>;
    alias <POWR> =  <I0C>;
    alias <MUTE> =  <I0D>;
    alias <VOL-> =  <I0E>;
    alias <VOL+> =  <I0F>;
    alias <HELP> =  <I10>;
    alias <STOP> =  <I11>;
    alias <AGAI> =  <I12>;
    alias <PROP> =  <I13>;
    alias <UNDO> =  <I14>;
    alias <FRNT> =  <I15>;
    alias <COPY> =  <I16>;
    alias <OPEN> =  <I17>;
    alias <PAST> =  <I18>;
    alias <FIND> =  <I19>;
    alias  <CUT> =  <I1A>;
    alias <ALGR> = <RALT>;
    alias <LatA> = <AD01>;
    alias <LatZ> = <AD02>;
    alias <LatE> = <AD03>;
    alias <LatR> = <AD04>;
    alias <LatT> = <AD05>;
    alias <LatY> = <AD06>;
    alias <LatU> = <AD07>;
    alias <LatI> = <AD08>;
    alias <LatO> = <AD09>;
    alias <LatP> = <AD10>;
    alias <LatQ> = <AC01>;
    alias <LatS> = <AC02>;
    alias <LatD> = <AC03>;
    alias <LatF> = <AC04>;
    alias <LatG> = <AC05>;
    alias <LatH> = <AC06>;
    alias <LatJ> = <AC07>;
    alias <LatK> = <AC08>;
    alias <LatL> = <AC09>;
    alias <LatM> = <AC10>;
    alias <LatW> = <AB01>;
    alias <LatX> = <AB02>;
    alias <LatC> = <AB03>;
    alias <LatV> = <AB04>;
    alias <LatB> = <AB05>;
    alias <LatN> = <AB06>;
};

xkb_types "complete" {

    virtual_modifiers NumLock,Alt,LevelThree,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;

    type "ONE_LEVEL" {
        modifiers= none;
        level_name[Level1]= "Any";
    };
    type "TWO_LEVEL" {
        modifiers= Shift;
        map[Shift]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
    };
    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    type "KEYPAD" {
        modifiers= Shift+NumLock;
        map[Shift]= Level2;
        map[NumLock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
    };
    type "SHIFT+ALT" {
        modifiers= Shift+Alt;
        map[Shift+Alt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift+Alt";
    };
    type "PC_BREAK" {
        modifiers= Control;
        map[Control]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Control";
    };
    type "PC_ALT_LEVEL2" {
        modifiers= Alt;
        map[Alt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Alt";
    };
    type "PC_SYSRQ" {
        modifiers= Alt+LevelThree;
        map[Alt]= Level2;
        map[LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Alt";
        level_name[Level3]= "Level3";
    };
    type "CTRL+ALT" {
        modifiers= Control+Alt;
        map[Control+Alt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Ctrl+Alt";
    };
    type "THREE_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Level3";
    };
    type "EIGHT_LEVEL" {
        modifiers= Shift+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "EIGHT_LEVEL_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level4;
        map[Shift+Lock+LevelThree]= Level3;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[Lock+LevelFive]= Level6;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        map[Lock+LevelThree+LevelFive]= Level8;
        map[Shift+Lock+LevelThree+LevelFive]= Level7;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "EIGHT_LEVEL_SEMIALPHABETIC" {
        modifiers= Shift+Lock+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level4;
        preserve[Shift+Lock+LevelThree]= Lock;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[Lock+LevelFive]= Level6;
        preserve[Lock+LevelFive]= Lock;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        map[Lock+LevelThree+LevelFive]= Level7;
        preserve[Lock+LevelThree+LevelFive]= Lock;
        map[Shift+Lock+LevelThree+LevelFive]= Level8;
        preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
        map[Shift+Lock+LevelFive]= Level1;
        preserve[Shift+Lock+LevelFive]= Lock;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "FOUR_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level4;
        map[Shift+Lock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_SEMIALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level4;
        preserve[Shift+Lock+LevelThree]= Lock;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_KEYPAD" {
        modifiers= Shift+NumLock+LevelThree;
        map[Shift]= Level2;
        map[NumLock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[NumLock+LevelThree]= Level4;
        map[Shift+NumLock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Alt Number";
    };
    type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level4;
        preserve[Lock]= Lock;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "AltGr Base";
        level_name[Level4]= "Shift AltGr";
    };
};

xkb_compatibility "complete" {

    virtual_modifiers NumLock,Alt,LevelThree,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;

    interpret.useModMapMods= AnyLevel;
    interpret.repeat= False;
    interpret.locking= False;
    interpret ISO_Level2_Latch+Exactly(Shift) {
        useModMapMods=level1;
        action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
    };
    interpret Shift_Lock+AnyOf(Shift+Lock) {
        action= LockMods(modifiers=Shift);
    };
    interpret Num_Lock+AnyOf(all) {
        virtualModifier= NumLock;
        action= LockMods(modifiers=NumLock);
    };
    interpret ISO_Lock+AnyOf(all) {
        action= ISOLock(modifiers=modMapMods,affect=all);
    };
    interpret ISO_Level3_Shift+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= SetMods(modifiers=LevelThree,clearLocks);
    };
    interpret ISO_Level3_Latch+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
    };
    interpret ISO_Level3_Lock+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= LockMods(modifiers=LevelThree);
    };
    interpret Alt_L+AnyOf(all) {
        virtualModifier= Alt;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Alt_R+AnyOf(all) {
        virtualModifier= Alt;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Meta_L+AnyOf(all) {
        virtualModifier= Meta;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Meta_R+AnyOf(all) {
        virtualModifier= Meta;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Super_L+AnyOf(all) {
        virtualModifier= Super;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Super_R+AnyOf(all) {
        virtualModifier= Super;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Hyper_L+AnyOf(all) {
        virtualModifier= Hyper;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Hyper_R+AnyOf(all) {
        virtualModifier= Hyper;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Scroll_Lock+AnyOf(all) {
        virtualModifier= ScrollLock;
        action= LockMods(modifiers=modMapMods);
    };
    interpret 0xfe11+AnyOf(all) {
        virtualModifier= LevelFive;
        useModMapMods=level1;
        action= SetMods(modifiers=LevelFive,clearLocks);
    };
    interpret 0xfe12+AnyOf(all) {
        virtualModifier= LevelFive;
        action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
    };
    interpret 0xfe13+AnyOf(all) {
        virtualModifier= LevelFive;
        action= LockMods(modifiers=LevelFive);
    };
    interpret Mode_switch+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= SetGroup(group=+1);
    };
    interpret ISO_Level3_Shift+AnyOfOrNone(all) {
        action= SetMods(modifiers=LevelThree,clearLocks);
    };
    interpret ISO_Level3_Latch+AnyOfOrNone(all) {
        action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
    };
    interpret ISO_Level3_Lock+AnyOfOrNone(all) {
        action= LockMods(modifiers=LevelThree);
    };
    interpret ISO_Group_Latch+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LatchGroup(group=2);
    };
    interpret ISO_Next_Group+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LockGroup(group=+1);
    };
    interpret ISO_Prev_Group+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LockGroup(group=-1);
    };
    interpret ISO_First_Group+AnyOfOrNone(all) {
        action= LockGroup(group=1);
    };
    interpret ISO_Last_Group+AnyOfOrNone(all) {
        action= LockGroup(group=2);
    };
    interpret KP_1+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret KP_End+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret KP_2+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=+1);
    };
    interpret KP_Down+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=+1);
    };
    interpret KP_3+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret KP_Next+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret KP_4+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+0);
    };
    interpret KP_Left+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+0);
    };
    interpret KP_6+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+0);
    };
    interpret KP_Right+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+0);
    };
    interpret KP_7+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret KP_Home+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret KP_8+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=-1);
    };
    interpret KP_Up+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=-1);
    };
    interpret KP_9+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret KP_Prior+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret KP_5+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret KP_Begin+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret KP_F2+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret KP_Divide+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret KP_F3+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret KP_Multiply+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret KP_F4+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=3);
    };
    interpret KP_Subtract+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=3);
    };
    interpret KP_Separator+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default,count=2);
    };
    interpret KP_Add+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default,count=2);
    };
    interpret KP_0+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=lock);
    };
    interpret KP_Insert+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=lock);
    };
    interpret KP_Decimal+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=unlock);
    };
    interpret KP_Delete+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=unlock);
    };
    interpret F25+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret F26+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret F27+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret F29+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret F31+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret F33+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret F35+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
        action= PtrBtn(button=default);
    };
    interpret Pointer_Button1+AnyOfOrNone(all) {
        action= PtrBtn(button=1);
    };
    interpret Pointer_Button2+AnyOfOrNone(all) {
        action= PtrBtn(button=2);
    };
    interpret Pointer_Button3+AnyOfOrNone(all) {
        action= PtrBtn(button=3);
    };
    interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
        action= PtrBtn(button=default,count=2);
    };
    interpret Pointer_DblClick1+AnyOfOrNone(all) {
        action= PtrBtn(button=1,count=2);
    };
    interpret Pointer_DblClick2+AnyOfOrNone(all) {
        action= PtrBtn(button=2,count=2);
    };
    interpret Pointer_DblClick3+AnyOfOrNone(all) {
        action= PtrBtn(button=3,count=2);
    };
    interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
        action= LockPtrBtn(button=default,affect=both);
    };
    interpret Pointer_Drag1+AnyOfOrNone(all) {
        action= LockPtrBtn(button=1,affect=both);
    };
    interpret Pointer_Drag2+AnyOfOrNone(all) {
        action= LockPtrBtn(button=2,affect=both);
    };
    interpret Pointer_Drag3+AnyOfOrNone(all) {
        action= LockPtrBtn(button=3,affect=both);
    };
    interpret Pointer_EnableKeys+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeys);
    };
    interpret Pointer_Accelerate+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeysAccel);
    };
    interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
        action= SetPtrDflt(affect=button,button=+1);
    };
    interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
        action= SetPtrDflt(affect=button,button=-1);
    };
    interpret AccessX_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AccessXKeys);
    };
    interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AccessXFeedback);
    };
    interpret RepeatKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=RepeatKeys);
    };
    interpret SlowKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=SlowKeys);
    };
    interpret BounceKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=BounceKeys);
    };
    interpret StickyKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=StickyKeys);
    };
    interpret MouseKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeys);
    };
    interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeysAccel);
    };
    interpret Overlay1_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay1);
    };
    interpret Overlay2_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay2);
    };
    interpret AudibleBell_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AudibleBell);
    };
    interpret Terminate_Server+AnyOfOrNone(all) {
        action= Terminate();
    };
    interpret Alt_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Alt,clearLocks);
    };
    interpret Alt_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Alt,clearLocks);
    };
    interpret Meta_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Meta,clearLocks);
    };
    interpret Meta_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Alt,clearLocks);
    };
    interpret Super_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Super,clearLocks);
    };
    interpret Super_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Super,clearLocks);
    };
    interpret Hyper_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Hyper,clearLocks);
    };
    interpret Hyper_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Hyper,clearLocks);
    };
    interpret XF86_Switch_VT_1+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=1,!same);
    };
    interpret XF86_Switch_VT_2+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=2,!same);
    };
    interpret XF86_Switch_VT_3+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=3,!same);
    };
    interpret XF86_Switch_VT_4+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=4,!same);
    };
    interpret XF86_Switch_VT_5+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=5,!same);
    };
    interpret XF86_Switch_VT_6+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=6,!same);
    };
    interpret XF86_Switch_VT_7+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=7,!same);
    };
    interpret XF86_Switch_VT_8+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=8,!same);
    };
    interpret XF86_Switch_VT_9+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=9,!same);
    };
    interpret XF86_Switch_VT_10+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=10,!same);
    };
    interpret XF86_Switch_VT_11+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=11,!same);
    };
    interpret XF86_Switch_VT_12+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=12,!same);
    };
    interpret XF86_Ungrab+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x55,data[1]=0x6e,data[2]=0x67,data[3]=0x72,data[4]=0x61,data[5]=0x62,data[6]=0x00);
    };
    interpret XF86_ClearGrab+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x43,data[1]=0x6c,data[2]=0x73,data[3]=0x47,data[4]=0x72,data[5]=0x62,data[6]=0x00);
    };
    interpret XF86_Next_VMode+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
    };
    interpret XF86_Prev_VMode+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
    };
    interpret 0xfe11+AnyOfOrNone(all) {
        action= SetMods(modifiers=LevelFive,clearLocks);
    };
    interpret 0xfe12+AnyOfOrNone(all) {
        action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
    };
    interpret 0xfe13+AnyOfOrNone(all) {
        action= LockMods(modifiers=LevelFive);
    };
    interpret Any+Exactly(Lock) {
        action= LockMods(modifiers=Lock);
    };
    interpret Any+AnyOf(all) {
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    indicator "Caps Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Lock;
    };
    indicator "Num Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= NumLock;
    };
    indicator "Scroll Lock" {
        whichModState= locked;
        modifiers= ScrollLock;
    };
    indicator "Shift Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Shift;
    };
    indicator "Group 2" {
        !allowExplicit;
        groups= 0xfe;
    };
    indicator "Mouse Keys" {
        indicatorDrivesKeyboard;
        controls= mouseKeys;
    };
};

xkb_symbols "pc(pc105)+macintosh_vndr/fr" {

    name[group1]="FR-1";

    key  <ESC> {         [          Escape ] };
    key <AE01> {
        symbols[Group1]= [       ampersand,               1 ],
        symbols[Group2]= [      dead_acute,      dead_acute ]
    };
    key <AE02> {
        type[group2]= "ALPHABETIC",
        symbols[Group1]= [          eacute,               2 ],
        symbols[Group2]= [      ediaeresis,          Eacute ]
    };
    key <AE03> {         [        quotedbl,               3 ] };
    key <AE04> {
        symbols[Group1]= [      apostrophe,               4 ],
        symbols[Group2]= [           grave ]
    };
    key <AE05> {
        symbols[Group1]= [       parenleft,               5 ],
        symbols[Group2]= [       braceleft,     bracketleft ]
    };
    key <AE06> {
        symbols[Group1]= [         section,               6 ],
        symbols[Group2]= [       paragraph,           aring ]
    };
    key <AE07> {
        symbols[Group1]= [          egrave,               7 ],
        symbols[Group2]= [   guillemotleft,  guillemotright ]
    };
    key <AE08> {
        symbols[Group1]= [          exclam,               8 ],
        symbols[Group2]= [      exclamdown,     Ucircumflex ]
    };
    key <AE09> {
        symbols[Group1]= [        ccedilla,               9 ],
        symbols[Group2]= [        Ccedilla,          Aacute ]
    };
    key <AE10> {
        type[group2]= "ALPHABETIC",
        symbols[Group1]= [          agrave,               0 ],
        symbols[Group2]= [          oslash,          Oslash ]
    };
    key <AE11> {
        symbols[Group1]= [      parenright,          degree ],
        symbols[Group2]= [      braceright,    bracketright ]
    };
    key <AE12> {
        symbols[Group1]= [           minus,      underscore ],
        symbols[Group2]= [          emdash,          endash ]
    };
    key <BKSP> {
        type= "CTRL+ALT",
        symbols[Group1]= [       BackSpace, Terminate_Server ]
    };
    key  <TAB> {         [             Tab,    ISO_Left_Tab ] };
    key <AD01> {
        type= "ALPHABETIC",
        symbols[Group1]= [               a,               A ],
        symbols[Group2]= [              ae,              AE ]
    };
    key <AD02> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               z,               Z ],
        symbols[Group2]= [     Acircumflex,           Aring ]
    };
    key <AD03> {
        type= "ALPHABETIC",
        symbols[Group1]= [               e,               E ],
        symbols[Group2]= [     ecircumflex,     Ecircumflex ]
    };
    key <AD04> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               r,               R ],
        symbols[Group2]= [      registered,        currency ]
    };
    key <AD05> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               t,               T ],
        symbols[Group2]= [      VoidSymbol,       trademark ]
    };
    key <AD06> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               y,               Y ],
        symbols[Group2]= [          Uacute,      ydiaeresis ]
    };
    key <AD07> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               u,               U ],
        symbols[Group2]= [      VoidSymbol,     ordfeminine ]
    };
    key <AD08> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               i,               I ],
        symbols[Group2]= [     icircumflex,      idiaeresis ]
    };
    key <AD09> {
        type= "ALPHABETIC",
        symbols[Group1]= [               o,               O ],
        symbols[Group2]= [              oe,              OE ]
    };
    key <AD10> {
        type= "ALPHABETIC",
        symbols[Group1]= [               p,               P ],
        symbols[Group2]= [        Greek_pi,        Greek_PI ]
    };
    key <AD11> {
        type[group2]= "ALPHABETIC",
        symbols[Group1]= [ dead_circumflex,  dead_diaeresis ],
        symbols[Group2]= [     ocircumflex,     Ocircumflex ]
    };
    key <AD12> {
        symbols[Group1]= [          dollar,        asterisk ],
        symbols[Group2]= [        EuroSign,             yen ]
    };
    key <RTRN> {
        symbols[Group1]= [          Return,          Return ],
        symbols[Group2]= [          hyphen,          hyphen ]
    };
    key <LCTL> {         [       Control_L ] };
    key <AC01> {
        type= "ALPHABETIC",
        symbols[Group1]= [               q,               Q ],
        symbols[Group2]= [     Greek_omega,     Greek_OMEGA ]
    };
    key <AC02> {
        type= "ALPHABETIC",
        symbols[Group1]= [               s,               S ],
        symbols[Group2]= [     Greek_sigma,     Greek_SIGMA ]
    };
    key <AC03> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               d,               D ],
        symbols[Group2]= [        NoSymbol,     Greek_DELTA ]
    };
    key <AC04> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               f,               F ],
        symbols[Group2]= [               f,  periodcentered ]
    };
    key <AC05> {
        type= "ALPHABETIC",
        symbols[Group1]= [               g,               G ]
    };
    key <AC06> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               h,               H ],
        symbols[Group2]= [          Igrave,     Icircumflex ]
    };
    key <AC07> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               j,               J ],
        symbols[Group2]= [      Idiaeresis,          Iacute ]
    };
    key <AC08> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               k,               K ],
        symbols[Group2]= [          Egrave,      Ediaeresis ]
    };
    key <AC09> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               l,               L ],
        symbols[Group2]= [         notsign,             bar ]
    };
    key <AC10> {
        type= "ALPHABETIC",
        symbols[Group1]= [               m,               M ],
        symbols[Group2]= [              mu,          Oacute ]
    };
    key <AC11> {
        symbols[Group1]= [          ugrave,         percent ],
        symbols[Group2]= [          Ugrave,     ucircumflex ]
    };
    key <TLDE> {         [            less,         greater ] };
    key <LFSH> {         [         Shift_L ] };
    key <BKSL> {
        symbols[Group1]= [      dead_grave,        sterling ],
        symbols[Group2]= [              at,      numbersign ]
    };
    key <AB01> {
        type= "ALPHABETIC",
        symbols[Group1]= [               w,               W ]
    };
    key <AB02> {
        type= "ALPHABETIC",
        symbols[Group1]= [               x,               X ]
    };
    key <AB03> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               c,               C ],
        symbols[Group2]= [       copyright,            cent ]
    };
    key <AB04> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               v,               V ],
        symbols[Group2]= [         diamond,     leftradical ]
    };
    key <AB05> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               b,               B ],
        symbols[Group2]= [          ssharp ]
    };
    key <AB06> {
        type[group1]= "ALPHABETIC",
        symbols[Group1]= [               n,               N ],
        symbols[Group2]= [      dead_tilde,      asciitilde ]
    };
    key <AB07> {
        symbols[Group1]= [           comma,        question ],
        symbols[Group2]= [              at,    questiondown ]
    };
    key <AB08> {         [       semicolon,          period ] };
    key <AB09> {
        symbols[Group1]= [           colon,           slash ],
        symbols[Group2]= [        division,       backslash ]
    };
    key <AB10> {
        symbols[Group1]= [           equal,            plus ],
        symbols[Group2]= [          macron,       plusminus ]
    };
    key <RTSH> {         [         Shift_R ] };
    key <KPMU> {
        type= "CTRL+ALT",
        symbols[Group1]= [     KP_Multiply,  XF86_ClearGrab ]
    };
    key <LALT> {         [     Mode_switch,     Mode_switch ] };
    key <SPCE> {         [           space ] };
    key <CAPS> {         [       Caps_Lock ] };
    key <FK01> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F1, XF86_Switch_VT_1 ]
    };
    key <FK02> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F2, XF86_Switch_VT_2 ]
    };
    key <FK03> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F3, XF86_Switch_VT_3 ]
    };
    key <FK04> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F4, XF86_Switch_VT_4 ]
    };
    key <FK05> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F5, XF86_Switch_VT_5 ]
    };
    key <FK06> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F6, XF86_Switch_VT_6 ]
    };
    key <FK07> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F7, XF86_Switch_VT_7 ]
    };
    key <FK08> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F8, XF86_Switch_VT_8 ]
    };
    key <FK09> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F9, XF86_Switch_VT_9 ]
    };
    key <FK10> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F10, XF86_Switch_VT_10 ]
    };
    key <NMLK> {         [        Num_Lock, Pointer_EnableKeys ] };
    key <SCLK> {         [     Scroll_Lock ] };
    key  <KP7> {         [         KP_Home,            KP_7 ] };
    key  <KP8> {         [           KP_Up,            KP_8 ] };
    key  <KP9> {         [        KP_Prior,            KP_9 ] };
    key <KPSU> {
        type= "CTRL+ALT",
        symbols[Group1]= [     KP_Subtract, XF86_Prev_VMode ]
    };
    key  <KP4> {         [         KP_Left,            KP_4 ] };
    key  <KP5> {         [        KP_Begin,            KP_5 ] };
    key  <KP6> {         [        KP_Right,            KP_6 ] };
    key <KPAD> {
        type= "CTRL+ALT",
        symbols[Group1]= [          KP_Add, XF86_Next_VMode ]
    };
    key  <KP1> {         [          KP_End,            KP_1 ] };
    key  <KP2> {         [         KP_Down,            KP_2 ] };
    key  <KP3> {         [         KP_Next,            KP_3 ] };
    key  <KP0> {         [       KP_Insert,            KP_0 ] };
    key <KPDL> {         [    KP_Separator,       KP_Delete ] };
    key <MDSW> {         [     Mode_switch ] };
    key <LSGT> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              at,      numbersign,             bar,       brokenbar ],
        symbols[Group2]= [  periodcentered ]
    };
    key <FK11> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F11, XF86_Switch_VT_11 ]
    };
    key <FK12> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F12, XF86_Switch_VT_12 ]
    };
    key <HOME> {         [            Home ] };
    key   <UP> {         [              Up ] };
    key <PGUP> {         [           Prior ] };
    key <LEFT> {         [            Left ] };
    key <RGHT> {         [           Right ] };
    key  <END> {         [             End ] };
    key <DOWN> {         [            Down ] };
    key <PGDN> {         [            Next ] };
    key  <INS> {         [          Insert ] };
    key <DELE> {         [          Delete ] };
    key <KPEN> {         [        KP_Enter ] };
    key <RCTL> {         [       Control_R ] };
    key <PAUS> {
        type= "PC_BREAK",
        symbols[Group1]= [           Pause,           Break ]
    };
    key <PRSC> {
        type= "PC_SYSRQ",
        symbols[Group1]= [           Print,         Sys_Req,        NoSymbol ]
    };
    key <KPDV> {
        type= "CTRL+ALT",
        symbols[Group1]= [       KP_Divide,     XF86_Ungrab ]
    };
    key <RALT> {         [           Alt_R,          Meta_R ] };
    key <LWIN> {         [           Alt_L,           Alt_L ] };
    key <RWIN> {         [          Meta_R ] };
    key <MENU> {         [            Menu ] };
    key <LVL3> {         [ ISO_Level3_Shift ] };
    key  <ALT> {         [        NoSymbol,           Alt_L ] };
    key <SUPR> {         [        NoSymbol,         Super_L ] };
    key <HYPR> {         [        NoSymbol,         Hyper_L ] };
    key <META> {         [        NoSymbol,          Meta_L ] };
    key <KPEQ> {         [        KP_Equal ] };
    modifier_map Control { <LCTL> };
    modifier_map Shift { <LFSH> };
    modifier_map Shift { <RTSH> };
    modifier_map Mod1 { <LALT> };
    modifier_map Mod3 { <LALT> };
    modifier_map Lock { <CAPS> };
    modifier_map Mod2 { <NMLK> };
    modifier_map Mod5 { <MDSW> };
    modifier_map Control { <RCTL> };
    modifier_map Mod1 { <RALT> };
    modifier_map Mod1 { <LWIN> };
    modifier_map Mod2 { <RWIN> };
    modifier_map Mod5 { <LVL3> };
    modifier_map Mod1 { <ALT> };
    modifier_map Mod4 { <SUPR> };
    modifier_map Mod4 { <HYPR> };
    modifier_map Mod1 { <META> };
    modifier_map Mod2 { <META> };
};

xkb_geometry "macintosh(macintosh)" {

    width=       475;
    height=      194;

    baseColor=   "white";
    labelColor=  "black";
    xfont=       "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
    description= "Apple Extended Keyboard II";

    shape "NORM" {
        corner= 1,
        { [  18,  18 ] },
        { [   2,   1 ], [  16,  17 ] }
    };
    shape "TLDE" {
        corner= 1,
        { [  23,  18 ] },
        { [   2,   1 ], [  21,  17 ] }
    };
    shape "BKSP" {
        corner= 1,
        { [  33,  18 ] },
        { [   2,   1 ], [  31,  17 ] }
    };
    shape "TAB" {
        corner= 1,
        { [  33,  18 ] },
        { [   2,   1 ], [  31,  17 ] }
    };
    shape "RTRN" {
        corner= 1,
        { [   0,   0 ], [  23,   0 ], [  23,  37 ], [   4,  37 ],
          [   4,  18 ], [   0,  18 ] },
        { [   2,   1 ], [  21,   1 ], [  21,  36 ], [   6,  36 ],
          [   6,  17 ], [   2,  17 ] }
    };
    shape "CAPS" {
        corner= 1,
        { [  37,  18 ] },
        { [   2,   1 ], [  35,  17 ] }
    };
    shape "LCTL" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  17 ] }
    };
    shape "LALT" {
        corner= 1,
        { [  22,  18 ] },
        { [   2,   1 ], [  20,  17 ] }
    };
    shape "LMTA" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  17 ] }
    };
    shape "LFSH" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  17 ] }
    };
    shape "RCTL" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  17 ] }
    };
    shape "RALT" {
        corner= 1,
        { [  22,  18 ] },
        { [   2,   1 ], [  20,  17 ] }
    };
    shape "RMTA" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  17 ] }
    };
    shape "RTSH" {
        corner= 1,
        { [  47,  18 ] },
        { [   2,   1 ], [  45,  17 ] }
    };
    shape "SPCE" {
        corner= 1,
        { [ 123,  18 ] },
        { [   2,   1 ], [ 121,  17 ] }
    };
    shape "KP0" {
        corner= 1,
        { [  37,  18 ] },
        { [   2,   1 ], [  35,  17 ] }
    };
    shape "KPEN" {
        corner= 1,
        { [  18,  37 ] },
        { [   2,   1 ], [  16,  36 ] }
    };
    shape "AAPL" {
        corner= 1,
        { [   0,   0 ], [  18,   0 ], [  18,  18 ], [   0,  18 ] },
        { [   1,   1 ], [  17,   1 ], [  17,  17 ], [   1,  17 ] },
        { [   8,   5 ], [   8,  12 ], [   2,   9 ] }
    };
    shape "LEDS" { { [  55,  19 ] } };
    shape "LED" { { [   8,   2 ] } };
    section "Function" {
        key.color= "white";
        priority=  7;
        top=       48;
        left=      19;
        width=     438;
        height=    19;
        row {
            top=  1;
            left= 1;
            keys {
                {  <ESC>, "NORM",   1 }, { <FK01>, "NORM",  20 },
                { <FK02>, "NORM",   1 }, { <FK03>, "NORM",   1 },
                { <FK04>, "NORM",   1 }, { <FK05>, "NORM",  11 },
                { <FK06>, "NORM",   1 }, { <FK07>, "NORM",   1 },
                { <FK08>, "NORM",   1 }, { <FK09>, "NORM",  11 },
                { <FK10>, "NORM",   1 }, { <FK11>, "NORM",   1 },
                { <FK12>, "NORM",   1 }, { <PRSC>, "NORM",  10 },
                { <SCLK>, "NORM",   1 }, { <PAUS>, "NORM",   1 },
                {  <I5E>, "AAPL",  67 }
            };
        };
    }; // End of "Function" section

    section "Alpha" {
        key.color= "white";
        priority=  8;
        top=       87;
        left=      19;
        width=     287;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <TLDE>, "TLDE",   1 }, { <AE01>, "NORM",   1 },
                { <AE02>, "NORM",   1 }, { <AE03>, "NORM",   1 },
                { <AE04>, "NORM",   1 }, { <AE05>, "NORM",   1 },
                { <AE06>, "NORM",   1 }, { <AE07>, "NORM",   1 },
                { <AE08>, "NORM",   1 }, { <AE09>, "NORM",   1 },
                { <AE10>, "NORM",   1 }, { <AE11>, "NORM",   1 },
                { <AE12>, "NORM",   1 }, { <BKSP>, "BKSP",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <TAB>, "TAB",   1 }, { <AD01>, "NORM",   1 },
                { <AD02>, "NORM",   1 }, { <AD03>, "NORM",   1 },
                { <AD04>, "NORM",   1 }, { <AD05>, "NORM",   1 },
                { <AD06>, "NORM",   1 }, { <AD07>, "NORM",   1 },
                { <AD08>, "NORM",   1 }, { <AD09>, "NORM",   1 },
                { <AD10>, "NORM",   1 }, { <AD11>, "NORM",   1 },
                { <AD12>, "NORM",   1 }, { <RTRN>, "RTRN",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                { <CAPS>, "CAPS",   1 }, { <AC01>, "NORM",   1 },
                { <AC02>, "NORM",   1 }, { <AC03>, "NORM",   1 },
                { <AC04>, "NORM",   1 }, { <AC05>, "NORM",   1 },
                { <AC06>, "NORM",   1 }, { <AC07>, "NORM",   1 },
                { <AC08>, "NORM",   1 }, { <AC09>, "NORM",   1 },
                { <AC10>, "NORM",   1 }, { <AC11>, "NORM",   1 },
                { <BKSL>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                { <LFSH>, "LFSH",   1 }, { <LSGT>, "NORM",   1 },
                { <AB01>, "NORM",   1 }, { <AB02>, "NORM",   1 },
                { <AB03>, "NORM",   1 }, { <AB04>, "NORM",   1 },
                { <AB05>, "NORM",   1 }, { <AB06>, "NORM",   1 },
                { <AB07>, "NORM",   1 }, { <AB08>, "NORM",   1 },
                { <AB09>, "NORM",   1 }, { <AB10>, "NORM",   1 },
                { <RTSH>, "RTSH",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LCTL>, "LCTL",   1 }, { <LALT>, "LALT",   1 },
                { <LWIN>, "LMTA",   1 }, { <SPCE>, "SPCE",   1 },
                { <RWIN>, "RMTA",   1 }, { <RALT>, "RALT",   1 },
                { <RCTL>, "RCTL",   1 }
            };
        };
    }; // End of "Alpha" section

    section "Editing" {
        key.color= "white";
        priority=  9;
        top=       87;
        left=      314;
        width=     58;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                {  <INS>, "NORM",   1 }, { <HOME>, "NORM",   1 },
                { <PGUP>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                { <DELE>, "NORM",   1 }, {  <END>, "NORM",   1 },
                { <PGDN>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 20;
            keys {
                {   <UP>, "NORM",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LEFT>, "NORM",   1 }, { <DOWN>, "NORM",   1 },
                { <RGHT>, "NORM",   1 }
            };
        };
    }; // End of "Editing" section

    section "Keypad" {
        key.color= "white";
        priority=  10;
        top=       87;
        left=      380;
        width=     77;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <NMLK>, "NORM",   1 }, { <KPEQ>, "NORM",   1 },
                { <KPDV>, "NORM",   1 }, { <KPMU>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <KP7>, "NORM",   1 }, {  <KP8>, "NORM",   1 },
                {  <KP9>, "NORM",   1 }, { <KPSU>, "NORM",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                {  <KP4>, "NORM",   1 }, {  <KP5>, "NORM",   1 },
                {  <KP6>, "NORM",   1 }, { <KPAD>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                {  <KP1>, "NORM",   1 }, {  <KP2>, "NORM",   1 },
                {  <KP3>, "NORM",   1 }, { <KPEN>, "KPEN",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                {  <KP0>, "KP0",   1 }, { <KPDL>, "NORM",   1 }
            };
        };
    }; // End of "Keypad" section

    solid "LedPanel" {
        top=      48;
        left=     378;
        priority= 0;
        shape= "LEDS";
    };
    indicator "NumLock" {
        top=      50;
        left=     381;
        priority= 1;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "CapsLock" {
        top=      50;
        left=     398;
        priority= 2;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "ScrollLock" {
        top=      50;
        left=     415;
        priority= 3;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    text "NumLockLabel" {
        top=      55;
        left=     381;
        priority= 4;
        width=  19.8;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Num\nLock";
    };
    text "CapsLockLabel" {
        top=      55;
        left=     398;
        priority= 5;
        width=  26.4;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Caps\nLock";
    };
    text "ScrollLockLabel" {
        top=      55;
        left=     415;
        priority= 6;
        width=  39.6;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Scroll\nLock";
    };
};

};
--- server-0.xkb.orig	2006-08-30 11:46:55.000000000 +0200
+++ server-0.xkb	2006-08-30 14:33:27.000000000 +0200
@@ -1006,52 +1006,51 @@
 
     key  <ESC> {         [          Escape ] };
     key <AE01> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [       ampersand,               1,      VoidSymbol,      dead_acute ]
+        symbols[Group1]= [       ampersand,               1 ],
+        symbols[Group2]= [      dead_acute,      dead_acute ]
     };
     key <AE02> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          eacute,               2,      ediaeresis,          Eacute ]
-    };
-    key <AE03> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [        quotedbl,               3,      VoidSymbol,      VoidSymbol ]
+        type[group2]= "ALPHABETIC",
+        symbols[Group1]= [          eacute,               2 ],
+        symbols[Group2]= [      ediaeresis,          Eacute ]
     };
+    key <AE03> {         [        quotedbl,               3 ] };
     key <AE04> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [      apostrophe,               4,      VoidSymbol,      VoidSymbol ]
+        symbols[Group1]= [      apostrophe,               4 ],
+        symbols[Group2]= [           grave ]
     };
     key <AE05> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [       parenleft,               5,       braceleft,     bracketleft ]
+        symbols[Group1]= [       parenleft,               5 ],
+        symbols[Group2]= [       braceleft,     bracketleft ]
     };
     key <AE06> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [         section,               6,       paragraph,           aring ]
+        symbols[Group1]= [         section,               6 ],
+        symbols[Group2]= [       paragraph,           aring ]
     };
     key <AE07> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          egrave,               7,   guillemotleft,  guillemotright ]
+        symbols[Group1]= [          egrave,               7 ],
+        symbols[Group2]= [   guillemotleft,  guillemotright ]
     };
     key <AE08> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          exclam,               8,      exclamdown,     Ucircumflex ]
+        symbols[Group1]= [          exclam,               8 ],
+        symbols[Group2]= [      exclamdown,     Ucircumflex ]
     };
     key <AE09> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [        ccedilla,               9,        Ccedilla,          Aacute ]
+        symbols[Group1]= [        ccedilla,               9 ],
+        symbols[Group2]= [        Ccedilla,          Aacute ]
     };
     key <AE10> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          agrave,               0,          oslash,      VoidSymbol ]
+        type[group2]= "ALPHABETIC",
+        symbols[Group1]= [          agrave,               0 ],
+        symbols[Group2]= [          oslash,          Oslash ]
     };
     key <AE11> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [      parenright,          degree,      braceright,    bracketright ]
+        symbols[Group1]= [      parenright,          degree ],
+        symbols[Group2]= [      braceright,    bracketright ]
     };
     key <AE12> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [           minus,      underscore,          emdash,          endash ]
+        symbols[Group1]= [           minus,      underscore ],
+        symbols[Group2]= [          emdash,          endash ]
     };
     key <BKSP> {
         type= "CTRL+ALT",
@@ -1059,158 +1058,176 @@
     };
     key  <TAB> {         [             Tab,    ISO_Left_Tab ] };
     key <AD01> {
-        type= "FOUR_LEVEL_ALPHABETIC",
-        symbols[Group1]= [               a,               A,              ae,              AE ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               a,               A ],
+        symbols[Group2]= [              ae,              AE ]
     };
     key <AD02> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               z,               Z,     Acircumflex,           Aring ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               z,               Z ],
+        symbols[Group2]= [     Acircumflex,           Aring ]
     };
     key <AD03> {
-        type= "FOUR_LEVEL_ALPHABETIC",
-        symbols[Group1]= [               e,               E,     ecircumflex,     Ecircumflex ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               e,               E ],
+        symbols[Group2]= [     ecircumflex,     Ecircumflex ]
     };
     key <AD04> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               r,               R,      registered,        currency ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               r,               R ],
+        symbols[Group2]= [      registered,        currency ]
     };
     key <AD05> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               t,               T,      VoidSymbol,      VoidSymbol ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               t,               T ],
+        symbols[Group2]= [      VoidSymbol,       trademark ]
     };
     key <AD06> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               y,               Y,          Uacute,      Ydiaeresis ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               y,               Y ],
+        symbols[Group2]= [          Uacute,      ydiaeresis ]
     };
     key <AD07> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               u,               U,      VoidSymbol,     ordfeminine ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               u,               U ],
+        symbols[Group2]= [      VoidSymbol,     ordfeminine ]
     };
     key <AD08> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               i,               I,     icircumflex,      idiaeresis ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               i,               I ],
+        symbols[Group2]= [     icircumflex,      idiaeresis ]
     };
     key <AD09> {
-        type= "FOUR_LEVEL_ALPHABETIC",
-        symbols[Group1]= [               o,               O,              oe,              OE ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               o,               O ],
+        symbols[Group2]= [              oe,              OE ]
     };
     key <AD10> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               p,               P,      VoidSymbol,      VoidSymbol ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               p,               P ],
+        symbols[Group2]= [        Greek_pi,        Greek_PI ]
     };
     key <AD11> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [ dead_circumflex,  dead_diaeresis,     ocircumflex,     Ocircumflex ]
+        type[group2]= "ALPHABETIC",
+        symbols[Group1]= [ dead_circumflex,  dead_diaeresis ],
+        symbols[Group2]= [     ocircumflex,     Ocircumflex ]
     };
     key <AD12> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          dollar,        asterisk,        EuroSign,             yen ]
+        symbols[Group1]= [          dollar,        asterisk ],
+        symbols[Group2]= [        EuroSign,             yen ]
+    };
+    key <RTRN> {
+        symbols[Group1]= [          Return,          Return ],
+        symbols[Group2]= [          hyphen,          hyphen ]
     };
-    key <RTRN> {         [          Return ] };
     key <LCTL> {         [       Control_L ] };
     key <AC01> {
-        type= "FOUR_LEVEL_ALPHABETIC",
-        symbols[Group1]= [               q,               Q,     acircumflex,          Agrave ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               q,               Q ],
+        symbols[Group2]= [     Greek_omega,     Greek_OMEGA ]
     };
     key <AC02> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               s,               S,          Ograve,      VoidSymbol ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               s,               S ],
+        symbols[Group2]= [     Greek_sigma,     Greek_SIGMA ]
     };
     key <AC03> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               d,               D,      VoidSymbol,      VoidSymbol ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               d,               D ],
+        symbols[Group2]= [        NoSymbol,     Greek_DELTA ]
     };
     key <AC04> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               f,               F,      VoidSymbol,  periodcentered ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               f,               F ],
+        symbols[Group2]= [               f,  periodcentered ]
     };
     key <AC05> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               g,               G,      VoidSymbol,      VoidSymbol ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               g,               G ]
     };
     key <AC06> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               h,               H,          Igrave,     Icircumflex ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               h,               H ],
+        symbols[Group2]= [          Igrave,     Icircumflex ]
     };
     key <AC07> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               j,               J,      Idiaeresis,          Iacute ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               j,               J ],
+        symbols[Group2]= [      Idiaeresis,          Iacute ]
     };
     key <AC08> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               k,               K,          Egrave,      Ediaeresis ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               k,               K ],
+        symbols[Group2]= [          Egrave,      Ediaeresis ]
     };
     key <AC09> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               l,               L,         notsign,             bar ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               l,               L ],
+        symbols[Group2]= [         notsign,             bar ]
     };
     key <AC10> {
-        type= "FOUR_LEVEL_ALPHABETIC",
-        symbols[Group1]= [               m,               M,              mu,          Oacute ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               m,               M ],
+        symbols[Group2]= [              mu,          Oacute ]
     };
     key <AC11> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [          ugrave,         percent,          Ugrave,     ucircumflex ]
-    };
-    key <TLDE> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [              at,      numbersign,  periodcentered,      Ydiaeresis ]
+        symbols[Group1]= [          ugrave,         percent ],
+        symbols[Group2]= [          Ugrave,     ucircumflex ]
     };
+    key <TLDE> {         [            less,         greater ] };
     key <LFSH> {         [         Shift_L ] };
     key <BKSL> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [      dead_grave,        sterling,              at,      numbersign ]
+        symbols[Group1]= [      dead_grave,        sterling ],
+        symbols[Group2]= [              at,      numbersign ]
     };
     key <AB01> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               w,               W,      VoidSymbol,      VoidSymbol ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               w,               W ]
     };
     key <AB02> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               x,               X,      VoidSymbol,      VoidSymbol ]
+        type= "ALPHABETIC",
+        symbols[Group1]= [               x,               X ]
     };
     key <AB03> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               c,               C,       copyright,            cent ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               c,               C ],
+        symbols[Group2]= [       copyright,            cent ]
     };
     key <AB04> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               v,               V,         diamond,     leftradical ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               v,               V ],
+        symbols[Group2]= [         diamond,     leftradical ]
     };
     key <AB05> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               b,               B,          ssharp,      VoidSymbol ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               b,               B ],
+        symbols[Group2]= [          ssharp ]
     };
     key <AB06> {
-        type= "FOUR_LEVEL_SEMIALPHABETIC",
-        symbols[Group1]= [               n,               N,      dead_tilde,      asciitilde ]
+        type[group1]= "ALPHABETIC",
+        symbols[Group1]= [               n,               N ],
+        symbols[Group2]= [      dead_tilde,      asciitilde ]
     };
     key <AB07> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [           comma,        question,      VoidSymbol,    questiondown ]
-    };
-    key <AB08> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [       semicolon,          period,      VoidSymbol,  periodcentered ]
+        symbols[Group1]= [           comma,        question ],
+        symbols[Group2]= [              at,    questiondown ]
     };
+    key <AB08> {         [       semicolon,          period ] };
     key <AB09> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [           colon,           slash,        division,       backslash ]
+        symbols[Group1]= [           colon,           slash ],
+        symbols[Group2]= [        division,       backslash ]
     };
     key <AB10> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [           equal,            plus,      VoidSymbol,       plusminus ]
+        symbols[Group1]= [           equal,            plus ],
+        symbols[Group2]= [          macron,       plusminus ]
     };
     key <RTSH> {         [         Shift_R ] };
     key <KPMU> {
         type= "CTRL+ALT",
         symbols[Group1]= [     KP_Multiply,  XF86_ClearGrab ]
     };
-    key <LALT> {         [     Mode_switch,          Meta_L ] };
-    key <SPCE> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [           space,           space,    nobreakspace,    nobreakspace ]
-    };
+    key <LALT> {         [     Mode_switch,     Mode_switch ] };
+    key <SPCE> {         [           space ] };
     key <CAPS> {         [       Caps_Lock ] };
     key <FK01> {
         type= "CTRL+ALT",
@@ -1254,29 +1271,30 @@
     };
     key <NMLK> {         [        Num_Lock, Pointer_EnableKeys ] };
     key <SCLK> {         [     Scroll_Lock ] };
-    key  <KP7> {         [            KP_7,            KP_7 ] };
-    key  <KP8> {         [            KP_8,            KP_8 ] };
-    key  <KP9> {         [            KP_9,            KP_9 ] };
+    key  <KP7> {         [         KP_Home,            KP_7 ] };
+    key  <KP8> {         [           KP_Up,            KP_8 ] };
+    key  <KP9> {         [        KP_Prior,            KP_9 ] };
     key <KPSU> {
         type= "CTRL+ALT",
         symbols[Group1]= [     KP_Subtract, XF86_Prev_VMode ]
     };
-    key  <KP4> {         [            KP_4,            KP_4 ] };
-    key  <KP5> {         [            KP_5,            KP_5 ] };
-    key  <KP6> {         [            KP_6,            KP_6 ] };
+    key  <KP4> {         [         KP_Left,            KP_4 ] };
+    key  <KP5> {         [        KP_Begin,            KP_5 ] };
+    key  <KP6> {         [        KP_Right,            KP_6 ] };
     key <KPAD> {
         type= "CTRL+ALT",
         symbols[Group1]= [          KP_Add, XF86_Next_VMode ]
     };
-    key  <KP1> {         [            KP_1,            KP_1 ] };
-    key  <KP2> {         [            KP_2,            KP_2 ] };
-    key  <KP3> {         [            KP_3,            KP_3 ] };
-    key  <KP0> {         [            KP_0,            KP_0 ] };
-    key <KPDL> {         [           comma,      KP_Decimal ] };
+    key  <KP1> {         [          KP_End,            KP_1 ] };
+    key  <KP2> {         [         KP_Down,            KP_2 ] };
+    key  <KP3> {         [         KP_Next,            KP_3 ] };
+    key  <KP0> {         [       KP_Insert,            KP_0 ] };
+    key <KPDL> {         [    KP_Separator,       KP_Delete ] };
     key <MDSW> {         [     Mode_switch ] };
     key <LSGT> {
-        type= "FOUR_LEVEL",
-        symbols[Group1]= [            less,         greater,      VoidSymbol,      VoidSymbol ]
+        type[group1]= "FOUR_LEVEL",
+        symbols[Group1]= [              at,      numbersign,             bar,       brokenbar ],
+        symbols[Group2]= [  periodcentered ]
     };
     key <FK11> {
         type= "CTRL+ALT",
@@ -1310,11 +1328,8 @@
         type= "CTRL+ALT",
         symbols[Group1]= [       KP_Divide,     XF86_Ungrab ]
     };
-    key <RALT> {
-        type= "ONE_LEVEL",
-        symbols[Group1]= [ ISO_Level3_Shift ]
-    };
-    key <LWIN> {         [           Alt_L,          Meta_L ] };
+    key <RALT> {         [           Alt_R,          Meta_R ] };
+    key <LWIN> {         [           Alt_L,           Alt_L ] };
     key <RWIN> {         [          Meta_R ] };
     key <MENU> {         [            Menu ] };
     key <LVL3> {         [ ISO_Level3_Shift ] };
@@ -1327,16 +1342,20 @@
     modifier_map Shift { <LFSH> };
     modifier_map Shift { <RTSH> };
     modifier_map Mod1 { <LALT> };
+    modifier_map Mod3 { <LALT> };
     modifier_map Lock { <CAPS> };
     modifier_map Mod2 { <NMLK> };
     modifier_map Mod5 { <MDSW> };
     modifier_map Control { <RCTL> };
-    modifier_map Mod5 { <RALT> };
+    modifier_map Mod1 { <RALT> };
+    modifier_map Mod1 { <LWIN> };
+    modifier_map Mod2 { <RWIN> };
     modifier_map Mod5 { <LVL3> };
     modifier_map Mod1 { <ALT> };
     modifier_map Mod4 { <SUPR> };
     modifier_map Mod4 { <HYPR> };
     modifier_map Mod1 { <META> };
+    modifier_map Mod2 { <META> };
 };
 
 xkb_geometry "macintosh(macintosh)" {

Reply to: