rem: if (!IsModifierKey(ksym)) { key=XKeysymToString(ksym); panel->capturing = 0;
add: if (!IsModifierKey(ksym)) { XConvertCase(ksym, &lksym, &uksym); key=XKeysymToString(uksym); panel->capturing = 0;
context: captureShortcut(Display *dpy, _Panel *panel){    XEvent ev;    KeySym ksym;    char buffer[64];    char *key = NULL;    while (panel->capturing) {    	XAllowEvents(dpy, AsyncKeyboard, CurrentTime);	WMNextEvent(dpy, &ev);	if (ev.type==KeyPress && ev.xkey.keycode!=0) {	    ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);	    if (!IsModifierKey(ksym)) {		key=XKeysymToString(ksym);		panel->capturing = 0;		break;	    }	}	WMHandleEvent(&ev);    }        if (!key)	return NULL;        buffer[0] = 0;        if (ev.xkey.state & ControlMask) {	strcat(buffer, "Control+");    }     if (ev.xkey.state & ShiftMask) {	strcat(buffer, "Shift+");    }     if (ev.xkey.state & Mod1Mask) {	strcat(buffer, "Mod1+");    }     if (ev.xkey.state & Mod2Mask) {	strcat(buffer, "Mod2+");    }     if (ev.xkey.state & Mod3Mask) {	strcat(buffer, "Mod3+");    }     if (ev.xkey.state & Mod4Mask) {	strcat(buffer, "Mod4+");    }     if (ev.xkey.state & Mod5Mask) {	strcat(buffer, "Mod5+");    }    strcat(buffer, key);        return wstrdup(buffer);}