blob: db8ff47c458328c7076f6b2bf436ef0ef87f9b2a [file] [log] [blame]
/*
* 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
/** Logical collection type */
#define HID_COLLECTION_LOGICAL 0x02
/** Report collection type */
#define HID_COLLECTION_REPORT 0x03
/** Named Array collection type */
#define HID_COLLECTION_NAMED_ARRAY 0x04
/** Usage Switch collection type */
#define HID_COLLECTION_USAGE_SWITCH 0x05
/** Modifier collection type */
#define HID_COLLECTION_MODIFIER 0x06
/* 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_FEATURE, 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_ */