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