summaryrefslogtreecommitdiff
path: root/openbox/prompt.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2010-02-11 13:23:54 -0500
committerDana Jansens <danakj@orodu.net>2010-02-11 13:34:46 -0500
commit43d62990e407f409f76f60a405c529f9b15d33f6 (patch)
tree66f551a32e8b8afb1764c28ab49308f042f26d35 /openbox/prompt.c
parent8f1ea42bb147e2a65cf43dfe7aea864d01faedcd (diff)
don't strip the state for keyboard events
this allows translation of keys not in the base keyboard layout
Diffstat (limited to 'openbox/prompt.c')
-rw-r--r--openbox/prompt.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/openbox/prompt.c b/openbox/prompt.c
index 4f8930d7..73536152 100644
--- a/openbox/prompt.c
+++ b/openbox/prompt.c
@@ -520,15 +520,16 @@ void prompt_hide(ObPrompt *self)
gboolean prompt_key_event(ObPrompt *self, XEvent *e)
{
gboolean shift;
- guint shift_mask;
+ guint shift_mask, mods;
if (e->type != KeyPress) return FALSE;
shift_mask = obt_keyboard_modkey_to_modmask(OBT_KEYBOARD_MODKEY_SHIFT);
- shift = !!(e->xkey.state & shift_mask);
+ mods = obt_keyboard_only_modmasks(e->xkey.state);
+ shift = !!(mods & shift_mask);
/* only accept shift */
- if (e->xkey.state != 0 && e->xkey.state != shift_mask)
+ if (mods != 0 && mods != shift_mask)
return FALSE;
if (ob_keycode_match(e->xkey.keycode, OB_KEY_ESCAPE))