comparison event.c @ 589:732c58a3d92d

returning to old Key struct
author arg@mig29
date Mon, 27 Nov 2006 17:49:58 +0100
parents c2ddd15b199e
children d6ff27532fdd
comparison
equal deleted inserted replaced
588:1477b61ec8d4 589:732c58a3d92d
9 /* static */ 9 /* static */
10 10
11 typedef struct { 11 typedef struct {
12 unsigned long mod; 12 unsigned long mod;
13 KeySym keysym; 13 KeySym keysym;
14 void (*func[NFUNCS])(Arg *arg); 14 void (*func)(Arg *arg);
15 Arg arg; 15 Arg arg;
16 } Key; 16 } Key;
17 17
18 KEYS 18 KEYS
19 19
243 } 243 }
244 244
245 static void 245 static void
246 keypress(XEvent *e) { 246 keypress(XEvent *e) {
247 static unsigned int len = sizeof key / sizeof key[0]; 247 static unsigned int len = sizeof key / sizeof key[0];
248 unsigned int i, j; 248 unsigned int i;
249 KeySym keysym; 249 KeySym keysym;
250 XKeyEvent *ev = &e->xkey; 250 XKeyEvent *ev = &e->xkey;
251 251
252 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0); 252 keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
253 for(i = 0; i < len; i++) { 253 for(i = 0; i < len; i++) {
254 if(keysym == key[i].keysym 254 if(keysym == key[i].keysym
255 && CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) 255 && CLEANMASK(key[i].mod) == CLEANMASK(ev->state))
256 { 256 {
257 for(j = 0; j < NFUNCS; j++) 257 if(key[i].func)
258 if(key[i].func[j]) 258 key[i].func(&key[i].arg);
259 key[i].func[j](&key[i].arg);
260 return; 259 return;
261 } 260 }
262 } 261 }
263 } 262 }
264 263