Rev 2479 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2479 | Rev 3905 | ||
---|---|---|---|
Line 120... | Line 120... | ||
120 | // number of scan codes in #buf |
120 | // number of scan codes in #buf |
121 | static int count = 0; |
121 | static int count = 0; |
122 | 122 | ||
123 | /* |
123 | /* |
124 | // Preserve for detecting scan codes. |
124 | // Preserve for detecting scan codes. |
125 | keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
125 | keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
126 | keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
126 | keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
127 | keybuffer_push(keybuffer, 'X'); |
127 | keybuffer_push0(keybuffer, 'X'); |
128 | keybuffer_push(keybuffer, 'Y'); |
128 | keybuffer_push0(keybuffer, 'Y'); |
129 | return 1; |
129 | return 1; |
130 | */ |
130 | */ |
131 | 131 | ||
132 | if (scan_code == '\r') { |
132 | if (scan_code == '\r') { |
133 | scan_code = '\n'; |
133 | scan_code = '\n'; |
134 | } |
134 | } |
135 | 135 | ||
136 | if (scan_code == GXEMUL_KEY_F5_F12_START_CODE) { |
136 | if (scan_code == GXEMUL_KEY_F5_F12_START_CODE) { |
137 | switch (buf) { |
137 | switch (buf) { |
138 | case GXEMUL_KEY_F5: |
138 | case GXEMUL_KEY_F5: |
139 | keybuffer_push(keybuffer,FUNCTION_KEYS | 5); |
139 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 5); |
140 | buf = count = 0; |
140 | buf = count = 0; |
141 | return 1; |
141 | return 1; |
142 | case GXEMUL_KEY_F6: |
142 | case GXEMUL_KEY_F6: |
143 | keybuffer_push(keybuffer,FUNCTION_KEYS | 6); |
143 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 6); |
144 | buf = count = 0; |
144 | buf = count = 0; |
145 | return 1; |
145 | return 1; |
146 | case GXEMUL_KEY_F7: |
146 | case GXEMUL_KEY_F7: |
147 | keybuffer_push(keybuffer,FUNCTION_KEYS | 7); |
147 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 7); |
148 | buf = count = 0; |
148 | buf = count = 0; |
149 | return 1; |
149 | return 1; |
150 | case GXEMUL_KEY_F8: |
150 | case GXEMUL_KEY_F8: |
151 | keybuffer_push(keybuffer,FUNCTION_KEYS | 8); |
151 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 8); |
152 | buf = count = 0; |
152 | buf = count = 0; |
153 | return 1; |
153 | return 1; |
154 | case GXEMUL_KEY_F9: |
154 | case GXEMUL_KEY_F9: |
155 | keybuffer_push(keybuffer,FUNCTION_KEYS | 9); |
155 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 9); |
156 | buf = count = 0; |
156 | buf = count = 0; |
157 | return 1; |
157 | return 1; |
158 | case GXEMUL_KEY_F10: |
158 | case GXEMUL_KEY_F10: |
159 | keybuffer_push(keybuffer,FUNCTION_KEYS | 10); |
159 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 10); |
160 | buf = count = 0; |
160 | buf = count = 0; |
161 | return 1; |
161 | return 1; |
162 | case GXEMUL_KEY_F11: |
162 | case GXEMUL_KEY_F11: |
163 | keybuffer_push(keybuffer,FUNCTION_KEYS | 11); |
163 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 11); |
164 | buf = count = 0; |
164 | buf = count = 0; |
165 | return 1; |
165 | return 1; |
166 | case GXEMUL_KEY_F12: |
166 | case GXEMUL_KEY_F12: |
167 | keybuffer_push(keybuffer,FUNCTION_KEYS | 12); |
167 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 12); |
168 | buf = count = 0; |
168 | buf = count = 0; |
169 | return 1; |
169 | return 1; |
170 | default: |
170 | default: |
171 | keybuffer_push(keybuffer, buf & 0xff); |
171 | keybuffer_push0(keybuffer, buf & 0xff); |
172 | keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
172 | keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
173 | keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
173 | keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
174 | keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
174 | keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
175 | keybuffer_push(keybuffer, scan_code); |
175 | keybuffer_push0(keybuffer, scan_code); |
176 | buf = count = 0; |
176 | buf = count = 0; |
177 | return 1; |
177 | return 1; |
178 | } |
178 | } |
179 | } |
179 | } |
180 | 180 | ||
181 | // add to buffer |
181 | // add to buffer |
182 | buf |= ((unsigned long) scan_code) << (8 * (count++)); |
182 | buf |= ((unsigned long) scan_code) << (8 * (count++)); |
183 | 183 | ||
184 | if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) { |
184 | if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) { |
185 | keybuffer_push(keybuffer, buf); |
185 | keybuffer_push0(keybuffer, buf); |
186 | buf = count = 0; |
186 | buf = count = 0; |
187 | return 1; |
187 | return 1; |
188 | } |
188 | } |
189 | 189 | ||
190 | if (count <= 1) { |
190 | if (count <= 1) { |
Line 192... | Line 192... | ||
192 | } |
192 | } |
193 | 193 | ||
194 | if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff) |
194 | if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff) |
195 | && (buf & 0xffff) != (GXEMUL_KEY_F5 & 0xffff) ) { |
195 | && (buf & 0xffff) != (GXEMUL_KEY_F5 & 0xffff) ) { |
196 | 196 | ||
197 | keybuffer_push(keybuffer, buf & 0xff); |
197 | keybuffer_push0(keybuffer, buf & 0xff); |
198 | keybuffer_push(keybuffer, (buf >> 8) &0xff); |
198 | keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
199 | buf = count = 0; |
199 | buf = count = 0; |
200 | return 1; |
200 | return 1; |
201 | } |
201 | } |
202 | 202 | ||
203 | if (count <= 2) { |
203 | if (count <= 2) { |
204 | return 1; |
204 | return 1; |
205 | } |
205 | } |
206 | 206 | ||
207 | switch (buf) { |
207 | switch (buf) { |
208 | case GXEMUL_KEY_F1: |
208 | case GXEMUL_KEY_F1: |
209 | keybuffer_push(keybuffer,FUNCTION_KEYS | 1); |
209 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 1); |
210 | buf = count = 0; |
210 | buf = count = 0; |
211 | return 1; |
211 | return 1; |
212 | case GXEMUL_KEY_F2: |
212 | case GXEMUL_KEY_F2: |
213 | keybuffer_push(keybuffer,FUNCTION_KEYS | 2); |
213 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 2); |
214 | buf = count = 0; |
214 | buf = count = 0; |
215 | return 1; |
215 | return 1; |
216 | case GXEMUL_KEY_F3: |
216 | case GXEMUL_KEY_F3: |
217 | keybuffer_push(keybuffer,FUNCTION_KEYS | 3); |
217 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 3); |
218 | buf = count = 0; |
218 | buf = count = 0; |
219 | return 1; |
219 | return 1; |
220 | case GXEMUL_KEY_F4: |
220 | case GXEMUL_KEY_F4: |
221 | keybuffer_push(keybuffer,FUNCTION_KEYS | 4); |
221 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 4); |
222 | buf = count = 0; |
222 | buf = count = 0; |
223 | return 1; |
223 | return 1; |
224 | } |
224 | } |
225 | 225 | ||
226 | 226 | ||
227 | if ((buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff) |
227 | if ((buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff) |
228 | && (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) { |
228 | && (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) { |
229 | 229 | ||
230 | keybuffer_push(keybuffer, buf & 0xff); |
230 | keybuffer_push0(keybuffer, buf & 0xff); |
231 | keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
231 | keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
232 | keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
232 | keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
233 | buf = count = 0; |
233 | buf = count = 0; |
234 | return 1; |
234 | return 1; |
235 | } |
235 | } |
236 | 236 | ||
237 | if (count <= 3) { |
237 | if (count <= 3) { |
Line 247... | Line 247... | ||
247 | case GXEMUL_KEY_F10: |
247 | case GXEMUL_KEY_F10: |
248 | case GXEMUL_KEY_F11: |
248 | case GXEMUL_KEY_F11: |
249 | case GXEMUL_KEY_F12: |
249 | case GXEMUL_KEY_F12: |
250 | return 1; |
250 | return 1; |
251 | default: |
251 | default: |
252 | keybuffer_push(keybuffer, buf & 0xff); |
252 | keybuffer_push0(keybuffer, buf & 0xff); |
253 | keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
253 | keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
254 | keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
254 | keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
255 | keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
255 | keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
256 | buf = count = 0; |
256 | buf = count = 0; |
257 | return 1; |
257 | return 1; |
258 | } |
258 | } |
259 | 259 | ||
260 | return 1; |
260 | return 1; |
Line 276... | Line 276... | ||
276 | // number of scan codes in #buf |
276 | // number of scan codes in #buf |
277 | static int count = 0; |
277 | static int count = 0; |
278 | 278 | ||
279 | /* |
279 | /* |
280 | // Please preserve this code (it can be used to determine scancodes) |
280 | // Please preserve this code (it can be used to determine scancodes) |
281 | keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); |
281 | keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf)); |
282 | keybuffer_push(keybuffer, to_hex(scan_code&0xf)); |
282 | keybuffer_push0(keybuffer, to_hex(scan_code&0xf)); |
283 | keybuffer_push(keybuffer, ' '); |
283 | keybuffer_push0(keybuffer, ' '); |
284 | keybuffer_push(keybuffer, ' '); |
284 | keybuffer_push0(keybuffer, ' '); |
285 | return 1; |
285 | return 1; |
286 | */ |
286 | */ |
287 | 287 | ||
288 | if (scan_code == '\r') { |
288 | if (scan_code == '\r') { |
289 | scan_code = '\n'; |
289 | scan_code = '\n'; |
Line 292... | Line 292... | ||
292 | // add to buffer |
292 | // add to buffer |
293 | buf |= ((unsigned long) scan_code) << (8*(count++)); |
293 | buf |= ((unsigned long) scan_code) << (8*(count++)); |
294 | 294 | ||
295 | 295 | ||
296 | if ((buf & 0xff) != (GXEMUL_FB_KEY_F1 & 0xff)) { |
296 | if ((buf & 0xff) != (GXEMUL_FB_KEY_F1 & 0xff)) { |
297 | keybuffer_push(keybuffer, buf); |
297 | keybuffer_push0(keybuffer, buf); |
298 | buf = count = 0; |
298 | buf = count = 0; |
299 | return 1; |
299 | return 1; |
300 | } |
300 | } |
301 | 301 | ||
302 | if (count <= 1) { |
302 | if (count <= 1) { |
303 | return 1; |
303 | return 1; |
304 | } |
304 | } |
305 | 305 | ||
306 | if ((buf & 0xffff) != (GXEMUL_FB_KEY_F1 & 0xffff)) { |
306 | if ((buf & 0xffff) != (GXEMUL_FB_KEY_F1 & 0xffff)) { |
307 | keybuffer_push(keybuffer, buf & 0xff); |
307 | keybuffer_push0(keybuffer, buf & 0xff); |
308 | keybuffer_push(keybuffer, (buf >> 8) &0xff); |
308 | keybuffer_push0(keybuffer, (buf >> 8) &0xff); |
309 | buf = count = 0; |
309 | buf = count = 0; |
310 | return 1; |
310 | return 1; |
311 | } |
311 | } |
312 | 312 | ||
313 | if (count <= 2) { |
313 | if (count <= 2) { |
Line 316... | Line 316... | ||
316 | 316 | ||
317 | if ((buf & 0xffffff) != (GXEMUL_FB_KEY_F1 & 0xffffff) |
317 | if ((buf & 0xffffff) != (GXEMUL_FB_KEY_F1 & 0xffffff) |
318 | && (buf & 0xffffff) != (GXEMUL_FB_KEY_F5 & 0xffffff) |
318 | && (buf & 0xffffff) != (GXEMUL_FB_KEY_F5 & 0xffffff) |
319 | && (buf & 0xffffff) != (GXEMUL_FB_KEY_F9 & 0xffffff)) { |
319 | && (buf & 0xffffff) != (GXEMUL_FB_KEY_F9 & 0xffffff)) { |
320 | 320 | ||
321 | keybuffer_push(keybuffer, buf & 0xff); |
321 | keybuffer_push0(keybuffer, buf & 0xff); |
322 | keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
322 | keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
323 | keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
323 | keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
324 | buf = count = 0; |
324 | buf = count = 0; |
325 | return 1; |
325 | return 1; |
326 | } |
326 | } |
327 | 327 | ||
328 | if (count <= 3) { |
328 | if (count <= 3) { |
329 | return 1; |
329 | return 1; |
330 | } |
330 | } |
331 | 331 | ||
332 | switch (buf) { |
332 | switch (buf) { |
333 | case GXEMUL_FB_KEY_F1: |
333 | case GXEMUL_FB_KEY_F1: |
334 | keybuffer_push(keybuffer,FUNCTION_KEYS | 1 ); |
334 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 1 ); |
335 | buf = count = 0; |
335 | buf = count = 0; |
336 | return 1; |
336 | return 1; |
337 | case GXEMUL_FB_KEY_F2: |
337 | case GXEMUL_FB_KEY_F2: |
338 | keybuffer_push(keybuffer,FUNCTION_KEYS | 2 ); |
338 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 2 ); |
339 | buf = count = 0; |
339 | buf = count = 0; |
340 | return 1; |
340 | return 1; |
341 | case GXEMUL_FB_KEY_F3: |
341 | case GXEMUL_FB_KEY_F3: |
342 | keybuffer_push(keybuffer,FUNCTION_KEYS | 3 ); |
342 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 3 ); |
343 | buf = count = 0; |
343 | buf = count = 0; |
344 | return 1; |
344 | return 1; |
345 | case GXEMUL_FB_KEY_F4: |
345 | case GXEMUL_FB_KEY_F4: |
346 | keybuffer_push(keybuffer,FUNCTION_KEYS | 4 ); |
346 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 4 ); |
347 | buf = count = 0; |
347 | buf = count = 0; |
348 | return 1; |
348 | return 1; |
349 | case GXEMUL_FB_KEY_F5: |
349 | case GXEMUL_FB_KEY_F5: |
350 | keybuffer_push(keybuffer,FUNCTION_KEYS | 5 ); |
350 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 5 ); |
351 | buf = count = 0; |
351 | buf = count = 0; |
352 | return 1; |
352 | return 1; |
353 | case GXEMUL_FB_KEY_F6: |
353 | case GXEMUL_FB_KEY_F6: |
354 | keybuffer_push(keybuffer,FUNCTION_KEYS | 6 ); |
354 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 6 ); |
355 | buf = count = 0; |
355 | buf = count = 0; |
356 | return 1; |
356 | return 1; |
357 | case GXEMUL_FB_KEY_F7: |
357 | case GXEMUL_FB_KEY_F7: |
358 | keybuffer_push(keybuffer,FUNCTION_KEYS | 7 ); |
358 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 7 ); |
359 | buf = count = 0; |
359 | buf = count = 0; |
360 | return 1; |
360 | return 1; |
361 | case GXEMUL_FB_KEY_F8: |
361 | case GXEMUL_FB_KEY_F8: |
362 | keybuffer_push(keybuffer,FUNCTION_KEYS | 8 ); |
362 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 8 ); |
363 | buf = count = 0; |
363 | buf = count = 0; |
364 | return 1; |
364 | return 1; |
365 | case GXEMUL_FB_KEY_F9: |
365 | case GXEMUL_FB_KEY_F9: |
366 | keybuffer_push(keybuffer,FUNCTION_KEYS | 9 ); |
366 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 9 ); |
367 | buf = count = 0; |
367 | buf = count = 0; |
368 | return 1; |
368 | return 1; |
369 | case GXEMUL_FB_KEY_F10: |
369 | case GXEMUL_FB_KEY_F10: |
370 | keybuffer_push(keybuffer,FUNCTION_KEYS | 10 ); |
370 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 10 ); |
371 | buf = count = 0; |
371 | buf = count = 0; |
372 | return 1; |
372 | return 1; |
373 | case GXEMUL_FB_KEY_F11: |
373 | case GXEMUL_FB_KEY_F11: |
374 | keybuffer_push(keybuffer,FUNCTION_KEYS | 11 ); |
374 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 11 ); |
375 | buf = count = 0; |
375 | buf = count = 0; |
376 | return 1; |
376 | return 1; |
377 | case GXEMUL_FB_KEY_F12: |
377 | case GXEMUL_FB_KEY_F12: |
378 | keybuffer_push(keybuffer,FUNCTION_KEYS | 12 ); |
378 | keybuffer_push0(keybuffer,FUNCTION_KEYS | 12 ); |
379 | buf = count = 0; |
379 | buf = count = 0; |
380 | return 1; |
380 | return 1; |
381 | default: |
381 | default: |
382 | keybuffer_push(keybuffer, buf & 0xff ); |
382 | keybuffer_push0(keybuffer, buf & 0xff ); |
383 | keybuffer_push(keybuffer, (buf >> 8) & 0xff); |
383 | keybuffer_push0(keybuffer, (buf >> 8) & 0xff); |
384 | keybuffer_push(keybuffer, (buf >> 16) & 0xff); |
384 | keybuffer_push0(keybuffer, (buf >> 16) & 0xff); |
385 | keybuffer_push(keybuffer, (buf >> 24) & 0xff); |
385 | keybuffer_push0(keybuffer, (buf >> 24) & 0xff); |
386 | buf = count = 0; |
386 | buf = count = 0; |
387 | return 1; |
387 | return 1; |
388 | } |
388 | } |
389 | 389 | ||
390 | return 1; |
390 | return 1; |