xkb_keymap { xkb_keycodes "test" { minimum = 8; maximum = 255; = 92; = 50; = 62; = 64; = 108; = 133; = 134; = 37; = 105; = 66; = 24; = 25; = 26; = 27; = 28; = 29; = 30; = 31; = 32; }; xkb_types "complete" { type "ONE_LEVEL" { modifiers= none; level_name[Level1]= "Any"; }; type "TWO_LEVEL" { modifiers= Shift; map[Shift]= 2; level_name[1]= "Base"; level_name[2]= "Shift"; }; }; xkb_compatibility "complete" { interpret.useModMapMods= AnyLevel; interpret.repeat= False; interpret.locking= False; interpret Any+AnyOf(all) { action= SetMods(modifiers=modMapMods,clearLocks); }; }; xkb_symbols { name[group1]="Test"; // Reset modmap with a key with empty modmap key { [VoidSymbol] }; modmap None { }; // Reset modmap with one key key { [Shift_L] }; modmap Shift { }; modmap none { }; // Reset modmap with one symbol key { [Shift_R] }; modmap Shift { Shift_R }; modmap NONE { Shift_R }; // Cycle key { [Super_L] }; modmap Mod4 { }; modmap None { }; modmap Mod4 { }; // Cycle key { [Super_R] }; modmap Mod4 { }; modmap None { }; modmap Mod4 { Super_R }; // Mix keycode and keysym key { [Control_L] }; modmap Control { Control_L }; modmap None { }; // Mix keycode and keysym key { [Control_R] }; modmap Control { }; modmap None { Control_R }; // Re-set with different modifier key { [Alt_L] }; modmap Mod2 { }; modmap None { }; modmap Mod1 { }; // Re-set with different modifier with both key and keysym key { [ISO_Level3_Shift] }; modmap Mod1 { }; // Mod1 modmap None { }; // None modmap Mod2 { }; // Mod2 modmap Mod3 { ISO_Level3_Shift }; // Mod2 | Mod3 modmap None { ISO_Level3_Shift }; // Mod2 modmap Mod5 { ISO_Level3_Shift }; // Mod2 | Mod5 // Re-set with different modifier with both key and keysym key { [Caps_Lock] }; modmap Mod1 { Caps_Lock }; // Mod1 modmap None { }; // Mod1 modmap None { Caps_Lock }; // None modmap Lock { }; // Lock // Merge modes key { [q] }; modMap Mod1 { }; augment modMap None { }; key { [w] }; modMap Mod2 { }; override modMap None { }; key { [e] }; modMap Mod3 { }; replace modMap None { }; key { [r] }; modMap Mod1 { }; augment modMap None { r }; key { [t] }; modMap Mod2 { }; replace modMap None { t }; key { [y] }; modMap Mod3 { }; override modMap None { y }; key { [u] }; modMap Mod1 { }; replace key { [U] }; // Won’t affect the modMap key { [i] }; modMap Mod2 { i, I }; replace key { [I] }; modMap None { i }; // Does not resolve key { [1] }; modMap Mod3 { 1, 2 }; override key { [NoSymbol, 2] }; modMap None { 1 }; }; };