commit f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0 from: Christoph Lohmann <20h@r-36.net> date: Sat Feb 16 12:57:12 2013 UTC Adding a way to ignore bits in the state. commit - e0ec2cf984ff8006b99cf4ca8590ceec7113daac commit + f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0 blob - 93fc26d650e11f32dafb84cda6609cb983eaa708 blob + 07a22ed9610a731ebf043385e3ed653d7fc86902 --- config.def.h +++ config.def.h @@ -104,6 +104,12 @@ static Shortcut shortcuts[] = { */ static KeySym mappedkeys[] = { -1 }; +/* + * Which bits of the state should be ignored. By default the state bit for the + * keyboard layout (XK_SWITCH_MOD) is ignored. + */ +uint ignoremod = XK_SWITCH_MOD; + /* key, mask, output, keypad, cursor, crlf */ static Key key[] = { /* keysym mask string keypad cursor crlf */ blob - 0ae2c90b3b38f9f2d8878f2f272eeb0dbd3e7028 blob + 64366afb3e9393613db1460faed9c5bd9090c05c --- st.c +++ st.c @@ -61,6 +61,7 @@ #define DRAW_BUF_SIZ 20*1024 #define XK_ANY_MOD UINT_MAX #define XK_NO_MOD 0 +#define XK_SWITCH_MOD (1<<13) #define REDRAW_TIMEOUT (80*1000) /* 80 ms */ @@ -3008,6 +3009,8 @@ focus(XEvent *ev) { inline bool match(uint mask, uint state) { + state &= ~(ignoremod); + if(mask == XK_NO_MOD && state) return false; if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state)