commit 2ec571a30c0c3b1a17f6b3631c80d573582f59a1
Author:     Petar KapriÅ¡ <[email protected]>
AuthorDate: Sun Jul 18 00:14:00 2021 +0200
Commit:     Hiltjo Posthuma <[email protected]>
CommitDate: Sun Jul 18 11:44:56 2021 +0200

    Add 14th bit to XK_SWITCH_MOD bitmask
    
    The bits of uint signal in an XKeyEvent which concern the key group 
(keyboard
    layout) are bits 13 and 14, as documented here:
    
https://www.x.org/releases/X11R7.7/doc/libX11/XKB/xkblib.html#Groups_and_Shift_Levels
    In the older version, only bit 13 was marked as part of XK_SWITCH_MOD, this
    causes issues for users who have more than two keymaps. the 14th bit is not
    in ignoremod, key sequences are not caught by match(), if they switch to a 
third
    or fourth keyboard.

diff --git a/x.c b/x.c
index 7186040..248d505 100644
--- a/x.c
+++ b/x.c
@@ -48,7 +48,7 @@ typedef struct {
 /* X modifiers */
 #define XK_ANY_MOD    UINT_MAX
 #define XK_NO_MOD     0
-#define XK_SWITCH_MOD (1<<13)
+#define XK_SWITCH_MOD (1<<13|1<<14)
 
 /* function definitions used in config.h */
 static void clipcopy(const Arg *);

Reply via email to