diff --git a/dwm.c b/dwm.c index d9776f6..55d825f 100644 --- a/dwm.c +++ b/dwm.c @@ -2054,16 +2054,18 @@ keypress(XEvent *e) #endif // KEYMODES_PATCH { unsigned int i; - KeySym keysym; + int keysyms_return; + KeySym* keysym; XKeyEvent *ev; ev = &e->xkey; - keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); + keysym = XGetKeyboardMapping(dpy, (KeyCode)ev->keycode, 1, &keysyms_return); for (i = 0; i < LENGTH(keys); i++) - if (keysym == keys[i].keysym - && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) - && keys[i].func) + if (*keysym == keys[i].keysym + && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) + && keys[i].func) keys[i].func(&(keys[i].arg)); + XFree(keysym); } void