/* * \brief Mapping from PS/2 Scan-Code Set 2 to unique key codes * \author Christian Helmuth * \date 2007-09-29 */ /* * Copyright (C) 2007-2013 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #ifndef _SCAN_CODE_SET_2_H_ #define _SCAN_CODE_SET_2_H_ #include enum { SCAN_CODE_SET_2_NUM_KEYS = 256 }; static unsigned short scan_code_set_2[SCAN_CODE_SET_2_NUM_KEYS] = { /* 0 */ Input::KEY_UNKNOWN, /* 1 */ Input::KEY_F9, /* 2 */ Input::KEY_F7, /* 3 */ Input::KEY_F5, /* 4 */ Input::KEY_F3, /* 5 */ Input::KEY_F1, /* 6 */ Input::KEY_F2, /* 7 */ Input::KEY_F12, /* 8 */ Input::KEY_UNKNOWN, /* 9 */ Input::KEY_F10, /* a */ Input::KEY_F8, /* b */ Input::KEY_F6, /* c */ Input::KEY_F4, /* d */ Input::KEY_TAB, /* e */ Input::KEY_GRAVE, /* f */ Input::KEY_UNKNOWN, /* 10 */ Input::KEY_UNKNOWN, /* 11 */ Input::KEY_LEFTALT, /* 12 */ Input::KEY_LEFTSHIFT, /* 13 */ Input::KEY_UNKNOWN, /* 14 */ Input::KEY_LEFTCTRL, /* 15 */ Input::KEY_Q, /* 16 */ Input::KEY_1, /* 17 */ Input::KEY_UNKNOWN, /* 18 */ Input::KEY_UNKNOWN, /* 19 */ Input::KEY_UNKNOWN, /* 1a */ Input::KEY_Z, /* 1b */ Input::KEY_S, /* 1c */ Input::KEY_A, /* 1d */ Input::KEY_W, /* 1e */ Input::KEY_2, /* 1f */ Input::KEY_UNKNOWN, /* 20 */ Input::KEY_UNKNOWN, /* 21 */ Input::KEY_C, /* 22 */ Input::KEY_X, /* 23 */ Input::KEY_D, /* 24 */ Input::KEY_E, /* 25 */ Input::KEY_4, /* 26 */ Input::KEY_3, /* 27 */ Input::KEY_UNKNOWN, /* 28 */ Input::KEY_UNKNOWN, /* 29 */ Input::KEY_SPACE, /* 2a */ Input::KEY_V, /* 2b */ Input::KEY_F, /* 2c */ Input::KEY_T, /* 2d */ Input::KEY_R, /* 2e */ Input::KEY_5, /* 2f */ Input::KEY_UNKNOWN, /* F13? */ /* 30 */ Input::KEY_UNKNOWN, /* 31 */ Input::KEY_N, /* 32 */ Input::KEY_B, /* 33 */ Input::KEY_H, /* 34 */ Input::KEY_G, /* 35 */ Input::KEY_Y, /* 36 */ Input::KEY_6, /* 37 */ Input::KEY_UNKNOWN, /* F14? */ /* 38 */ Input::KEY_UNKNOWN, /* 39 */ Input::KEY_UNKNOWN, /* 3a */ Input::KEY_M, /* 3b */ Input::KEY_J, /* 3c */ Input::KEY_U, /* 3d */ Input::KEY_7, /* 3e */ Input::KEY_8, /* 3f */ Input::KEY_UNKNOWN, /* 40 */ Input::KEY_UNKNOWN, /* 41 */ Input::KEY_COMMA, /* 42 */ Input::KEY_K, /* 43 */ Input::KEY_I, /* 44 */ Input::KEY_O, /* 45 */ Input::KEY_0, /* 46 */ Input::KEY_9, /* 47 */ Input::KEY_UNKNOWN, /* 48 */ Input::KEY_UNKNOWN, /* 49 */ Input::KEY_DOT, /* 4a */ Input::KEY_SLASH, /* 4b */ Input::KEY_L, /* 4c */ Input::KEY_SEMICOLON, /* 4d */ Input::KEY_P, /* 4e */ Input::KEY_MINUS, /* 4f */ Input::KEY_UNKNOWN, /* 50 */ Input::KEY_UNKNOWN, /* 51 */ Input::KEY_UNKNOWN, /* 52 */ Input::KEY_APOSTROPHE, /* 53 */ Input::KEY_UNKNOWN, /* 54 */ Input::KEY_LEFTBRACE, /* 55 */ Input::KEY_EQUAL, /* 56 */ Input::KEY_UNKNOWN, /* 57 */ Input::KEY_UNKNOWN, /* 58 */ Input::KEY_CAPSLOCK, /* 59 */ Input::KEY_RIGHTSHIFT, /* 5a */ Input::KEY_ENTER, /* 5b */ Input::KEY_RIGHTBRACE, /* 5c */ Input::KEY_UNKNOWN, /* 5d */ Input::KEY_BACKSLASH, /* 5e */ Input::KEY_UNKNOWN, /* 5f */ Input::KEY_UNKNOWN, /* 60 */ Input::KEY_UNKNOWN, /* 61 */ Input::KEY_102ND, /* 62 */ Input::KEY_UNKNOWN, /* 63 */ Input::KEY_UNKNOWN, /* 64 */ Input::KEY_UNKNOWN, /* 65 */ Input::KEY_UNKNOWN, /* 66 */ Input::KEY_BACKSPACE, /* 67 */ Input::KEY_UNKNOWN, /* 68 */ Input::KEY_UNKNOWN, /* 69 */ Input::KEY_KP1, /* 6a */ Input::KEY_UNKNOWN, /* 6b */ Input::KEY_KP4, /* 6c */ Input::KEY_KP7, /* 6d */ Input::KEY_KPCOMMA, /* 6e */ Input::KEY_UNKNOWN, /* 6f */ Input::KEY_UNKNOWN, /* 70 */ Input::KEY_KP0, /* 71 */ Input::KEY_KPDOT, /* 72 */ Input::KEY_KP2, /* 73 */ Input::KEY_KP5, /* 74 */ Input::KEY_KP6, /* 75 */ Input::KEY_KP8, /* 76 */ Input::KEY_ESC, /* 77 */ Input::KEY_NUMLOCK, /* 78 */ Input::KEY_F11, /* 79 */ Input::KEY_KPPLUS, /* 7a */ Input::KEY_KP3, /* 7b */ Input::KEY_KPMINUS, /* 7c */ Input::KEY_KPASTERISK, /* 7d */ Input::KEY_KP9, /* 7e */ Input::KEY_SCROLLLOCK, /* 7f */ Input::KEY_SYSRQ, /* 80 */ Input::KEY_UNKNOWN, /* 81 */ Input::KEY_UNKNOWN, /* 82 */ Input::KEY_UNKNOWN, /* 83 */ Input::KEY_F7, /* 84 */ Input::KEY_SYSRQ, /* 85 */ Input::KEY_UNKNOWN, /* 86 */ Input::KEY_UNKNOWN, /* 87 */ Input::KEY_UNKNOWN, /* 88 */ Input::KEY_UNKNOWN, /* 89 */ Input::KEY_UNKNOWN, /* 8a */ Input::KEY_UNKNOWN, /* 8b */ Input::KEY_UNKNOWN, /* 8c */ Input::KEY_UNKNOWN, /* 8d */ Input::KEY_UNKNOWN, /* 8e */ Input::KEY_UNKNOWN, /* 8f */ Input::KEY_UNKNOWN, /* 90 */ Input::KEY_UNKNOWN, /* 91 */ Input::KEY_UNKNOWN, /* 92 */ Input::KEY_UNKNOWN, /* 93 */ Input::KEY_UNKNOWN, /* 94 */ Input::KEY_UNKNOWN, /* 95 */ Input::KEY_UNKNOWN, /* 96 */ Input::KEY_UNKNOWN, /* 97 */ Input::KEY_UNKNOWN, /* 98 */ Input::KEY_UNKNOWN, /* 99 */ Input::KEY_UNKNOWN, /* 9a */ Input::KEY_UNKNOWN, /* 9b */ Input::KEY_UNKNOWN, /* 9c */ Input::KEY_UNKNOWN, /* 9d */ Input::KEY_UNKNOWN, /* 9e */ Input::KEY_UNKNOWN, /* 9f */ Input::KEY_UNKNOWN, /* a0 */ Input::KEY_UNKNOWN, /* a1 */ Input::KEY_UNKNOWN, /* a2 */ Input::KEY_UNKNOWN, /* a3 */ Input::KEY_UNKNOWN, /* a4 */ Input::KEY_UNKNOWN, /* a5 */ Input::KEY_UNKNOWN, /* a6 */ Input::KEY_UNKNOWN, /* a7 */ Input::KEY_UNKNOWN, /* a8 */ Input::KEY_UNKNOWN, /* a9 */ Input::KEY_UNKNOWN, /* aa */ Input::KEY_UNKNOWN, /* ab */ Input::KEY_UNKNOWN, /* ac */ Input::KEY_UNKNOWN, /* ad */ Input::KEY_UNKNOWN, /* ae */ Input::KEY_UNKNOWN, /* af */ Input::KEY_UNKNOWN, /* b0 */ Input::KEY_UNKNOWN, /* b1 */ Input::KEY_UNKNOWN, /* b2 */ Input::KEY_UNKNOWN, /* b3 */ Input::KEY_UNKNOWN, /* b4 */ Input::KEY_UNKNOWN, /* b5 */ Input::KEY_UNKNOWN, /* b6 */ Input::KEY_UNKNOWN, /* b7 */ Input::KEY_UNKNOWN, /* b8 */ Input::KEY_UNKNOWN, /* b9 */ Input::KEY_UNKNOWN, /* ba */ Input::KEY_UNKNOWN, /* bb */ Input::KEY_UNKNOWN, /* bc */ Input::KEY_UNKNOWN, /* bd */ Input::KEY_UNKNOWN, /* be */ Input::KEY_UNKNOWN, /* bf */ Input::KEY_UNKNOWN, /* c0 */ Input::KEY_UNKNOWN, /* c1 */ Input::KEY_UNKNOWN, /* c2 */ Input::KEY_UNKNOWN, /* c3 */ Input::KEY_UNKNOWN, /* c4 */ Input::KEY_UNKNOWN, /* c5 */ Input::KEY_UNKNOWN, /* c6 */ Input::KEY_UNKNOWN, /* c7 */ Input::KEY_UNKNOWN, /* c8 */ Input::KEY_UNKNOWN, /* c9 */ Input::KEY_UNKNOWN, /* ca */ Input::KEY_UNKNOWN, /* cb */ Input::KEY_UNKNOWN, /* cc */ Input::KEY_UNKNOWN, /* cd */ Input::KEY_UNKNOWN, /* ce */ Input::KEY_UNKNOWN, /* cf */ Input::KEY_UNKNOWN, /* d0 */ Input::KEY_UNKNOWN, /* d1 */ Input::KEY_UNKNOWN, /* d2 */ Input::KEY_UNKNOWN, /* d3 */ Input::KEY_UNKNOWN, /* d4 */ Input::KEY_UNKNOWN, /* d5 */ Input::KEY_UNKNOWN, /* d6 */ Input::KEY_UNKNOWN, /* d7 */ Input::KEY_UNKNOWN, /* d8 */ Input::KEY_UNKNOWN, /* d9 */ Input::KEY_UNKNOWN, /* da */ Input::KEY_UNKNOWN, /* db */ Input::KEY_UNKNOWN, /* dc */ Input::KEY_UNKNOWN, /* dd */ Input::KEY_UNKNOWN, /* de */ Input::KEY_UNKNOWN, /* df */ Input::KEY_UNKNOWN, /* e0 */ Input::KEY_UNKNOWN, /* e1 */ Input::KEY_UNKNOWN, /* e2 */ Input::KEY_UNKNOWN, /* e3 */ Input::KEY_UNKNOWN, /* e4 */ Input::KEY_UNKNOWN, /* e5 */ Input::KEY_UNKNOWN, /* e6 */ Input::KEY_UNKNOWN, /* e7 */ Input::KEY_UNKNOWN, /* e8 */ Input::KEY_UNKNOWN, /* e9 */ Input::KEY_UNKNOWN, /* ea */ Input::KEY_UNKNOWN, /* eb */ Input::KEY_UNKNOWN, /* ec */ Input::KEY_UNKNOWN, /* ed */ Input::KEY_UNKNOWN, /* ee */ Input::KEY_UNKNOWN, /* ef */ Input::KEY_UNKNOWN, /* f0 */ Input::KEY_UNKNOWN, /* f1 */ Input::KEY_UNKNOWN, /* f2 */ Input::KEY_UNKNOWN, /* f3 */ Input::KEY_UNKNOWN, /* f4 */ Input::KEY_UNKNOWN, /* f5 */ Input::KEY_UNKNOWN, /* f6 */ Input::KEY_UNKNOWN, /* f7 */ Input::KEY_UNKNOWN, /* f8 */ Input::KEY_UNKNOWN, /* f9 */ Input::KEY_UNKNOWN, /* fa */ Input::KEY_UNKNOWN, /* fb */ Input::KEY_UNKNOWN, /* fc */ Input::KEY_UNKNOWN, /* fd */ Input::KEY_UNKNOWN, /* fe */ Input::KEY_UNKNOWN, /* ff */ Input::KEY_UNKNOWN, }; /** * Scan-code table for keys with extended scan code */ static unsigned short scan_code_set_2_ext[SCAN_CODE_SET_2_NUM_KEYS]; /** * Init scan_code_set_2_ext table */ inline void init_scan_code_set_2_ext() { for (int i = 0; i < SCAN_CODE_SET_2_NUM_KEYS; i++) scan_code_set_2_ext[i] = Input::KEY_UNKNOWN; scan_code_set_2_ext[0x11] = Input::KEY_RIGHTALT; scan_code_set_2_ext[0x12] = Input::KEY_RESERVED; /* sometimes used as num-lock indicator */ scan_code_set_2_ext[0x14] = Input::KEY_RIGHTCTRL; scan_code_set_2_ext[0x1f] = Input::KEY_LEFTMETA; scan_code_set_2_ext[0x27] = Input::KEY_RIGHTMETA; scan_code_set_2_ext[0x2f] = Input::KEY_COMPOSE; scan_code_set_2_ext[0x37] = Input::KEY_POWER; scan_code_set_2_ext[0x3f] = Input::KEY_SLEEP; scan_code_set_2_ext[0x4a] = Input::KEY_KPSLASH; scan_code_set_2_ext[0x5a] = Input::KEY_KPENTER; scan_code_set_2_ext[0x5e] = Input::KEY_WAKEUP; scan_code_set_2_ext[0x69] = Input::KEY_END; scan_code_set_2_ext[0x6b] = Input::KEY_LEFT; scan_code_set_2_ext[0x6c] = Input::KEY_HOME; scan_code_set_2_ext[0x70] = Input::KEY_INSERT; scan_code_set_2_ext[0x71] = Input::KEY_DELETE; scan_code_set_2_ext[0x72] = Input::KEY_DOWN; scan_code_set_2_ext[0x74] = Input::KEY_RIGHT; scan_code_set_2_ext[0x75] = Input::KEY_UP; scan_code_set_2_ext[0x77] = Input::KEY_PAUSE; /* put here although it's prefixed with 0xe1 0x14 */ scan_code_set_2_ext[0x7a] = Input::KEY_PAGEDOWN; scan_code_set_2_ext[0x7c] = Input::KEY_SYSRQ; scan_code_set_2_ext[0x7d] = Input::KEY_PAGEUP; scan_code_set_2_ext[0x7e] = Input::KEY_PAUSE; /* emitted if CTRL is pressed too */ }; #endif /* _SCAN_CODE_SET_2_H_ */