diff options
author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2011-08-14 17:13:59 +0200 |
---|---|---|
committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2011-08-14 17:13:59 +0200 |
commit | 6f260ba164ee302b50398e529f71e305e435504a (patch) | |
tree | 75c5323df2bd71d57fb57f9902df2543a90707b5 /st.c | |
parent | 8503f954a1cb2d08124fe2c1f0227bd23dffff46 (diff) | |
download | st-6f260ba164ee302b50398e529f71e305e435504a.tar.gz st-6f260ba164ee302b50398e529f71e305e435504a.zip |
fix custom key handling.
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -43,6 +43,8 @@ | |||
43 | #define ESC_ARG_SIZ 16 | 43 | #define ESC_ARG_SIZ 16 |
44 | #define DRAW_BUF_SIZ 1024 | 44 | #define DRAW_BUF_SIZ 1024 |
45 | #define UTF_SIZ 4 | 45 | #define UTF_SIZ 4 |
46 | #define XK_NO_MOD UINT_MAX | ||
47 | #define XK_ANY_MOD 0 | ||
46 | 48 | ||
47 | #define SERRNO strerror(errno) | 49 | #define SERRNO strerror(errno) |
48 | #define MIN(a, b) ((a) < (b) ? (a) : (b)) | 50 | #define MIN(a, b) ((a) < (b) ? (a) : (b)) |
@@ -1833,9 +1835,12 @@ focus(XEvent *ev) { | |||
1833 | char* | 1835 | char* |
1834 | kmap(KeySym k, unsigned int state) { | 1836 | kmap(KeySym k, unsigned int state) { |
1835 | int i; | 1837 | int i; |
1836 | for(i = 0; i < LEN(key); i++) | 1838 | state &= ~Mod2Mask; |
1837 | if(key[i].k == k && (key[i].mask == 0 || key[i].mask & state)) | 1839 | for(i = 0; i < LEN(key); i++) { |
1840 | unsigned int mask = key[i].mask; | ||
1841 | if(key[i].k == k && ((state & mask) == mask || (mask == XK_NO_MOD && !state))) | ||
1838 | return (char*)key[i].s; | 1842 | return (char*)key[i].s; |
1843 | } | ||
1839 | return NULL; | 1844 | return NULL; |
1840 | } | 1845 | } |
1841 | 1846 | ||