Mercurial > dwm-meillo
comparison event.c @ 160:c8db0a825775
applied Sanders patches (numlock2)
author | arg@10ksloc.org |
---|---|
date | Wed, 02 Aug 2006 11:13:32 +0200 |
parents | a5eab6aaf859 |
children | f381e34158d9 |
comparison
equal
deleted
inserted
replaced
159:a5eab6aaf859 | 160:c8db0a825775 |
---|---|
17 Arg arg; | 17 Arg arg; |
18 } Key; | 18 } Key; |
19 | 19 |
20 KEYS | 20 KEYS |
21 | 21 |
22 static unsigned int valid_mask = 255 & ~(NUMLOCKMASK | LockMask); | 22 #define CLEANMASK(mask) (mask & ~(NUMLOCKMASK | LockMask)) |
23 | 23 |
24 static void | 24 static void |
25 movemouse(Client *c) | 25 movemouse(Client *c) |
26 { | 26 { |
27 int x1, y1, ocx, ocy, di; | 27 int x1, y1, ocx, ocy, di; |
227 { | 227 { |
228 static unsigned int len = sizeof(key) / sizeof(key[0]); | 228 static unsigned int len = sizeof(key) / sizeof(key[0]); |
229 unsigned int i; | 229 unsigned int i; |
230 KeySym keysym; | 230 KeySym keysym; |
231 XKeyEvent *ev = &e->xkey; | 231 XKeyEvent *ev = &e->xkey; |
232 ev->state &= valid_mask; | |
233 | 232 |
234 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); | 233 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); |
235 for(i = 0; i < len; i++) | 234 for(i = 0; i < len; i++) |
236 if((keysym == key[i].keysym) && ((key[i].mod & valid_mask) == ev->state)) { | 235 if(keysym == key[i].keysym && |
236 CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) { | |
237 if(key[i].func) | 237 if(key[i].func) |
238 key[i].func(&key[i].arg); | 238 key[i].func(&key[i].arg); |
239 return; | 239 return; |
240 } | 240 } |
241 } | 241 } |
333 unsigned int i; | 333 unsigned int i; |
334 KeyCode code; | 334 KeyCode code; |
335 | 335 |
336 for(i = 0; i < len; i++) { | 336 for(i = 0; i < len; i++) { |
337 code = XKeysymToKeycode(dpy, key[i].keysym); | 337 code = XKeysymToKeycode(dpy, key[i].keysym); |
338 /* normal */ | |
338 XUngrabKey(dpy, code, key[i].mod, root); | 339 XUngrabKey(dpy, code, key[i].mod, root); |
339 XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root); | |
340 XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root); | |
341 XGrabKey(dpy, code, key[i].mod, root, True, | 340 XGrabKey(dpy, code, key[i].mod, root, True, |
342 GrabModeAsync, GrabModeAsync); | 341 GrabModeAsync, GrabModeAsync); |
342 /* capslock */ | |
343 XUngrabKey(dpy, code, key[i].mod | LockMask, root); | |
344 XGrabKey(dpy, code, key[i].mod | LockMask, root, True, | |
345 GrabModeAsync, GrabModeAsync); | |
346 /* numlock */ | |
347 XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root); | |
343 XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True, | 348 XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True, |
344 GrabModeAsync, GrabModeAsync); | 349 GrabModeAsync, GrabModeAsync); |
350 /* capslock & numlock */ | |
351 XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root); | |
345 XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True, | 352 XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True, |
346 GrabModeAsync, GrabModeAsync); | 353 GrabModeAsync, GrabModeAsync); |
347 } | 354 } |
348 } | 355 } |