X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=c997ca59c2d43330539032aeaf1717dc0bb1879b;hb=60565bcba8bd5e42f82659b4aa641b05c5ec70a0;hp=16951f75792a5b131450a834c015c2da635e75c3;hpb=ebc21270f10196c48a6e3a80f23855b3b917b93a;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 16951f75..c997ca59 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -51,6 +51,9 @@ #ifdef HAVE_SIGNAL_H # include #endif +#ifdef XKB +# include +#endif #ifdef USE_SM #include @@ -259,6 +262,9 @@ static void event_set_lasttime(XEvent *e) static void event_hack_mods(XEvent *e) { +#ifdef XKB + XkbStateRec xkb_state; +#endif KeyCode *kp; gint i, k; @@ -274,6 +280,12 @@ static void event_hack_mods(XEvent *e) STRIP_MODS(e->xkey.state); /* remove from the state the mask of the modifier being released, if it is a modifier key being released (this is a little ugly..) */ +#ifdef XKB + if (XkbGetState(ob_display, XkbUseCoreKbd, &xkb_state) == Success) { + e->xkey.state = xkb_state.compat_state; + break; + } +#endif kp = modmap->modifiermap; for (i = 0; i < mask_table_size; ++i) { for (k = 0; k < modmap->max_keypermod; ++k) {