/** **************************************************************************************** * * @file hidkey.h * * @brief HID KeyCode - USB usages * https://www.usb.org/sites/default/files/hut1_4.pdf **************************************************************************************** */ #ifndef _HIDKEY_H_ #define _HIDKEY_H_ /// Ordinary keys enum generic_key { KEY_A = 0x04, KEY_B = 0x05, KEY_C = 0x06, KEY_D = 0x07, KEY_E = 0x08, KEY_F = 0x09, KEY_G = 0x0A, KEY_H = 0x0B, KEY_I = 0x0C, KEY_J = 0x0D, KEY_K = 0x0E, KEY_L = 0x0F, KEY_M = 0x10, KEY_N = 0x11, KEY_O = 0x12, KEY_P = 0x13, KEY_Q = 0x14, KEY_R = 0x15, KEY_S = 0x16, KEY_T = 0x17, KEY_U = 0x18, KEY_V = 0x19, KEY_W = 0x1A, KEY_X = 0x1B, KEY_Y = 0x1C, KEY_Z = 0x1D, KEY_1 = 0x1E, // 1! KEY_2 = 0x1F, // 2@ KEY_3 = 0x20, // 3# KEY_4 = 0x21, // 4$ KEY_5 = 0x22, // 5% KEY_6 = 0x23, // 6^ KEY_7 = 0x24, // 7& KEY_8 = 0x25, // 8* KEY_9 = 0x26, // 9( KEY_0 = 0x27, // 0) KEY_ENTER = 0x28, KEY_ESC = 0x29, KEY_BACKSPACE = 0x2A, KEY_TAB = 0x2B, KEY_SPACEBAR = 0x2C, KEY_MINUS = 0x2D, // -_ KEY_EQUAL = 0x2E, // =+ KEY_LBRACKET = 0x2F, // [{ KEY_RBRACKET = 0x30, // ]} KEY_BACKSLASH = 0x31, // \| KEY_NUMBER = 0x32, KEY_SEMICOLON = 0x33, // ;: KEY_QUOTE = 0x34, // '" KEY_ACCENT = 0x35, // `~ KEY_COMMA = 0x36, // ,< KEY_PERIOD = 0x37, // .> KEY_SLASH = 0x38, // /? KEY_CAPS_LOCK = 0x39, KEY_F1 = 0x3A, KEY_F2 = 0x3B, KEY_F3 = 0x3C, KEY_F4 = 0x3D, KEY_F5 = 0x3E, KEY_F6 = 0x3F, KEY_F7 = 0x40, KEY_F8 = 0x41, KEY_F9 = 0x42, KEY_F10 = 0x43, KEY_F11 = 0x44, KEY_F12 = 0x45, KEY_PRINT_SCREEN = 0x46, KEY_SCROLL_LOCK = 0x47, KEY_PAUSE = 0x48, KEY_INSERT = 0x49, KEY_HOME = 0x4A, KEY_PAGE_UP = 0x4B, KEY_DELETE = 0x4C, KEY_END = 0x4D, KEY_PAGE_DOWN = 0x4E, KEY_RIGHT = 0x4F, KEY_LEFT = 0x50, KEY_DOWN = 0x51, KEY_UP = 0x52, KEY_NUM_LOCK = 0x53, KEY_PAD_SLASH = 0x54, // / KEY_PAD_ASTERIX = 0x55, // * KEY_PAD_MINUS = 0x56, // - KEY_PAD_PLUS = 0x57, // + KEY_PAD_ENTER = 0x58, KEY_PAD_1 = 0x59, KEY_PAD_2 = 0x5A, KEY_PAD_3 = 0x5B, KEY_PAD_4 = 0x5C, KEY_PAD_5 = 0x5D, KEY_PAD_6 = 0x5E, KEY_PAD_7 = 0x5F, KEY_PAD_8 = 0x60, KEY_PAD_9 = 0x61, KEY_PAD_0 = 0x62, KEY_PAD_DOT = 0x63, // . KEY_K45 = 0x64, KEY_APP = 0x65, KEY_POWER = 0x66, KEY_PAD_EQUAL = 0x67, KEY_F13 = 0x68, KEY_F14 = 0x69, KEY_F15 = 0x6A, KEY_F16 = 0x6B, KEY_F17 = 0x6C, KEY_F18 = 0x6D, KEY_F19 = 0x6E, KEY_F20 = 0x6F, KEY_F21 = 0x70, KEY_F22 = 0x71, KEY_F23 = 0x72, KEY_F24 = 0x73, KEY_EXECUTE = 0x74, KEY_HELP = 0x75, KEY_MENU = 0x76, KEY_SELECT = 0x77, KEY_STOP = 0x78, KEY_AGAIN = 0x79, KEY_UNDO = 0x7A, KEY_CUT = 0x7B, KEY_COPY = 0x7C, KEY_PASTE = 0x7D, KEY_FIND = 0x7E, KEY_MUTE = 0x7F, KEY_VOL_UP = 0x80, KEY_VOL_DN = 0x81, KEY_LOCKING_CAPS = 0x82, KEY_LOCKING_NUM = 0x83, KEY_LOCKING_SCROLL = 0x84, KEY_PAD_COMMA = 0x85, KEY_PAD_EQUAL_AS400 = 0x86, KEY_INTL_1 = 0x87, KEY_INTL_2 = 0x88, KEY_INTL_3 = 0x89, KEY_INTL_4 = 0x8A, KEY_INTL_5 = 0x8B, KEY_INTL_6 = 0x8C, KEY_INTL_7 = 0x8D, KEY_INTL_8 = 0x8E, KEY_INTL_9 = 0x8F, KEY_LANG_1 = 0x90, KEY_LANG_2 = 0x91, KEY_LANG_3 = 0x92, KEY_LANG_4 = 0x93, KEY_LANG_5 = 0x94, KEY_LANG_6 = 0x95, KEY_LANG_7 = 0x96, KEY_LANG_8 = 0x97, KEY_LANG_9 = 0x98, KEY_ALT_ERASE = 0x99, KEY_SYS_REQ = 0x9A, KEY_CANCEL = 0x9B, KEY_CLEAR = 0x9C, KEY_PRIOR = 0x9D, KEY_RETURN = 0x9E, KEY_SEPARATOR = 0x9F, KEY_OUT = 0xA0, KEY_OPER = 0xA1, KEY_CLEAR_AGAIN = 0xA2, KEY_CRSEL = 0xA3, KEY_EXSEL = 0xA4, // Reserved 0xA5-0xAF(165-175) KEY_PAD_00 = 0xB0, KEY_PAD_000 = 0xB1, KEY_THOUSANDS_SEPERATOR = 0xB2, KEY_DECIMAL_SEPERATOR = 0xB3, KEY_CURRENCY_UNIT = 0xB4, KEY_CURRENCY_SUB_UNIT = 0xB5, KEY_PAD_LEFT_PAREN = 0xB6, KEY_PAD_RIGHT_PAREN = 0xB7, KEY_PAD_LEFT_CURLY_BRACE = 0xB8, KEY_PAD_RIGHT_CURLY_BRACE = 0xB9, KEY_PAD_TAB = 0xBA, KEY_PAD_BACKSPACE = 0xBB, KEY_PAD_A = 0xBC, KEY_PAD_B = 0xBD, KEY_PAD_C = 0xBE, KEY_PAD_D = 0xBF, KEY_PAD_E = 0xC0, KEY_PAD_F = 0xC1, KEY_PAD_XOR = 0xC2, KEY_PAD_CARET = 0xC3, KEY_PAD_PERCENT = 0xC4, KEY_PAD_LESS_THAN = 0xC5, KEY_PAD_GREATER_THAN = 0xC6, KEY_PAD_AMPERSAND = 0xC7, KEY_PAD_DOUBLE_AMPERSAND = 0xC8, KEY_PAD_VERTICAL_BAR = 0xC9, KEY_PAD_DOUBLE_VERTICAL_BAR = 0xCA, KEY_PAD_COLON = 0xCB, KEY_PAD_HASH = 0xCC, KEY_PAD_SPACE = 0xCD, KEY_PAD_AT = 0xCE, KEY_PAD_EXCLAMATION = 0xCF, KEY_PAD_MEM_STORE = 0xD0, KEY_PAD_MEM_RECALL = 0xD1, KEY_PAD_MEM_CLEAR = 0xD2, KEY_PAD_MEM_ADD = 0xD3, KEY_PAD_MEM_SUBTRACT = 0xD4, KEY_PAD_MEM_MULTIPLY = 0xD5, KEY_PAD_MEM_DIVIDE = 0xD6, KEY_PAD_PLUS_MINUS = 0xD7, KEY_PAD_CLEAR = 0xD8, KEY_PAD_CLEAR_ENTRY = 0xD9, KEY_PAD_BINARY = 0xDA, KEY_PAD_OCTAL = 0xDB, KEY_PAD_DECIMAL = 0xDC, KEY_PAD_HEX = 0xDD, // Reserved 0xDE-0xDF(222-223) KEY_LCTRL = 0xE0, KEY_LSHIFT = 0xE1, KEY_LALT = 0xE2, KEY_LGUI = 0xE3, KEY_RCTRL = 0xE4, KEY_RSHIFT = 0xE5, KEY_RALT = 0xE6, KEY_RGUI = 0xE7, KEY_FN = 0xF0, KEY_LED = 0xF1, KEY_RGB = 0xF2, }; /// Multi-Fn keys, Reference: <> Consumer Page(0x0C) enum multi_key { MKEY_POWER = 0x0030, // Lock screen MKEY_RESET = 0x0031, MKEY_SLEEP = 0x0032, MKEY_MENU = 0x0040, MKEY_MENU_PICK = 0x0041, MKEY_MENU_UP = 0x0042, MKEY_MENU_DN = 0x0043, MKEY_MENU_LEFT = 0x0044, MKEY_MENU_RIGHT = 0x0045, MKEY_LIGHT_UP = 0x006F, MKEY_LIGHT_DN = 0x0070, MKEY_CHN_UP = 0x009C, MKEY_CHN_DN = 0x009D, MKEY_PLAY = 0x00B0, MKEY_PAUSE = 0x00B1, MKEY_RECORD = 0x00B2, MKEY_FAST_FORWARD = 0x00B3, MKEY_REWIND = 0x00B4, MKEY_NEXT_TRK = 0x00B5, MKEY_PREV_TRK = 0x00B6, MKEY_STOP = 0x00B7, MKEY_EJECT = 0x00B8, MKEY_START_PAUSE = 0x00CD, MKEY_START_SKIP = 0x00CE, MKEY_VOLUME = 0x00E0, MKEY_BALANCE = 0x00E1, MKEY_MUTE = 0x00E2, MKEY_VOL_UP = 0x00E9, MKEY_VOL_DN = 0x00EA, MKEY_MUSIC = 0x0183, MKEY_EMAIL = 0x018A, MKEY_CALCAULATOL = 0x0192, MKEY_COMPUTER = 0x0194, MKEY_VIRKB = 0x01AE, // Soft keyboard MKEY_WWW_SEARCH = 0x0221, MKEY_WWW_HOME = 0x0223, MKEY_WWW_BACK = 0x0224, MKEY_WWW_FORWARD = 0x0225, MKEY_WWW_STOP = 0x0226, MKEY_WWW_REFRESH = 0x0227, MKEY_WWW_FAVORITES = 0x022A, }; enum multi_key_pos { MKEY_BIT0_POS = 0, MKEY_BIT1_POS = 1, MKEY_BIT2_POS = 2, MKEY_BIT3_POS = 3, MKEY_BIT4_POS = 4, MKEY_BIT5_POS = 5, MKEY_BIT6_POS = 6, MKEY_BIT7_POS = 7, }; /// Bitmap of Keys enum key_bit { // byte0: E0~E7(Modifier Keys) KEY_BIT_LCTRL = 0x01, KEY_BIT_LSHIFT = 0x02, KEY_BIT_LALT = 0x04, KEY_BIT_LGUI = 0x08, KEY_BIT_RCTRL = 0x10, KEY_BIT_RSHIFT = 0x20, KEY_BIT_RALT = 0x40, KEY_BIT_RGUI = 0x80, // byte1: F0~F2(Fn Keys) KEY_BIT_FN = 0x01, KEY_BIT_LED = 0x02, KEY_BIT_RGB = 0x04, }; enum key_sys { ANDROID = 0, WINDOWS = 1, SYS_IOS = 2, //iPad SYS_MAC = 3, SYS_MAX = SYS_MAC, }; #endif //_HIDKEY_H_