diff options
Diffstat (limited to 'xorg-server/xkeyboard-config')
-rw-r--r-- | xorg-server/xkeyboard-config/rules/base.o_s.part | 1 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/rules/base.xml.in | 6 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/symbols/group | 791 |
3 files changed, 409 insertions, 389 deletions
diff --git a/xorg-server/xkeyboard-config/rules/base.o_s.part b/xorg-server/xkeyboard-config/rules/base.o_s.part index 0d46fa00c..00634858d 100644 --- a/xorg-server/xkeyboard-config/rules/base.o_s.part +++ b/xorg-server/xkeyboard-config/rules/base.o_s.part @@ -39,6 +39,7 @@ grp:lalt_toggle = +group(lalt_toggle)
grp:sclk_toggle = +group(sclk_toggle)
grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch)
+ grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu)
lv3:switch = +level3(switch)
lv3:ralt_switch = +level3(ralt_switch)
lv3:ralt_switch_multikey = +level3(ralt_switch_multikey)
diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index cdb3bf96c..6600d3bcb 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -4886,6 +4886,12 @@ <_description>Scroll Lock</_description>
</configItem>
</option>
+ <option>
+ <configItem>
+ <name>grp:lctrl_lwin_rctrl_menu</name>
+ <_description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</_description>
+ </configItem>
+ </option>
</group>
<group allowMultipleSelection="true">
<!-- The key combination used to choose the 3rd (and 4th, together with Shift)
diff --git a/xorg-server/xkeyboard-config/symbols/group b/xorg-server/xkeyboard-config/symbols/group index f39b05159..f0b6bfb0d 100644 --- a/xorg-server/xkeyboard-config/symbols/group +++ b/xorg-server/xkeyboard-config/symbols/group @@ -1,389 +1,402 @@ -// $XKeyboardConfig$ -// $Xorg: group,v 1.3 2000/08/17 19:54:43 cpqbld Exp $ -// using the group(switch) map, the right alt key temporarily chooses -// the second keyboard group (until it is released). -// -// $XFree86: xc/programs/xkbcomp/symbols/group,v 3.9 2003/12/30 13:26:25 pascal Exp $ -partial modifier_keys -xkb_symbols "switch" { - key <RALT> { - 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 <LALT> { - 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 <LWIN> { - 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 <RWIN> { - 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 <RCTL> { - 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 <RALT> { - 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 <LFSH> { [ Shift_L, ISO_Prev_Group ] }; - key <RTSH> { [ 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 <LFSH> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ Shift_L, ISO_Prev_Group ] - }; - key <RTSH> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ Shift_R, ISO_Next_Group ] - }; - key <LCTL> { [ Control_L, ISO_Prev_Group ] }; - key <RCTL> { [ 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 <LFSH> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ Shift_L, ISO_Next_Group ] - }; - key <LCTL> { [ 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 <RTSH> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ Shift_R, ISO_Next_Group ] - }; - key <RCTL> { [ 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> { [ 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 <CAPS> { [ 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 <LWIN> { - virtualMods= AltGr, - symbols[Group1] = [ ISO_First_Group ] - }; - key <MENU> { - virtualMods= AltGr, - symbols[Group1] = [ ISO_Last_Group ] - }; - key <RWIN> { - 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 <LCTL> { - virtualMods= AltGr, - symbols[Group1] = [ ISO_First_Group ] - }; - key <RCTL> { - 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 <LALT> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], - virtualMods= Alt - }; - key <RALT> { - type[Group1]="PC_CONTROL_LEVEL2", - symbols[Group1]= [ NoSymbol, ISO_Next_Group ], - virtualMods= Alt - }; - key <LCTL> { - type[Group1]="PC_ALT_LEVEL2", - symbols[Group1]= [ Control_L, ISO_Prev_Group ] - }; - key <RCTL> { - 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 <LALT> { - symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], - virtualMods= Alt - }; - key <RALT> { - symbols[Group1]= [ NoSymbol, ISO_Next_Group ], - virtualMods= Alt - }; - key <LFSH> { - type[Group1]="PC_ALT_LEVEL2", - symbols[Group1]= [ Shift_L, ISO_Prev_Group ] - }; - key <RTSH> { - 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 <MENU> { [ 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 <LWIN> { - 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 <RWIN> { - 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 <LCTL> { - type[Group1]="PC_RCONTROL_LEVEL2", - symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], - virtualMods= LControl - }; - key <RCTL> { - 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 <LALT> { - type[Group1]="PC_RALT_LEVEL2", - symbols[Group1]= [ NoSymbol, ISO_Prev_Group ], - virtualMods= LAlt - }; - key <RALT> { - 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 <LFSH> { - symbols[Group1]= [ ISO_Next_Group ], - virtualMods= AltGr - }; -}; - -// Right Shift key toggles group -partial modifier_keys -xkb_symbols "rshift_toggle" { - virtual_modifiers AltGr; - key <RTSH> { - symbols[Group1]= [ ISO_Next_Group ], - virtualMods= AltGr - }; -}; - -// Left Alt key toggles group -partial modifier_keys -xkb_symbols "lalt_toggle" { - virtual_modifiers AltGr; - key <LALT> { - symbols[Group1]= [ ISO_Next_Group ], - virtualMods= AltGr - }; -}; - -// Left Ctrl key toggles group -partial modifier_keys -xkb_symbols "lctrl_toggle" { - virtual_modifiers AltGr; - key <LCTL> { - symbols[Group1]= [ ISO_Next_Group ], - virtualMods= AltGr - }; -}; - -// Right Ctrl key toggles group -partial modifier_keys -xkb_symbols "rctrl_toggle" { - virtual_modifiers AltGr; - key <RCTL> { - 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 <CAPS> { - type="PC_ALT_LEVEL2", - symbols[Group1]= [ Caps_Lock, ISO_Next_Group] - }; -}; - -partial hidden modifier_keys -xkb_symbols "olpc" { - key <I219> { [ ISO_Next_Group, ISO_Prev_Group ] }; -}; - -partial modifier_keys -xkb_symbols "alt_space_toggle" { - key <SPCE> { - 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 <SCLK> { - virtualMods= AltGr, - symbols[Group1] = [ ISO_Next_Group ] - }; -}; - +// $XKeyboardConfig$
+// $Xorg: group,v 1.3 2000/08/17 19:54:43 cpqbld Exp $
+// using the group(switch) map, the right alt key temporarily chooses
+// the second keyboard group (until it is released).
+//
+// $XFree86: xc/programs/xkbcomp/symbols/group,v 3.9 2003/12/30 13:26:25 pascal Exp $
+partial modifier_keys
+xkb_symbols "switch" {
+ key <RALT> {
+ 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 <LALT> {
+ 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 <LWIN> {
+ 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 <RWIN> {
+ 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 <RCTL> {
+ 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 <RALT> {
+ 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 <LFSH> { [ Shift_L, ISO_Prev_Group ] };
+ key <RTSH> { [ 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 <LFSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
+ key <RTSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
+ key <LCTL> { [ Control_L, ISO_Prev_Group ] };
+ key <RCTL> { [ 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 <LFSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Next_Group ]
+ };
+ key <LCTL> { [ 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 <RTSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
+ key <RCTL> { [ 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> { [ 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 <CAPS> { [ 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 <LWIN> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_First_Group ]
+ };
+ key <MENU> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Last_Group ]
+ };
+ key <RWIN> {
+ 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 <LCTL> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_First_Group ]
+ };
+ key <RCTL> {
+ 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 <LALT> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= Alt
+ };
+ key <RALT> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <LCTL> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Control_L, ISO_Prev_Group ]
+ };
+ key <RCTL> {
+ 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 <LALT> {
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= Alt
+ };
+ key <RALT> {
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <LFSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
+ key <RTSH> {
+ 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 <MENU> { [ 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 <LWIN> {
+ 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 <RWIN> {
+ 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 <LCTL> {
+ type[Group1]="PC_RCONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= LControl
+ };
+ key <RCTL> {
+ 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 <LALT> {
+ type[Group1]="PC_RALT_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= LAlt
+ };
+ key <RALT> {
+ 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 <LFSH> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Right Shift key toggles group
+partial modifier_keys
+xkb_symbols "rshift_toggle" {
+ virtual_modifiers AltGr;
+ key <RTSH> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Left Alt key toggles group
+partial modifier_keys
+xkb_symbols "lalt_toggle" {
+ virtual_modifiers AltGr;
+ key <LALT> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Left Ctrl key toggles group
+partial modifier_keys
+xkb_symbols "lctrl_toggle" {
+ virtual_modifiers AltGr;
+ key <LCTL> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Right Ctrl key toggles group
+partial modifier_keys
+xkb_symbols "rctrl_toggle" {
+ virtual_modifiers AltGr;
+ key <RCTL> {
+ 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 <CAPS> {
+ type="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Caps_Lock, ISO_Next_Group]
+ };
+};
+
+partial hidden modifier_keys
+xkb_symbols "olpc" {
+ key <I219> { [ ISO_Next_Group, ISO_Prev_Group ] };
+};
+
+partial modifier_keys
+xkb_symbols "alt_space_toggle" {
+ key <SPCE> {
+ 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 <SCLK> {
+ 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 <LWIN> {
+ type[ Group1 ] = "PC_CONTROL_LEVEL2",
+ symbols[ Group1 ] = [ Super_L, ISO_First_Group ]
+ };
+ key <MENU> {
+ type[ Group1 ] = "PC_CONTROL_LEVEL2",
+ symbols[ Group1 ] = [ Menu, ISO_Last_Group ]
+ };
+}; // lctrl_lwin_rctrl_menu
|