xkb_keymap { xkb_keycodes "(unnamed)" { minimum = 8; maximum = 255; = 9; = 10; = 11; = 12; = 13; = 14; = 15; = 16; = 17; = 18; = 19; = 20; = 21; = 22; = 23; = 24; = 25; = 26; = 27; = 28; = 29; = 30; = 31; = 32; = 33; = 34; = 35; = 36; = 37; = 38; = 39; = 40; = 41; = 42; = 43; = 44; = 45; = 46; = 47; = 48; = 49; = 50; = 51; = 52; = 53; = 54; = 55; = 56; = 57; = 58; = 59; = 60; = 61; = 62; = 63; = 64; = 65; = 66; = 67; = 68; = 69; = 70; = 71; = 72; = 73; = 74; = 75; = 76; = 77; = 78; = 79; = 80; = 81; = 82; = 83; = 84; = 85; = 86; = 87; = 88; = 89; = 90; = 91; = 92; = 94; = 95; = 96; = 97; = 105; = 108; = 133; = 134; = 135; = 203; = 204; = 205; = 206; = 207; }; xkb_types "(unnamed)" { virtual_modifiers NumLock,Alt,LevelThree,ScrollLock,LevelFive,Super,AltGr,Meta,Hyper; type "ONE_LEVEL" { modifiers= none; level_name[1]= "Any"; }; type "TWO_LEVEL" { modifiers= Shift; map[Shift]= 2; level_name[1]= "Base"; level_name[2]= "Shift"; }; type "ALPHABETIC" { modifiers= Shift+Lock; map[Shift]= 2; map[Lock]= 2; level_name[1]= "Base"; level_name[2]= "Caps"; }; type "FOUR_LEVEL" { modifiers= Shift+LevelThree; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { modifiers= Shift+Lock+NumLock+LevelThree+LevelFive; map[Shift]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[LevelFive]= 5; map[Shift+LevelFive]= 6; preserve[Shift+LevelFive]= Shift; map[LevelThree+LevelFive]= 7; map[Shift+LevelThree+LevelFive]= 8; map[NumLock]= 5; map[Shift+NumLock]= 6; preserve[Shift+NumLock]= Shift; map[NumLock+LevelThree]= 7; map[Shift+NumLock+LevelThree]= 8; map[Shift+NumLock+LevelFive]= 2; map[NumLock+LevelThree+LevelFive]= 3; map[Shift+NumLock+LevelThree+LevelFive]= 4; map[Lock]= 2; map[Lock+LevelThree]= 3; map[Shift+Lock+LevelThree]= 4; map[Lock+LevelFive]= 5; map[Shift+Lock+LevelFive]= 6; map[Lock+LevelThree+LevelFive]= 7; map[Shift+Lock+LevelThree+LevelFive]= 8; map[Lock+NumLock]= 5; map[Shift+Lock+NumLock]= 6; map[Lock+NumLock+LevelThree]= 7; map[Shift+Lock+NumLock+LevelThree]= 8; map[Lock+NumLock+LevelFive]= 2; map[Lock+NumLock+LevelThree+LevelFive]= 4; map[Shift+Lock+NumLock+LevelThree+LevelFive]= 3; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "Alt Base"; level_name[4]= "Shift Alt"; level_name[5]= "X"; level_name[6]= "X Shift"; level_name[7]= "X Alt Base"; level_name[8]= "X Shift Alt"; }; type "FOUR_LEVEL_SEMIALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= 2; map[Lock]= 2; map[LevelThree]= 3; map[Shift+LevelThree]= 4; map[Lock+LevelThree]= 3; preserve[Lock+LevelThree]= Lock; map[Shift+Lock+LevelThree]= 4; preserve[Shift+Lock+LevelThree]= Lock; level_name[1]= "Base"; level_name[2]= "Shift"; level_name[3]= "AltGr"; level_name[4]= "Shift AltGr"; }; }; xkb_compatibility "(unnamed)" { virtual_modifiers NumLock,Alt,LevelThree,ScrollLock,LevelFive,Super,AltGr,Meta,Hyper; interpret.useModMapMods= AnyLevel; interpret.repeat= 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_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 ISO_Level5_Shift+AnyOf(all) { virtualModifier= LevelFive; useModMapMods=level1; action= SetMods(modifiers=LevelFive,clearLocks); }; interpret ISO_Group_Shift+AnyOfOrNone(all) { virtualModifier= AltGr; useModMapMods=level1; action= SetGroup(group=+1); }; interpret ISO_Level3_Shift+AnyOfOrNone(all) { action= SetMods(modifiers=LevelThree,clearLocks); }; 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 Alt_L+AnyOfOrNone(all) { action= SetMods(modifiers=Alt,clearLocks); }; interpret Alt_R+AnyOfOrNone(all) { action= SetMods(modifiers=Alt,clearLocks); }; interpret Shift_L+AnyOfOrNone(all) { action= SetMods(modifiers=Shift,clearLocks); }; interpret Shift_R+AnyOfOrNone(all) { action= SetMods(modifiers=Shift,clearLocks); }; interpret ISO_Level5_Shift+AnyOfOrNone(all) { action= SetMods(modifiers=LevelFive,clearLocks); }; interpret ISO_Level5_Latch+AnyOfOrNone(all) { action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock); }; interpret ISO_Level5_Lock+AnyOfOrNone(all) { action= LockMods(modifiers=LevelFive); }; interpret Any+AnyOf(all) { action= SetMods(modifiers=modMapMods,clearLocks); }; }; xkb_symbols "(unnamed)" { name[1]="English (US)"; name[2]="Czech"; name[3]="German (Neo 2)"; key { //// repeat=Yes is set with the default *interpretation*, but //// using explicit actions makes the key keep the initial value, //// i.e. repeat=No. //repeat= Yes, symbols[1]= [ t, T ], //actions[1]= [ NoAction(), NoAction() ], symbols[2]= [ Cyrillic_ie, Cyrillic_IE ], actions[2]= [ NoAction(), NoAction() ], symbols[3]= [ w, W ]//, //actions[3]= [ NoAction(), NoAction() ] }; key { type[3]= "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK", symbols[1]= [ y, Y ], symbols[2]= [ z, Z, leftarrow, yen ], symbols[3]= [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] }; key { type[3]= "TWO_LEVEL", symbols[1]= [ Shift_L ], symbols[2]= [ Shift_L ], symbols[3]= [ Shift_L, Caps_Lock ] }; //// This should set the key’s EXPLICIT_INTERP explicit flag and //// the group 2 explicit_actions, but it should still allow to //// interpret the keysyms in groups 1 and 3. key { type[1]= "ONE_LEVEL", type[2]= "TWO_LEVEL", type[3]= "TWO_LEVEL", //repeat= No, symbols[1]= [ Shift_L ], //actions[1]= [ SetMods(modifiers=Shift,clearLocks) ], symbols[2]= [ ISO_Level3_Shift, Multi_key ], actions[2]= [ SetMods(modifiers=LevelThree), NoAction() ], symbols[3]= [ ISO_Level5_Shift, ISO_Level3_Shift ]//, //actions[3]= [ SetMods(modifiers=LevelFive,clearLocks), SetMods(modifiers=LevelThree,clearLocks) ] }; key { type= "ONE_LEVEL", //// The following fields are added, because they are set via //// compatibility interpretations, but using explicit actions //// disable them. //repeat= No, //virtualMods= LevelThree, symbols[1]= [ ISO_Level3_Shift ], //actions[1]= [ SetMods(modifiers=LevelThree,clearLocks) ], symbols[2]= [ ISO_Level3_Shift ], actions[2]= [ SetMods(modifiers=LevelThree) ], symbols[3]= [ ISO_Level3_Shift ]//, //actions[3]= [ SetMods(modifiers=LevelThree,clearLocks) ] }; key { symbols[1]= [ less, greater, bar, brokenbar ], symbols[2]= [ backslash, bar, slash, NoSymbol ], symbols[3]= [ ISO_Level5_Shift ] }; key { type[1]= "TWO_LEVEL", type[2]= "ONE_LEVEL", type[3]= "ONE_LEVEL", symbols[1]= [ Alt_R, Meta_R ], symbols[2]= [ ISO_Level3_Shift ], symbols[3]= [ ISO_Level5_Shift ] }; key { [ ISO_Next_Group, Menu ] }; key { type= "ONE_LEVEL", symbols[1]= [ ISO_Level5_Shift ], symbols[2]= [ ISO_Level5_Shift ], symbols[3]= [ ISO_Level5_Shift ] }; key { [ NoSymbol, Alt_L ] }; key { [ NoSymbol, Meta_L ] }; key { [ NoSymbol, Super_L ] }; modifier_map Shift { , }; modifier_map Mod1 { , , }; modifier_map Mod3 { }; modifier_map Mod5 { }; }; };