a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Two defines for every scancode:
a180a41bba1d50822df23fff0099e90b86638b89vboxsync One called SCANCODE_KEY_<num>, where <num> is the key location number.
a180a41bba1d50822df23fff0099e90b86638b89vboxsync One called SCANCODE_CHAR_<char-on-us-kbd>, where <char-on-us-kbd> is the
a180a41bba1d50822df23fff0099e90b86638b89vboxsync unshifted character on a US 101/102 keyboard. See the Microsoft
a180a41bba1d50822df23fff0099e90b86638b89vboxsync document "Keyboard Scan Code Specification" for more information.
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync Up keys normally have scancode values +0x80.
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0x0: Avoid
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0x1- 0x59: Normal
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0x60, 0x61: Avoid, since the up key would be 0xe1, 0xe1
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0x61 - 0x79: Normal
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0xfa - : keyboard drivers interpret these as responses from the 8042 chip
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync We use bit 7 to indicate 0xe0 prefix instead of two-byte sequence (0xe0, something). Eq.,
a180a41bba1d50822df23fff0099e90b86638b89vboxsync 0xe 0x38 is defined as (0x80 | 0x38)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync*/
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* FIXME:
a180a41bba1d50822df23fff0099e90b86638b89vboxsync Special keys like Numeric / are very complicated and emits many scancodes.
a180a41bba1d50822df23fff0099e90b86638b89vboxsync*/
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_EXTENDED 0x80
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_1 0x29
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_GRAVE 0x29
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_2 0x2
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_1 SCANCODE_KEY_2
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_3 0x3
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_2 SCANCODE_KEY_3
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_4 0x4
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_3 SCANCODE_KEY_4
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_5 0x5
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_4 SCANCODE_KEY_5
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_6 0x6
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_5 SCANCODE_KEY_6
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_7 0x7
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_6 SCANCODE_KEY_7
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_8 0x8
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_7 SCANCODE_KEY_8
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_9 0x9
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_8 SCANCODE_KEY_9
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_10 0xa
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_9 SCANCODE_KEY_10
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_11 0xb
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_0 SCANCODE_KEY_11
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_12 0xc
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_MINUS SCANCODE_KEY_12
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_13 0xd
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_EQUAL SCANCODE_KEY_13
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 14 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_15 0xe
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_BACKSPACE SCANCODE_KEY_15
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_16 0xf
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_TAB SCANCODE_KEY_16
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_17 0x10
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_Q SCANCODE_KEY_17
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_18 0x11
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_W SCANCODE_KEY_18
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_19 0x12
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_E SCANCODE_KEY_19
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_20 0x13
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_R SCANCODE_KEY_20
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_21 0x14
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_T SCANCODE_KEY_21
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_22 0x15
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_Y SCANCODE_KEY_22
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_23 0x16
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_U SCANCODE_KEY_23
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_24 0x17
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_I SCANCODE_KEY_24
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_25 0x18
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_O SCANCODE_KEY_25
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_26 0x19
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_P SCANCODE_KEY_26
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_27 0x1a
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_BRACKETLEFT SCANCODE_KEY_27
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_28 0x1b
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_BRACKETRIGHT SCANCODE_KEY_28
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Only on US keyboard */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_29 0x2b
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_BACKSLASH SCANCODE_KEY_29
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_30 0x3a
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_CAPSLOCK SCANCODE_KEY_30
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_31 0x1e
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_A SCANCODE_KEY_31
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_32 0x1f
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_S SCANCODE_KEY_32
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_33 0x20
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_D SCANCODE_KEY_33
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_34 0x21
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F SCANCODE_KEY_34
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_35 0x22
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_G SCANCODE_KEY_35
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_36 0x23
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_H SCANCODE_KEY_36
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_37 0x24
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_J SCANCODE_KEY_37
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_38 0x25
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_K SCANCODE_KEY_38
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_39 0x26
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_L SCANCODE_KEY_39
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_40 0x27
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_SEMICOLON SCANCODE_KEY_40
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_41 0x28
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_APOSTROPHE SCANCODE_KEY_41
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Only on international keyboard */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_42 0x2b
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_43 0x1c
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_ENTER SCANCODE_KEY_43
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_44 0x2a
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_LSHIFT SCANCODE_KEY_44
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Only on international keyboard */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_45 0x56
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_46 0x2c
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_Z SCANCODE_KEY_46
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_47 0x2d
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_X SCANCODE_KEY_47
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_48 0x2e
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_C SCANCODE_KEY_48
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_49 0x2f
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_V SCANCODE_KEY_49
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_50 0x30
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_B SCANCODE_KEY_50
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_51 0x31
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_N SCANCODE_KEY_51
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_52 0x32
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_M SCANCODE_KEY_52
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_53 0x33
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_COMMA SCANCODE_KEY_53
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_54 0x34
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_DOT SCANCODE_KEY_54
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_55 0x35
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_SLASH SCANCODE_KEY_55
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Only on Brazilian and some Far East keyboards */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_56 0x73
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_57 0x36
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_RSHIFT SCANCODE_KEY_57
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_58 0x1d
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_LCTRL SCANCODE_KEY_58
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 59 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_60 0x38
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_LALT SCANCODE_KEY_60
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_61 0x39
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_SPACE SCANCODE_KEY_61
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_62 (SCANCODE_EXTENDED | 0x38)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_RALT SCANCODE_KEY_62
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 63 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_64 (SCANCODE_EXTENDED | 0x1d)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_RCTRL SCANCODE_KEY_64
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 65 - 74 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_75 (SCANCODE_EXTENDED | 0x52)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_INSERT SCANCODE_KEY_75
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_76 (SCANCODE_EXTENDED | 0x53)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_DELETE SCANCODE_KEY_76
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 77 - 78 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_79 (SCANCODE_EXTENDED | 0x4b)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_LARROW SCANCODE_KEY_79
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_80 (SCANCODE_EXTENDED | 0x47)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_HOME SCANCODE_KEY_80
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_81 (SCANCODE_EXTENDED | 0x4f)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_END SCANCODE_KEY_81
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 82 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_83 (SCANCODE_EXTENDED | 0x48)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_UPARROW SCANCODE_KEY_83
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_84 (SCANCODE_EXTENDED | 0x50)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_DNARROW SCANCODE_KEY_84
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_85 (SCANCODE_EXTENDED | 0x49)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_PAGEUP SCANCODE_KEY_85
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_86 (SCANCODE_EXTENDED | 0x51)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_PAGEDOWN SCANCODE_KEY_86
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 87 - 88 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_89 (SCANCODE_EXTENDED | 0x4d)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_RARROW SCANCODE_KEY_89
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_90 0x45
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMLOCK SCANCODE_KEY_90
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_91 0x47
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC7 SCANCODE_KEY_91
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_92 0x4b
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC4 SCANCODE_KEY_92
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_93 0x4f
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC1 SCANCODE_KEY_93
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 94 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_95 (SCANCODE_EXTENDED | 0x35)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICSLASH SCANCODE_KEY_95
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_96 0x48
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC8 SCANCODE_KEY_96
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_97 0x4c
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC5 SCANCODE_KEY_97
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_98 0x50
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC2 SCANCODE_KEY_98
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_99 0x52
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC0 SCANCODE_KEY_99
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_100 0x37
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICSTAR SCANCODE_KEY_100
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_101 0x49
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC9 SCANCODE_KEY_101
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_102 0x4d
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC6 SCANCODE_KEY_102
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_103 0x51
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERIC3 SCANCODE_KEY_103
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_104 0x53
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICDOT SCANCODE_KEY_104
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_105 0x4a
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICMINUS SCANCODE_KEY_105
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_106 0x4e
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICPLUS SCANCODE_KEY_106
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Only on Brazilian and some Far East keyboards */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_107 0x
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_108 (SCANCODE_EXTENDED | 0x1c)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_NUMERICENTER SCANCODE_KEY_108
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 109 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_110 0x1
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_ESC SCANCODE_KEY_110
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 111 does not exist */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_112 0x3b
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F1 SCANCODE_KEY_112
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_113 0x3c
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F2 SCANCODE_KEY_113
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_114 0x3d
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F3 SCANCODE_KEY_114
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_115 0x3e
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F4 SCANCODE_KEY_115
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_116 0x3f
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F5 SCANCODE_KEY_116
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_117 0x40
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F6 SCANCODE_KEY_117
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_118 0x41
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F7 SCANCODE_KEY_118
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_119 0x42
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F8 SCANCODE_KEY_119
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_120 0x43
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F9 SCANCODE_KEY_120
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_121 0x44
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F10 SCANCODE_KEY_121
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_122 0x57
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F11 SCANCODE_KEY_122
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_123 0x58
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_F12 SCANCODE_KEY_123
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 124: The Print Screen sequence is complicated, and
a180a41bba1d50822df23fff0099e90b86638b89vboxsync hardcoded in xkeymap.c */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_KEY_125 0x46
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_SCROLLLOCK SCANCODE_KEY_125
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/* Key 126: The Pause and Break sequences is complicated, and
a180a41bba1d50822df23fff0099e90b86638b89vboxsync hardcoded in xkeymap.c */
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync/*
a180a41bba1d50822df23fff0099e90b86638b89vboxsync The keys below does not have any key location number
a180a41bba1d50822df23fff0099e90b86638b89vboxsync*/
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_LWIN (SCANCODE_EXTENDED | 0x5b)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_RWIN (SCANCODE_EXTENDED | 0x5c)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_APPLICATION (SCANCODE_EXTENDED | 0x5d)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_ACPIPOWER (SCANCODE_EXTENDED | 0x5e)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_ACPISLEEP (SCANCODE_EXTENDED | 0x5f)
a180a41bba1d50822df23fff0099e90b86638b89vboxsync
a180a41bba1d50822df23fff0099e90b86638b89vboxsync#define SCANCODE_CHAR_ACPIWAKE (SCANCODE_EXTENDED | 0x63)