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:
committed by
Carlos R. Mafra
parent
709e7654bc
commit
3957f01293
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user