1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-07 14:24:14 +01:00

WPrefs: Ignore NumLock key when capturing keyboard shortcuts

This patch includes the function "NumLockMask", that checks if the
Alt Modifier key is "NumLock". Then we can use this function in the
calls to Capture the key sequence and don't use this modifier.
This commit is contained in:
Rodolfo García Peñas (kix)
2013-09-29 12:02:05 +02:00
committed by Carlos R. Mafra
parent 709e7654bc
commit 3957f01293

View File

@@ -262,6 +262,22 @@ static void XConvertCase(register KeySym sym, KeySym * lower, KeySym * upper)
}
#endif
static int NumLockMask(Display *dpy)
{
int i;
XModifierKeymap *map = XGetModifierMapping(dpy);
KeyCode numlock_keycode = XKeysymToKeycode(dpy, XK_Num_Lock);
if (numlock_keycode == NoSymbol)
return 0;
for (i = 0; i < 8; i++) {
if (map->modifiermap[map->max_keypermod * i] == numlock_keycode)
return 1 << i;
}
return 0;
}
char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
{
XEvent ev;
@@ -297,27 +313,27 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
buffer[0] = 0;
if (ev.xkey.state & ControlMask) {
if (ev.xkey.state & ControlMask)
strcat(buffer, "Control+");
}
if (ev.xkey.state & ShiftMask) {
if (ev.xkey.state & ShiftMask)
strcat(buffer, "Shift+");
}
if (ev.xkey.state & Mod1Mask) {
if ((ev.xkey.state & Mod1Mask) && !NumLockMask(dpy))
strcat(buffer, "Mod1+");
}
if (ev.xkey.state & Mod2Mask) {
if ((ev.xkey.state & Mod2Mask) && !NumLockMask(dpy))
strcat(buffer, "Mod2+");
}
if (ev.xkey.state & Mod3Mask) {
if ((ev.xkey.state & Mod3Mask) && !NumLockMask(dpy))
strcat(buffer, "Mod3+");
}
if (ev.xkey.state & Mod4Mask) {
if ((ev.xkey.state & Mod4Mask) && !NumLockMask(dpy))
strcat(buffer, "Mod4+");
}
if (ev.xkey.state & Mod5Mask) {
if ((ev.xkey.state & Mod5Mask) && !NumLockMask(dpy))
strcat(buffer, "Mod5+");
}
strcat(buffer, key);
return wstrdup(buffer);