Adding a way to ignore bits in the state.

This commit is contained in:
Christoph Lohmann 2013-02-16 13:57:12 +01:00
parent e0ec2cf984
commit f4a6c20f46
2 changed files with 9 additions and 0 deletions

View File

@ -104,6 +104,12 @@ static Shortcut shortcuts[] = {
*/ */
static KeySym mappedkeys[] = { -1 }; 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 */ /* key, mask, output, keypad, cursor, crlf */
static Key key[] = { static Key key[] = {
/* keysym mask string keypad cursor crlf */ /* keysym mask string keypad cursor crlf */

3
st.c
View File

@ -61,6 +61,7 @@
#define DRAW_BUF_SIZ 20*1024 #define DRAW_BUF_SIZ 20*1024
#define XK_ANY_MOD UINT_MAX #define XK_ANY_MOD UINT_MAX
#define XK_NO_MOD 0 #define XK_NO_MOD 0
#define XK_SWITCH_MOD (1<<13)
#define REDRAW_TIMEOUT (80*1000) /* 80 ms */ #define REDRAW_TIMEOUT (80*1000) /* 80 ms */
@ -3008,6 +3009,8 @@ focus(XEvent *ev) {
inline bool inline bool
match(uint mask, uint state) { match(uint mask, uint state) {
state &= ~(ignoremod);
if(mask == XK_NO_MOD && state) if(mask == XK_NO_MOD && state)
return false; return false;
if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state) if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state)