1 // GnashKey.h: map sets of keycodes to each other.
3 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 3 of the License, or
9 // (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
27 /// Conflicts with mingw header with gcc3.x (or whatever
28 /// antiquated version mingw has).
37 GNASH_MOD_CONTROL
= 2,
41 // Gnash DisplayObject codes. Each code represents a single DisplayObject on the keyboard.
42 // The first 128 code are ordered by their correspond ASCII value.
254 GUILLEMOTRIGHT
= 196,
324 // TODO: add other function keys and DisplayObjects not yet known.
337 const unsigned char codeMap
[KEYCOUNT
][TYPES
] = {
338 //{swfKeyCode, keycode, asciiKeyCode}
339 {0, 0, 0}, // INVALID = 0
340 {0, 0, 0}, // UNKNOWN1
341 {0, 0, 0}, // UNKNOWN2
342 {0, 0, 0}, // UNKNOWN3
343 {0, 0, 0}, // UNKNOWN4
344 {0, 0, 0}, // UNKNOWN5
345 {0, 0, 0}, // UNKNOWN6
346 {0, 0, 0}, // UNKNOWN7
347 {8, 8, 8}, // BACKSPACE = 8
348 {18, 9, 9}, // TAB = 9
349 {0, 0, 0}, // UNKNOWN10
350 {0, 0, 0}, // UNKNOWN11
351 {0, 12, 0}, // CLEAR = 12
352 {13, 13, 13}, // ENTER = 13
353 {0, 0, 0}, // UNKNOWN14
354 {0, 0, 0}, // UNKNOWN15
355 {0, 16, 0}, // SHIFT = 16
356 {0, 17, 0}, // CONTROL = 17
357 {0, 18, 0}, // ALT = 18
358 {0, 19, 0}, // PAUSE = 19
359 {0, 20, 0}, // CAPSLOCK = 20
360 {0, 0, 0}, // UNKNOWN21
361 {0, 0, 0}, // UNKNOWN22
362 {0, 0, 0}, // UNKNOWN23
363 {0, 0, 0}, // UNKNOWN24
364 {0, 0, 0}, // UNKNOWN25
365 {0, 0, 0}, // UNKNOWN26
366 {19, 27, 27}, // ESCAPE = 27
367 {0, 0, 0}, // UNKNOWN28
368 {0, 0, 0}, // UNKNOWN29
369 {0, 0, 0}, // UNKNOWN30
370 {0, 0, 0}, // UNKNOWN31
371 {32, 32, 32}, // SPACE = 32
372 {33, 49, 33}, // EXCLAM = 33
373 {34, 222, 34}, // DOUBLE_QUOTE = 34
374 {35, 51, 35}, // HASH = 35
375 {36, 52, 36}, // DOLLAR = 36
376 {37, 53, 37}, // PERCENT = 37
377 {38, 55, 38}, // AMPERSAND = 38
378 {39, 222, 39}, // SINGLE_QUOTE = 39
379 {40, 57, 40}, // PAREN_LEFT = 40
380 {41, 48, 41}, // PAREN_RIGHT = 41
381 {42, 56, 42}, // ASTERISK = 42
382 {43, 187, 43}, // PLUS = 43
383 {44, 188, 44}, // COMMA = 44
384 {45, 189, 45}, // MINUS = 45
385 {46, 190, 46}, // PERIOD = 46
386 {47, 191, 47}, // SLASH = 47
387 {48, 48, 48}, // 0 = 48
396 {57, 57, 57}, // 9 = 57
397 {58, 186, 58}, // COLON = 58
398 {59, 186, 59}, // SEMICOLON = 59
399 {60, 188, 60}, // LESS = 60
400 {61, 187, 61}, // EQUALS = 61
401 {62, 190, 62}, // MORE = 62
402 {63, 191, 63}, // QUESTION = 63
403 {64, 50, 64}, // AT = 64
404 {65, 65, 65}, // A = 65
429 {90, 90, 90}, // Z = 90
430 {91, 219, 91}, // LEFT_BRACKET = 91
431 {92, 220, 92}, // BACKSLASH = 92
432 {93, 221, 93}, // RIGHT_BRACKET = 93
433 {94, 54, 94}, // CARET = 94
434 {95, 189, 95}, // UNDERSCORE = 95
435 {96, 192, 96}, // BACKQUOTE = 96
436 {97, 65, 97}, // a = 97
461 {122,90, 122}, // z = 122
462 {123,219,123}, // LEFT_BRACE = 123
463 {124,220,124}, // PIPE = 124
464 {125,221,125}, // RIGHT_BRACE = 125
465 {126,192,126}, // ASCIITILDE = 126
466 {6, 46, 127}, // DELETE = 127
467 {48, 96, 48}, // KP_0 = 128
468 {49, 97, 49}, // KP_1
469 {50, 98, 50}, // KP_2
470 {51, 99, 51}, // KP_3
471 {52, 100, 52}, // KP_4
472 {53, 101, 53}, // KP_5
473 {54, 102, 54}, // KP_6
474 {55, 103, 55}, // KP_7
475 {56, 104, 56}, // KP_8
476 {57, 105, 57}, // KP_9
477 {0, 112, 0}, // F1 = 138
491 {0, 126, 0}, // F15 = 152
492 {14, 38, 0}, // UP = 153
493 {15, 40, 0}, // DOWN = 154
494 {2, 39, 0}, // RIGHT = 155
495 {1, 37, 0}, // LEFT = 156
496 {5, 45, 0}, // INSERT = 157
497 {3, 36, 0}, // HOME = 158
498 {4, 35, 0}, // END = 159
499 {16, 33, 0}, // PAGEUP = 160
500 {17, 34, 0}, // PAGEDOWN = 161
501 {0, 107, 43}, // KP_ADD = 162
502 {0, 109, 45}, // KP_SUBTRACT = 163
503 {0, 106, 42}, // KP_MULITPLY = 164
504 {0, 111, 47}, // KP_DIVIDE = 165
505 {0, 110, 46}, // KP_DECIMAL = 166
506 {13, 13, 13}, // KP_ENTER = 167
507 {0, 144, 0}, // NUMLOCK = 168
508 {0, 160, 160}, // NOBREAKSPACE = 169
509 {0, 161, 161}, // EXCLAM_DOWN = 170
510 {0, 162, 162}, // CENT = 171
511 {0, 163, 163}, // STERLING = 172
512 {0, 164, 164}, // CURRENCY = 173
513 {0, 165, 165}, // YEN = 174
514 {0, 166, 166}, // BROKENBAR = 175
515 {0, 167, 167}, // SECTION = 176
516 {0, 168, 168}, // DIAERESIS = 177
517 {0, 169, 169}, // COPYRIGHT = 178
518 {0, 170, 170}, // ORDFEMININE = 179
519 {0, 171, 171}, // GUILLEMOTLEFT = 180
520 {0, 172, 172}, // NOTSIGN = 181
521 {0, 173, 173}, // HYPHEN = 182
522 {0, 174, 174}, // REGISTERED = 183
523 {0, 175, 175}, // MACRON = 184
524 {0, 176, 176}, // DEGREE = 185
525 {0, 177, 177}, // PLUSMINUS = 186
526 {0, 178, 178}, // TWOSUPERIOR = 187
527 {0, 179, 179}, // THREESUPERIOR = 188
528 {0, 180, 180}, // ACUTE = 189
529 {0, 181, 181}, // MU = 190
530 {0, 182, 182}, // PARAGRAPH = 191
531 {0, 183, 183}, // PERIODCENTRED = 192
532 {0, 184, 184}, // CEDILLA = 193
533 {0, 185, 185}, // ONESUPERIOR = 194
534 {0, 186, 186}, // MASCULINE = 195
535 {0, 187, 187}, // GUILLEMOTRIGHT = 196
536 {0, 188, 188}, // ONEQUARTER = 197
537 {0, 189, 189}, // ONEHALF = 198
538 {0, 190, 190}, // THREEQUARTERS = 199
539 {0, 191, 191}, // QUESTIONDOWN = 200
540 {0, 192, 192}, // AGRAVE = 201
541 {0, 193, 193}, // AACUTE = 202
542 {0, 194, 194}, // ACIRCUMFLEX = 203
543 {0, 195, 195}, // ATILDE = 204
544 {0, 196, 196}, // ADIAERISIS = 205
545 {0, 197, 197}, // ARING = 206
546 {0, 198, 198}, // AE = 207
547 {0, 199, 199}, // CCEDILLA = 208
548 {0, 200, 200}, // EGRAVE = 209
549 {0, 201, 201}, // EACUTE = 210
550 {0, 202, 202}, // ECIRCUMFLEX = 211
551 {0, 203, 203}, // EDIAERESIS = 212
552 {0, 204, 204}, // IGRAVE = 213
553 {0, 205, 205}, // IACUTE = 214
554 {0, 206, 206}, // ICIRCUMFLEX = 215
555 {0, 207, 207}, // IDIAERESIS = 216
556 {0, 208, 208}, // ETH = 217
557 {0, 209, 209}, // NTILDE = 218
558 {0, 210, 210}, // OGRAVE = 219
559 {0, 211, 211}, // OACUTE = 220
560 {0, 212, 212}, // OCIRCUMFLEX = 221
561 {0, 213, 213}, // OTILDE = 222
562 {0, 214, 214}, // ODIAERESIS = 223
563 {0, 215, 215}, // MULTIPLY = 224
564 {0, 216, 116}, // OSLASH = 225
565 {0, 217, 217}, // UGRAVE = 226
566 {0, 218, 218}, // UACTUE = 227
567 {0, 219, 219}, // UCIRCUMFLEX = 228
568 {0, 220, 220}, // UDIAERESIS = 229
569 {0, 221, 221}, // ZACUTE = 230
570 {0, 222, 222}, // THORN = 231
571 {0, 223, 223}, // sSHARP = 232
572 {0, 224, 224}, // aTILDE = 233
573 {0, 225, 225}, // aACUTE = 234
574 {0, 226, 226}, // aCIRCUMFLEX = 235
575 {0, 227, 227}, // aTILDE = 236
576 {0, 228, 228}, // aDIAERESIS = 237
577 {0, 229, 229}, // aRING = 238
578 {0, 230, 230}, // ae = 239
579 {0, 231, 231}, // cCEDILLA = 240
580 {0, 232, 232}, // eGRAVE = 241
581 {0, 233, 233}, // eACUTE = 242
582 {0, 234, 234}, // eCIRCUMFLEX = 243
583 {0, 235, 235}, // eDIAERESIS = 244
584 {0, 236, 236}, // iGRAVE = 245
585 {0, 237, 237}, // iACUTE = 246
586 {0, 238, 238}, // iCIRCUMFLEX = 247
587 {0, 239, 239}, // iDIAERESIS = 248
588 {0, 240, 240}, // eth = 249
589 {0, 241, 241}, // nTILDE = 250
590 {0, 242, 242}, // oTILDE = 251
591 {0, 243, 243}, // oACUTE = 252
592 {0, 244, 244}, // oCIRCUMFLEX = 253
593 {0, 245, 245}, // oTILDE = 254
594 {0, 246, 246}, // oDIAERESIS = 255
595 {0, 247, 247}, // DIVISION = 256
596 {0, 248, 248}, // oSLASH = 257
597 {0, 249, 249}, // uGRAVE = 258
598 {0, 250, 250}, // uACUTE = 259
599 {0, 251, 251}, // uCIRCUMFLEX = 260
600 {0, 252, 252}, // uDIAERESIS = 261
601 {0, 253, 253}, // yACUTE = 262
602 {0, 254, 254}, // thorn = 263
603 {0, 255, 255}, // yDIAERESIS = 264
604 {0, 0, 0}, // HELP (untested)
607 } // end namespace key
609 } // end namespace gnash