1// The right Alt key (while pressed) chooses the second keyboard group.
2partial modifier_keys
3xkb_symbols "switch" {
4    key <RALT> {
5        symbols[Group1] = [ Mode_switch, Multi_key ],
6        virtualMods= AltGr
7    };
8};
9
10// The left Alt key (while pressed) chooses the second keyboard group.
11partial modifier_keys
12xkb_symbols "lswitch" {
13    key <LALT> {
14        symbols[Group1] = [ Mode_switch, Multi_key ],
15        virtualMods= AltGr
16    };
17};
18
19// Either Win key (while pressed) chooses the second keyboard group.
20partial modifier_keys
21xkb_symbols "win_switch" {
22    include "group(lwin_switch)"
23    include "group(rwin_switch)"
24};
25
26// The left Win key (while pressed) chooses the second keyboard group.
27// (Using this map, you should declare your keyboard as pc101 or pc102
28// instead of pc104 or pc105.)
29partial modifier_keys
30xkb_symbols "lwin_switch" {
31    key <LWIN> {
32        symbols[Group1] = [ Mode_switch, Multi_key ],
33        virtualMods= AltGr
34    };
35};
36
37// The right Win key (while pressed) chooses the second keyboard group.
38// (Using this map, you should declare your keyboard as pc101 or pc102
39// instead of pc104 or pc105.)
40partial modifier_keys
41xkb_symbols "rwin_switch" {
42    key <RWIN> {
43        symbols[Group1] = [ Mode_switch, Multi_key ],
44        virtualMods= AltGr
45    };
46};
47
48// The right Menu key (while pressed) chooses the second keyboard group.
49// while Shift+Menu acts as Menu.
50partial modifier_keys
51xkb_symbols "menu_switch" {
52    key <MENU> {
53        symbols[Group1] = [ Mode_switch, Menu ],
54        virtualMods= AltGr
55    };
56};
57
58// The right Ctrl key (while pressed) chooses the second keyboard group.
59// (Needed mainly for the Canadian keyboard.)
60partial modifier_keys
61xkb_symbols "rctrl_switch" {
62    key <RCTL> {
63        symbols[Group1] = [ Mode_switch ]
64    };
65};
66
67// Pressing the right Alt key switches to the next group.
68partial modifier_keys
69xkb_symbols "toggle" {
70    virtual_modifiers AltGr;
71    key <RALT> {
72        symbols[Group1] = [ ISO_Next_Group ],
73        virtualMods= AltGr
74    };
75};
76
77// Pressing both Shift keys switches to the next or previous group
78// (depending on which Shift is pressed first).
79partial modifier_keys
80xkb_symbols "shifts_toggle" {
81    key <LFSH> { [ Shift_L, ISO_Prev_Group ] };
82    key <RTSH> { [ Shift_R, ISO_Next_Group ] };
83};
84
85// Pressing Shift+Caps_Lock switches to the next group.
86partial modifier_keys
87xkb_symbols "shift_caps_toggle" {
88    key <CAPS> { [ Caps_Lock, ISO_Next_Group ] };
89};
90
91// Pressing Caps_Lock selects the first group,
92// pressing Shift+Caps_Lock selects the last group.
93partial modifier_keys
94xkb_symbols "shift_caps_switch" {
95    key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] };
96};
97
98// toggle using win + space as combo
99partial modifier_keys
100xkb_symbols "win_space_toggle" {
101  key <SPCE> {
102    type="PC_SUPER_LEVEL2",
103    symbols[Group1]= [ space, ISO_Next_Group ],
104    symbols[Group2]= [ space, ISO_Next_Group ]
105  };
106};
107
108// Pressing the left Win key selects the first group,
109// pressing the right Win or the Menu key selects the last group.
110partial modifier_keys
111xkb_symbols "win_menu_switch" {
112    virtual_modifiers AltGr;
113    key <LWIN> {
114        virtualMods= AltGr,
115        symbols[Group1] = [ ISO_First_Group ]
116    };
117    key <MENU> {
118        virtualMods= AltGr,
119        symbols[Group1] = [ ISO_Last_Group ]
120    };
121    key <RWIN> {
122        virtualMods= AltGr,
123        symbols[Group1] = [ ISO_Last_Group ]
124    };
125};
126
127// Pressing the left Ctrl key selects the first group,
128// pressing the right Ctrl key selects the last group.
129partial modifier_keys
130xkb_symbols "lctrl_rctrl_switch" {
131    virtual_modifiers AltGr;
132    key <LCTL> {
133        virtualMods= AltGr,
134        symbols[Group1] = [ ISO_First_Group ]
135    };
136    key <RCTL> {
137        virtualMods= AltGr,
138        symbols[Group1] = [ ISO_Last_Group ]
139    };
140};
141
142
143//
144// CTRL-SHIFT toggle section
145//
146partial modifier_keys
147xkb_symbols "lctrl_lshift_toggle" {
148    key <LFSH> {
149        type[Group1]="PC_CONTROL_LEVEL2",
150        symbols[Group1] = [ Shift_L, ISO_Next_Group ]
151    };
152    key <LCTL> { [ Control_L, ISO_Next_Group ] };
153};
154
155partial modifier_keys
156xkb_symbols "lctrl_lshift_toggle_rev" {
157    key <LFSH> {
158        type[Group1]="PC_CONTROL_LEVEL2",
159        symbols[Group1] = [ Shift_L, ISO_Prev_Group ]
160    };
161    key <LCTL> { [ Control_L, ISO_Prev_Group ] };
162};
163
164partial modifier_keys
165xkb_symbols "rctrl_rshift_toggle" {
166    key <RTSH> {
167        type[Group1]="PC_CONTROL_LEVEL2",
168        symbols[Group1] = [ Shift_R, ISO_Next_Group ]
169    };
170    key <RCTL> { [ Control_R, ISO_Next_Group ] };
171};
172
173partial modifier_keys
174xkb_symbols "ctrl_shift_toggle" {
175    include "group(lctrl_lshift_toggle)"
176    include "group(rctrl_rshift_toggle)"
177};
178
179partial modifier_keys
180xkb_symbols "ctrl_shift_toggle_bidir" {
181    include "group(lctrl_lshift_toggle_rev)"
182    include "group(rctrl_rshift_toggle)"
183};
184
185
186//
187// CTRL-ALT toggle section
188//
189partial modifier_keys
190xkb_symbols "lctrl_lalt_toggle" {
191    virtual_modifiers Alt;
192    key <LALT> {
193        type[Group1]="PC_CONTROL_LEVEL2",
194        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
195        virtualMods= Alt
196    };
197    key <LCTL> {
198        type[Group1]="PC_ALT_LEVEL2",
199        symbols[Group1] = [ Control_L, ISO_Next_Group ]
200    };
201};
202
203partial modifier_keys
204xkb_symbols "lctrl_lalt_toggle_rev" {
205    virtual_modifiers Alt;
206    key <LALT> {
207        type[Group1]="PC_CONTROL_LEVEL2",
208        symbols[Group1] = [ NoSymbol, ISO_Prev_Group ],
209        virtualMods= Alt
210    };
211    key <LCTL> {
212        type[Group1]="PC_ALT_LEVEL2",
213        symbols[Group1] = [ Control_L, ISO_Prev_Group ]
214    };
215};
216
217partial modifier_keys
218xkb_symbols "rctrl_ralt_toggle" {
219    virtual_modifiers Alt;
220    key <RALT> {
221        type[Group1]="PC_CONTROL_LEVEL2",
222        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
223        virtualMods= Alt
224    };
225    key <RCTL> {
226        type[Group1]="PC_ALT_LEVEL2",
227        symbols[Group1] = [ Control_R, ISO_Next_Group ]
228    };
229};
230
231partial modifier_keys
232xkb_symbols "ctrl_alt_toggle" {
233    include "group(lctrl_lalt_toggle)"
234    include "group(rctrl_ralt_toggle)"
235};
236
237partial modifier_keys
238xkb_symbols "ctrl_alt_toggle_bidir" {
239    include "group(lctrl_lalt_toggle_rev)"
240    include "group(rctrl_ralt_toggle)"
241};
242
243
244//
245// ALT-SHIFT toggle section
246//
247partial modifier_keys
248xkb_symbols "lalt_lshift_toggle" {
249    virtual_modifiers Alt;
250    key <LALT> {
251        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
252        virtualMods= Alt
253    };
254    key <LFSH> {
255        type[Group1]="PC_ALT_LEVEL2",
256        symbols[Group1] = [ Shift_L, ISO_Next_Group ]
257    };
258};
259
260partial modifier_keys
261xkb_symbols "lalt_lshift_toggle_rev" {
262    virtual_modifiers Alt;
263    key <LALT> {
264        symbols[Group1] = [ NoSymbol, ISO_Prev_Group ],
265        virtualMods= Alt
266    };
267    key <LFSH> {
268        type[Group1]="PC_ALT_LEVEL2",
269        symbols[Group1] = [ Shift_L, ISO_Prev_Group ]
270    };
271};
272
273partial modifier_keys
274xkb_symbols "ralt_rshift_toggle" {
275    virtual_modifiers Alt;
276    key <RALT> {
277        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
278        virtualMods= Alt
279    };
280    key <RTSH> {
281        type[Group1]="PC_ALT_LEVEL2",
282        symbols[Group1] = [ Shift_R, ISO_Next_Group ]
283    };
284};
285
286partial modifier_keys
287xkb_symbols "alt_shift_toggle" {
288    include "group(lalt_lshift_toggle)"
289    include "group(ralt_rshift_toggle)"
290};
291
292partial modifier_keys
293xkb_symbols "alt_shift_toggle_bidir" {
294    include "group(lalt_lshift_toggle_rev)"
295    include "group(ralt_rshift_toggle)"
296};
297
298
299// Pressing the Menu key switches to the next group,
300// while Shift+Menu acts as Menu.
301partial modifier_keys
302xkb_symbols "menu_toggle" {
303    key <MENU> { [ ISO_Next_Group, Menu ] };
304};
305
306// Pressing the left Win key switches to the next group.
307// (Using this map, you should declare your keyboard as
308// pc101 or pc102 instead of pc104 or pc105.)
309partial modifier_keys
310xkb_symbols "lwin_toggle" {
311    virtual_modifiers AltGr;
312    key <LWIN> {
313         virtualMods= AltGr,
314        symbols[Group1] = [ ISO_Next_Group ]
315    };
316};
317
318// Pressing the right Win key switches to the next group.
319// (Using this map, you should declare your keyboard as
320// pc101 or pc102 instead of pc104 or pc105.)
321partial modifier_keys
322xkb_symbols "rwin_toggle" {
323    virtual_modifiers AltGr;
324    key <RWIN> {
325        virtualMods= AltGr,
326        symbols[Group1] = [ ISO_Next_Group ]
327    };
328};
329
330// Pressing both Ctrl keys switches to the next or previous group
331// (depending on which Ctrl is pressed first).
332partial modifier_keys
333xkb_symbols "ctrls_toggle" {
334    virtual_modifiers LControl, RControl;
335    key <LCTL> {
336        type[Group1]="PC_CONTROL_LEVEL2",
337        symbols[Group1] = [ NoSymbol, ISO_Prev_Group ],
338        virtualMods= LControl
339    };
340    key <RCTL> {
341        type[Group1]="PC_CONTROL_LEVEL2",
342        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
343        virtualMods= RControl
344    };
345};
346
347// Pressing both Alt switches to the next or previous group
348// (depending on which Alt is pressed first).
349partial modifier_keys
350xkb_symbols "alts_toggle" {
351    virtual_modifiers LAlt, RAlt;
352    key <LALT> {
353        type[Group1]="PC_RALT_LEVEL2",
354        symbols[Group1] = [ NoSymbol, ISO_Prev_Group ],
355        virtualMods= LAlt
356    };
357    key <RALT> {
358        type[Group1]="PC_LALT_LEVEL2",
359        symbols[Group1] = [ NoSymbol, ISO_Next_Group ],
360        virtualMods= RAlt
361    };
362};
363
364// Pressing the left Shift key switches to the next group.
365partial modifier_keys
366xkb_symbols "lshift_toggle" {
367    virtual_modifiers AltGr;
368    key <LFSH> {
369        symbols[Group1] = [ ISO_Next_Group ],
370        virtualMods= AltGr
371    };
372};
373
374// Pressing the right Shift key switches to the next group.
375partial modifier_keys
376xkb_symbols "rshift_toggle" {
377    virtual_modifiers AltGr;
378    key <RTSH> {
379        symbols[Group1] = [ ISO_Next_Group ],
380        virtualMods= AltGr
381    };
382};
383
384// Pressing the left Alt key switches to the next group.
385partial modifier_keys
386xkb_symbols "lalt_toggle" {
387    virtual_modifiers AltGr;
388    key <LALT> {
389        symbols[Group1] = [ ISO_Next_Group ],
390        virtualMods= AltGr
391    };
392};
393
394// Pressing the left Ctrl key switches to the next group.
395partial modifier_keys
396xkb_symbols "lctrl_toggle" {
397    virtual_modifiers AltGr;
398    key <LCTL> {
399        symbols[Group1] = [ ISO_Next_Group ],
400        virtualMods= AltGr
401    };
402};
403
404// Pressing the right Ctrl key switches to the next group.
405partial modifier_keys
406xkb_symbols "rctrl_toggle" {
407    virtual_modifiers AltGr;
408    key <RCTL> {
409        symbols[Group1] = [ ISO_Next_Group ],
410        virtualMods= AltGr
411    };
412};
413
414// Pressing Alt+Caps_Lock switches to the next group,
415// pressing Caps_Lock toggles CapsLock.
416partial modifier_keys
417xkb_symbols "alt_caps_toggle" {
418    key <CAPS> {
419       type="PC_ALT_LEVEL2",
420       symbols[Group1] = [ Caps_Lock, ISO_Next_Group ]
421    };
422};
423
424hidden partial modifier_keys
425xkb_symbols "olpc" {
426    key <I219> { [ ISO_Next_Group, ISO_Prev_Group ] };
427};
428
429partial modifier_keys
430xkb_symbols "alt_space_toggle" {
431    key <SPCE> {
432        type[Group1]="PC_ALT_LEVEL2",
433        symbols[Group1] = [ space, ISO_Next_Group ]
434    };
435};
436
437// Pressing the Scroll Lock key switches to the next group,
438partial modifier_keys
439xkb_symbols "sclk_toggle" {
440    virtual_modifiers AltGr;
441    key <SCLK> {
442        virtualMods= AltGr,
443        symbols[Group1] = [ ISO_Next_Group ]
444    };
445};
446
447// Control_L+Win_L selects the first group (presumably Lat),
448// Control_R+Menu selects the second group (presumably Rus).
449partial modifier_keys
450xkb_symbols "lctrl_lwin_rctrl_menu" {
451    key <LWIN> {
452        type[Group1] = "PC_CONTROL_LEVEL2",
453        symbols[Group1] = [ Super_L, ISO_First_Group ]
454    };
455    key <MENU> {
456        type[Group1] = "PC_CONTROL_LEVEL2",
457        symbols[Group1] = [ Menu, ISO_Last_Group ]
458    };
459};
460
461// Control_L+Win_L toggles groups.
462partial modifier_keys
463xkb_symbols "lctrl_lwin_toggle" {
464    key <LWIN> {
465        type[ Group1 ]    = "PC_CONTROL_LEVEL2",
466        symbols[ Group1 ] = [ Super_L,    ISO_Next_Group ]
467    };
468};
469
470