LUFA Library  151115
HIDClassCommon.h File Reference

Common definitions and declarations for the library USB HID Class driver. More...

Data Structures

struct  USB_HID_Descriptor_HID_t
 HID class-specific HID Descriptor (LUFA naming conventions). More...
 
struct  USB_HID_StdDescriptor_HID_t
 HID class-specific HID Descriptor (USB-IF naming conventions). More...
 
struct  USB_KeyboardReport_Data_t
 Standard HID Boot Protocol Keyboard Report. More...
 
struct  USB_MouseReport_Data_t
 Standard HID Boot Protocol Mouse Report. More...
 

Macros

Keyboard Standard Report Modifier Masks
#define HID_KEYBOARD_MODIFIER_LEFTCTRL   (1 << 0)
 
#define HID_KEYBOARD_MODIFIER_LEFTSHIFT   (1 << 1)
 
#define HID_KEYBOARD_MODIFIER_LEFTALT   (1 << 2)
 
#define HID_KEYBOARD_MODIFIER_LEFTGUI   (1 << 3)
 
#define HID_KEYBOARD_MODIFIER_RIGHTCTRL   (1 << 4)
 
#define HID_KEYBOARD_MODIFIER_RIGHTSHIFT   (1 << 5)
 
#define HID_KEYBOARD_MODIFIER_RIGHTALT   (1 << 6)
 
#define HID_KEYBOARD_MODIFIER_RIGHTGUI   (1 << 7)
 
Keyboard Standard Report LED Masks
#define HID_KEYBOARD_LED_NUMLOCK   (1 << 0)
 
#define HID_KEYBOARD_LED_CAPSLOCK   (1 << 1)
 
#define HID_KEYBOARD_LED_SCROLLLOCK   (1 << 2)
 
#define HID_KEYBOARD_LED_COMPOSE   (1 << 3)
 
#define HID_KEYBOARD_LED_KANA   (1 << 4)
 
Keyboard Standard Report Key Scan-codes
#define HID_KEYBOARD_SC_ERROR_ROLLOVER   0x01
 
#define HID_KEYBOARD_SC_POST_FAIL   0x02
 
#define HID_KEYBOARD_SC_ERROR_UNDEFINED   0x03
 
#define HID_KEYBOARD_SC_A   0x04
 
#define HID_KEYBOARD_SC_B   0x05
 
#define HID_KEYBOARD_SC_C   0x06
 
#define HID_KEYBOARD_SC_D   0x07
 
#define HID_KEYBOARD_SC_E   0x08
 
#define HID_KEYBOARD_SC_F   0x09
 
#define HID_KEYBOARD_SC_G   0x0A
 
#define HID_KEYBOARD_SC_H   0x0B
 
#define HID_KEYBOARD_SC_I   0x0C
 
#define HID_KEYBOARD_SC_J   0x0D
 
#define HID_KEYBOARD_SC_K   0x0E
 
#define HID_KEYBOARD_SC_L   0x0F
 
#define HID_KEYBOARD_SC_M   0x10
 
#define HID_KEYBOARD_SC_N   0x11
 
#define HID_KEYBOARD_SC_O   0x12
 
#define HID_KEYBOARD_SC_P   0x13
 
#define HID_KEYBOARD_SC_Q   0x14
 
#define HID_KEYBOARD_SC_R   0x15
 
#define HID_KEYBOARD_SC_S   0x16
 
#define HID_KEYBOARD_SC_T   0x17
 
#define HID_KEYBOARD_SC_U   0x18
 
#define HID_KEYBOARD_SC_V   0x19
 
#define HID_KEYBOARD_SC_W   0x1A
 
#define HID_KEYBOARD_SC_X   0x1B
 
#define HID_KEYBOARD_SC_Y   0x1C
 
#define HID_KEYBOARD_SC_Z   0x1D
 
#define HID_KEYBOARD_SC_1_AND_EXCLAMATION   0x1E
 
#define HID_KEYBOARD_SC_2_AND_AT   0x1F
 
#define HID_KEYBOARD_SC_3_AND_HASHMARK   0x20
 
#define HID_KEYBOARD_SC_4_AND_DOLLAR   0x21
 
#define HID_KEYBOARD_SC_5_AND_PERCENTAGE   0x22
 
#define HID_KEYBOARD_SC_6_AND_CARET   0x23
 
#define HID_KEYBOARD_SC_7_AND_AMPERSAND   0x24
 
#define HID_KEYBOARD_SC_8_AND_ASTERISK   0x25
 
#define HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS   0x26
 
#define HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS   0x27
 
#define HID_KEYBOARD_SC_ENTER   0x28
 
#define HID_KEYBOARD_SC_ESCAPE   0x29
 
#define HID_KEYBOARD_SC_BACKSPACE   0x2A
 
#define HID_KEYBOARD_SC_TAB   0x2B
 
#define HID_KEYBOARD_SC_SPACE   0x2C
 
#define HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE   0x2D
 
#define HID_KEYBOARD_SC_EQUAL_AND_PLUS   0x2E
 
#define HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE   0x2F
 
#define HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE   0x30
 
#define HID_KEYBOARD_SC_BACKSLASH_AND_PIPE   0x31
 
#define HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE   0x32
 
#define HID_KEYBOARD_SC_SEMICOLON_AND_COLON   0x33
 
#define HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE   0x34
 
#define HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE   0x35
 
#define HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN   0x36
 
#define HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN   0x37
 
#define HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK   0x38
 
#define HID_KEYBOARD_SC_CAPS_LOCK   0x39
 
#define HID_KEYBOARD_SC_F1   0x3A
 
#define HID_KEYBOARD_SC_F2   0x3B
 
#define HID_KEYBOARD_SC_F3   0x3C
 
#define HID_KEYBOARD_SC_F4   0x3D
 
#define HID_KEYBOARD_SC_F5   0x3E
 
#define HID_KEYBOARD_SC_F6   0x3F
 
#define HID_KEYBOARD_SC_F7   0x40
 
#define HID_KEYBOARD_SC_F8   0x41
 
#define HID_KEYBOARD_SC_F9   0x42
 
#define HID_KEYBOARD_SC_F10   0x43
 
#define HID_KEYBOARD_SC_F11   0x44
 
#define HID_KEYBOARD_SC_F12   0x45
 
#define HID_KEYBOARD_SC_PRINT_SCREEN   0x46
 
#define HID_KEYBOARD_SC_SCROLL_LOCK   0x47
 
#define HID_KEYBOARD_SC_PAUSE   0x48
 
#define HID_KEYBOARD_SC_INSERT   0x49
 
#define HID_KEYBOARD_SC_HOME   0x4A
 
#define HID_KEYBOARD_SC_PAGE_UP   0x4B
 
#define HID_KEYBOARD_SC_DELETE   0x4C
 
#define HID_KEYBOARD_SC_END   0x4D
 
#define HID_KEYBOARD_SC_PAGE_DOWN   0x4E
 
#define HID_KEYBOARD_SC_RIGHT_ARROW   0x4F
 
#define HID_KEYBOARD_SC_LEFT_ARROW   0x50
 
#define HID_KEYBOARD_SC_DOWN_ARROW   0x51
 
#define HID_KEYBOARD_SC_UP_ARROW   0x52
 
#define HID_KEYBOARD_SC_NUM_LOCK   0x53
 
#define HID_KEYBOARD_SC_KEYPAD_SLASH   0x54
 
#define HID_KEYBOARD_SC_KEYPAD_ASTERISK   0x55
 
#define HID_KEYBOARD_SC_KEYPAD_MINUS   0x56
 
#define HID_KEYBOARD_SC_KEYPAD_PLUS   0x57
 
#define HID_KEYBOARD_SC_KEYPAD_ENTER   0x58
 
#define HID_KEYBOARD_SC_KEYPAD_1_AND_END   0x59
 
#define HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW   0x5A
 
#define HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN   0x5B
 
#define HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW   0x5C
 
#define HID_KEYBOARD_SC_KEYPAD_5   0x5D
 
#define HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW   0x5E
 
#define HID_KEYBOARD_SC_KEYPAD_7_AND_HOME   0x5F
 
#define HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW   0x60
 
#define HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP   0x61
 
#define HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT   0x62
 
#define HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE   0x63
 
#define HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE   0x64
 
#define HID_KEYBOARD_SC_APPLICATION   0x65
 
#define HID_KEYBOARD_SC_POWER   0x66
 
#define HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN   0x67
 
#define HID_KEYBOARD_SC_F13   0x68
 
#define HID_KEYBOARD_SC_F14   0x69
 
#define HID_KEYBOARD_SC_F15   0x6A
 
#define HID_KEYBOARD_SC_F16   0x6B
 
#define HID_KEYBOARD_SC_F17   0x6C
 
#define HID_KEYBOARD_SC_F18   0x6D
 
#define HID_KEYBOARD_SC_F19   0x6E
 
#define HID_KEYBOARD_SC_F20   0x6F
 
#define HID_KEYBOARD_SC_F21   0x70
 
#define HID_KEYBOARD_SC_F22   0x71
 
#define HID_KEYBOARD_SC_F23   0x72
 
#define HID_KEYBOARD_SC_F24   0x73
 
#define HID_KEYBOARD_SC_EXECUTE   0x74
 
#define HID_KEYBOARD_SC_HELP   0x75
 
#define HID_KEYBOARD_SC_MENU   0x76
 
#define HID_KEYBOARD_SC_SELECT   0x77
 
#define HID_KEYBOARD_SC_STOP   0x78
 
#define HID_KEYBOARD_SC_AGAIN   0x79
 
#define HID_KEYBOARD_SC_UNDO   0x7A
 
#define HID_KEYBOARD_SC_CUT   0x7B
 
#define HID_KEYBOARD_SC_COPY   0x7C
 
#define HID_KEYBOARD_SC_PASTE   0x7D
 
#define HID_KEYBOARD_SC_FIND   0x7E
 
#define HID_KEYBOARD_SC_MUTE   0x7F
 
#define HID_KEYBOARD_SC_VOLUME_UP   0x80
 
#define HID_KEYBOARD_SC_VOLUME_DOWN   0x81
 
#define HID_KEYBOARD_SC_LOCKING_CAPS_LOCK   0x82
 
#define HID_KEYBOARD_SC_LOCKING_NUM_LOCK   0x83
 
#define HID_KEYBOARD_SC_LOCKING_SCROLL_LOCK   0x84
 
#define HID_KEYBOARD_SC_KEYPAD_COMMA   0x85
 
#define HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN_AS400   0x86
 
#define HID_KEYBOARD_SC_INTERNATIONAL1   0x87
 
#define HID_KEYBOARD_SC_INTERNATIONAL2   0x88
 
#define HID_KEYBOARD_SC_INTERNATIONAL3   0x89
 
#define HID_KEYBOARD_SC_INTERNATIONAL4   0x8A
 
#define HID_KEYBOARD_SC_INTERNATIONAL5   0x8B
 
#define HID_KEYBOARD_SC_INTERNATIONAL6   0x8C
 
#define HID_KEYBOARD_SC_INTERNATIONAL7   0x8D
 
#define HID_KEYBOARD_SC_INTERNATIONAL8   0x8E
 
#define HID_KEYBOARD_SC_INTERNATIONAL9   0x8F
 
#define HID_KEYBOARD_SC_LANG1   0x90
 
#define HID_KEYBOARD_SC_LANG2   0x91
 
#define HID_KEYBOARD_SC_LANG3   0x92
 
#define HID_KEYBOARD_SC_LANG4   0x93
 
#define HID_KEYBOARD_SC_LANG5   0x94
 
#define HID_KEYBOARD_SC_LANG6   0x95
 
#define HID_KEYBOARD_SC_LANG7   0x96
 
#define HID_KEYBOARD_SC_LANG8   0x97
 
#define HID_KEYBOARD_SC_LANG9   0x98
 
#define HID_KEYBOARD_SC_ALTERNATE_ERASE   0x99
 
#define HID_KEYBOARD_SC_SYSREQ   0x9A
 
#define HID_KEYBOARD_SC_CANCEL   0x9B
 
#define HID_KEYBOARD_SC_CLEAR   0x9C
 
#define HID_KEYBOARD_SC_PRIOR   0x9D
 
#define HID_KEYBOARD_SC_RETURN   0x9E
 
#define HID_KEYBOARD_SC_SEPARATOR   0x9F
 
#define HID_KEYBOARD_SC_OUT   0xA0
 
#define HID_KEYBOARD_SC_OPER   0xA1
 
#define HID_KEYBOARD_SC_CLEAR_AND_AGAIN   0xA2
 
#define HID_KEYBOARD_SC_CRSEL_AND_PROPS   0xA3
 
#define HID_KEYBOARD_SC_EXSEL   0xA4
 
#define HID_KEYBOARD_SC_KEYPAD_00   0xB0
 
#define HID_KEYBOARD_SC_KEYPAD_000   0xB1
 
#define HID_KEYBOARD_SC_THOUSANDS_SEPARATOR   0xB2
 
#define HID_KEYBOARD_SC_DECIMAL_SEPARATOR   0xB3
 
#define HID_KEYBOARD_SC_CURRENCY_UNIT   0xB4
 
#define HID_KEYBOARD_SC_CURRENCY_SUB_UNIT   0xB5
 
#define HID_KEYBOARD_SC_KEYPAD_OPENING_PARENTHESIS   0xB6
 
#define HID_KEYBOARD_SC_KEYPAD_CLOSING_PARENTHESIS   0xB7
 
#define HID_KEYBOARD_SC_KEYPAD_OPENING_BRACE   0xB8
 
#define HID_KEYBOARD_SC_KEYPAD_CLOSING_BRACE   0xB9
 
#define HID_KEYBOARD_SC_KEYPAD_TAB   0xBA
 
#define HID_KEYBOARD_SC_KEYPAD_BACKSPACE   0xBB
 
#define HID_KEYBOARD_SC_KEYPAD_A   0xBC
 
#define HID_KEYBOARD_SC_KEYPAD_B   0xBD
 
#define HID_KEYBOARD_SC_KEYPAD_C   0xBE
 
#define HID_KEYBOARD_SC_KEYPAD_D   0xBF
 
#define HID_KEYBOARD_SC_KEYPAD_E   0xC0
 
#define HID_KEYBOARD_SC_KEYPAD_F   0xC1
 
#define HID_KEYBOARD_SC_KEYPAD_XOR   0xC2
 
#define HID_KEYBOARD_SC_KEYPAD_CARET   0xC3
 
#define HID_KEYBOARD_SC_KEYPAD_PERCENTAGE   0xC4
 
#define HID_KEYBOARD_SC_KEYPAD_LESS_THAN_SIGN   0xC5
 
#define HID_KEYBOARD_SC_KEYPAD_GREATER_THAN_SIGN   0xC6
 
#define HID_KEYBOARD_SC_KEYPAD_AMP   0xC7
 
#define HID_KEYBOARD_SC_KEYPAD_AMP_AMP   0xC8
 
#define HID_KEYBOARD_SC_KEYPAD_PIPE   0xC9
 
#define HID_KEYBOARD_SC_KEYPAD_PIPE_PIPE   0xCA
 
#define HID_KEYBOARD_SC_KEYPAD_COLON   0xCB
 
#define HID_KEYBOARD_SC_KEYPAD_HASHMARK   0xCC
 
#define HID_KEYBOARD_SC_KEYPAD_SPACE   0xCD
 
#define HID_KEYBOARD_SC_KEYPAD_AT   0xCE
 
#define HID_KEYBOARD_SC_KEYPAD_EXCLAMATION_SIGN   0xCF
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_STORE   0xD0
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_RECALL   0xD1
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_CLEAR   0xD2
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_ADD   0xD3
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_SUBTRACT   0xD4
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_MULTIPLY   0xD5
 
#define HID_KEYBOARD_SC_KEYPAD_MEMORY_DIVIDE   0xD6
 
#define HID_KEYBOARD_SC_KEYPAD_PLUS_AND_MINUS   0xD7
 
#define HID_KEYBOARD_SC_KEYPAD_CLEAR   0xD8
 
#define HID_KEYBOARD_SC_KEYPAD_CLEAR_ENTRY   0xD9
 
#define HID_KEYBOARD_SC_KEYPAD_BINARY   0xDA
 
#define HID_KEYBOARD_SC_KEYPAD_OCTAL   0xDB
 
#define HID_KEYBOARD_SC_KEYPAD_DECIMAL   0xDC
 
#define HID_KEYBOARD_SC_KEYPAD_HEXADECIMAL   0xDD
 
#define HID_KEYBOARD_SC_LEFT_CONTROL   0xE0
 
#define HID_KEYBOARD_SC_LEFT_SHIFT   0xE1
 
#define HID_KEYBOARD_SC_LEFT_ALT   0xE2
 
#define HID_KEYBOARD_SC_LEFT_GUI   0xE3
 
#define HID_KEYBOARD_SC_RIGHT_CONTROL   0xE4
 
#define HID_KEYBOARD_SC_RIGHT_SHIFT   0xE5
 
#define HID_KEYBOARD_SC_RIGHT_ALT   0xE6
 
#define HID_KEYBOARD_SC_RIGHT_GUI   0xE7
 
#define HID_KEYBOARD_SC_MEDIA_PLAY   0xE8
 
#define HID_KEYBOARD_SC_MEDIA_STOP   0xE9
 
#define HID_KEYBOARD_SC_MEDIA_PREVIOUS_TRACK   0xEA
 
#define HID_KEYBOARD_SC_MEDIA_NEXT_TRACK   0xEB
 
#define HID_KEYBOARD_SC_MEDIA_EJECT   0xEC
 
#define HID_KEYBOARD_SC_MEDIA_VOLUME_UP   0xED
 
#define HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN   0xEE
 
#define HID_KEYBOARD_SC_MEDIA_MUTE   0xEF
 
#define HID_KEYBOARD_SC_MEDIA_WWW   0xF0
 
#define HID_KEYBOARD_SC_MEDIA_BACKWARD   0xF1
 
#define HID_KEYBOARD_SC_MEDIA_FORWARD   0xF2
 
#define HID_KEYBOARD_SC_MEDIA_CANCEL   0xF3
 
#define HID_KEYBOARD_SC_MEDIA_SEARCH   0xF4
 
#define HID_KEYBOARD_SC_MEDIA_SLEEP   0xF8
 
#define HID_KEYBOARD_SC_MEDIA_LOCK   0xF9
 
#define HID_KEYBOARD_SC_MEDIA_RELOAD   0xFA
 
#define HID_KEYBOARD_SC_MEDIA_CALCULATOR   0xFB
 
Common HID Device Report Descriptors
#define HID_DESCRIPTOR_JOYSTICK(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons)
 
#define HID_DESCRIPTOR_KEYBOARD(MaxKeys)
 
#define HID_DESCRIPTOR_MOUSE(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons, AbsoluteCoords)
 
#define HID_DESCRIPTOR_VENDOR(VendorPageNum, CollectionUsage, DataINUsage, DataOUTUsage, NumBytes)
 

Typedefs

typedef uint8_t USB_Descriptor_HIDReport_Datatype_t
 

Enumerations

enum  HID_ClassRequests_t {
  HID_REQ_GetReport = 0x01,
  HID_REQ_GetIdle = 0x02,
  HID_REQ_GetProtocol = 0x03,
  HID_REQ_SetReport = 0x09,
  HID_REQ_SetIdle = 0x0A,
  HID_REQ_SetProtocol = 0x0B
}
 
enum  HID_Descriptor_ClassSubclassProtocol_t {
  HID_CSCP_HIDClass = 0x03,
  HID_CSCP_NonBootSubclass = 0x00,
  HID_CSCP_BootSubclass = 0x01,
  HID_CSCP_NonBootProtocol = 0x00,
  HID_CSCP_KeyboardBootProtocol = 0x01,
  HID_CSCP_MouseBootProtocol = 0x02
}
 
enum  HID_DescriptorTypes_t {
  HID_DTYPE_HID = 0x21,
  HID_DTYPE_Report = 0x22
}
 
enum  HID_ReportItemTypes_t {
  HID_REPORT_ITEM_In = 0,
  HID_REPORT_ITEM_Out = 1,
  HID_REPORT_ITEM_Feature = 2
}
 

Detailed Description

Common definitions and declarations for the library USB HID Class driver.

Note
This file should not be included directly. It is automatically included as needed by the USB module driver dispatch header located in LUFA/Drivers/USB.h.