aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--examples/data/plugins/keycmd.py2
-rw-r--r--src/events.c8
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),