From d2c7da7a03c8f9b76f78636a2374f439dae5c72d Mon Sep 17 00:00:00 2001 From: keis Date: Wed, 16 Mar 2011 19:42:22 +0100 Subject: use updated modstate for key events --- src/events.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/events.c') 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), -- cgit v1.2.3