X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fkeyboard.c;fp=openbox%2Fkeyboard.c;h=92945ab0a0d04dbebd6b95af4022ef0f8d9a2c94;hb=43d62990e407f409f76f60a405c529f9b15d33f6;hp=5f7531e39d7f35acb7019cbd8e4fb80359519467;hpb=8f1ea42bb147e2a65cf43dfe7aea864d01faedcd;p=chaz%2Fopenbox diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 5f7531e3..92945ab0 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -33,6 +33,7 @@ #include "moveresize.h" #include "popup.h" #include "gettext.h" +#include "obt/keyboard.h" #include @@ -175,9 +176,12 @@ gboolean keyboard_process_interactive_grab(const XEvent *e, ObClient **client) gboolean handled = FALSE; gboolean done = FALSE; gboolean cancel = FALSE; + guint mods; + + mods = obt_keyboard_only_modmasks(ev->xkey.state); if (istate.active) { - if ((e->type == KeyRelease && !(istate.state & e->xkey.state))) { + if ((e->type == KeyRelease && !(istate.state & mods))) { done = TRUE; handled = TRUE; } else if (e->type == KeyPress) { @@ -208,6 +212,7 @@ gboolean keyboard_event(ObClient *client, const XEvent *e) { KeyBindingTree *p; gboolean used; + guint mods; if (e->type == KeyRelease) { grab_key_passive_count(-1); @@ -217,8 +222,10 @@ gboolean keyboard_event(ObClient *client, const XEvent *e) g_assert(e->type == KeyPress); grab_key_passive_count(1); + mods = obt_keyboard_only_modmasks(e->xkey.state); + if (e->xkey.keycode == config_keyboard_reset_keycode && - e->xkey.state == config_keyboard_reset_state) + mods == config_keyboard_reset_state) { obt_main_loop_timeout_remove(ob_main_loop, chain_timeout); keyboard_reset_chains(-1); @@ -231,9 +238,7 @@ gboolean keyboard_event(ObClient *client, const XEvent *e) else p = curpos->first_child; while (p) { - if (p->key == e->xkey.keycode && - p->state == e->xkey.state) - { + if (p->key == e->xkey.keycode && p->state == mods) { /* if we hit a key binding, then close any open menus and run it */ if (menu_frame_visible) menu_frame_hide_all();