123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637 |
- /*
- * Copyright (c) 2018 Intel Corporation
- * Copyright (c) 2018,2021 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- /**
- * @file
- * @brief USB Human Interface Device (HID) common definitions header
- *
- * Header follows Device Class Definition for Human Interface Devices (HID)
- * Version 1.11 document (HID1_11-1.pdf).
- */
- #ifndef ZEPHYR_INCLUDE_USB_CLASS_HID_H_
- #define ZEPHYR_INCLUDE_USB_CLASS_HID_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief hid.h API
- * @defgroup usb_hid_definitions USB HID common definitions
- * @{
- * @}
- */
- /**
- * @defgroup usb_hid_types USB HID types and values
- * @ingroup usb_hid_definitions
- * @{
- */
- /** USB HID Class HID descriptor type */
- #define USB_DESC_HID 0x21
- /** USB HID Class Report descriptor type */
- #define USB_DESC_HID_REPORT 0x22
- /** USB HID Class physical descriptor type */
- #define USB_DESC_HID_PHYSICAL 0x23
- /** USB HID Class GetReport bRequest value */
- #define USB_HID_GET_REPORT 0x01
- /** USB HID Class GetIdle bRequest value */
- #define USB_HID_GET_IDLE 0x02
- /** USB HID Class GetProtocol bRequest value */
- #define USB_HID_GET_PROTOCOL 0x03
- /** USB HID Class SetReport bRequest value */
- #define USB_HID_SET_REPORT 0x09
- /** USB HID Class SetIdle bRequest value */
- #define USB_HID_SET_IDLE 0x0A
- /** USB HID Class SetProtocol bRequest value */
- #define USB_HID_SET_PROTOCOL 0x0B
- /** USB HID Boot Interface Protocol (bInterfaceProtocol) Code None */
- #define HID_BOOT_IFACE_CODE_NONE 0
- /** USB HID Boot Interface Protocol (bInterfaceProtocol) Code Keyboard */
- #define HID_BOOT_IFACE_CODE_KEYBOARD 1
- /** USB HID Boot Interface Protocol (bInterfaceProtocol) Code Mouse */
- #define HID_BOOT_IFACE_CODE_MOUSE 2
- /** USB HID Class Boot protocol code */
- #define HID_PROTOCOL_BOOT 0
- /** USB HID Class Report protocol code */
- #define HID_PROTOCOL_REPORT 1
- /** HID Main item type */
- #define HID_ITEM_TYPE_MAIN 0x0
- /** HID Global item type */
- #define HID_ITEM_TYPE_GLOBAL 0x1
- /** HID Local item type */
- #define HID_ITEM_TYPE_LOCAL 0x2
- /** HID Input item tag */
- #define HID_ITEM_TAG_INPUT 0x8
- /** HID Output item tag */
- #define HID_ITEM_TAG_OUTPUT 0x9
- /** HID Collection item tag */
- #define HID_ITEM_TAG_COLLECTION 0xA
- /** HID Feature item tag */
- #define HID_ITEM_TAG_FEATURE 0xB
- /** HID End Collection item tag */
- #define HID_ITEM_TAG_COLLECTION_END 0xC
- /** HID Usage Page item tag */
- #define HID_ITEM_TAG_USAGE_PAGE 0x0
- /** HID Logical Minimum item tag */
- #define HID_ITEM_TAG_LOGICAL_MIN 0x1
- /** HID Logical Maximum item tag */
- #define HID_ITEM_TAG_LOGICAL_MAX 0x2
- /** HID Physical Minimum item tag */
- #define HID_ITEM_TAG_PHYSICAL_MIN 0x3
- /** HID Physical Maximum item tag */
- #define HID_ITEM_TAG_PHYSICAL_MAX 0x4
- /** HID Unit Exponent item tag */
- #define HID_ITEM_TAG_UNIT_EXPONENT 0x5
- /** HID Unit item tag */
- #define HID_ITEM_TAG_UNIT 0x6
- /** HID Report Size item tag */
- #define HID_ITEM_TAG_REPORT_SIZE 0x7
- /** HID Report ID item tag */
- #define HID_ITEM_TAG_REPORT_ID 0x8
- /** HID Report count item tag */
- #define HID_ITEM_TAG_REPORT_COUNT 0x9
- /** HID Usage item tag */
- #define HID_ITEM_TAG_USAGE 0x0
- /** HID Usage Minimum item tag */
- #define HID_ITEM_TAG_USAGE_MIN 0x1
- /** HID Usage Maximum item tag */
- #define HID_ITEM_TAG_USAGE_MAX 0x2
- /** Physical collection type */
- #define HID_COLLECTION_PHYSICAL 0x00
- /** Application collection type */
- #define HID_COLLECTION_APPLICATION 0x01
- /* Usage page and IDs from Universal Serial Bus HID Usage Tables */
- /** HID Generic Desktop Controls Usage page */
- #define HID_USAGE_GEN_DESKTOP 0x01
- /** HID Keyboard Usage page */
- #define HID_USAGE_GEN_KEYBOARD 0x07
- /** HID LEDs Usage page */
- #define HID_USAGE_GEN_LEDS 0x08
- /** HID Button Usage page */
- #define HID_USAGE_GEN_BUTTON 0x09
- /** HID Generic Desktop Undefined Usage ID */
- #define HID_USAGE_GEN_DESKTOP_UNDEFINED 0x00
- /** HID Generic Desktop Pointer Usage ID */
- #define HID_USAGE_GEN_DESKTOP_POINTER 0x01
- /** HID Generic Desktop Mouse Usage ID */
- #define HID_USAGE_GEN_DESKTOP_MOUSE 0x02
- /** HID Generic Desktop Joystick Usage ID */
- #define HID_USAGE_GEN_DESKTOP_JOYSTICK 0x04
- /** HID Generic Desktop Gamepad Usage ID */
- #define HID_USAGE_GEN_DESKTOP_GAMEPAD 0x05
- /** HID Generic Desktop Keyboard Usage ID */
- #define HID_USAGE_GEN_DESKTOP_KEYBOARD 0x06
- /** HID Generic Desktop Keypad Usage ID */
- #define HID_USAGE_GEN_DESKTOP_KEYPAD 0x07
- /** HID Generic Desktop X Usage ID */
- #define HID_USAGE_GEN_DESKTOP_X 0x30
- /** HID Generic Desktop Y Usage ID */
- #define HID_USAGE_GEN_DESKTOP_Y 0x31
- /** HID Generic Desktop Wheel Usage ID */
- #define HID_USAGE_GEN_DESKTOP_WHEEL 0x38
- /**
- * @}
- */
- /**
- * @defgroup usb_hid_items USB HID Item helpers
- * @ingroup usb_hid_definitions
- * @{
- */
- /**
- * @brief Define HID short item.
- *
- * @param bTag Item tag
- * @param bType Item type
- * @param bSize Item data size
- * @return HID Input item
- */
- #define HID_ITEM(bTag, bType, bSize) (((bTag & 0xF) << 4) | \
- ((bType & 0x3) << 2) | (bSize & 0x3))
- /**
- * @brief Define HID Input item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Input item data
- * @return HID Input item
- */
- #define HID_INPUT(a) \
- HID_ITEM(HID_ITEM_TAG_INPUT, HID_ITEM_TYPE_MAIN, 1), a
- /**
- * @brief Define HID Output item with the data length of one byte.
- *
- * For usage examples, see @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Output item data
- * @return HID Output item
- */
- #define HID_OUTPUT(a) \
- HID_ITEM(HID_ITEM_TAG_OUTPUT, HID_ITEM_TYPE_MAIN, 1), a
- /**
- * @brief Define HID Feature item with the data length of one byte.
- *
- * @param a Feature item data
- * @return HID Feature item
- */
- #define HID_FEATURE(a) \
- HID_ITEM(HID_ITEM_TAG_OUTPUT, HID_ITEM_TYPE_MAIN, 1), a
- /**
- * @brief Define HID Collection item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Collection item data
- * @return HID Collection item
- */
- #define HID_COLLECTION(a) \
- HID_ITEM(HID_ITEM_TAG_COLLECTION, HID_ITEM_TYPE_MAIN, 1), a
- /**
- * @brief Define HID End Collection (non-data) item.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @return HID End Collection item
- */
- #define HID_END_COLLECTION \
- HID_ITEM(HID_ITEM_TAG_COLLECTION_END, HID_ITEM_TYPE_MAIN, 0)
- /**
- * @brief Define HID Usage Page item.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param page Usage Page
- * @return HID Usage Page item
- */
- #define HID_USAGE_PAGE(page) \
- HID_ITEM(HID_ITEM_TAG_USAGE_PAGE, HID_ITEM_TYPE_GLOBAL, 1), page
- /**
- * @brief Define HID Logical Minimum item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Minimum value in logical units
- * @return HID Logical Minimum item
- */
- #define HID_LOGICAL_MIN8(a) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MIN, HID_ITEM_TYPE_GLOBAL, 1), a
- /**
- * @brief Define HID Logical Maximum item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Maximum value in logical units
- * @return HID Logical Maximum item
- */
- #define HID_LOGICAL_MAX8(a) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MAX, HID_ITEM_TYPE_GLOBAL, 1), a
- /**
- * @brief Define HID Logical Minimum item with the data length of two bytes.
- *
- * @param a Minimum value lower byte
- * @param b Minimum value higher byte
- * @return HID Logical Minimum item
- */
- #define HID_LOGICAL_MIN16(a, b) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MIN, HID_ITEM_TYPE_GLOBAL, 2), a, b
- /**
- * @brief Define HID Logical Maximum item with the data length of two bytes.
- *
- * @param a Minimum value lower byte
- * @param b Minimum value higher byte
- * @return HID Logical Maximum item
- */
- #define HID_LOGICAL_MAX16(a, b) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MAX, HID_ITEM_TYPE_GLOBAL, 2), a, b
- /**
- * @brief Define HID Logical Minimum item with the data length of four bytes.
- *
- * @param a Minimum value lower byte
- * @param b Minimum value low middle byte
- * @param c Minimum value high middle byte
- * @param d Minimum value higher byte
- * @return HID Logical Minimum item
- */
- #define HID_LOGICAL_MIN32(a, b, c, d) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MIN, HID_ITEM_TYPE_GLOBAL, 3), a, b, c, d
- /**
- * @brief Define HID Logical Maximum item with the data length of four bytes.
- *
- * @param a Minimum value lower byte
- * @param b Minimum value low middle byte
- * @param c Minimum value high middle byte
- * @param d Minimum value higher byte
- * @return HID Logical Maximum item
- */
- #define HID_LOGICAL_MAX32(a, b, c, d) \
- HID_ITEM(HID_ITEM_TAG_LOGICAL_MAX, HID_ITEM_TYPE_GLOBAL, 3), a, b, c, d
- /**
- * @brief Define HID Report Size item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param size Report field size in bits
- * @return HID Report Size item
- */
- #define HID_REPORT_SIZE(size) \
- HID_ITEM(HID_ITEM_TAG_REPORT_SIZE, HID_ITEM_TYPE_GLOBAL, 1), size
- /**
- * @brief Define HID Report ID item with the data length of one byte.
- *
- * @param id Report ID
- * @return HID Report ID item
- */
- #define HID_REPORT_ID(id) \
- HID_ITEM(HID_ITEM_TAG_REPORT_ID, HID_ITEM_TYPE_GLOBAL, 1), id
- /**
- * @brief Define HID Report Count item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param count Number of data fields included in the report
- * @return HID Report Count item
- */
- #define HID_REPORT_COUNT(count) \
- HID_ITEM(HID_ITEM_TAG_REPORT_COUNT, HID_ITEM_TYPE_GLOBAL, 1), count
- /**
- * @brief Define HID Usage Index item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param idx Number of data fields included in the report
- * @return HID Usage Index item
- */
- #define HID_USAGE(idx) \
- HID_ITEM(HID_ITEM_TAG_USAGE, HID_ITEM_TYPE_LOCAL, 1), idx
- /**
- * @brief Define HID Usage Minimum item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Starting Usage
- * @return HID Usage Minimum item
- */
- #define HID_USAGE_MIN8(a) \
- HID_ITEM(HID_ITEM_TAG_USAGE_MIN, HID_ITEM_TYPE_LOCAL, 1), a
- /**
- * @brief Define HID Usage Maximum item with the data length of one byte.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Ending Usage
- * @return HID Usage Maximum item
- */
- #define HID_USAGE_MAX8(a) \
- HID_ITEM(HID_ITEM_TAG_USAGE_MAX, HID_ITEM_TYPE_LOCAL, 1), a
- /**
- * @brief Define HID Usage Minimum item with the data length of two bytes.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Starting Usage lower byte
- * @param b Starting Usage higher byte
- * @return HID Usage Minimum item
- */
- #define HID_USAGE_MIN16(a, b) \
- HID_ITEM(HID_ITEM_TAG_USAGE_MIN, HID_ITEM_TYPE_LOCAL, 2), a, b
- /**
- * @brief Define HID Usage Maximum item with the data length of two bytes.
- *
- * For usage examples, see @ref HID_MOUSE_REPORT_DESC(),
- * @ref HID_KEYBOARD_REPORT_DESC()
- *
- * @param a Ending Usage lower byte
- * @param b Ending Usage higher byte
- * @return HID Usage Maximum item
- */
- #define HID_USAGE_MAX16(a, b) \
- HID_ITEM(HID_ITEM_TAG_USAGE_MAX, HID_ITEM_TYPE_LOCAL, 2), a, b
- /**
- * @}
- */
- /**
- * @defgroup usb_hid_mk_report_desc Mouse and keyboard report descriptors
- * @ingroup usb_hid_definitions
- * @{
- */
- /**
- * @brief Simple HID mouse report descriptor for n button mouse.
- *
- * @param bcnt Button count. Allowed values from 1 to 8.
- */
- #define HID_MOUSE_REPORT_DESC(bcnt) { \
- HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_MOUSE), \
- HID_COLLECTION(HID_COLLECTION_APPLICATION), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_POINTER), \
- HID_COLLECTION(HID_COLLECTION_PHYSICAL), \
- /* Bits used for button signalling */ \
- HID_USAGE_PAGE(HID_USAGE_GEN_BUTTON), \
- HID_USAGE_MIN8(1), \
- HID_USAGE_MAX8(bcnt), \
- HID_LOGICAL_MIN8(0), \
- HID_LOGICAL_MAX8(1), \
- HID_REPORT_SIZE(1), \
- HID_REPORT_COUNT(bcnt), \
- /* HID_INPUT (Data,Var,Abs) */ \
- HID_INPUT(0x02), \
- /* Unused bits */ \
- HID_REPORT_SIZE(8 - bcnt), \
- HID_REPORT_COUNT(1), \
- /* HID_INPUT (Cnst,Ary,Abs) */ \
- HID_INPUT(1), \
- /* X and Y axis, scroll */ \
- HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_X), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_Y), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_WHEEL), \
- HID_LOGICAL_MIN8(-127), \
- HID_LOGICAL_MAX8(127), \
- HID_REPORT_SIZE(8), \
- HID_REPORT_COUNT(3), \
- /* HID_INPUT (Data,Var,Rel) */ \
- HID_INPUT(0x06), \
- HID_END_COLLECTION, \
- HID_END_COLLECTION, \
- }
- /**
- * @brief Simple HID keyboard report descriptor.
- */
- #define HID_KEYBOARD_REPORT_DESC() { \
- HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP), \
- HID_USAGE(HID_USAGE_GEN_DESKTOP_KEYBOARD), \
- HID_COLLECTION(HID_COLLECTION_APPLICATION), \
- HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP_KEYPAD), \
- /* HID_USAGE_MINIMUM(Keyboard LeftControl) */ \
- HID_USAGE_MIN8(0xE0), \
- /* HID_USAGE_MAXIMUM(Keyboard Right GUI) */ \
- HID_USAGE_MAX8(0xE7), \
- HID_LOGICAL_MIN8(0), \
- HID_LOGICAL_MAX8(1), \
- HID_REPORT_SIZE(1), \
- HID_REPORT_COUNT(8), \
- /* HID_INPUT(Data,Var,Abs) */ \
- HID_INPUT(0x02), \
- HID_REPORT_SIZE(8), \
- HID_REPORT_COUNT(1), \
- /* HID_INPUT(Cnst,Var,Abs) */ \
- HID_INPUT(0x03), \
- HID_REPORT_SIZE(1), \
- HID_REPORT_COUNT(5), \
- HID_USAGE_PAGE(HID_USAGE_GEN_LEDS), \
- /* HID_USAGE_MINIMUM(Num Lock) */ \
- HID_USAGE_MIN8(1), \
- /* HID_USAGE_MAXIMUM(Kana) */ \
- HID_USAGE_MAX8(5), \
- /* HID_OUTPUT(Data,Var,Abs) */ \
- HID_OUTPUT(0x02), \
- HID_REPORT_SIZE(3), \
- HID_REPORT_COUNT(1), \
- /* HID_OUTPUT(Cnst,Var,Abs) */ \
- HID_OUTPUT(0x03), \
- HID_REPORT_SIZE(8), \
- HID_REPORT_COUNT(6), \
- HID_LOGICAL_MIN8(0), \
- HID_LOGICAL_MAX8(101), \
- HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP_KEYPAD), \
- /* HID_USAGE_MIN8(Reserved) */ \
- HID_USAGE_MIN8(0), \
- /* HID_USAGE_MAX8(Keyboard Application) */ \
- HID_USAGE_MAX8(101), \
- /* HID_INPUT (Data,Ary,Abs) */ \
- HID_INPUT(0x00), \
- HID_END_COLLECTION, \
- }
- /**
- * @brief HID keyboard button codes.
- */
- enum hid_kbd_code {
- HID_KEY_A = 4,
- HID_KEY_B = 5,
- HID_KEY_C = 6,
- HID_KEY_D = 7,
- HID_KEY_E = 8,
- HID_KEY_F = 9,
- HID_KEY_G = 10,
- HID_KEY_H = 11,
- HID_KEY_I = 12,
- HID_KEY_J = 13,
- HID_KEY_K = 14,
- HID_KEY_L = 15,
- HID_KEY_M = 16,
- HID_KEY_N = 17,
- HID_KEY_O = 18,
- HID_KEY_P = 19,
- HID_KEY_Q = 20,
- HID_KEY_R = 21,
- HID_KEY_S = 22,
- HID_KEY_T = 23,
- HID_KEY_U = 24,
- HID_KEY_V = 25,
- HID_KEY_W = 26,
- HID_KEY_X = 27,
- HID_KEY_Y = 28,
- HID_KEY_Z = 29,
- HID_KEY_1 = 30,
- HID_KEY_2 = 31,
- HID_KEY_3 = 32,
- HID_KEY_4 = 33,
- HID_KEY_5 = 34,
- HID_KEY_6 = 35,
- HID_KEY_7 = 36,
- HID_KEY_8 = 37,
- HID_KEY_9 = 38,
- HID_KEY_0 = 39,
- HID_KEY_ENTER = 40,
- HID_KEY_ESC = 41,
- HID_KEY_BACKSPACE = 42,
- HID_KEY_TAB = 43,
- HID_KEY_SPACE = 44,
- HID_KEY_MINUS = 45,
- HID_KEY_EQUAL = 46,
- HID_KEY_LEFTBRACE = 47,
- HID_KEY_RIGHTBRACE = 48,
- HID_KEY_BACKSLASH = 49,
- HID_KEY_HASH = 50, /* Non-US # and ~ */
- HID_KEY_SEMICOLON = 51,
- HID_KEY_APOSTROPHE = 52,
- HID_KEY_GRAVE = 53,
- HID_KEY_COMMA = 54,
- HID_KEY_DOT = 55,
- HID_KEY_SLASH = 56,
- HID_KEY_CAPSLOCK = 57,
- HID_KEY_F1 = 58,
- HID_KEY_F2 = 59,
- HID_KEY_F3 = 60,
- HID_KEY_F4 = 61,
- HID_KEY_F5 = 62,
- HID_KEY_F6 = 63,
- HID_KEY_F7 = 64,
- HID_KEY_F8 = 65,
- HID_KEY_F9 = 66,
- HID_KEY_F10 = 67,
- HID_KEY_F11 = 68,
- HID_KEY_F12 = 69,
- HID_KEY_SYSRQ = 70, /* PRINTSCREEN */
- HID_KEY_SCROLLLOCK = 71,
- HID_KEY_PAUSE = 72,
- HID_KEY_INSERT = 73,
- HID_KEY_HOME = 74,
- HID_KEY_PAGEUP = 75,
- HID_KEY_DELETE = 76,
- HID_KEY_END = 77,
- HID_KEY_PAGEDOWN = 78,
- HID_KEY_RIGHT = 79,
- HID_KEY_LEFT = 80,
- HID_KEY_DOWN = 81,
- HID_KEY_UP = 82,
- HID_KEY_NUMLOCK = 83,
- HID_KEY_KPSLASH = 84, /* NUMPAD DIVIDE */
- HID_KEY_KPASTERISK = 85, /* NUMPAD MULTIPLY */
- HID_KEY_KPMINUS = 86,
- HID_KEY_KPPLUS = 87,
- HID_KEY_KPENTER = 88,
- HID_KEY_KP_1 = 89,
- HID_KEY_KP_2 = 90,
- HID_KEY_KP_3 = 91,
- HID_KEY_KP_4 = 92,
- HID_KEY_KP_5 = 93,
- HID_KEY_KP_6 = 94,
- HID_KEY_KP_7 = 95,
- HID_KEY_KP_8 = 96,
- HID_KEY_KP_9 = 97,
- HID_KEY_KP_0 = 98,
- };
- /**
- * @brief HID keyboard modifiers.
- */
- enum hid_kbd_modifier {
- HID_KBD_MODIFIER_NONE = 0x00,
- HID_KBD_MODIFIER_LEFT_CTRL = 0x01,
- HID_KBD_MODIFIER_LEFT_SHIFT = 0x02,
- HID_KBD_MODIFIER_LEFT_ALT = 0x04,
- HID_KBD_MODIFIER_LEFT_UI = 0x08,
- HID_KBD_MODIFIER_RIGHT_CTRL = 0x10,
- HID_KBD_MODIFIER_RIGHT_SHIFT = 0x20,
- HID_KBD_MODIFIER_RIGHT_ALT = 0x40,
- HID_KBD_MODIFIER_RIGHT_UI = 0x80,
- };
- /**
- * @brief HID keyboard LEDs.
- */
- enum hid_kbd_led {
- HID_KBD_LED_NUM_LOCK = 0x01,
- HID_KBD_LED_CAPS_LOCK = 0x02,
- HID_KBD_LED_SCROLL_LOCK = 0x04,
- HID_KBD_LED_COMPOSE = 0x08,
- HID_KBD_LED_KANA = 0x10,
- };
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* ZEPHYR_INCLUDE_USB_CLASS_HID_H_ */
|