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