tAdding a way to ignore bits in the state. - st - [fork] customized build of st… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0 | |
parent e0ec2cf984ff8006b99cf4ca8590ceec7113daac | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sat, 16 Feb 2013 13:57:12 +0100 | |
Adding a way to ignore bits in the state. | |
Diffstat: | |
M config.def.h | 6 ++++++ | |
M st.c | 3 +++ | |
2 files changed, 9 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -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 */ | |
diff --git a/st.c b/st.c | |
t@@ -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 */ | |
t@@ -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) |