diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-19 21:17:01 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-19 21:17:01 +0000 |
| commit | 2f541b6ef3fdc0fc1c7604c068b82d9e64b90354 (patch) | |
| tree | 6dd59f47fea6f233918c9806e57407c756c5b115 | |
| parent | ecdb7d5807059405608629264e698b21b6222203 (diff) | |
make either key work for people who have super_l and super_r (or whatever ones) bound to different mod masks
| -rw-r--r-- | openbox/keyboard.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/openbox/keyboard.c b/openbox/keyboard.c index ab9d05b0..432599e8 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -31,7 +31,6 @@ #include "config.h" #include "keytree.h" #include "keyboard.h" -#include "translate.h" #include "moveresize.h" #include "popup.h" #include "gettext.h" @@ -293,7 +292,16 @@ void keyboard_event(ObClient *client, const XEvent *e) p = curpos->first_child; while (p) { if (p->key == e->xkey.keycode && - p->state == e->xkey.state) + /* tricksy. + if you have Super_L and Super_R bound to different modXmasks, + this makes either mod mask count as Super + + e.g. Super_L is mod1 and Super_R is mod2, so.. + p->state = 00011 + key state is just Super_L so 00001 + 00011 | 00001 == 00011 == p->state + */ + (p->state | e->xkey.state) == p->state) { /* if we hit a key binding, then close any open menus and run it */ if (menu_frame_visible) |
