|
|
@ -1270,16 +1270,23 @@ grabkeys(void) |
|
|
{ |
|
|
{ |
|
|
updatenumlockmask(); |
|
|
updatenumlockmask(); |
|
|
{ |
|
|
{ |
|
|
unsigned int i, j; |
|
|
unsigned int i, j, k; |
|
|
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; |
|
|
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; |
|
|
KeyCode code; |
|
|
int start, end, skip; |
|
|
|
|
|
KeySym *syms; |
|
|
XUngrabKey(dpy, AnyKey, AnyModifier, root); |
|
|
|
|
|
for (i = 0; i < LENGTH(keys); i++) |
|
|
XDisplayKeycodes(dpy, &start, &end); |
|
|
if ((code = XKeysymToKeycode(dpy, keys[i].keysym))) |
|
|
syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip); |
|
|
for (j = 0; j < LENGTH(modifiers); j++) |
|
|
for (k = start; k <= end; k++) |
|
|
XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, |
|
|
for (i = 0; i < LENGTH(keys); i++) |
|
|
True, GrabModeAsync, GrabModeAsync); |
|
|
/* skip modifier codes, we do that ourselves */ |
|
|
|
|
|
if (keys[i].keysym == syms[(k - start) * skip]) |
|
|
|
|
|
for (j = 0; j < LENGTH(modifiers); j++) |
|
|
|
|
|
XGrabKey(dpy, k, |
|
|
|
|
|
keys[i].mod | modifiers[j], |
|
|
|
|
|
root, True, |
|
|
|
|
|
GrabModeAsync, GrabModeAsync); |
|
|
|
|
|
XFree(syms); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|