.. _usb_device_hid: USB Human Interface Devices (HID) support ######################################### Since the USB HID specification is not only used by the USB subsystem, the USB HID API is split into two header files :zephyr_file:`include/zephyr/usb/class/hid.h` and :zephyr_file:`include/zephyr/usb/class/usb_hid.h`. The second includes a specific part for HID support in the USB device stack. HID Item helpers **************** HID item helper macros can be used to compose a HID Report Descriptor. The names correspond to those used in the USB HID Specification. Example of a HID Report Descriptor: .. code-block:: c static const uint8_t hid_report_desc[] = { HID_USAGE_PAGE(HID_USAGE_GEN_DESKTOP), HID_USAGE(HID_USAGE_GEN_DESKTOP_UNDEFINED), HID_COLLECTION(HID_COLLECTION_APPLICATION), HID_LOGICAL_MIN8(0), /* logical maximum 255 */ HID_LOGICAL_MAX16(0xFF, 0x00), HID_REPORT_ID(1), HID_REPORT_SIZE(8), HID_REPORT_COUNT(1), HID_USAGE(HID_USAGE_GEN_DESKTOP_UNDEFINED), /* HID_INPUT (Data, Variable, Absolute) */ HID_INPUT(0x02), HID_END_COLLECTION, }; HID items reference ******************* .. doxygengroup:: usb_hid_items HID types reference ******************* .. doxygengroup:: usb_hid_types 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. .. doxygengroup:: usb_hid_mk_report_desc HID Class Device API reference ****************************** USB HID devices like mouse, keyboard, or any other specific device use this API. .. doxygengroup:: usb_hid_device_api