c2000ware-core-sdk/libraries/communications/usb/f2807x/include/usbhid.h
2023-12-13 16:46:16 +05:30

696 lines
25 KiB
C

//#############################################################################
// FILE: usbhid.h
// TITLE: Definitions used by HID class devices and hosts
//#############################################################################
//!
//! Copyright: Copyright (C) 2023 Texas Instruments Incorporated -
//! All rights reserved not granted herein.
//! Limited License.
//!
//! Texas Instruments Incorporated grants a world-wide, royalty-free,
//! non-exclusive license under copyrights and patents it now or hereafter
//! owns or controls to make, have made, use, import, offer to sell and sell
//! ("Utilize") this software subject to the terms herein. With respect to the
//! foregoing patent license, such license is granted solely to the extent that
//! any such patent is necessary to Utilize the software alone. The patent
//! license shall not apply to any combinations which include this software,
//! other than combinations with devices manufactured by or for TI
//! ("TI Devices").
//! No hardware patent is licensed hereunder.
//!
//! Redistributions must preserve existing copyright notices and reproduce this
//! license (including the above copyright notice and the disclaimer and
//! (if applicable) source code license limitations below) in the documentation
//! and/or other materials provided with the distribution.
//!
//! Redistribution and use in binary form, without modification, are permitted
//! provided that the following conditions are met:
//!
//! * No reverse engineering, decompilation, or disassembly of this software is
//! permitted with respect to any software provided in binary form.
//! * Any redistribution and use are licensed by TI for use only
//! with TI Devices.
//! * Nothing shall obligate TI to provide you with source code for the
//! software licensed and provided to you in object code.
//!
//! If software source code is provided to you, modification and redistribution
//! of the source code are permitted provided that the following conditions
//! are met:
//!
//! * any redistribution and use of the source code, including any resulting
//! derivative works, are licensed by TI for use only with TI Devices.
//! * any redistribution and use of any object code compiled from the source
//! code and any resulting derivative works, are licensed by TI for use
//! only with TI Devices.
//!
//! Neither the name of Texas Instruments Incorporated nor the names of its
//! suppliers may be used to endorse or promote products derived from this
//! software without specific prior written permission.
//#############################################################################
#ifndef __USBHID_H__
#define __USBHID_H__
//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef __cplusplus
extern "C"
{
#endif
//*****************************************************************************
//
//! \addtogroup hid_device_class_api
//! @{
//
//*****************************************************************************
//*****************************************************************************
//
// HID Interface descriptor Subclasses.
//
//*****************************************************************************
#define USB_HID_SCLASS_NONE 0x00
#define USB_HID_SCLASS_BOOT 0x01
//*****************************************************************************
//
// USB Interface descriptor HID protocols.
//
//*****************************************************************************
#define USB_HID_PROTOCOL_NONE 0
#define USB_HID_PROTOCOL_KEYB 1
#define USB_HID_PROTOCOL_MOUSE 2
//*****************************************************************************
//
// HID Class descriptor types.
//
//*****************************************************************************
#define USB_HID_DTYPE_HID 0x21
#define USB_HID_DTYPE_REPORT 0x22
#define USB_HID_DTYPE_PHYSICAL 0x23
//*****************************************************************************
//
// HID USB requests.
//
//*****************************************************************************
#define USBREQ_GET_REPORT 0x01
#define USBREQ_GET_IDLE 0x02
#define USBREQ_GET_PROTOCOL 0x03
#define USBREQ_SET_REPORT 0x09
#define USBREQ_SET_IDLE 0x0a
#define USBREQ_SET_PROTOCOL 0x0b
//*****************************************************************************
//
// GET_REPORT or SET_REPORT Definitions.
//
//*****************************************************************************
#define USB_HID_REPORT_IN 0x01
#define USB_HID_REPORT_OUTPUT 0x02
#define USB_HID_REPORT_FEATURE 0x03
//*****************************************************************************
//
// GET_PROTOCOL or SET_PROTOCOL Definitions.
//
//*****************************************************************************
#define USB_HID_PROTOCOL_BOOT 0
#define USB_HID_PROTOCOL_REPORT 1
//*****************************************************************************
//
// Report Values used with the Report macros.
//
//*****************************************************************************
#define USB_HID_GENERIC_DESKTOP 0x01
#define USB_HID_BUTTONS 0x09
#define USB_HID_X 0x30
#define USB_HID_Y 0x31
#define USB_HID_POINTER 0x01
#define USB_HID_MOUSE 0x02
#define USB_HID_KEYBOARD 0x06
#define USB_HID_PHYSICAL 0x00
#define USB_HID_APPLICATION 0x01
#define USB_HID_LOGICAL 0x02
#define USB_HID_USAGE_POINTER 0x0109
#define USB_HID_USAGE_BUTTONS 0x0509
#define USB_HID_USAGE_LEDS 0x0508
#define USB_HID_USAGE_KEYCODES 0x0507
//*****************************************************************************
//
// HID mouse button definitions as used in the first byte of the output report
// used in the BIOS mouse protocol.
//
//*****************************************************************************
#define HID_MOUSE_BUTTON_1 0x01
#define HID_MOUSE_BUTTON_2 0x02
#define HID_MOUSE_BUTTON_3 0x04
//*****************************************************************************
//
// HID Keyboard LED definitions as used in the first byte of the output report
// used in the BIOS keyboard protocol.
//
//*****************************************************************************
#define HID_KEYB_NUM_LOCK 0x01
#define HID_KEYB_CAPS_LOCK 0x02
#define HID_KEYB_SCROLL_LOCK 0x04
#define HID_KEYB_COMPOSE 0x08
#define HID_KEYB_KANA 0x10
//*****************************************************************************
//
// HID Keyboard key modifiers as provided in the first byte of the input report
// used in the BIOS keyboard protocol.
//
//*****************************************************************************
#define HID_KEYB_LEFT_CTRL 0x01
#define HID_KEYB_LEFT_SHIFT 0x02
#define HID_KEYB_LEFT_ALT 0x04
#define HID_KEYB_LEFT_GUI 0x08
#define HID_KEYB_RIGHT_CTRL 0x10
#define HID_KEYB_RIGHT_SHIFT 0x20
#define HID_KEYB_RIGHT_ALT 0x40
#define HID_KEYB_RIGHT_GUI 0x80
//*****************************************************************************
//
// A subset of the HID keyboard usage IDs.
//
//*****************************************************************************
#define HID_KEYB_USAGE_RESERVED 0x00
#define HID_KEYB_USAGE_ROLLOVER 0x01
#define HID_KEYB_USAGE_A 0x04
#define HID_KEYB_USAGE_B 0x05
#define HID_KEYB_USAGE_C 0x06
#define HID_KEYB_USAGE_D 0x07
#define HID_KEYB_USAGE_E 0x08
#define HID_KEYB_USAGE_F 0x09
#define HID_KEYB_USAGE_G 0x0A
#define HID_KEYB_USAGE_H 0x0B
#define HID_KEYB_USAGE_I 0x0C
#define HID_KEYB_USAGE_J 0x0D
#define HID_KEYB_USAGE_K 0x0E
#define HID_KEYB_USAGE_L 0x0F
#define HID_KEYB_USAGE_M 0x10
#define HID_KEYB_USAGE_N 0x11
#define HID_KEYB_USAGE_O 0x12
#define HID_KEYB_USAGE_P 0x13
#define HID_KEYB_USAGE_Q 0x14
#define HID_KEYB_USAGE_R 0x15
#define HID_KEYB_USAGE_S 0x16
#define HID_KEYB_USAGE_T 0x17
#define HID_KEYB_USAGE_U 0x18
#define HID_KEYB_USAGE_V 0x19
#define HID_KEYB_USAGE_W 0x1A
#define HID_KEYB_USAGE_X 0x1B
#define HID_KEYB_USAGE_Y 0x1C
#define HID_KEYB_USAGE_Z 0x1D
#define HID_KEYB_USAGE_1 0x1E
#define HID_KEYB_USAGE_2 0x1F
#define HID_KEYB_USAGE_3 0x20
#define HID_KEYB_USAGE_4 0x21
#define HID_KEYB_USAGE_5 0x22
#define HID_KEYB_USAGE_6 0x23
#define HID_KEYB_USAGE_7 0x24
#define HID_KEYB_USAGE_8 0x25
#define HID_KEYB_USAGE_9 0x26
#define HID_KEYB_USAGE_0 0x27
#define HID_KEYB_USAGE_ENTER 0x28
#define HID_KEYB_USAGE_ESCAPE 0x29
#define HID_KEYB_USAGE_BACKSPACE \
0x2A
#define HID_KEYB_USAGE_TAB 0x2B
#define HID_KEYB_USAGE_SPACE 0x2C
#define HID_KEYB_USAGE_MINUS 0x2D
#define HID_KEYB_USAGE_EQUAL 0x2E
#define HID_KEYB_USAGE_LBRACKET 0x2F
#define HID_KEYB_USAGE_RBRACKET 0x30
#define HID_KEYB_USAGE_BSLASH 0x31
#define HID_KEYB_USAGE_SEMICOLON \
0x33
#define HID_KEYB_USAGE_FQUOTE 0x34
#define HID_KEYB_USAGE_BQUOTE 0x35
#define HID_KEYB_USAGE_COMMA 0x36
#define HID_KEYB_USAGE_PERIOD 0x37
#define HID_KEYB_USAGE_FSLASH 0x38
#define HID_KEYB_USAGE_CAPSLOCK 0x39
#define HID_KEYB_USAGE_F1 0x3A
#define HID_KEYB_USAGE_F2 0x3B
#define HID_KEYB_USAGE_F3 0x3C
#define HID_KEYB_USAGE_F4 0x3D
#define HID_KEYB_USAGE_F5 0x3E
#define HID_KEYB_USAGE_F6 0x3F
#define HID_KEYB_USAGE_F7 0x40
#define HID_KEYB_USAGE_F8 0x41
#define HID_KEYB_USAGE_F9 0x42
#define HID_KEYB_USAGE_F10 0x43
#define HID_KEYB_USAGE_F11 0x44
#define HID_KEYB_USAGE_F12 0x45
#define HID_KEYB_USAGE_SCROLLOCK \
0x47
#define HID_KEYB_USAGE_PAGE_UP 0x4B
#define HID_KEYB_USAGE_PAGE_DOWN \
0x4E
#define HID_KEYB_USAGE_RIGHT_ARROW \
0x4F
#define HID_KEYB_USAGE_LEFT_ARROW \
0x50
#define HID_KEYB_USAGE_DOWN_ARROW \
0x51
#define HID_KEYB_USAGE_UP_ARROW 0x52
#define HID_KEYB_USAGE_NUMLOCK 0x53
#define HID_KEYB_USAGE_KEYPAD_SLASH \
0x54
#define HID_KEYB_USAGE_KEYPAD_STAR \
0x55
#define HID_KEYB_USAGE_KEYPAD_MINUS \
0x56
#define HID_KEYB_USAGE_KEYPAD_PLUS \
0x57
#define HID_KEYB_USAGE_KEPAD_ENTER \
0x58
#define HID_KEYB_USAGE_KEYPAD_1 0x59
#define HID_KEYB_USAGE_KEYPAD_2 0x5A
#define HID_KEYB_USAGE_KEYPAD_3 0x5B
#define HID_KEYB_USAGE_KEYPAD_4 0x5C
#define HID_KEYB_USAGE_KEYPAD_5 0x5D
#define HID_KEYB_USAGE_KEYPAD_6 0x5E
#define HID_KEYB_USAGE_KEYPAD_7 0x5F
#define HID_KEYB_USAGE_KEYPAD_8 0x60
#define HID_KEYB_USAGE_KEYPAD_9 0x61
#define HID_KEYB_USAGE_KEYPAD_0 0x62
#define HID_KEYB_USAGE_KEPAD_PERIOD \
0x63
//*****************************************************************************
//
// HID descriptor country codes (most of these are described as "countries" in
// the HID specification even though they are really languages).
//
//*****************************************************************************
#define USB_HID_COUNTRY_NONE 0x00
#define USB_HID_COUNTRY_ARABIC 0x01
#define USB_HID_COUNTRY_BELGIAN 0x02
#define USB_HID_COUNTRY_CANADA_BI \
0x03
#define USB_HID_COUNTRY_CANADA_FR \
0x04
#define USB_HID_COUNTRY_CZECH_REPUBLIC \
0x05
#define USB_HID_COUNTRY_DANISH 0x06
#define USB_HID_COUNTRY_FINNISH 0x07
#define USB_HID_COUNTRY_FRENCH 0x08
#define USB_HID_COUNTRY_GERMAN 0x09
#define USB_HID_COUNTRY_GREEK 0x0A
#define USB_HID_COUNTRY_HEBREW 0x0B
#define USB_HID_COUNTRY_HUNGARY 0x0C
#define USB_HID_COUNTRY_INTERNATIONAL_ISO \
0x0D
#define USB_HID_COUNTRY_ITALIAN 0x0E
#define USB_HID_COUNTRY_JAPAN_KATAKANA \
0x0F
#define USB_HID_COUNTRY_KOREAN 0x10
#define USB_HID_COUNTRY_LATIN_AMERICAN \
0x11
#define USB_HID_COUNTRY_NETHERLANDS \
0x12
#define USB_HID_COUNTRY_NORWEGIAN \
0x13
#define USB_HID_COUNTRY_PERSIAN 0x14
#define USB_HID_COUNTRY_POLAND 0x15
#define USB_HID_COUNTRY_PORTUGUESE \
0x16
#define USB_HID_COUNTRY_RUSSIA 0x17
#define USB_HID_COUNTRY_SLOVAKIA \
0x18
#define USB_HID_COUNTRY_SPANISH 0x19
#define USB_HID_COUNTRY_SWEDISH 0x1A
#define USB_HID_COUNTRY_SWISS_FRENCH \
0x1B
#define USB_HID_COUNTRY_SWISS_GERMAN \
0x1C
#define USB_HID_COUNTRY_SWITZERLAND \
0x1D
#define USB_HID_COUNTRY_TAIWAN 0x1E
#define USB_HID_COUNTRY_TURKISH_Q \
0x1F
#define USB_HID_COUNTRY_UK 0x20
#define USB_HID_COUNTRY_US 0x21
#define USB_HID_COUNTRY_YUGOSLAVIA \
0x22
#define USB_HID_COUNTRY_TURKISH_F \
0x23
//*****************************************************************************
//
// Data flags used in Input item tags within report descriptors.
//
//*****************************************************************************
#define USB_HID_INPUT_DATA 0x0000
#define USB_HID_INPUT_CONSTANT 0x0001
#define USB_HID_INPUT_ARRAY 0x0000
#define USB_HID_INPUT_VARIABLE 0x0002
#define USB_HID_INPUT_ABS 0x0000
#define USB_HID_INPUT_RELATIVE 0x0004
#define USB_HID_INPUT_NOWRAP 0x0000
#define USB_HID_INPUT_WRAP 0x0008
#define USB_HID_INPUT_LINEAR 0x0000
#define USB_HID_INPUT_NONLINEAR 0x0010
#define USB_HID_INPUT_PREFER 0x0000
#define USB_HID_INPUT_NONPREFER 0x0020
#define USB_HID_INPUT_NONULL 0x0000
#define USB_HID_INPUT_NULL 0x0040
#define USB_HID_INPUT_BITF 0x0100
#define USB_HID_INPUT_BYTES 0x0000
//*****************************************************************************
//
// Data flags used in Feature item tags within report descriptors.
//
//*****************************************************************************
#define USB_HID_FEATURE_DATA 0x0000
#define USB_HID_FEATURE_CONSTANT \
0x0001
#define USB_HID_FEATURE_ARRAY 0x0000
#define USB_HID_FEATURE_VARIABLE \
0x0002
#define USB_HID_FEATURE_ABS 0x0000
#define USB_HID_FEATURE_RELATIVE \
0x0004
#define USB_HID_FEATURE_NOWRAP 0x0000
#define USB_HID_FEATURE_WRAP 0x0008
#define USB_HID_FEATURE_LINEAR 0x0000
#define USB_HID_FEATURE_NONLINEAR \
0x0010
#define USB_HID_FEATURE_PREFER 0x0000
#define USB_HID_FEATURE_NONPREFER \
0x0020
#define USB_HID_FEATURE_NONULL 0x0000
#define USB_HID_FEATURE_NULL 0x0040
#define USB_HID_FEATURE_BITF 0x0100
#define USB_HID_FEATURE_BYTES 0x0000
//*****************************************************************************
//
// Data flags used in Output item tags within report descriptors.
//
//*****************************************************************************
#define USB_HID_OUTPUT_DATA 0x0000
#define USB_HID_OUTPUT_CONSTANT 0x0001
#define USB_HID_OUTPUT_ARRAY 0x0000
#define USB_HID_OUTPUT_VARIABLE 0x0002
#define USB_HID_OUTPUT_ABS 0x0000
#define USB_HID_OUTPUT_RELATIVE 0x0004
#define USB_HID_OUTPUT_NOWRAP 0x0000
#define USB_HID_OUTPUT_WRAP 0x0008
#define USB_HID_OUTPUT_LINEAR 0x0000
#define USB_HID_OUTPUT_NONLINEAR \
0x0010
#define USB_HID_OUTPUT_PREFER 0x0000
#define USB_HID_OUTPUT_NONPREFER \
0x0020
#define USB_HID_OUTPUT_NONULL 0x0000
#define USB_HID_OUTPUT_NULL 0x0040
#define USB_HID_OUTPUT_BITF 0x0100
#define USB_HID_OUTPUT_BYTES 0x0000
//*****************************************************************************
//
// Physical descriptor bias values.
//
//*****************************************************************************
#define USB_HID_BIAS_NOT_APPLICABLE \
0x00
#define USB_HID_BIAS_RIGHT_HAND 0x01
#define USB_HID_BIAS_LEFT_HAND 0x02
#define USB_HID_BIAS_BOTH_HANDS 0x03
#define USB_HID_BIAS_EITHER_HAND \
0x04
//*****************************************************************************
//
// Physical descriptor designator values.
//
//*****************************************************************************
#define USB_HID_DESIGNATOR_NONE 0x00
#define USB_HID_DESIGNATOR_HAND 0x01
#define USB_HID_DESIGNATOR_EYEBALL \
0x02
#define USB_HID_DESIGNATOR_EYEBROW \
0x03
#define USB_HID_DESIGNATOR_EYELID \
0x04
#define USB_HID_DESIGNATOR_EAR 0x05
#define USB_HID_DESIGNATOR_NOSE 0x06
#define USB_HID_DESIGNATOR_MOUTH \
0x07
#define USB_HID_DESIGNATOR_UPPER_LIP \
0x08
#define USB_HID_DESIGNATOR_LOWER_LIP \
0x09
#define USB_HID_DESIGNATOR_JAW 0x0A
#define USB_HID_DESIGNATOR_NECK 0x0B
#define USB_HID_DESIGNATOR_UPPER_ARM \
0x0C
#define USB_HID_DESIGNATOR_ELBOW \
0x0D
#define USB_HID_DESIGNATOR_FOREARM \
0x0E
#define USB_HID_DESIGNATOR_WRIST \
0x0F
#define USB_HID_DESIGNATOR_PALM 0x10
#define USB_HID_DESIGNATOR_THUMB \
0x11
#define USB_HID_DESIGNATOR_INDEX_FINGER \
0x12
#define USB_HID_DESIGNATOR_MIDDLE_FINGER \
0x13
#define USB_HID_DESIGNATOR_RING_FINGER \
0x14
#define USB_HID_DESIGNATOR_LITTLE_FINGER \
0x15
#define USB_HID_DESIGNATOR_HEAD 0x16
#define USB_HID_DESIGNATOR_SHOULDER \
0x17
#define USB_HID_DESIGNATOR_HIP 0x18
#define USB_HID_DESIGNATOR_WAIST \
0x19
#define USB_HID_DESIGNATOR_THIGH \
0x1A
#define USB_HID_DESIGNATOR_KNEE 0x1B
#define USB_HID_DESIGNATOR_CALF 0x1C
#define USB_HID_DESIGNATOR_ANKLE \
0x1D
#define USB_HID_DESIGNATOR_FOOT 0x1E
#define USB_HID_DESIGNATOR_HEEL 0x1F
#define USB_HID_DESIGNATOR_BALL_OF_FOOT \
0x20
#define USB_HID_DESIGNATOR_BIG_TOE \
0x21
#define USB_HID_DESIGNATOR_SECOND_TOE \
0x22
#define USB_HID_DESIGNATOR_THIRD_TOE \
0x23
#define USB_HID_DESIGNATOR_FOURTH_TOE \
0x24
#define USB_HID_DESIGNATOR_LITTLE_TOE \
0x25
#define USB_HID_DESIGNATOR_BROW 0x26
#define USB_HID_DESIGNATOR_CHEEK \
0x27
//*****************************************************************************
//
// Physical descriptor qualifier values.
//
//*****************************************************************************
#define USB_HID_QUALIFIER_NOT_APPLICABLE \
(0x00 << 5)
#define USB_HID_QUALIFIER_RIGHT (0x01 << 5)
#define USB_HID_QUALIFIER_LEFT (0x02 << 5)
#define USB_HID_QUALIFIER_BOTH (0x03 << 5)
#define USB_HID_QUALIFIER_EITHER \
(0x04 << 5)
#define USB_HID_QUALIFIER_CENTER \
(0x05 << 5)
//*****************************************************************************
//
// This is the maximum value for a usage code.
//
//*****************************************************************************
#define USBH_HID_MAX_USAGE 256
#define USBH_HID_CAPS_ARRAY_SZ (USBH_HID_MAX_USAGE/sizeof(uint32_t))
//*****************************************************************************
//
// All structures defined in this section of the header require byte packing of
// fields. This is usually accomplished using the PACKED macro but, for IAR
// Embedded Workbench, this requires a pragma.
//
//*****************************************************************************
#ifdef __ICCARM__
#pragma pack(1)
#endif
//*****************************************************************************
//
//! The class descriptor information structure is used to announce the presence
//! of HID-specific class descriptors within the HID descriptor.
//
//*****************************************************************************
typedef struct
{
//
//! The type of HID class descriptor. This will be \b USB_HID_DTYPE_REPORT
//! or \b USB_HID_DTYPE_PHYSICAL.
//
uint8_t bDescriptorType;
//
//! The total length of the HID class descriptor.
//
#ifdef __TMS320C28XX__
usb16_t wDescriptorLength;
#else
uint16_t wDescriptorLength;
#endif
}
PACKED tHIDClassDescriptorInfo;
//*****************************************************************************
//
//! The HID descriptor is inserted following the interface descriptor and
//! before the endpoint descriptors for a HID class device.
//
//*****************************************************************************
typedef struct
{
//
//! The length of this descriptor in bytes.
//
uint8_t bLength;
//
//! The type of the descriptor. For a HID descriptor, this will be
//! \b USB_HID_DTYPE_HID.
//
uint8_t bDescriptorType;
//
//! A BCD value identifying the HID Class specification release supported
//! by the device. For version 1.11, for example, this value would be
//! 0x0111.
//
#ifdef __TMS320C28XX__
usb16_t bcdHID;
#else
uint16_t bcdHID;
#endif
//
//! The country code for which this hardware is localized or 0 if no
//! localization has been performed. Valid country (or language) codes are
//! in labels of the form \b USB_HID_COUNTRY_xxx.
uint8_t bCountryCode;
//
//! The number of class-specific descriptors that exist for this device.
//! This indicates the number of class descriptor information structures
//! that are appended to this structure and must be at least 1 (since all
//! HID devices must publish at least 1 report descriptor).
//
uint8_t bNumDescriptors;
//
//! A table announcing each of the class-specific descriptors that this
//! device publishes. The actual number of entries in the array is given
//! by the bNumDescriptors field.
//
tHIDClassDescriptorInfo sClassDescriptor[1];
}
PACKED tHIDDescriptor;
//*****************************************************************************
//
// Return to default packing when using the IAR Embedded Workbench compiler.
//
//*****************************************************************************
#ifdef __ICCARM__
#pragma pack()
#endif
//*****************************************************************************
//
//! This structure defines the mapping of USB usage identifiers to printable
//! characters. The structure has three members that hold this information.
//! The ui8BytesPerChar, indicates the number of bytes per character in
//! the table. The pui32CapsLock array holds a packed bit array of usage
//! identifiers that can be modified by the Caps Lock key. The pCharMapping
//! array is treated as a double indexed array with two "columns". In the case
//! of a single byte character it is treated as pairs of 8 bit values for
//! unshifted and shifted values. In the case of a double byte characters it
//! is treated as pairs of 16 bit values.
//
//*****************************************************************************
typedef struct
{
//
//! Number of bytes per character in the pCharMapping table of this
//! structure.
//
uint8_t ui8BytesPerChar;
//
//! This is a packed bitmasked structure with a one bit flags that
//! indicates if the corresponding Usage ID is affected by the Caps Lock
//! key.
//
uint32_t pui32CapsLock[USBH_HID_CAPS_ARRAY_SZ];
//
//! This is the indexed table of Usage ID to character value. It must be
//! at least ui8BytesPerChar * 2 * \b USBH_HID_MAX_USAGE bytes in size as
//! it is treated as a double indexed array.
//
void *pvCharMapping;
}
tHIDKeyboardUsageTable;
//*****************************************************************************
//
// The US Keyboard mapping used by USB keyboard usage ID to character mapping.
//
//*****************************************************************************
extern const tHIDKeyboardUsageTable g_sUSKeyboardMap;
//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************
//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef __cplusplus
}
#endif
#endif // __USBHID_H__