Separating lalt_lshift_toggle option
authorSergey V. Udaltsov <svu@gnome.org>
Mon, 26 Dec 2011 12:26:35 +0000 (12:26 +0000)
committerSergey V. Udaltsov <svu@gnome.org>
Mon, 26 Dec 2011 12:26:35 +0000 (12:26 +0000)
https://bugs.freedesktop.org/show_bug.cgi?id=43922
Now, alt_shift_toggle is composed of "right" and "left" blocks.  Also, it is one-direction ("Next") only.  For people who need both directions, the "bidir" option is introduced but not advertised in xml - because GUI tools usually belong to DEs that perform one-way circular layout switching.

rules/base.o_s.part
rules/base.xml.in
symbols/group

index e1188ba..6bc7ede 100644 (file)
@@ -27,6 +27,9 @@
   grp:alt_caps_toggle   =       +group(alt_caps_toggle)
   grp:ctrl_alt_toggle  =       +group(ctrl_alt_toggle)
   grp:alt_shift_toggle =       +group(alt_shift_toggle)
+  grp:alt_shift_toggle_bidir   =       +group(alt_shift_toggle_bidir)
+  grp:lalt_lshift_toggle       =       +group(lalt_lshift_toggle)
+  grp:ralt_rshift_toggle       =       +group(ralt_rshift_toggle)
   grp:alt_space_toggle =       +group(alt_space_toggle)
   grp:menu_toggle      =       +group(menu_toggle)
   grp:lwin_toggle      =       +group(lwin_toggle)
index 7c94620..22b720f 100644 (file)
       </option>
       <option>
         <configItem>
+          <name>grp:lalt_lshift_toggle</name>
+          <_description>Left Alt+Left Shift</_description>
+        </configItem>
+      </option>
+      <option>
+        <configItem>
           <name>grp:alt_space_toggle</name>
           <_description>Alt+Space</_description>
         </configItem>
index 1aeb371..c65b2b7 100644 (file)
@@ -209,32 +209,57 @@ xkb_symbols "ctrl_alt_toggle" {
     };
 };
 
-// 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" {
+partial modifier_keys
+xkb_symbols "lalt_lshift_toggle" {
     virtual_modifiers Alt;
     key <LALT> {
-       symbols[Group1]= [ NoSymbol,    ISO_Prev_Group ],
-       virtualMods= Alt
+        symbols[Group1]= [ NoSymbol,    ISO_Next_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_Next_Group ]
+    };
+};
+
+partial modifier_keys
+xkb_symbols "lalt_lshift_toggle_rev" {
+    virtual_modifiers Alt;
+    key <LALT> {
+        symbols[Group1]= [ NoSymbol,    ISO_Prev_Group ],
+        virtualMods= Alt
     };
     key <LFSH> {
-       type[Group1]="PC_ALT_LEVEL2",
-       symbols[Group1]= [ Shift_L,     ISO_Prev_Group ]
+        type[Group1]="PC_ALT_LEVEL2",
+        symbols[Group1]= [ Shift_L,     ISO_Prev_Group ]
+    };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_rshift_toggle" {
+    virtual_modifiers Alt;
+    key <RALT> {
+        symbols[Group1]= [ NoSymbol,    ISO_Next_Group ],
+        virtualMods= Alt
     };
     key <RTSH> {
-       type[Group1]="PC_ALT_LEVEL2",
-       symbols[Group1]= [ Shift_R,     ISO_Next_Group ]
+        type[Group1]="PC_ALT_LEVEL2",
+        symbols[Group1]= [ Shift_R,     ISO_Next_Group ]
     };
 };
 
+partial modifier_keys 
+xkb_symbols "alt_shift_toggle" {
+    include "group(lalt_lshift_toggle)"
+    include "group(ralt_rshift_toggle)"
+};
+
+partial modifier_keys 
+xkb_symbols "alt_shift_toggle_bidir" {
+    include "group(lalt_lshift_toggle_rev)"
+    include "group(ralt_rshift_toggle)"
+};
+
 // using the group(menu_toggle) map, pressing:
 //     Menu key toggles groups
 //     Shift+Menu acts as Menu