Human Interface Devices (HID)
Common USB HID part that can be used outside of USB support, defined in header file include/zephyr/usb/class/hid.h.
HID types reference
- group usb_hid_definitions
- hid.h API - USB HID types and values - 
USB_HID_VERSION
- HID Specification release v1.11. 
 - 
USB_DESC_HID
- USB HID Class HID descriptor type. 
 - 
USB_DESC_HID_REPORT
- USB HID Class Report descriptor type. 
 - 
USB_DESC_HID_PHYSICAL
- USB HID Class physical descriptor type. 
 - 
USB_HID_GET_REPORT
- USB HID Class GetReport bRequest value. 
 - 
USB_HID_GET_IDLE
- USB HID Class GetIdle bRequest value. 
 - 
USB_HID_GET_PROTOCOL
- USB HID Class GetProtocol bRequest value. 
 - 
USB_HID_SET_REPORT
- USB HID Class SetReport bRequest value. 
 - 
USB_HID_SET_IDLE
- USB HID Class SetIdle bRequest value. 
 - 
USB_HID_SET_PROTOCOL
- USB HID Class SetProtocol bRequest value. 
 - 
HID_BOOT_IFACE_CODE_NONE
- USB HID Boot Interface Protocol (bInterfaceProtocol) Code None. 
 - 
HID_BOOT_IFACE_CODE_KEYBOARD
- USB HID Boot Interface Protocol (bInterfaceProtocol) Code Keyboard. 
 - 
HID_BOOT_IFACE_CODE_MOUSE
- USB HID Boot Interface Protocol (bInterfaceProtocol) Code Mouse. 
 - 
HID_PROTOCOL_BOOT
- USB HID Class Boot protocol code. 
 - 
HID_PROTOCOL_REPORT
- USB HID Class Report protocol code. 
 - 
HID_ITEM_TYPE_MAIN
- HID Main item type. 
 - 
HID_ITEM_TYPE_GLOBAL
- HID Global item type. 
 - 
HID_ITEM_TYPE_LOCAL
- HID Local item type. 
 - 
HID_ITEM_TAG_INPUT
- HID Input item tag. 
 - 
HID_ITEM_TAG_OUTPUT
- HID Output item tag. 
 - 
HID_ITEM_TAG_COLLECTION
- HID Collection item tag. 
 - 
HID_ITEM_TAG_FEATURE
- HID Feature item tag. 
 - 
HID_ITEM_TAG_COLLECTION_END
- HID End Collection item tag. 
 - 
HID_ITEM_TAG_USAGE_PAGE
- HID Usage Page item tag. 
 - 
HID_ITEM_TAG_LOGICAL_MIN
- HID Logical Minimum item tag. 
 - 
HID_ITEM_TAG_LOGICAL_MAX
- HID Logical Maximum item tag. 
 - 
HID_ITEM_TAG_PHYSICAL_MIN
- HID Physical Minimum item tag. 
 - 
HID_ITEM_TAG_PHYSICAL_MAX
- HID Physical Maximum item tag. 
 - 
HID_ITEM_TAG_UNIT_EXPONENT
- HID Unit Exponent item tag. 
 - 
HID_ITEM_TAG_UNIT
- HID Unit item tag. 
 - 
HID_ITEM_TAG_REPORT_SIZE
- HID Report Size item tag. 
 - 
HID_ITEM_TAG_REPORT_ID
- HID Report ID item tag. 
 - 
HID_ITEM_TAG_REPORT_COUNT
- HID Report count item tag. 
 - 
HID_ITEM_TAG_USAGE
- HID Usage item tag. 
 - 
HID_ITEM_TAG_USAGE_MIN
- HID Usage Minimum item tag. 
 - 
HID_ITEM_TAG_USAGE_MAX
- HID Usage Maximum item tag. 
 - 
HID_COLLECTION_PHYSICAL
- Physical collection type. 
 - 
HID_COLLECTION_APPLICATION
- Application collection type. 
 - 
HID_COLLECTION_LOGICAL
- Logical collection type. 
 - 
HID_COLLECTION_REPORT
- Report collection type. 
 - 
HID_COLLECTION_NAMED_ARRAY
- Named Array collection type. 
 - 
HID_COLLECTION_USAGE_SWITCH
- Usage Switch collection type. 
 - 
HID_COLLECTION_MODIFIER
- Modifier collection type. 
 - 
HID_USAGE_GEN_DESKTOP
- HID Generic Desktop Controls Usage page. 
 - 
HID_USAGE_GEN_KEYBOARD
- HID Keyboard Usage page. 
 - 
HID_USAGE_GEN_LEDS
- HID LEDs Usage page. 
 - 
HID_USAGE_GEN_BUTTON
- HID Button Usage page. 
 - 
HID_USAGE_GEN_DESKTOP_UNDEFINED
- HID Generic Desktop Undefined Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_POINTER
- HID Generic Desktop Pointer Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_MOUSE
- HID Generic Desktop Mouse Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_JOYSTICK
- HID Generic Desktop Joystick Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_GAMEPAD
- HID Generic Desktop Gamepad Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_KEYBOARD
- HID Generic Desktop Keyboard Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_KEYPAD
- HID Generic Desktop Keypad Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_X
- HID Generic Desktop X Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_Y
- HID Generic Desktop Y Usage ID. 
 - 
HID_USAGE_GEN_DESKTOP_WHEEL
- HID Generic Desktop Wheel Usage ID. 
 
- 
USB_HID_VERSION
HID items reference
- group usb_hid_items
- Defines - 
HID_ITEM(bTag, bType, bSize)
- Define HID short item. - Parameters:
- bTag – Item tag 
- bType – Item type 
- bSize – Item data size 
 
- Returns:
- HID Input item 
 
 - 
HID_INPUT(a)
- Define HID Input item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Input item data 
 
- Returns:
- HID Input item 
 
 - 
HID_OUTPUT(a)
- Define HID Output item with the data length of one byte. - For usage examples, see HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Output item data 
 
- Returns:
- HID Output item 
 
 - 
HID_FEATURE(a)
- Define HID Feature item with the data length of one byte. - Parameters:
- a – Feature item data 
 
- Returns:
- HID Feature item 
 
 - 
HID_COLLECTION(a)
- Define HID Collection item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Collection item data 
 
- Returns:
- HID Collection item 
 
 - 
HID_END_COLLECTION
- Define HID End Collection (non-data) item. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Returns:
- HID End Collection item 
 
 - 
HID_USAGE_PAGE(page)
- Define HID Usage Page item. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- page – Usage Page 
 
- Returns:
- HID Usage Page item 
 
 - 
HID_LOGICAL_MIN8(a)
- Define HID Logical Minimum item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Minimum value in logical units 
 
- Returns:
- HID Logical Minimum item 
 
 - 
HID_LOGICAL_MAX8(a)
- Define HID Logical Maximum item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Maximum value in logical units 
 
- Returns:
- HID Logical Maximum item 
 
 - 
HID_LOGICAL_MIN16(a, b)
- Define HID Logical Minimum item with the data length of two bytes. - Parameters:
- a – Minimum value lower byte 
- b – Minimum value higher byte 
 
- Returns:
- HID Logical Minimum item 
 
 - 
HID_LOGICAL_MAX16(a, b)
- Define HID Logical Maximum item with the data length of two bytes. - Parameters:
- a – Minimum value lower byte 
- b – Minimum value higher byte 
 
- Returns:
- HID Logical Maximum item 
 
 - 
HID_LOGICAL_MIN32(a, b, c, d)
- Define HID Logical Minimum item with the data length of four bytes. - Parameters:
- a – Minimum value lower byte 
- b – Minimum value low middle byte 
- c – Minimum value high middle byte 
- d – Minimum value higher byte 
 
- Returns:
- HID Logical Minimum item 
 
 - 
HID_LOGICAL_MAX32(a, b, c, d)
- Define HID Logical Maximum item with the data length of four bytes. - Parameters:
- a – Minimum value lower byte 
- b – Minimum value low middle byte 
- c – Minimum value high middle byte 
- d – Minimum value higher byte 
 
- Returns:
- HID Logical Maximum item 
 
 - 
HID_REPORT_SIZE(size)
- Define HID Report Size item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- size – Report field size in bits 
 
- Returns:
- HID Report Size item 
 
 - 
HID_REPORT_ID(id)
- Define HID Report ID item with the data length of one byte. - Parameters:
- id – Report ID 
 
- Returns:
- HID Report ID item 
 
 - 
HID_REPORT_COUNT(count)
- Define HID Report Count item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- count – Number of data fields included in the report 
 
- Returns:
- HID Report Count item 
 
 - 
HID_USAGE(idx)
- Define HID Usage Index item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- idx – Number of data fields included in the report 
 
- Returns:
- HID Usage Index item 
 
 - 
HID_USAGE_MIN8(a)
- Define HID Usage Minimum item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Starting Usage 
 
- Returns:
- HID Usage Minimum item 
 
 - 
HID_USAGE_MAX8(a)
- Define HID Usage Maximum item with the data length of one byte. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Ending Usage 
 
- Returns:
- HID Usage Maximum item 
 
 - 
HID_USAGE_MIN16(a, b)
- Define HID Usage Minimum item with the data length of two bytes. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Starting Usage lower byte 
- b – Starting Usage higher byte 
 
- Returns:
- HID Usage Minimum item 
 
 - 
HID_USAGE_MAX16(a, b)
- Define HID Usage Maximum item with the data length of two bytes. - For usage examples, see HID_MOUSE_REPORT_DESC(), HID_KEYBOARD_REPORT_DESC() - Parameters:
- a – Ending Usage lower byte 
- b – Ending Usage higher byte 
 
- Returns:
- HID Usage Maximum item 
 
 
- 
HID_ITEM(bTag, bType, bSize)
HID Mouse and Keyboard report descriptors
The pre-defined Mouse and Keyboard report descriptors can be used by a HID device implementation or simply as examples.
- group usb_hid_mk_report_desc
- Defines - 
HID_MOUSE_REPORT_DESC(bcnt)
- Simple HID mouse report descriptor for n button mouse. - Parameters:
- bcnt – Button count. Allowed values from 1 to 8. 
 
 
 - 
HID_KEYBOARD_REPORT_DESC()
- Simple HID keyboard report descriptor. 
 - Enums - 
enum hid_kbd_code
- HID keyboard button codes. - Values: - 
enumerator HID_KEY_A = 4
 - 
enumerator HID_KEY_B = 5
 - 
enumerator HID_KEY_C = 6
 - 
enumerator HID_KEY_D = 7
 - 
enumerator HID_KEY_E = 8
 - 
enumerator HID_KEY_F = 9
 - 
enumerator HID_KEY_G = 10
 - 
enumerator HID_KEY_H = 11
 - 
enumerator HID_KEY_I = 12
 - 
enumerator HID_KEY_J = 13
 - 
enumerator HID_KEY_K = 14
 - 
enumerator HID_KEY_L = 15
 - 
enumerator HID_KEY_M = 16
 - 
enumerator HID_KEY_N = 17
 - 
enumerator HID_KEY_O = 18
 - 
enumerator HID_KEY_P = 19
 - 
enumerator HID_KEY_Q = 20
 - 
enumerator HID_KEY_R = 21
 - 
enumerator HID_KEY_S = 22
 - 
enumerator HID_KEY_T = 23
 - 
enumerator HID_KEY_U = 24
 - 
enumerator HID_KEY_V = 25
 - 
enumerator HID_KEY_W = 26
 - 
enumerator HID_KEY_X = 27
 - 
enumerator HID_KEY_Y = 28
 - 
enumerator HID_KEY_Z = 29
 - 
enumerator HID_KEY_1 = 30
 - 
enumerator HID_KEY_2 = 31
 - 
enumerator HID_KEY_3 = 32
 - 
enumerator HID_KEY_4 = 33
 - 
enumerator HID_KEY_5 = 34
 - 
enumerator HID_KEY_6 = 35
 - 
enumerator HID_KEY_7 = 36
 - 
enumerator HID_KEY_8 = 37
 - 
enumerator HID_KEY_9 = 38
 - 
enumerator HID_KEY_0 = 39
 - 
enumerator HID_KEY_ENTER = 40
 - 
enumerator HID_KEY_ESC = 41
 - 
enumerator HID_KEY_BACKSPACE = 42
 - 
enumerator HID_KEY_TAB = 43
 - 
enumerator HID_KEY_SPACE = 44
 - 
enumerator HID_KEY_MINUS = 45
 - 
enumerator HID_KEY_EQUAL = 46
 - 
enumerator HID_KEY_LEFTBRACE = 47
 - 
enumerator HID_KEY_RIGHTBRACE = 48
 - 
enumerator HID_KEY_BACKSLASH = 49
 - 
enumerator HID_KEY_HASH = 50
 - 
enumerator HID_KEY_SEMICOLON = 51
 - 
enumerator HID_KEY_APOSTROPHE = 52
 - 
enumerator HID_KEY_GRAVE = 53
 - 
enumerator HID_KEY_COMMA = 54
 - 
enumerator HID_KEY_DOT = 55
 - 
enumerator HID_KEY_SLASH = 56
 - 
enumerator HID_KEY_CAPSLOCK = 57
 - 
enumerator HID_KEY_F1 = 58
 - 
enumerator HID_KEY_F2 = 59
 - 
enumerator HID_KEY_F3 = 60
 - 
enumerator HID_KEY_F4 = 61
 - 
enumerator HID_KEY_F5 = 62
 - 
enumerator HID_KEY_F6 = 63
 - 
enumerator HID_KEY_F7 = 64
 - 
enumerator HID_KEY_F8 = 65
 - 
enumerator HID_KEY_F9 = 66
 - 
enumerator HID_KEY_F10 = 67
 - 
enumerator HID_KEY_F11 = 68
 - 
enumerator HID_KEY_F12 = 69
 - 
enumerator HID_KEY_SYSRQ = 70
 - 
enumerator HID_KEY_SCROLLLOCK = 71
 - 
enumerator HID_KEY_PAUSE = 72
 - 
enumerator HID_KEY_INSERT = 73
 - 
enumerator HID_KEY_HOME = 74
 - 
enumerator HID_KEY_PAGEUP = 75
 - 
enumerator HID_KEY_DELETE = 76
 - 
enumerator HID_KEY_END = 77
 - 
enumerator HID_KEY_PAGEDOWN = 78
 - 
enumerator HID_KEY_RIGHT = 79
 - 
enumerator HID_KEY_LEFT = 80
 - 
enumerator HID_KEY_DOWN = 81
 - 
enumerator HID_KEY_UP = 82
 - 
enumerator HID_KEY_NUMLOCK = 83
 - 
enumerator HID_KEY_KPSLASH = 84
 - 
enumerator HID_KEY_KPASTERISK = 85
 - 
enumerator HID_KEY_KPMINUS = 86
 - 
enumerator HID_KEY_KPPLUS = 87
 - 
enumerator HID_KEY_KPENTER = 88
 - 
enumerator HID_KEY_KP_1 = 89
 - 
enumerator HID_KEY_KP_2 = 90
 - 
enumerator HID_KEY_KP_3 = 91
 - 
enumerator HID_KEY_KP_4 = 92
 - 
enumerator HID_KEY_KP_5 = 93
 - 
enumerator HID_KEY_KP_6 = 94
 - 
enumerator HID_KEY_KP_7 = 95
 - 
enumerator HID_KEY_KP_8 = 96
 - 
enumerator HID_KEY_KP_9 = 97
 - 
enumerator HID_KEY_KP_0 = 98
 
- 
enumerator HID_KEY_A = 4
 - 
enum hid_kbd_modifier
- HID keyboard modifiers. - Values: - 
enumerator HID_KBD_MODIFIER_NONE = 0x00
 - 
enumerator HID_KBD_MODIFIER_LEFT_CTRL = 0x01
 - 
enumerator HID_KBD_MODIFIER_LEFT_SHIFT = 0x02
 - 
enumerator HID_KBD_MODIFIER_LEFT_ALT = 0x04
 - 
enumerator HID_KBD_MODIFIER_LEFT_UI = 0x08
 - 
enumerator HID_KBD_MODIFIER_RIGHT_CTRL = 0x10
 - 
enumerator HID_KBD_MODIFIER_RIGHT_SHIFT = 0x20
 - 
enumerator HID_KBD_MODIFIER_RIGHT_ALT = 0x40
 - 
enumerator HID_KBD_MODIFIER_RIGHT_UI = 0x80
 
- 
enumerator HID_KBD_MODIFIER_NONE = 0x00
 
- 
HID_MOUSE_REPORT_DESC(bcnt)