diff options
author | keis <keijser@gmail.com> | 2011-03-16 19:42:22 +0100 |
---|---|---|
committer | Brendan Taylor <whateley@gmail.com> | 2011-04-18 20:23:43 -0600 |
commit | d2c7da7a03c8f9b76f78636a2374f439dae5c72d (patch) | |
tree | f524b6d919c32e81b203dc42f7ca8836ff888d5f | |
parent | 3813b1885e478e3c2a178cbf3136ce597c2d77f1 (diff) |
use updated modstate for key events
-rw-r--r-- | examples/data/plugins/keycmd.py | 2 | ||||
-rw-r--r-- | src/events.c | 8 |
2 files changed, 4 insertions, 6 deletions
diff --git a/examples/data/plugins/keycmd.py b/examples/data/plugins/keycmd.py index 99f92af..5fb7e8a 100644 --- a/examples/data/plugins/keycmd.py +++ b/examples/data/plugins/keycmd.py @@ -273,11 +273,9 @@ def key_release(uzbl, key): 2. Update the keycmd uzbl variable if anything changed.''' k = uzbl.keylet modstate, key = parse_key_event(uzbl, key) - modstate = set([m for m in modstate if not k.key_ignored(m)]) if len(key) > 1: if k.is_modcmd: - modstate.remove('<%s>' % key) uzbl.event('MODCMD_EXEC', modstate, k) clear_modcmd(uzbl) diff --git a/src/events.c b/src/events.c index 5ff9a52..c588729 100644 --- a/src/events.c +++ b/src/events.c @@ -273,12 +273,12 @@ key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { gchar *keyname; guint32 ukval = gdk_keyval_to_unicode(keyval); gchar *modifiers = NULL; - guint mod; + guint mod = key_to_modifier (keyval); - /* check modifier state*/ - modifiers = get_modifier_mask(state); + /* Get modifier state including this key press/release */ + modifiers = get_modifier_mask(mode == GDK_KEY_PRESS ? state | mod : state & ~mod); - if(is_modifier && (mod = key_to_modifier (keyval))) { + if(is_modifier && mod) { send_event(mode == GDK_KEY_PRESS ? MOD_PRESS : MOD_RELEASE, NULL, TYPE_STR, modifiers, TYPE_NAME, get_modifier_mask (mod), |