1 default partial xkb_types "default" {
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".
6 virtual_modifiers LevelThree,ScrollLock,LevelFive;
9 modifiers = Shift+LevelThree+LevelFive;
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";
28 type "EIGHT_LEVEL_ALPHABETIC" {
29 modifiers = Shift+Lock+LevelThree+LevelFive;
33 map[LevelThree] = Level3;
34 map[Shift+LevelThree] = Level4;
35 map[Lock+LevelThree] = Level4;
36 map[Lock+Shift+LevelThree] = Level3;
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;
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";
56 type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
57 // Level5-Lock is implemented by using NumLock, because a real modifier
60 modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
64 map[LevelThree] = Level3;
65 map[LevelThree+Shift] = Level4;
67 map[LevelFive] = Level5;
68 map[LevelFive+Shift] = Level6;
69 map[LevelFive+LevelThree] = Level7;
70 map[LevelFive+LevelThree+Shift] = Level8;
72 map[NumLock] = Level5;
73 map[NumLock+Shift] = Level6;
74 map[NumLock+LevelThree] = Level7;
75 map[NumLock+LevelThree+Shift] = Level8;
77 map[NumLock+LevelFive] = Level1;
78 map[NumLock+LevelFive+Shift] = Level2;
79 map[NumLock+LevelFive+LevelThree] = Level3;
80 map[NumLock+LevelFive+LevelThree+Shift] = Level4;
84 map[Lock+Shift] = Level2;
85 map[Lock+LevelThree] = Level3;
86 map[Lock+LevelThree+Shift] = Level4;
88 map[Lock+LevelFive] = Level5;
89 map[Lock+LevelFive+Shift] = Level6;
90 map[Lock+LevelFive+LevelThree] = Level7;
91 map[Lock+LevelFive+LevelThree+Shift] = Level8;
93 map[Lock+NumLock] = Level5;
94 map[Lock+NumLock+Shift] = Level6;
95 map[Lock+NumLock+LevelThree] = Level7;
96 map[Lock+NumLock+LevelThree+Shift] = Level8;
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;
103 preserve[LevelFive+Shift] = Shift;
104 preserve[NumLock+Shift] = Shift;
105 preserve[Lock+LevelFive+Shift] = Shift;
106 preserve[Lock+NumLock+Shift] = Shift;
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";
118 type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
119 // Level5-Lock is implemented by using NumLock, because a real modifier
122 modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
126 map[LevelThree] = Level3;
127 map[LevelThree+Shift] = Level4;
129 map[LevelFive] = Level5;
130 map[LevelFive+Shift] = Level6;
131 map[LevelFive+LevelThree] = Level7;
132 map[LevelFive+LevelThree+Shift] = Level8;
134 map[NumLock] = Level5;
135 map[NumLock+Shift] = Level6;
136 map[NumLock+LevelThree] = Level7;
137 map[NumLock+LevelThree+Shift] = Level8;
139 map[NumLock+LevelFive] = Level1;
140 map[NumLock+LevelFive+Shift] = Level2;
141 map[NumLock+LevelFive+LevelThree] = Level3;
142 map[NumLock+LevelFive+LevelThree+Shift] = Level4;
144 // Lock interchanges Level1 and Level2
146 map[Lock+Shift] = Level1;
147 map[Lock+LevelThree] = Level3;
148 map[Lock+LevelThree+Shift] = Level4;
150 map[Lock+LevelFive] = Level5;
151 map[Lock+LevelFive+Shift] = Level6;
152 map[Lock+LevelFive+LevelThree] = Level7;
153 map[Lock+LevelFive+LevelThree+Shift] = Level8;
155 map[Lock+NumLock] = Level5;
156 map[Lock+NumLock+Shift] = Level6;
157 map[Lock+NumLock+LevelThree] = Level7;
158 map[Lock+NumLock+LevelThree+Shift] = Level8;
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;
165 preserve[LevelFive+Shift] = Shift;
166 preserve[NumLock+Shift] = Shift;
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";
178 type "EIGHT_LEVEL_SEMIALPHABETIC" {
179 modifiers = Shift+Lock+LevelThree+LevelFive;
183 map[LevelThree] = Level3;
184 map[Shift+LevelThree] = Level4;
185 map[Lock+LevelThree] = Level3;
186 map[Lock+Shift+LevelThree] = Level4;
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;
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;
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";