diff options
author | Christoph Lohmann <20h@r-36.net> | 2013-02-16 13:57:12 +0100 |
---|---|---|
committer | Christoph Lohmann <20h@r-36.net> | 2013-02-16 13:57:12 +0100 |
commit | f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0 (patch) | |
tree | 7c87c4fe3878af377f9e7fd0dd0ee51b6bb3786e | |
parent | e0ec2cf984ff8006b99cf4ca8590ceec7113daac (diff) | |
download | st-f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0.tar.gz |
Adding a way to ignore bits in the state.
-rw-r--r-- | config.def.h | 6 | ||||
-rw-r--r-- | st.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index 93fc26d..07a22ed 100644 --- a/config.def.h +++ b/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 */ @@ -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) |