2020-09-30 17:17:25 +02:00

196 lines
9.4 KiB
C

#ifndef __XID_KBD_H__
#define __XID_KBD_H__
//definitions used only internally
//
// HID Keyboard usages
//
#define HID_USAGE_INDEX_KEYBOARD_NOEVENT 0x00
#define HID_USAGE_INDEX_KEYBOARD_ROLLOVER 0x01
#define HID_USAGE_INDEX_KEYBOARD_POSTFAIL 0x02
#define HID_USAGE_INDEX_KEYBOARD_UNDEFINED 0x03
// Letters
#define HID_USAGE_INDEX_KEYBOARD_aA 0x04
#define HID_USAGE_INDEX_KEYBOARD_bB 0x05
#define HID_USAGE_INDEX_KEYBOARD_cC 0x06
#define HID_USAGE_INDEX_KEYBOARD_dD 0x07
#define HID_USAGE_INDEX_KEYBOARD_eE 0x08
#define HID_USAGE_INDEX_KEYBOARD_fF 0x09
#define HID_USAGE_INDEX_KEYBOARD_gG 0x0A
#define HID_USAGE_INDEX_KEYBOARD_hH 0x0B
#define HID_USAGE_INDEX_KEYBOARD_iI 0x0C
#define HID_USAGE_INDEX_KEYBOARD_jJ 0x0D
#define HID_USAGE_INDEX_KEYBOARD_kK 0x0E
#define HID_USAGE_INDEX_KEYBOARD_lL 0x0F
#define HID_USAGE_INDEX_KEYBOARD_mM 0x10
#define HID_USAGE_INDEX_KEYBOARD_nN 0x11
#define HID_USAGE_INDEX_KEYBOARD_oO 0x12
#define HID_USAGE_INDEX_KEYBOARD_pP 0x13
#define HID_USAGE_INDEX_KEYBOARD_qQ 0x14
#define HID_USAGE_INDEX_KEYBOARD_rR 0x15
#define HID_USAGE_INDEX_KEYBOARD_sS 0x16
#define HID_USAGE_INDEX_KEYBOARD_tT 0x17
#define HID_USAGE_INDEX_KEYBOARD_uU 0x18
#define HID_USAGE_INDEX_KEYBOARD_vV 0x19
#define HID_USAGE_INDEX_KEYBOARD_wW 0x1A
#define HID_USAGE_INDEX_KEYBOARD_xX 0x1B
#define HID_USAGE_INDEX_KEYBOARD_yY 0x1C
#define HID_USAGE_INDEX_KEYBOARD_zZ 0x1D
// Numbers
#define HID_USAGE_INDEX_KEYBOARD_ONE 0x1E
#define HID_USAGE_INDEX_KEYBOARD_TWO 0x1F
#define HID_USAGE_INDEX_KEYBOARD_THREE 0x20
#define HID_USAGE_INDEX_KEYBOARD_FOUR 0x21
#define HID_USAGE_INDEX_KEYBOARD_FIVE 0x22
#define HID_USAGE_INDEX_KEYBOARD_SIX 0x23
#define HID_USAGE_INDEX_KEYBOARD_SEVEN 0x24
#define HID_USAGE_INDEX_KEYBOARD_EIGHT 0x25
#define HID_USAGE_INDEX_KEYBOARD_NINE 0x26
#define HID_USAGE_INDEX_KEYBOARD_ZERO 0x27
//Editing Keys
#define HID_USAGE_INDEX_KEYBOARD_RETURN 0x28
#define HID_USAGE_INDEX_KEYBOARD_ESCAPE 0x29
#define HID_USAGE_INDEX_KEYBOARD_BACKSPACE 0x2A //HID spec calls this "delete(backspace)", what we later call delete HID calls "delete forward"
#define HID_USAGE_INDEX_KEYBOARD_TAB 0x2B
#define HID_USAGE_INDEX_KEYBOARD_SPACEBAR 0x2C
#define HID_USAGE_INDEX_KEYBOARD_MINUS 0x2D
#define HID_USAGE_INDEX_KEYBOARD_EQUALS 0x2E
#define HID_USAGE_INDEX_KEYBOARD_OPEN_BRACE 0x2F
#define HID_USAGE_INDEX_KEYBOARD_CLOSE_BRACE 0x30
#define HID_USAGE_INDEX_KEYBOARD_BACKSLASH 0x31
#define HID_USAGE_INDEX_KEYBOARD_NON_US_TILDE 0x32
#define HID_USAGE_INDEX_KEYBOARD_COLON 0x33
#define HID_USAGE_INDEX_KEYBOARD_QUOTE 0x34
#define HID_USAGE_INDEX_KEYBOARD_TILDE 0x35
#define HID_USAGE_INDEX_KEYBOARD_COMMA 0x36
#define HID_USAGE_INDEX_KEYBOARD_PERIOD 0x37
#define HID_USAGE_INDEX_KEYBOARD_QUESTION 0x38
#define HID_USAGE_INDEX_KEYBOARD_CAPS_LOCK 0x39
// Funtion keys
#define HID_USAGE_INDEX_KEYBOARD_F1 0x3A
#define HID_USAGE_INDEX_KEYBOARD_F2 0x3B
#define HID_USAGE_INDEX_KEYBOARD_F3 0x3C
#define HID_USAGE_INDEX_KEYBOARD_F4 0x3D
#define HID_USAGE_INDEX_KEYBOARD_F5 0x3E
#define HID_USAGE_INDEX_KEYBOARD_F6 0x3F
#define HID_USAGE_INDEX_KEYBOARD_F7 0x40
#define HID_USAGE_INDEX_KEYBOARD_F8 0x41
#define HID_USAGE_INDEX_KEYBOARD_F9 0x42
#define HID_USAGE_INDEX_KEYBOARD_F10 0x43
#define HID_USAGE_INDEX_KEYBOARD_F11 0x44
#define HID_USAGE_INDEX_KEYBOARD_F12 0x45
//More Edit Keys
#define HID_USAGE_INDEX_KEYBOARD_PRINT_SCREEN 0x46
#define HID_USAGE_INDEX_KEYBOARD_SCROLL_LOCK 0x47
#define HID_USAGE_INDEX_KEYBOARD_PAUSE 0x48
#define HID_USAGE_INDEX_KEYBOARD_INSERT 0x49
#define HID_USAGE_INDEX_KEYBOARD_HOME 0x4A
#define HID_USAGE_INDEX_KEYBOARD_PAGE_UP 0x4B
#define HID_USAGE_INDEX_KEYBOARD_DELETE 0x4C //HID spec, DELETE FORWARD, DELETE is used for backspace
#define HID_USAGE_INDEX_KEYBOARD_END 0x4D
#define HID_USAGE_INDEX_KEYBOARD_PAGE_DOWN 0x4E
#define HID_USAGE_INDEX_KEYBOARD_RIGHT_ARROW 0x4F
#define HID_USAGE_INDEX_KEYBOARD_LEFT_ARROW 0x50
#define HID_USAGE_INDEX_KEYBOARD_DOWN_ARROW 0x51
#define HID_USAGE_INDEX_KEYBOARD_UP_ARROW 0x52
#define HID_USAGE_INDEX_KEYPAD_NUM_LOCK 0x53
#define HID_USAGE_INDEX_KEYPAD_BACKSLASH 0x54
#define HID_USAGE_INDEX_KEYPAD_ASTERICK 0x55
#define HID_USAGE_INDEX_KEYPAD_MINUS 0x56
#define HID_USAGE_INDEX_KEYPAD_PLUS 0x57
#define HID_USAGE_INDEX_KEYPAD_ENTER 0x58
#define HID_USAGE_INDEX_KEYPAD_ONE 0x59
#define HID_USAGE_INDEX_KEYPAD_TWO 0x5A
#define HID_USAGE_INDEX_KEYPAD_THREE 0x5B
#define HID_USAGE_INDEX_KEYPAD_FOUR 0x5C
#define HID_USAGE_INDEX_KEYPAD_FIVE 0x5D
#define HID_USAGE_INDEX_KEYPAD_SIX 0x5E
#define HID_USAGE_INDEX_KEYPAD_SEVEN 0x5F
#define HID_USAGE_INDEX_KEYPAD_EIGHT 0x60
#define HID_USAGE_INDEX_KEYPAD_NINE 0x61
#define HID_USAGE_INDEX_KEYPAD_ZERO 0x62
#define HID_USAGE_INDEX_KEYPAD_DECIMAL 0x63
#define HID_USAGE_INDEX_KEYBOARD_NON_US_BACKSLASH 0x64
#define HID_USAGE_INDEX_KEYBOARD_APPLICATION 0x65 //This is the Windows(R)TM Key
#define HID_USAGE_INDEX_KEYBOARD_POWER 0x66 //Not on standard 101 or 104
#define HID_USAGE_INDEX_KEYPAD_EQUALS 0x67 //Not on standard 101 or 104
//Bunch o' function keys not on supported keyboards
#define HID_USAGE_INDEX_KEYBOARD_F13 0x68
#define HID_USAGE_INDEX_KEYBOARD_F14 0x69
#define HID_USAGE_INDEX_KEYBOARD_F15 0x6A
#define HID_USAGE_INDEX_KEYBOARD_F16 0x6B
#define HID_USAGE_INDEX_KEYBOARD_F17 0x6C
#define HID_USAGE_INDEX_KEYBOARD_F18 0x6D
#define HID_USAGE_INDEX_KEYBOARD_F19 0x6E
#define HID_USAGE_INDEX_KEYBOARD_F20 0x6F
#define HID_USAGE_INDEX_KEYBOARD_F21 0x70
#define HID_USAGE_INDEX_KEYBOARD_F22 0x71
#define HID_USAGE_INDEX_KEYBOARD_F23 0x72
#define HID_USAGE_INDEX_KEYBOARD_F24 0x73
//More unsupported usages
#define HID_USAGE_INDEX_KEYBOARD_EXECUTE 0x74
#define HID_USAGE_INDEX_KEYBOARD_HELP 0x75
#define HID_USAGE_INDEX_KEYBOARD_MENU 0x76
#define HID_USAGE_INDEX_KEYBOARD_SELECT 0x77
#define HID_USAGE_INDEX_KEYBOARD_STOP 0x78
#define HID_USAGE_INDEX_KEYBOARD_AGAIN 0x79
#define HID_USAGE_INDEX_KEYBOARD_UNDO 0x7A
#define HID_USAGE_INDEX_KEYBOARD_CUT 0x7B
#define HID_USAGE_INDEX_KEYBOARD_COPY 0x7C
#define HID_USAGE_INDEX_KEYBOARD_PASTE 0x7D
#define HID_USAGE_INDEX_KEYBOARD_FIND 0x7E
#define HID_USAGE_INDEX_KEYBOARD_MUTE 0x7F
#define HID_USAGE_INDEX_KEYBOARD_VOLUME_UP 0x80
#define HID_USAGE_INDEX_KEYBOARD_VOLUME_DOWN 0x81
#define HID_USAGE_INDEX_KEYBOARD_LOCKING_CAPS 0x82 //sent as a toggle, see HID USAGE Tables spec.
#define HID_USAGE_INDEX_KEYBOARD_LOCKING_NUM 0x83 //sent as a toggle, see HID USAGE Tables spec.
#define HID_USAGE_INDEX_KEYBOARD_LOCKING_SCROLL 0x84 //sent as a toggle, see HID USAGE Tables spec
//Stuff that we use on foreign keyboards, some needed, some not
#define HID_USAGE_INDEX_KEYPAD_COMMA 0x85 //According to HID usage table 1.1rc3 2/16/99, use for Brazilian keypad "."
#define HID_USAGE_INDEX_KEYPAD_EQUALS_AS400 0x86 //Only As\400, so we don't need to worry.
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL1 0x87 //Brazilian forward slash "/", and Japanese backslash slash
#define HID_USAGE_INDEX_KEYBOARD_INTERNALIONAL2 0x88 //Picture looks like Hiragana according to Emi
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL3 0x89 //Picture looks like Yen
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL4 0x8A //Picture looks like Henkan
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL5 0x8B //Picture looks like Mu-Henkan
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL6 0x8C
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL7 0x8D //Single byte/double byte toggle
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL8 0x8E //left undefined in spec
#define HID_USAGE_INDEX_KEYBOARD_INTERNATIONAL9 0x8F //left undefined in spec
#define HID_USAGE_INDEX_KEYBOARD_LANG1 0x90 //Hangul/English
#define HID_USAGE_INDEX_KEYBOARD_LANG2 0x91 //Hanja conversion key
#define HID_USAGE_INDEX_KEYBOARD_LANG3 0x92 //Katakana key Japanese USB word-processing keyboard
#define HID_USAGE_INDEX_KEYBOARD_LANG4 0x93 //Hiragana key Japanese USB word-processing keyboard
#define HID_USAGE_INDEX_KEYBOARD_LANG5 0x94 //Defines the Zenkaku/Hankaku key for Japanese USB word-processing keyboard
#define HID_USAGE_INDEX_KEYBOARD_LANG6 0x95 //reserved for IME
#define HID_USAGE_INDEX_KEYBOARD_LANG7 0x96 //reserved for IME
#define HID_USAGE_INDEX_KEYBOARD_LANG8 0x97 //reserved for IME
#define HID_USAGE_INDEX_KEYBOARD_LANG9 0x98 //reserved for IME
// . . .
// Modifier Keys
#define HID_USAGE_INDEX_KEYBOARD_LCTRL 0xE0
#define HID_USAGE_INDEX_KEYBOARD_LSHFT 0xE1
#define HID_USAGE_INDEX_KEYBOARD_LALT 0xE2
#define HID_USAGE_INDEX_KEYBOARD_LGUI 0xE3
#define HID_USAGE_INDEX_KEYBOARD_RCTRL 0xE4
#define HID_USAGE_INDEX_KEYBOARD_RSHFT 0xE5
#define HID_USAGE_INDEX_KEYBOARD_RALT 0xE6
#define HID_USAGE_INDEX_KEYBOARD_RGUI 0xE7
// The masks are used, not the indices.
#define HID_USAGE_MASK_KEYBOARD_LCTRL 0x01
#define HID_USAGE_MASK_KEYBOARD_LSHFT 0x02
#define HID_USAGE_MASK_KEYBOARD_LALT 0x04
#define HID_USAGE_MASK_KEYBOARD_LGUI 0x08
#define HID_USAGE_MASK_KEYBOARD_RCTRL 0x10
#define HID_USAGE_MASK_KEYBOARD_RSHFT 0x20
#define HID_USAGE_MASK_KEYBOARD_RALT 0x40
#define HID_USAGE_MASK_KEYBOARD_RGUI 0x80
// Mask for the Keyboard LEDs
#define HID_KEYBOARDLED_MASK_NUM_LOCK 0x01
#define HID_KEYBOARDLED_MASK_CAPS_LOCK 0x02
#define HID_KEYBOARDLED_MASK_SCROLL_LOCK 0x04
#endif //__XID_KBD_H__