1default partial xkb_types "default" { 2 3 // Defines a type with an eight-level shift, similar to the three-level 4 // type used for iso9995, but it lets the Shift key behave "normally". 5 6 virtual_modifiers LevelThree,ScrollLock,LevelFive; 7 8 type "EIGHT_LEVEL" { 9 modifiers = Shift+LevelThree+LevelFive; 10 map[None] = Level1; 11 map[Shift] = Level2; 12 map[LevelThree] = Level3; 13 map[Shift+LevelThree] = Level4; 14 map[LevelFive] = Level5; 15 map[Shift+LevelFive] = Level6; 16 map[LevelThree+LevelFive] = Level7; 17 map[Shift+LevelThree+LevelFive] = Level8; 18 level_name[Level1] = "Base"; 19 level_name[Level2] = "Shift"; 20 level_name[Level3] = "Alt Base"; 21 level_name[Level4] = "Shift Alt"; 22 level_name[Level5] = "X"; 23 level_name[Level6] = "X Shift"; 24 level_name[Level7] = "X Alt Base"; 25 level_name[Level8] = "X Shift Alt"; 26 }; 27 28 type "EIGHT_LEVEL_ALPHABETIC" { 29 modifiers = Shift+Lock+LevelThree+LevelFive; 30 map[None] = Level1; 31 map[Shift] = Level2; 32 map[Lock] = Level2; 33 map[LevelThree] = Level3; 34 map[Shift+LevelThree] = Level4; 35 map[Lock+LevelThree] = Level4; 36 map[Lock+Shift+LevelThree] = Level3; 37 38 map[LevelFive] = Level5; 39 map[Shift+LevelFive] = Level6; 40 map[Lock+LevelFive] = Level6; 41 map[LevelThree+LevelFive] = Level7; 42 map[Shift+LevelThree+LevelFive] = Level8; 43 map[Lock+LevelThree+LevelFive] = Level8; 44 map[Lock+Shift+LevelThree+LevelFive] = Level7; 45 46 level_name[Level1] = "Base"; 47 level_name[Level2] = "Shift"; 48 level_name[Level3] = "Alt Base"; 49 level_name[Level4] = "Shift Alt"; 50 level_name[Level5] = "X"; 51 level_name[Level6] = "X Shift"; 52 level_name[Level7] = "X Alt Base"; 53 level_name[Level8] = "X Shift Alt"; 54 }; 55 56 type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" { 57 // Level5-Lock is implemented by using NumLock, because a real modifier 58 // is required. 59 60 modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; 61 62 map[None] = Level1; 63 map[Shift] = Level2; 64 map[LevelThree] = Level3; 65 map[LevelThree+Shift] = Level4; 66 67 map[LevelFive] = Level5; 68 map[LevelFive+Shift] = Level6; 69 map[LevelFive+LevelThree] = Level7; 70 map[LevelFive+LevelThree+Shift] = Level8; 71 72 map[NumLock] = Level5; 73 map[NumLock+Shift] = Level6; 74 map[NumLock+LevelThree] = Level7; 75 map[NumLock+LevelThree+Shift] = Level8; 76 77 map[NumLock+LevelFive] = Level1; 78 map[NumLock+LevelFive+Shift] = Level2; 79 map[NumLock+LevelFive+LevelThree] = Level3; 80 map[NumLock+LevelFive+LevelThree+Shift] = Level4; 81 82 // Lock has no effect 83 map[Lock] = Level1; 84 map[Lock+Shift] = Level2; 85 map[Lock+LevelThree] = Level3; 86 map[Lock+LevelThree+Shift] = Level4; 87 88 map[Lock+LevelFive] = Level5; 89 map[Lock+LevelFive+Shift] = Level6; 90 map[Lock+LevelFive+LevelThree] = Level7; 91 map[Lock+LevelFive+LevelThree+Shift] = Level8; 92 93 map[Lock+NumLock] = Level5; 94 map[Lock+NumLock+Shift] = Level6; 95 map[Lock+NumLock+LevelThree] = Level7; 96 map[Lock+NumLock+LevelThree+Shift] = Level8; 97 98 map[Lock+NumLock+LevelFive] = Level1; 99 map[Lock+NumLock+LevelFive+Shift] = Level2; 100 map[Lock+NumLock+LevelFive+LevelThree] = Level3; 101 map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; 102 103 preserve[LevelFive+Shift] = Shift; 104 preserve[NumLock+Shift] = Shift; 105 preserve[Lock+LevelFive+Shift] = Shift; 106 preserve[Lock+NumLock+Shift] = Shift; 107 108 level_name[Level1] = "Base"; 109 level_name[Level2] = "Shift"; 110 level_name[Level3] = "Alt Base"; 111 level_name[Level4] = "Shift Alt"; 112 level_name[Level5] = "X"; 113 level_name[Level6] = "X Shift"; 114 level_name[Level7] = "X Alt Base"; 115 level_name[Level8] = "X Shift Alt"; 116 }; 117 118 type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { 119 // Level5-Lock is implemented by using NumLock, because a real modifier 120 // is required. 121 122 modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; 123 124 map[None] = Level1; 125 map[Shift] = Level2; 126 map[LevelThree] = Level3; 127 map[LevelThree+Shift] = Level4; 128 129 map[LevelFive] = Level5; 130 map[LevelFive+Shift] = Level6; 131 map[LevelFive+LevelThree] = Level7; 132 map[LevelFive+LevelThree+Shift] = Level8; 133 134 map[NumLock] = Level5; 135 map[NumLock+Shift] = Level6; 136 map[NumLock+LevelThree] = Level7; 137 map[NumLock+LevelThree+Shift] = Level8; 138 139 map[NumLock+LevelFive] = Level1; 140 map[NumLock+LevelFive+Shift] = Level2; 141 map[NumLock+LevelFive+LevelThree] = Level3; 142 map[NumLock+LevelFive+LevelThree+Shift] = Level4; 143 144 // Lock interchanges Level1 and Level2 145 map[Lock] = Level2; 146 map[Lock+Shift] = Level1; 147 map[Lock+LevelThree] = Level3; 148 map[Lock+LevelThree+Shift] = Level4; 149 150 map[Lock+LevelFive] = Level5; 151 map[Lock+LevelFive+Shift] = Level6; 152 map[Lock+LevelFive+LevelThree] = Level7; 153 map[Lock+LevelFive+LevelThree+Shift] = Level8; 154 155 map[Lock+NumLock] = Level5; 156 map[Lock+NumLock+Shift] = Level6; 157 map[Lock+NumLock+LevelThree] = Level7; 158 map[Lock+NumLock+LevelThree+Shift] = Level8; 159 160 map[Lock+NumLock+LevelFive] = Level2; 161 map[Lock+NumLock+LevelFive+Shift] = Level1; 162 map[Lock+NumLock+LevelFive+LevelThree] = Level4; 163 map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3; 164 165 preserve[LevelFive+Shift] = Shift; 166 preserve[NumLock+Shift] = Shift; 167 168 level_name[Level1] = "Base"; 169 level_name[Level2] = "Shift"; 170 level_name[Level3] = "Alt Base"; 171 level_name[Level4] = "Shift Alt"; 172 level_name[Level5] = "X"; 173 level_name[Level6] = "X Shift"; 174 level_name[Level7] = "X Alt Base"; 175 level_name[Level8] = "X Shift Alt"; 176 }; 177 178 type "EIGHT_LEVEL_SEMIALPHABETIC" { 179 modifiers = Shift+Lock+LevelThree+LevelFive; 180 map[None] = Level1; 181 map[Shift] = Level2; 182 map[Lock] = Level2; 183 map[LevelThree] = Level3; 184 map[Shift+LevelThree] = Level4; 185 map[Lock+LevelThree] = Level3; 186 map[Lock+Shift+LevelThree] = Level4; 187 188 map[LevelFive] = Level5; 189 map[Shift+LevelFive] = Level6; 190 map[Lock+LevelFive] = Level6; 191 map[Lock+Shift+LevelFive] = Level6; 192 map[LevelThree+LevelFive] = Level7; 193 map[Shift+LevelThree+LevelFive] = Level8; 194 map[Lock+LevelThree+LevelFive] = Level7; 195 map[Lock+Shift+LevelThree+LevelFive] = Level8; 196 197 preserve[Lock+LevelThree] = Lock; 198 preserve[Lock+Shift+LevelThree] = Lock; 199 preserve[Lock+LevelFive] = Lock; 200 preserve[Lock+Shift+LevelFive] = Lock; 201 preserve[Lock+LevelThree+LevelFive] = Lock; 202 preserve[Lock+Shift+LevelThree+LevelFive] = Lock; 203 204 level_name[Level1] = "Base"; 205 level_name[Level2] = "Shift"; 206 level_name[Level3] = "Alt Base"; 207 level_name[Level4] = "Shift Alt"; 208 level_name[Level5] = "X"; 209 level_name[Level6] = "X Shift"; 210 level_name[Level7] = "X Alt Base"; 211 level_name[Level8] = "X Shift Alt"; 212 }; 213 214}; 215