summaryrefslogtreecommitdiff
path: root/openbox/keyboard.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-19 21:17:01 +0000
committerDana Jansens <danakj@orodu.net>2007-05-19 21:17:01 +0000
commit2f541b6ef3fdc0fc1c7604c068b82d9e64b90354 (patch)
tree6dd59f47fea6f233918c9806e57407c756c5b115 /openbox/keyboard.c
parentecdb7d5807059405608629264e698b21b6222203 (diff)
make either key work for people who have super_l and super_r (or whatever ones) bound to different mod masks
Diffstat (limited to 'openbox/keyboard.c')
-rw-r--r--openbox/keyboard.c12
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)