1 #include "xev.h"
2
3 PRIVATE int inkey = 0;
4
KEClear()5 void KEClear()
6 {
7 XEvent ev;
8
9 while(XPending(d) > 0)
10 XNextEvent(d,&ev);
11
12 inkey = 0;
13 }
14
CheckEvent()15 int CheckEvent()
16 {
17 int i, k;
18 KeySym ks;
19 int oc_exp = 0,push_c = 0,push_s = 0 , push_q = 0, mask;
20
21 while (XPending(d) > 0){
22 mask = 0;
23 XNextEvent(d, &e);
24 switch (e.type){
25 case Expose:
26 oc_exp = (1<<Exp);
27 break;
28
29 case KeyRelease:
30 switch (XKeycodeToKeysym(d, e.xkey.keycode, 0)){
31 case XK_Up:
32 case XK_KP_8:
33 case XK_i:
34 mask = (1<<Up); break;
35 case XK_Down:
36 case XK_KP_2:
37 case XK_KP_5:
38 case XK_k:
39 case XK_m:
40 mask = (1<<Down); break;
41 case XK_Left:
42 case XK_KP_4:
43 case XK_j:
44 mask = (1<<Left); break;
45 case XK_Right:
46 case XK_KP_6:
47 case XK_l:
48 mask = (1<<Right); break;
49 case XK_x: mask = (rev_key)?(1<<Kx):(1<<Kz); break;
50 case XK_z: mask = (rev_key)?(1<<Kz):(1<<Kx); break;
51 case XK_s: push_s = (1<<Ks); break;
52 case XK_q: push_q = (1<<Kq); break;
53 case XK_c: push_c = (1<<Kc); break;
54 }
55 inkey &= ~mask;
56 break;
57 case KeyPress:
58 switch (XKeycodeToKeysym(d, e.xkey.keycode, 0)){
59 case XK_Up:
60 case XK_KP_8:
61 case XK_i:
62 mask = (1<<Up); break;
63 case XK_Down:
64 case XK_KP_2:
65 case XK_KP_5:
66 case XK_k:
67 case XK_m:
68 mask = (1<<Down); break;
69 case XK_Left:
70 case XK_KP_4:
71 case XK_j:
72 mask = (1<<Left); break;
73 case XK_Right:
74 case XK_KP_6:
75 case XK_l:
76 mask = (1<<Right); break;
77 case XK_x: mask = (rev_key)?(1<<Kx):(1<<Kz); break;
78 case XK_z: mask = (rev_key)?(1<<Kz):(1<<Kx); break;
79 }
80 inkey |= mask;
81 break;
82 }
83 }
84 return inkey | push_s | push_q | push_c | oc_exp;
85 }
86
87
88
89
90
91
92