diff options
author | anselm@garbe.us <unknown> | 2012-11-17 19:10:39 +0100 |
---|---|---|
committer | anselm@garbe.us <unknown> | 2012-11-17 19:10:39 +0100 |
commit | 344f35f9f55b615e5d7c46f863578f1cc974cc54 (patch) | |
tree | 3f91d2926986775572815ba1d61b43f7ba5f7d4c /dwm.c | |
parent | 87adcd263b1fc75f7eb3172dac55ca641fd7a96a (diff) | |
download | dwm-344f35f9f55b615e5d7c46f863578f1cc974cc54.tar.gz |
applied Neil Klopfstein's patch, slightly modified
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -282,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; @@ -1069,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) @@ -1579,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); @@ -1631,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, &xkb_major, &xkb_minor); grabkeys(); } |