diff options
Diffstat (limited to 'uisimulator')
-rw-r--r-- | uisimulator/x11/button-x11.c | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/uisimulator/x11/button-x11.c b/uisimulator/x11/button-x11.c index 734272c6c4..e93290f89e 100644 --- a/uisimulator/x11/button-x11.c +++ b/uisimulator/x11/button-x11.c | |||
@@ -67,71 +67,96 @@ extern int screenhack_handle_events (void); | |||
67 | 67 | ||
68 | static int get_raw_button (void) | 68 | static int get_raw_button (void) |
69 | { | 69 | { |
70 | int k = screenhack_handle_events(); | 70 | int k; |
71 | switch(k) | 71 | static int next = 0; |
72 | if ( next ) { | ||
73 | k = next; | ||
74 | next = 0; | ||
75 | return k; | ||
76 | } | ||
77 | |||
78 | switch(screenhack_handle_events()) | ||
72 | { | 79 | { |
73 | case XK_KP_Left: | 80 | case XK_KP_Left: |
74 | case XK_Left: | 81 | case XK_Left: |
75 | case XK_KP_4: | 82 | case XK_KP_4: |
76 | return BUTTON_LEFT; | 83 | k = BUTTON_LEFT; |
84 | break; | ||
77 | 85 | ||
78 | case XK_KP_Right: | 86 | case XK_KP_Right: |
79 | case XK_Right: | 87 | case XK_Right: |
80 | case XK_KP_6: | 88 | case XK_KP_6: |
81 | return BUTTON_RIGHT; | 89 | k = BUTTON_RIGHT; |
90 | break; | ||
82 | 91 | ||
83 | case XK_KP_Up: | 92 | case XK_KP_Up: |
84 | case XK_Up: | 93 | case XK_Up: |
85 | case XK_KP_8: | 94 | case XK_KP_8: |
86 | return BUTTON_UP; | 95 | k = BUTTON_UP; |
96 | break; | ||
87 | 97 | ||
88 | case XK_KP_Down: | 98 | case XK_KP_Down: |
89 | case XK_Down: | 99 | case XK_Down: |
90 | case XK_KP_2: | 100 | case XK_KP_2: |
91 | return BUTTON_DOWN; | 101 | k = BUTTON_DOWN; |
102 | break; | ||
92 | 103 | ||
93 | #ifdef HAVE_RECORDER_KEYPAD | 104 | #ifdef HAVE_RECORDER_KEYPAD |
94 | case XK_KP_Space: | 105 | case XK_KP_Space: |
95 | case XK_KP_5: | 106 | case XK_KP_5: |
96 | case XK_KP_Begin: | 107 | case XK_KP_Begin: |
97 | case XK_space: | 108 | case XK_space: |
98 | return BUTTON_PLAY; | 109 | k = BUTTON_PLAY; |
110 | break; | ||
99 | 111 | ||
100 | case XK_KP_Enter: | 112 | case XK_KP_Enter: |
101 | case XK_A: | 113 | case XK_A: |
102 | case XK_a: | 114 | case XK_a: |
103 | return BUTTON_OFF; | 115 | k = BUTTON_OFF; |
116 | break; | ||
104 | 117 | ||
105 | case XK_KP_Add: | 118 | case XK_KP_Add: |
106 | case XK_Q: | 119 | case XK_Q: |
107 | case XK_q: | 120 | case XK_q: |
108 | return BUTTON_ON; | 121 | k = BUTTON_ON; |
122 | break; | ||
109 | 123 | ||
110 | case XK_KP_Divide: | 124 | case XK_KP_Divide: |
111 | case XK_1: | 125 | case XK_1: |
112 | return BUTTON_F1; | 126 | k = BUTTON_F1; |
127 | break; | ||
113 | 128 | ||
114 | case XK_KP_Multiply: | 129 | case XK_KP_Multiply: |
115 | case XK_2: | 130 | case XK_2: |
116 | return BUTTON_F2; | 131 | k = BUTTON_F2; |
132 | break; | ||
117 | 133 | ||
118 | case XK_KP_Subtract: | 134 | case XK_KP_Subtract: |
119 | case XK_3: | 135 | case XK_3: |
120 | return BUTTON_F3; | 136 | k = BUTTON_F3; |
137 | break; | ||
121 | #else | 138 | #else |
122 | case XK_KP_Add: | 139 | case XK_KP_Add: |
123 | case XK_Q: | 140 | case XK_Q: |
124 | case XK_q: | 141 | case XK_q: |
125 | return BUTTON_ON; | 142 | k = BUTTON_ON; |
143 | break; | ||
126 | 144 | ||
127 | case XK_KP_Enter: | 145 | case XK_KP_Enter: |
128 | case XK_Return: | 146 | case XK_Return: |
129 | return BUTTON_MENU; | 147 | k = BUTTON_MENU; |
148 | break; | ||
130 | #endif | 149 | #endif |
131 | 150 | ||
132 | default: | 151 | default: |
133 | return 0; | 152 | k = 0; |
153 | break; | ||
134 | } | 154 | } |
155 | |||
156 | if ( k ) | ||
157 | next = k | BUTTON_REL; | ||
158 | |||
159 | return k; | ||
135 | } | 160 | } |
136 | 161 | ||
137 | /* | 162 | /* |
@@ -148,7 +173,7 @@ int button_get_w_tmo(int ticks) | |||
148 | x11_sleep(1); | 173 | x11_sleep(1); |
149 | else | 174 | else |
150 | break; | 175 | break; |
151 | }; | 176 | } |
152 | 177 | ||
153 | return bits; | 178 | return bits; |
154 | } | 179 | } |