// using the group(switch) map, the right alt key temporarily chooses // the second keyboard group (until it is released). // partial modifier_keys xkb_symbols "switch" { key { symbols[Group1]= [ Mode_switch, Multi_key ], virtualMods= AltGr }; }; // using the group(lswitch) map, the left alt key temporarily chooses // the second keyboard group (until it is released). // partial modifier_keys xkb_symbols "lswitch" { key { symbols[Group1]= [ Mode_switch, Multi_key ], virtualMods= AltGr }; }; // using the group(win_switch) map, both Windows'logo keys temporarily // choose the second keyboard group (until release). If you use this // map, you would declare you keyboard as pc101 or pc102 instead of // pc104 or pc105. partial modifier_keys xkb_symbols "win_switch" { include "group(lwin_switch)" include "group(rwin_switch)" }; // using the group(lwin_switch) map, the left Windows' logo key // temporarily chooses the second keyboard group (until it is // released). If you use this map, you would declare you keyboard as // pc101 or pc102 instead of pc104 or pc105. partial modifier_keys xkb_symbols "lwin_switch" { key { symbols[Group1] = [ Mode_switch, Multi_key ], virtualMods= AltGr }; }; // using the group(rwin_switch) map, the right Windows' logo key // temporarily chooses the second keyboard group (until it is // released). If you use this map, you would declare you keyboard as // pc101 or pc102 instead of pc104 or pc105. partial modifier_keys xkb_symbols "rwin_switch" { key { symbols[Group1] = [ Mode_switch, Multi_key ], virtualMods= AltGr }; }; // Right Ctrl key temporary chooses the second keyboard group. // Needed mainly for Canadian keyboard partial modifier_keys xkb_symbols "rctrl_switch" { key { symbols[Group1]= [ Mode_switch ] }; }; // using the group(toggle) map, pressing the right alt key switches to // the next sequential group (until the next explicit group change). partial modifier_keys xkb_symbols "toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // using the group(shifts_toggle) map, pressing both shift keys together // locks the next or previous sequential keyboard group // (depending on which shift is pressed first - right or left, // correspongingly) partial modifier_keys xkb_symbols "shifts_toggle" { key { [ Shift_L, ISO_Prev_Group ] }; key { [ Shift_R, ISO_Next_Group ] }; }; // using the group(ctrl_shift_toggle) map, pressing: // Control_L+Shift_L locks the previous group // Control_R+Shift_R locks the next group // If you have two groups and group wrap is enabled, the effect is // indistinguishable. partial modifier_keys xkb_symbols "ctrl_shift_toggle" { key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ Shift_L, ISO_Prev_Group ] }; key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ Shift_R, ISO_Next_Group ] }; key { [ Control_L, ISO_Prev_Group ] }; key { [ Control_R, ISO_Next_Group ] }; }; // using the group(lctrl_lshift_toggle) map, pressing: // Control_L+Shift_L locks the next group // If you have two groups and group wrap is enabled, the effect is // indistinguishable. partial modifier_keys xkb_symbols "lctrl_lshift_toggle" { key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ Shift_L, ISO_Next_Group ] }; key { [ Control_L, ISO_Next_Group ] }; }; // using the group(rctrl_rshift_toggle) map, pressing: // Control_R+Shift_R locks the next group // If you have two groups and group wrap is enabled, the effect is // indistinguishable. partial modifier_keys xkb_symbols "rctrl_rshift_toggle" { key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ Shift_R, ISO_Next_Group ] }; key { [ Control_R, ISO_Next_Group ] }; }; // using the group(shift_caps_toggle) map, pressing: // Shift+Caps Lock toggles group partial modifier_keys xkb_symbols "shift_caps_toggle" { key { [ Caps_Lock, ISO_Next_Group ] }; }; // using the group(shift_caps_switch) map, pressing: // Caps Lock selects the first group // Shift+Caps Lock selects the last group partial modifier_keys xkb_symbols "shift_caps_switch" { key { [ ISO_First_Group, ISO_Last_Group ] }; }; // using the group(win_menu_switch) map, pressing: // LWIN selects the first group // RWIN or MENU selects the last group partial modifier_keys xkb_symbols "win_menu_switch" { virtual_modifiers AltGr; key { virtualMods= AltGr, symbols[Group1] = [ ISO_First_Group ] }; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Last_Group ] }; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Last_Group ] }; }; // using the group(lctrl_rctrl_switch) map, pressing: // Left Control selects the first group // Right Control selects the last group partial modifier_keys xkb_symbols "lctrl_rctrl_switch" { virtual_modifiers AltGr; key { virtualMods= AltGr, symbols[Group1] = [ ISO_First_Group ] }; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Last_Group ] }; }; // using the group(ctrl_alt_toggle) map, pressing: // Control_L+Alt_L locks the previous group // Control_R+Alt_R locks the next group // If you have two groups and group wrap is enabled, the effect is // indistinguishable. partial modifier_keys xkb_symbols "ctrl_alt_toggle" { virtual_modifiers Alt; key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], virtualMods= Alt }; key { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Next_Group ], virtualMods= Alt }; key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Control_L, ISO_Prev_Group ] }; key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Control_R, ISO_Next_Group ] }; }; // using the group(alt_shift_toggle) map, pressing: // Shift_L+Alt_L locks the previous group // Shift_R+Alt_R locks the next group // If you have two groups and group wrap is enabled, the effect is // indistinguishable. partial modifier_keys xkb_symbols "alt_shift_toggle" { virtual_modifiers Alt; key { symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], virtualMods= Alt }; key { symbols[Group1]= [ NoSymbol, ISO_Next_Group ], virtualMods= Alt }; key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Shift_L, ISO_Prev_Group ] }; key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Shift_R, ISO_Next_Group ] }; }; // using the group(menu_toggle) map, pressing: // Menu key toggles groups // Shift+Menu acts as Menu partial modifier_keys xkb_symbols "menu_toggle" { key { [ ISO_Next_Group, Menu ] }; }; // using the group(lwin_toggle) map, pressing the left Windows' logo key // toggles groups. If you use this map, you would declare you keyboard // as pc101 or pc102 instead of pc104 or pc105. partial modifier_keys xkb_symbols "lwin_toggle" { virtual_modifiers AltGr; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Next_Group ] }; }; // using the group(rwin_toggle) map, pressing the right Windows' logo key // toggles groups. If you use this map, you would declare you keyboard // as pc101 or pc102 instead of pc104 or pc105. partial modifier_keys xkb_symbols "rwin_toggle" { virtual_modifiers AltGr; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Next_Group ] }; }; // Both Ctrls pressed together toggle group partial modifier_keys xkb_symbols "ctrls_toggle" { virtual_modifiers LControl, RControl; key { type[Group1]="PC_RCONTROL_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], virtualMods= LControl }; key { type[Group1]="PC_LCONTROL_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Next_Group ], virtualMods= RControl }; }; // Both Alts pressed together toggle group partial modifier_keys xkb_symbols "alts_toggle" { virtual_modifiers LAlt, RAlt; key { type[Group1]="PC_RALT_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], virtualMods= LAlt }; key { type[Group1]="PC_LALT_LEVEL2", symbols[Group1]= [ NoSymbol, ISO_Next_Group ], virtualMods= RAlt }; }; // Left Shift key toggles group partial modifier_keys xkb_symbols "lshift_toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // Right Shift key toggles group partial modifier_keys xkb_symbols "rshift_toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // Left Alt key toggles group partial modifier_keys xkb_symbols "lalt_toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // Left Ctrl key toggles group partial modifier_keys xkb_symbols "lctrl_toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // Right Ctrl key toggles group partial modifier_keys xkb_symbols "rctrl_toggle" { virtual_modifiers AltGr; key { symbols[Group1]= [ ISO_Next_Group ], virtualMods= AltGr }; }; // using the group(alt_caps_toggle) map, pressing: // Alt+Caps Lock toggles group // Caps Lock toggles caps lock partial modifier_keys xkb_symbols "alt_caps_toggle" { key { type="PC_ALT_LEVEL2", symbols[Group1]= [ Caps_Lock, ISO_Next_Group] }; }; partial hidden modifier_keys xkb_symbols "olpc" { key { [ ISO_Next_Group, ISO_Prev_Group ] }; }; partial modifier_keys xkb_symbols "alt_space_toggle" { key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ space, ISO_Next_Group ] }; }; // using the group(sclk_toggle) map, pressing the Scroll Lock key // toggles groups. partial modifier_keys xkb_symbols "sclk_toggle" { virtual_modifiers AltGr; key { virtualMods= AltGr, symbols[Group1] = [ ISO_Next_Group ] }; }; // Control_L+Win_L locks the first group (presumably Lat). // Control_R+Menu locks the second group (presumably Rus). partial modifier_keys xkb_symbols "lctrl_lwin_rctrl_menu" { key { type[ Group1 ] = "PC_CONTROL_LEVEL2", symbols[ Group1 ] = [ Super_L, ISO_First_Group ] }; key { type[ Group1 ] = "PC_CONTROL_LEVEL2", symbols[ Group1 ] = [ Menu, ISO_Last_Group ] }; }; // lctrl_lwin_rctrl_menu