JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
compile fix
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index 4986b07..7bab478 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -43,6 +43,8 @@
 #include <X11/extensions/Xinerama.h>
 #endif /* XINERAMA */
 
+#include "draw.h"
+
 /* macros */
 #define BUTTONMASK              (ButtonPressMask|ButtonReleaseMask)
 #define CLEANMASK(mask)         (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
@@ -280,7 +282,7 @@ static void (*handler[LASTEvent]) (XEvent *) = {
        [UnmapNotify] = unmapnotify
 };
 static Atom wmatom[WMLast], netatom[NetLast];
-static Bool running = True;
+static Bool running = True, usexkb;
 static Cursor cursor[CurLast];
 static Display *dpy;
 static DC dc;
@@ -1067,7 +1069,10 @@ keypress(XEvent *e) {
        XKeyEvent *ev;
 
        ev = &e->xkey;
-       keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
+       if(usexkb)
+               keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
+       else
+               keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
        for(i = 0; i < LENGTH(keys); i++)
                if(keysym == keys[i].keysym
                && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
@@ -1577,6 +1582,7 @@ setmfact(const Arg *arg) {
 void
 setup(void) {
        XSetWindowAttributes wa;
+       int dummy = 0, xkbmajor = XkbMajorVersion, xkbminor = XkbMinorVersion;
 
        /* clean up any zombies immediately */
        sigchld(0);
@@ -1629,6 +1635,8 @@ setup(void) {
                        |EnterWindowMask|LeaveWindowMask|StructureNotifyMask|PropertyChangeMask;
        XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);
        XSelectInput(dpy, root, wa.event_mask);
+       /* init xkb */
+       usexkb = XkbQueryExtension(dpy, &dummy, &dummy, &dummy, &xkbmajor, &xkbminor);
        grabkeys();
 }