1partial default 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