Fix typo setting HID feature item to output item. Signed-off-by: Sven Åkersten <sven.akersten@gmail.com>
638 lines
17 KiB
C
638 lines
17 KiB
C
/*
|
|
* 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_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_ */
|