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.

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 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
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
enum hid_kbd_led

HID keyboard LEDs.

Values:

enumerator HID_KBD_LED_NUM_LOCK = 0x01
enumerator HID_KBD_LED_CAPS_LOCK = 0x02
enumerator HID_KBD_LED_SCROLL_LOCK = 0x04
enumerator HID_KBD_LED_COMPOSE = 0x08
enumerator HID_KBD_LED_KANA = 0x10