genode/repos/os/src/drivers/input/ps2/scan_code_set_2.h

322 lines
9.3 KiB
C

/*
* \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 <input/keycodes.h>
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_ */