@@ -243,145 +243,91 @@ NAN_METHOD(scrollMouse)
243
243
|_|\_\___|\__, |_.__/ \___/ \__,_|_| \__,_|
244
244
|___/
245
245
*/
246
+ struct KeyNames {
247
+ const char * name;
248
+ MMKeyCode key;
249
+ };
250
+
251
+ static KeyNames key_names[] =
252
+ {
253
+ { " backspace" , K_BACKSPACE },
254
+ { " delete" , K_DELETE },
255
+ { " enter" , K_RETURN },
256
+ { " tab" , K_TAB },
257
+ { " escape" , K_ESCAPE },
258
+ { " up" , K_UP },
259
+ { " down" , K_DOWN },
260
+ { " right" , K_RIGHT },
261
+ { " left" , K_LEFT },
262
+ { " home" , K_HOME },
263
+ { " end" , K_END },
264
+ { " page_up" , K_PAGEUP },
265
+ { " page_down" , K_PAGEDOWN },
266
+ { " f1" , K_F1 },
267
+ { " f2" , K_F2 },
268
+ { " f3" , K_F3 },
269
+ { " f4" , K_F4 },
270
+ { " f5" , K_F5 },
271
+ { " f6" , K_F6 },
272
+ { " f7" , K_F7 },
273
+ { " f8" , K_F8 },
274
+ { " f9" , K_F9 },
275
+ { " f10" , K_F10 },
276
+ { " f11" , K_F11 },
277
+ { " f12" , K_F12 },
278
+ { " command" , K_META },
279
+ { " alt" , K_ALT },
280
+ { " control" , K_CONTROL },
281
+ { " shift" , K_SHIFT },
282
+ { " caps" , K_CAPSLOCK },
283
+ { " space" , K_SPACE },
284
+ { " printscreen" , K_PRINTSCREEN },
285
+
286
+ { " audio_mute" , K_AUDIO_VOLUME_MUTE },
287
+ { " audio_vol_down" , K_AUDIO_VOLUME_DOWN },
288
+ { " audio_vol_up" , K_AUDIO_VOLUME_UP },
289
+ { " audio_play" , K_AUDIO_PLAY },
290
+ { " audio_stop" , K_AUDIO_STOP },
291
+ { " audio_pause" , K_AUDIO_PAUSE },
292
+ { " audio_prev" , K_AUDIO_PREV },
293
+ { " audio_next" , K_AUDIO_NEXT },
294
+ { " audio_rewind" , K_AUDIO_REWIND },
295
+ { " audio_forward" , K_AUDIO_FORWARD },
296
+ { " audio_repeat" , K_AUDIO_REPEAT },
297
+ { " audio_random" , K_AUDIO_RANDOM },
298
+
299
+ { " lights_mon_up" , K_LIGHTS_MON_UP },
300
+ { " lights_mon_down" , K_LIGHTS_MON_DOWN },
301
+ { " lights_kbd_toggle" ,K_LIGHTS_KBD_TOGGLE },
302
+ { " lights_kbd_up" , K_LIGHTS_KBD_UP },
303
+ { " lights_kbd_down" , K_LIGHTS_KBD_DOWN },
304
+
305
+ { NULL , K_NOT_A_KEY } /* end marker */
306
+ };
246
307
247
308
int CheckKeyCodes (char * k, MMKeyCode *key)
248
309
{
249
310
if (!key) return -1 ;
250
311
251
- if (strcmp (k, " alt" ) == 0 )
252
- {
253
- *key = K_ALT;
254
- }
255
- else if (strcmp (k, " command" ) == 0 )
256
- {
257
- *key = K_META;
258
- }
259
- else if (strcmp (k, " control" ) == 0 )
260
- {
261
- *key = K_CONTROL;
262
- }
263
- else if (strcmp (k, " shift" ) == 0 )
264
- {
265
- *key = K_SHIFT;
266
- }
267
- else if (strcmp (k, " backspace" ) == 0 )
268
- {
269
- *key = K_BACKSPACE;
270
- }
271
- else if (strcmp (k, " enter" ) == 0 )
272
- {
273
- *key = K_RETURN;
274
- }
275
- else if (strcmp (k, " tab" ) == 0 )
276
- {
277
- *key = K_TAB;
278
- }
279
- else if (strcmp (k, " up" ) == 0 )
280
- {
281
- *key = K_UP;
282
- }
283
- else if (strcmp (k, " down" ) == 0 )
284
- {
285
- *key = K_DOWN;
286
- }
287
- else if (strcmp (k, " left" ) == 0 )
288
- {
289
- *key = K_LEFT;
290
- }
291
- else if (strcmp (k, " right" ) == 0 )
292
- {
293
- *key = K_RIGHT;
294
- }
295
- else if (strcmp (k, " escape" ) == 0 )
296
- {
297
- *key = K_ESCAPE;
298
- }
299
- else if (strcmp (k, " delete" ) == 0 )
300
- {
301
- *key = K_DELETE;
302
- }
303
- else if (strcmp (k, " home" ) == 0 )
304
- {
305
- *key = K_HOME;
306
- }
307
- else if (strcmp (k, " end" ) == 0 )
308
- {
309
- *key = K_END;
310
- }
311
- else if (strcmp (k, " pageup" ) == 0 )
312
- {
313
- *key = K_PAGEUP;
314
- }
315
- else if (strcmp (k, " pagedown" ) == 0 )
316
- {
317
- *key = K_PAGEDOWN;
318
- }
319
- else if (strcmp (k, " space" ) == 0 )
320
- {
321
- *key = K_SPACE;
322
- }
323
- else if (strcmp (k, " f1" ) == 0 )
324
- {
325
- *key = K_F1;
326
- }
327
- else if (strcmp (k, " f2" ) == 0 )
328
- {
329
- *key = K_F2;
330
- }
331
- else if (strcmp (k, " f3" ) == 0 )
332
- {
333
- *key = K_F3;
334
- }
335
- else if (strcmp (k, " f4" ) == 0 )
336
- {
337
- *key = K_F4;
338
- }
339
- else if (strcmp (k, " f5" ) == 0 )
340
- {
341
- *key = K_F5;
342
- }
343
- else if (strcmp (k, " f6" ) == 0 )
344
- {
345
- *key = K_F6;
346
- }
347
- else if (strcmp (k, " f7" ) == 0 )
348
- {
349
- *key = K_F7;
350
- }
351
- else if (strcmp (k, " f8" ) == 0 )
352
- {
353
- *key = K_F8;
354
- }
355
- else if (strcmp (k, " f9" ) == 0 )
356
- {
357
- *key = K_F9;
358
- }
359
- else if (strcmp (k, " f10" ) == 0 )
360
- {
361
- *key = K_F10;
362
- }
363
- else if (strcmp (k, " f11" ) == 0 )
364
- {
365
- *key = K_F11;
366
- }
367
- else if (strcmp (k, " f12" ) == 0 )
368
- {
369
- *key = K_F12;
370
- }
371
- else if (strcmp (k, " printscreen" ) == 0 )
372
- {
373
- #if defined(IS_WINDOWS)
374
- *key = K_PRINTSCREEN;
375
- #else
376
- Nan::ThrowError (" printscreen is only supported on Windows." );
377
- #endif
378
- }
379
- else if (strlen (k) == 1 )
312
+ if (strlen (k) == 1 )
380
313
{
381
314
*key = keyCodeForChar (*k);
315
+ return 0 ;
382
316
}
383
- else
384
- {
317
+
318
+ *key = K_NOT_A_KEY;
319
+
320
+ KeyNames* kn = key_names;
321
+ while (kn->name ) {
322
+ if (strcmp (k, kn->name ) == 0 )
323
+ {
324
+ *key = kn->key ;
325
+ break ;
326
+ }
327
+ kn++;
328
+ }
329
+
330
+ if (*key == K_NOT_A_KEY) {
385
331
return -2 ;
386
332
}
387
333
0 commit comments