diff --git a/src/WindowMaker.h b/src/WindowMaker.h index da8093d3..5447eb83 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -579,6 +579,13 @@ extern struct wmaker_global_variables { } shape; #endif +#ifdef KEEP_XKB_LOCK_STATUS + struct { + Bool supported; + int event_base; + } xkb; +#endif + /* * If no extension were activated, we would end up with an empty * structure, which old compilers may not appreciate, so let's diff --git a/src/event.c b/src/event.c index 3968639c..19934cd1 100644 --- a/src/event.c +++ b/src/event.c @@ -81,10 +81,6 @@ extern WShortKey wKeyBindings[WKBD_LAST]; #define MOD_MASK wPreferences.modifier_mask -#ifdef KEEP_XKB_LOCK_STATUS -extern int wXkbEventBase; -#endif - /************ Local stuff ***********/ static void saveTimestamp(XEvent *event); @@ -551,7 +547,7 @@ static void handleExtensions(XEvent * event) } #endif #ifdef KEEP_XKB_LOCK_STATUS - if (wPreferences.modelock && (xkbevent->type == wXkbEventBase)) { + if (wPreferences.modelock && (xkbevent->type == w_global.xext.xkb.event_base)) { handleXkbIndicatorStateNotify(event); } #endif /*KEEP_XKB_LOCK_STATUS */ diff --git a/src/main.c b/src/main.c index b668cf5c..29264e4c 100644 --- a/src/main.c +++ b/src/main.c @@ -88,11 +88,6 @@ WDDomain *WDWindowMaker = NULL; WDDomain *WDWindowAttributes = NULL; WDDomain *WDRootMenu = NULL; -#ifdef KEEP_XKB_LOCK_STATUS -Bool wXkbSupported; -int wXkbEventBase; -#endif - /* special flags */ char WDelayedActionSet = 0; diff --git a/src/screen.c b/src/screen.c index 18c76f50..d74f7ad0 100644 --- a/src/screen.c +++ b/src/screen.c @@ -71,10 +71,6 @@ /**** Global variables ****/ -#ifdef KEEP_XKB_LOCK_STATUS -extern int wXkbSupported; -#endif - #ifdef HAVE_XRANDR Bool has_randr; int randr_event_base; @@ -548,7 +544,7 @@ WScreen *wScreenInit(int screen_number) /* Only GroupLock doesn't work correctly in my system since right-alt * can change mode while holding it too - ]d */ - if (wXkbSupported) { + if (w_global.xext.xkb.supported) { XkbSelectEvents(dpy, XkbUseCoreKbd, XkbStateNotifyMask, XkbStateNotifyMask); } #endif /* KEEP_XKB_LOCK_STATUS */ diff --git a/src/startup.c b/src/startup.c index 4d6799f1..3e5b70d5 100644 --- a/src/startup.c +++ b/src/startup.c @@ -90,11 +90,6 @@ extern WDDomain *WDRootMenu; extern WDDomain *WDWindowAttributes; extern WShortKey wKeyBindings[WKBD_LAST]; -#ifdef KEEP_XKB_LOCK_STATUS -extern Bool wXkbSupported; -extern int wXkbEventBase; -#endif - #ifndef HAVE_INOTIFY /* special flags */ extern char WDelayedActionSet; @@ -636,8 +631,8 @@ void StartUp(Bool defaultScreenOnly) #endif #ifdef KEEP_XKB_LOCK_STATUS - wXkbSupported = XkbQueryExtension(dpy, NULL, &wXkbEventBase, NULL, NULL, NULL); - if (wPreferences.modelock && !wXkbSupported) { + w_global.xext.xkb.supported = XkbQueryExtension(dpy, NULL, &w_global.xext.xkb.event_base, NULL, NULL, NULL); + if (wPreferences.modelock && !w_global.xext.xkb.supported) { wwarning(_("XKB is not supported. KbdModeLock is automatically disabled.")); wPreferences.modelock = 0; }