diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/events.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/events.c b/src/events.c index 3074b34..2da3e38 100644 --- a/src/events.c +++ b/src/events.c @@ -267,6 +267,12 @@ guint key_to_modifier(guint keyval) { } } +guint button_to_modifier(guint buttonval) { + if(buttonval <= 5) + return 1 << (7 + buttonval); + return 0; +} + /* Transform gdk key events to our own events */ void key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { @@ -312,9 +318,10 @@ button_to_event(guint buttonval, guint state, gint mode) { gchar *details; const char *reps; gchar *modifiers = NULL; + guint mod = button_to_modifier (buttonval); - /* Get modifier state */ - modifiers = get_modifier_mask(state); + /* Get modifier state including this button press/release */ + modifiers = get_modifier_mask(mode != GDK_BUTTON_RELEASE ? state | mod : state & ~mod); switch (mode) { case GDK_2BUTTON_PRESS: |