Mercurial > dwm-meillo
comparison event.c @ 145:774754477c35
applied Cedric's NumLock patch
author | arg@10ksloc.org |
---|---|
date | Tue, 01 Aug 2006 12:41:38 +0200 |
parents | e61447a7f249 |
children | f328ce9c558c |
comparison
equal
deleted
inserted
replaced
144:e61447a7f249 | 145:774754477c35 |
---|---|
55 { MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, | 55 { MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, |
56 { MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, | 56 { MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, |
57 { MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, | 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 /* END CUSTOMIZE */ | 63 /* END CUSTOMIZE */ |
61 | 64 |
62 /* static */ | 65 /* static */ |
63 | 66 |
64 static void | 67 static void |
269 { | 272 { |
270 static unsigned int len = sizeof(key) / sizeof(key[0]); | 273 static unsigned int len = sizeof(key) / sizeof(key[0]); |
271 unsigned int i; | 274 unsigned int i; |
272 KeySym keysym; | 275 KeySym keysym; |
273 XKeyEvent *ev = &e->xkey; | 276 XKeyEvent *ev = &e->xkey; |
277 ev->state &= valid_mask; | |
274 | 278 |
275 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); | 279 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
276 for(i = 0; i < len; i++) | 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 if(key[i].func) | 282 if(key[i].func) |
279 key[i].func(&key[i].arg); | 283 key[i].func(&key[i].arg); |
280 return; | 284 return; |
281 } | 285 } |
282 } | 286 } |
375 KeyCode code; | 379 KeyCode code; |
376 | 380 |
377 for(i = 0; i < len; i++) { | 381 for(i = 0; i < len; i++) { |
378 code = XKeysymToKeycode(dpy, key[i].keysym); | 382 code = XKeysymToKeycode(dpy, key[i].keysym); |
379 XUngrabKey(dpy, code, key[i].mod, root); | 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 XGrabKey(dpy, code, key[i].mod, root, True, | 389 XGrabKey(dpy, code, key[i].mod, root, True, |
381 GrabModeAsync, GrabModeAsync); | 390 GrabModeAsync, GrabModeAsync); |
382 } | 391 if (NumLockMask) |
383 } | 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 } | |
398 } | |
399 } |