1default partial xkb_types "default" { 2 3 // Defines types with a four-level shift, similar to the three-level 4 // type from iso9995, but they let the Shift key behave "normally". 5 6 virtual_modifiers LevelThree; 7 8 type "FOUR_LEVEL" { 9 modifiers = Shift + LevelThree; 10 map[None] = Level1; 11 map[Shift] = Level2; 12 map[LevelThree] = Level3; 13 map[Shift+LevelThree] = Level4; 14 level_name[Level1] = "Base"; 15 level_name[Level2] = "Shift"; 16 level_name[Level3] = "Alt Base"; 17 level_name[Level4] = "Shift Alt"; 18 }; 19 20 type "FOUR_LEVEL_ALPHABETIC" { 21 modifiers = Shift + Lock + LevelThree; 22 map[None] = Level1; 23 map[Shift] = Level2; 24 map[Lock] = Level2; 25 map[LevelThree] = Level3; 26 map[Shift+LevelThree] = Level4; 27 map[Lock+LevelThree] = Level4; 28 map[Shift+Lock+LevelThree] = Level3; 29 level_name[Level1] = "Base"; 30 level_name[Level2] = "Shift"; 31 level_name[Level3] = "Alt Base"; 32 level_name[Level4] = "Shift Alt"; 33 }; 34 35 type "FOUR_LEVEL_SEMIALPHABETIC" { 36 modifiers = Shift + Lock + LevelThree; 37 map[None] = Level1; 38 map[Shift] = Level2; 39 map[Lock] = Level2; 40 map[LevelThree] = Level3; 41 map[Shift+LevelThree] = Level4; 42 map[Lock+LevelThree] = Level3; 43 map[Shift+Lock+LevelThree] = Level4; 44 preserve[Lock+LevelThree] = Lock; 45 preserve[Shift+Lock+LevelThree] = Lock; 46 level_name[Level1] = "Base"; 47 level_name[Level2] = "Shift"; 48 level_name[Level3] = "Alt Base"; 49 level_name[Level4] = "Shift Alt"; 50 }; 51 52 // A four-level keypad variant. The first two levels are controlled by 53 // NumLock (with active shifting like in KEYPAD). LevelThree overrides 54 // this mode, with two additional shifted levels. 55 type "FOUR_LEVEL_MIXED_KEYPAD" { 56 modifiers = Shift + NumLock + LevelThree; 57 map[None] = Level1; 58 map[Shift+NumLock] = Level1; 59 map[NumLock] = Level2; 60 map[Shift] = Level2; 61 map[LevelThree] = Level3; 62 map[NumLock+LevelThree] = Level3; 63 map[Shift+LevelThree] = Level4; 64 map[Shift+NumLock+LevelThree] = Level4; 65 level_name[Level1] = "Base"; 66 level_name[Level2] = "Number"; 67 level_name[Level3] = "Alt Base"; 68 level_name[Level4] = "Shift Alt"; 69 }; 70 71 // Base level, two shifted LevelThree levels, one Ctrl+Alt command level. 72 type "FOUR_LEVEL_X" { 73 modifiers = Shift + LevelThree + Control + Alt; 74 map[None] = Level1; 75 map[LevelThree] = Level2; 76 map[Shift+LevelThree] = Level3; 77 map[Control+Alt] = Level4; 78 level_name[Level1] = "Base"; 79 level_name[Level2] = "Alt Base"; 80 level_name[Level3] = "Shift Alt"; 81 level_name[Level4] = "Ctrl+Alt"; 82 }; 83 84 // A special type for keys used in the Serbian Latin Unicode keymap. 85 // It makes it possible to use all three forms of latin letters 86 // present in Unicode that are made up of two separate letters 87 // (forms like LJ, Lj, and lj; NJ, Nj, and nj; etcetera). 88 type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { 89 modifiers = Shift + Lock + LevelThree; 90 map[None] = Level1; 91 map[Shift] = Level2; 92 map[Lock] = Level4; 93 map[LevelThree] = Level3; 94 map[Shift+LevelThree] = Level4; 95 map[Lock+LevelThree] = Level3; 96 map[Shift+Lock+LevelThree] = Level3; 97 preserve[Lock]= Lock; 98 preserve[Lock+LevelThree]= Lock; 99 level_name[Level1] = "Base"; 100 level_name[Level2] = "Shift"; 101 level_name[Level3] = "AltGr Base"; 102 level_name[Level4] = "Shift AltGr"; 103 }; 104 105 // Five levels: the normal four levels with Shift and LevelThree, 106 // plus a fifth level when CapsLock (and only CapsLock) is active 107 // -- CapsLock is ignored when Shift and/or LevelThree is held. 108 type "FOUR_LEVEL_PLUS_LOCK" { 109 modifiers = Shift + Lock + LevelThree; 110 map[None] = Level1; 111 map[Shift] = Level2; 112 map[LevelThree] = Level3; 113 map[Shift+LevelThree] = Level4; 114 map[Lock] = Level5; 115 map[Shift+Lock] = Level2; 116 map[Lock+LevelThree] = Level3; 117 map[Shift+Lock+LevelThree] = Level4; 118 level_name[Level1] = "Base"; 119 level_name[Level2] = "Shift"; 120 level_name[Level3] = "Alt Base"; 121 level_name[Level4] = "Shift Alt"; 122 level_name[Level5] = "Lock"; 123 }; 124}; 125 126// This enables the four-level shifting also for the keypad. 127partial xkb_types "keypad" { 128 129 virtual_modifiers LevelThree; 130 131 type "FOUR_LEVEL_KEYPAD" { 132 modifiers = Shift + NumLock + LevelThree; 133 map[None] = Level1; 134 map[Shift] = Level2; 135 map[NumLock] = Level2; 136 map[Shift+NumLock] = Level1; 137 map[LevelThree] = Level3; 138 map[Shift+LevelThree] = Level4; 139 map[NumLock+LevelThree] = Level4; 140 map[Shift+NumLock+LevelThree] = Level3; 141 level_name[Level1] = "Base"; 142 level_name[Level2] = "Number"; 143 level_name[Level3] = "Alt Base"; 144 level_name[Level4] = "Alt Number"; 145 }; 146}; 147