applied Cedric's NumLock patch
57416bee
1 file(s) · +17 −1
| 57 | 57 | { MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, |
|
| 58 | 58 | }; |
|
| 59 | 59 | ||
| 60 | + | #define NumLockMask Mod2Mask |
|
| 61 | + | unsigned int valid_mask = 255 & ~( NumLockMask | LockMask); |
|
| 62 | + | ||
| 60 | 63 | /* END CUSTOMIZE */ |
|
| 61 | 64 | ||
| 62 | 65 | /* static */ |
|
| 271 | 274 | unsigned int i; |
|
| 272 | 275 | KeySym keysym; |
|
| 273 | 276 | XKeyEvent *ev = &e->xkey; |
|
| 277 | + | ev->state &= valid_mask; |
|
| 274 | 278 | ||
| 275 | 279 | keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
|
| 276 | 280 | for(i = 0; i < len; i++) |
|
| 277 | - | if((keysym == key[i].keysym) && (key[i].mod == ev->state)) { |
|
| 281 | + | if((keysym == key[i].keysym) && ((key[i].mod & valid_mask) == ev->state)) { |
|
| 278 | 282 | if(key[i].func) |
|
| 279 | 283 | key[i].func(&key[i].arg); |
|
| 280 | 284 | return; |
|
| 377 | 381 | for(i = 0; i < len; i++) { |
|
| 378 | 382 | code = XKeysymToKeycode(dpy, key[i].keysym); |
|
| 379 | 383 | XUngrabKey(dpy, code, key[i].mod, root); |
|
| 384 | + | if (NumLockMask) |
|
| 385 | + | { |
|
| 386 | + | XUngrabKey(dpy, code, key[i].mod | NumLockMask, root); |
|
| 387 | + | XUngrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root); |
|
| 388 | + | } |
|
| 380 | 389 | XGrabKey(dpy, code, key[i].mod, root, True, |
|
| 381 | 390 | GrabModeAsync, GrabModeAsync); |
|
| 391 | + | if (NumLockMask) |
|
| 392 | + | { |
|
| 393 | + | XGrabKey(dpy, code, key[i].mod | NumLockMask, root, True, |
|
| 394 | + | GrabModeAsync, GrabModeAsync); |
|
| 395 | + | XGrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root, True, |
|
| 396 | + | GrabModeAsync, GrabModeAsync); |
|
| 397 | + | } |
|
| 382 | 398 | } |
|
| 383 | 399 | } |
|