|
|
|
@ -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; |
|
|
|
|
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(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|