54 uint8_t bNumDescriptors;
58} tusb_hid_descriptor_hid_t;
246#define GAMEPAD_BUTTON_A GAMEPAD_BUTTON_0
247#define GAMEPAD_BUTTON_SOUTH GAMEPAD_BUTTON_0
249#define GAMEPAD_BUTTON_B GAMEPAD_BUTTON_1
250#define GAMEPAD_BUTTON_EAST GAMEPAD_BUTTON_1
252#define GAMEPAD_BUTTON_C GAMEPAD_BUTTON_2
254#define GAMEPAD_BUTTON_X GAMEPAD_BUTTON_3
255#define GAMEPAD_BUTTON_NORTH GAMEPAD_BUTTON_3
257#define GAMEPAD_BUTTON_Y GAMEPAD_BUTTON_4
258#define GAMEPAD_BUTTON_WEST GAMEPAD_BUTTON_4
260#define GAMEPAD_BUTTON_Z GAMEPAD_BUTTON_5
261#define GAMEPAD_BUTTON_TL GAMEPAD_BUTTON_6
262#define GAMEPAD_BUTTON_TR GAMEPAD_BUTTON_7
263#define GAMEPAD_BUTTON_TL2 GAMEPAD_BUTTON_8
264#define GAMEPAD_BUTTON_TR2 GAMEPAD_BUTTON_9
265#define GAMEPAD_BUTTON_SELECT GAMEPAD_BUTTON_10
266#define GAMEPAD_BUTTON_START GAMEPAD_BUTTON_11
267#define GAMEPAD_BUTTON_MODE GAMEPAD_BUTTON_12
268#define GAMEPAD_BUTTON_THUMBL GAMEPAD_BUTTON_13
269#define GAMEPAD_BUTTON_THUMBR GAMEPAD_BUTTON_14
369#define HID_KEY_NONE 0x00
370#define HID_KEY_A 0x04
371#define HID_KEY_B 0x05
372#define HID_KEY_C 0x06
373#define HID_KEY_D 0x07
374#define HID_KEY_E 0x08
375#define HID_KEY_F 0x09
376#define HID_KEY_G 0x0A
377#define HID_KEY_H 0x0B
378#define HID_KEY_I 0x0C
379#define HID_KEY_J 0x0D
380#define HID_KEY_K 0x0E
381#define HID_KEY_L 0x0F
382#define HID_KEY_M 0x10
383#define HID_KEY_N 0x11
384#define HID_KEY_O 0x12
385#define HID_KEY_P 0x13
386#define HID_KEY_Q 0x14
387#define HID_KEY_R 0x15
388#define HID_KEY_S 0x16
389#define HID_KEY_T 0x17
390#define HID_KEY_U 0x18
391#define HID_KEY_V 0x19
392#define HID_KEY_W 0x1A
393#define HID_KEY_X 0x1B
394#define HID_KEY_Y 0x1C
395#define HID_KEY_Z 0x1D
396#define HID_KEY_1 0x1E
397#define HID_KEY_2 0x1F
398#define HID_KEY_3 0x20
399#define HID_KEY_4 0x21
400#define HID_KEY_5 0x22
401#define HID_KEY_6 0x23
402#define HID_KEY_7 0x24
403#define HID_KEY_8 0x25
404#define HID_KEY_9 0x26
405#define HID_KEY_0 0x27
406#define HID_KEY_ENTER 0x28
407#define HID_KEY_ESCAPE 0x29
408#define HID_KEY_BACKSPACE 0x2A
409#define HID_KEY_TAB 0x2B
410#define HID_KEY_SPACE 0x2C
411#define HID_KEY_MINUS 0x2D
412#define HID_KEY_EQUAL 0x2E
413#define HID_KEY_BRACKET_LEFT 0x2F
414#define HID_KEY_BRACKET_RIGHT 0x30
415#define HID_KEY_BACKSLASH 0x31
416#define HID_KEY_EUROPE_1 0x32
417#define HID_KEY_SEMICOLON 0x33
418#define HID_KEY_APOSTROPHE 0x34
419#define HID_KEY_GRAVE 0x35
420#define HID_KEY_COMMA 0x36
421#define HID_KEY_PERIOD 0x37
422#define HID_KEY_SLASH 0x38
423#define HID_KEY_CAPS_LOCK 0x39
424#define HID_KEY_F1 0x3A
425#define HID_KEY_F2 0x3B
426#define HID_KEY_F3 0x3C
427#define HID_KEY_F4 0x3D
428#define HID_KEY_F5 0x3E
429#define HID_KEY_F6 0x3F
430#define HID_KEY_F7 0x40
431#define HID_KEY_F8 0x41
432#define HID_KEY_F9 0x42
433#define HID_KEY_F10 0x43
434#define HID_KEY_F11 0x44
435#define HID_KEY_F12 0x45
436#define HID_KEY_PRINT_SCREEN 0x46
437#define HID_KEY_SCROLL_LOCK 0x47
438#define HID_KEY_PAUSE 0x48
439#define HID_KEY_INSERT 0x49
440#define HID_KEY_HOME 0x4A
441#define HID_KEY_PAGE_UP 0x4B
442#define HID_KEY_DELETE 0x4C
443#define HID_KEY_END 0x4D
444#define HID_KEY_PAGE_DOWN 0x4E
445#define HID_KEY_ARROW_RIGHT 0x4F
446#define HID_KEY_ARROW_LEFT 0x50
447#define HID_KEY_ARROW_DOWN 0x51
448#define HID_KEY_ARROW_UP 0x52
449#define HID_KEY_NUM_LOCK 0x53
450#define HID_KEY_KEYPAD_DIVIDE 0x54
451#define HID_KEY_KEYPAD_MULTIPLY 0x55
452#define HID_KEY_KEYPAD_SUBTRACT 0x56
453#define HID_KEY_KEYPAD_ADD 0x57
454#define HID_KEY_KEYPAD_ENTER 0x58
455#define HID_KEY_KEYPAD_1 0x59
456#define HID_KEY_KEYPAD_2 0x5A
457#define HID_KEY_KEYPAD_3 0x5B
458#define HID_KEY_KEYPAD_4 0x5C
459#define HID_KEY_KEYPAD_5 0x5D
460#define HID_KEY_KEYPAD_6 0x5E
461#define HID_KEY_KEYPAD_7 0x5F
462#define HID_KEY_KEYPAD_8 0x60
463#define HID_KEY_KEYPAD_9 0x61
464#define HID_KEY_KEYPAD_0 0x62
465#define HID_KEY_KEYPAD_DECIMAL 0x63
466#define HID_KEY_EUROPE_2 0x64
467#define HID_KEY_APPLICATION 0x65
468#define HID_KEY_POWER 0x66
469#define HID_KEY_KEYPAD_EQUAL 0x67
470#define HID_KEY_F13 0x68
471#define HID_KEY_F14 0x69
472#define HID_KEY_F15 0x6A
473#define HID_KEY_F16 0x6B
474#define HID_KEY_F17 0x6C
475#define HID_KEY_F18 0x6D
476#define HID_KEY_F19 0x6E
477#define HID_KEY_F20 0x6F
478#define HID_KEY_F21 0x70
479#define HID_KEY_F22 0x71
480#define HID_KEY_F23 0x72
481#define HID_KEY_F24 0x73
482#define HID_KEY_EXECUTE 0x74
483#define HID_KEY_HELP 0x75
484#define HID_KEY_MENU 0x76
485#define HID_KEY_SELECT 0x77
486#define HID_KEY_STOP 0x78
487#define HID_KEY_AGAIN 0x79
488#define HID_KEY_UNDO 0x7A
489#define HID_KEY_CUT 0x7B
490#define HID_KEY_COPY 0x7C
491#define HID_KEY_PASTE 0x7D
492#define HID_KEY_FIND 0x7E
493#define HID_KEY_MUTE 0x7F
494#define HID_KEY_VOLUME_UP 0x80
495#define HID_KEY_VOLUME_DOWN 0x81
496#define HID_KEY_LOCKING_CAPS_LOCK 0x82
497#define HID_KEY_LOCKING_NUM_LOCK 0x83
498#define HID_KEY_LOCKING_SCROLL_LOCK 0x84
499#define HID_KEY_KEYPAD_COMMA 0x85
500#define HID_KEY_KEYPAD_EQUAL_SIGN 0x86
501#define HID_KEY_KANJI1 0x87
502#define HID_KEY_KANJI2 0x88
503#define HID_KEY_KANJI3 0x89
504#define HID_KEY_KANJI4 0x8A
505#define HID_KEY_KANJI5 0x8B
506#define HID_KEY_KANJI6 0x8C
507#define HID_KEY_KANJI7 0x8D
508#define HID_KEY_KANJI8 0x8E
509#define HID_KEY_KANJI9 0x8F
510#define HID_KEY_LANG1 0x90
511#define HID_KEY_LANG2 0x91
512#define HID_KEY_LANG3 0x92
513#define HID_KEY_LANG4 0x93
514#define HID_KEY_LANG5 0x94
515#define HID_KEY_LANG6 0x95
516#define HID_KEY_LANG7 0x96
517#define HID_KEY_LANG8 0x97
518#define HID_KEY_LANG9 0x98
519#define HID_KEY_ALTERNATE_ERASE 0x99
520#define HID_KEY_SYSREQ_ATTENTION 0x9A
521#define HID_KEY_CANCEL 0x9B
522#define HID_KEY_CLEAR 0x9C
523#define HID_KEY_PRIOR 0x9D
524#define HID_KEY_RETURN 0x9E
525#define HID_KEY_SEPARATOR 0x9F
526#define HID_KEY_OUT 0xA0
527#define HID_KEY_OPER 0xA1
528#define HID_KEY_CLEAR_AGAIN 0xA2
529#define HID_KEY_CRSEL_PROPS 0xA3
530#define HID_KEY_EXSEL 0xA4
532#define HID_KEY_KEYPAD_00 0xB0
533#define HID_KEY_KEYPAD_000 0xB1
534#define HID_KEY_THOUSANDS_SEPARATOR 0xB2
535#define HID_KEY_DECIMAL_SEPARATOR 0xB3
536#define HID_KEY_CURRENCY_UNIT 0xB4
537#define HID_KEY_CURRENCY_SUBUNIT 0xB5
538#define HID_KEY_KEYPAD_LEFT_PARENTHESIS 0xB6
539#define HID_KEY_KEYPAD_RIGHT_PARENTHESIS 0xB7
540#define HID_KEY_KEYPAD_LEFT_BRACE 0xB8
541#define HID_KEY_KEYPAD_RIGHT_BRACE 0xB9
542#define HID_KEY_KEYPAD_TAB 0xBA
543#define HID_KEY_KEYPAD_BACKSPACE 0xBB
544#define HID_KEY_KEYPAD_A 0xBC
545#define HID_KEY_KEYPAD_B 0xBD
546#define HID_KEY_KEYPAD_C 0xBE
547#define HID_KEY_KEYPAD_D 0xBF
548#define HID_KEY_KEYPAD_E 0xC0
549#define HID_KEY_KEYPAD_F 0xC1
550#define HID_KEY_KEYPAD_XOR 0xC2
551#define HID_KEY_KEYPAD_CARET 0xC3
552#define HID_KEY_KEYPAD_PERCENT 0xC4
553#define HID_KEY_KEYPAD_LESS_THAN 0xC5
554#define HID_KEY_KEYPAD_GREATER_THAN 0xC6
555#define HID_KEY_KEYPAD_AMPERSAND 0xC7
556#define HID_KEY_KEYPAD_DOUBLE_AMPERSAND 0xC8
557#define HID_KEY_KEYPAD_VERTICAL_BAR 0xC9
558#define HID_KEY_KEYPAD_DOUBLE_VERTICAL_BAR 0xCA
559#define HID_KEY_KEYPAD_COLON 0xCB
560#define HID_KEY_KEYPAD_HASH 0xCC
561#define HID_KEY_KEYPAD_SPACE 0xCD
562#define HID_KEY_KEYPAD_AT 0xCE
563#define HID_KEY_KEYPAD_EXCLAMATION 0xCF
564#define HID_KEY_KEYPAD_MEMORY_STORE 0xD0
565#define HID_KEY_KEYPAD_MEMORY_RECALL 0xD1
566#define HID_KEY_KEYPAD_MEMORY_CLEAR 0xD2
567#define HID_KEY_KEYPAD_MEMORY_ADD 0xD3
568#define HID_KEY_KEYPAD_MEMORY_SUBTRACT 0xD4
569#define HID_KEY_KEYPAD_MEMORY_MULTIPLY 0xD5
570#define HID_KEY_KEYPAD_MEMORY_DIVIDE 0xD6
571#define HID_KEY_KEYPAD_PLUS_MINUS 0xD7
572#define HID_KEY_KEYPAD_CLEAR 0xD8
573#define HID_KEY_KEYPAD_CLEAR_ENTRY 0xD9
574#define HID_KEY_KEYPAD_BINARY 0xDA
575#define HID_KEY_KEYPAD_OCTAL 0xDB
576#define HID_KEY_KEYPAD_DECIMAL_2 0xDC
577#define HID_KEY_KEYPAD_HEXADECIMAL 0xDD
579#define HID_KEY_CONTROL_LEFT 0xE0
580#define HID_KEY_SHIFT_LEFT 0xE1
581#define HID_KEY_ALT_LEFT 0xE2
582#define HID_KEY_GUI_LEFT 0xE3
583#define HID_KEY_CONTROL_RIGHT 0xE4
584#define HID_KEY_SHIFT_RIGHT 0xE5
585#define HID_KEY_ALT_RIGHT 0xE6
586#define HID_KEY_GUI_RIGHT 0xE7
594#define HID_REPORT_DATA_0(data)
595#define HID_REPORT_DATA_1(data) , data
596#define HID_REPORT_DATA_2(data) , U16_TO_U8S_LE(data)
597#define HID_REPORT_DATA_3(data) , U32_TO_U8S_LE(data)
599#define HID_REPORT_ITEM(data, tag, type, size) \
600 (((tag) << 4) | ((type) << 2) | (size)) HID_REPORT_DATA_##size(data)
620#define HID_INPUT(x) HID_REPORT_ITEM(x, RI_MAIN_INPUT , RI_TYPE_MAIN, 1)
621#define HID_OUTPUT(x) HID_REPORT_ITEM(x, RI_MAIN_OUTPUT , RI_TYPE_MAIN, 1)
622#define HID_COLLECTION(x) HID_REPORT_ITEM(x, RI_MAIN_COLLECTION , RI_TYPE_MAIN, 1)
623#define HID_FEATURE(x) HID_REPORT_ITEM(x, RI_MAIN_FEATURE , RI_TYPE_MAIN, 1)
624#define HID_COLLECTION_END HID_REPORT_ITEM(x, RI_MAIN_COLLECTION_END, RI_TYPE_MAIN, 0)
627#define HID_DATA (0<<0)
628#define HID_CONSTANT (1<<0)
630#define HID_ARRAY (0<<1)
631#define HID_VARIABLE (1<<1)
633#define HID_ABSOLUTE (0<<2)
634#define HID_RELATIVE (1<<2)
636#define HID_WRAP_NO (0<<3)
637#define HID_WRAP (1<<3)
639#define HID_LINEAR (0<<4)
640#define HID_NONLINEAR (1<<4)
642#define HID_PREFERRED_STATE (0<<5)
643#define HID_PREFERRED_NO (1<<5)
645#define HID_NO_NULL_POSITION (0<<6)
646#define HID_NULL_STATE (1<<6)
648#define HID_NON_VOLATILE (0<<7)
649#define HID_VOLATILE (1<<7)
651#define HID_BITFIELD (0<<8)
652#define HID_BUFFERED_BYTES (1<<8)
683#define HID_USAGE_PAGE(x) HID_REPORT_ITEM(x, RI_GLOBAL_USAGE_PAGE, RI_TYPE_GLOBAL, 1)
684#define HID_USAGE_PAGE_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_USAGE_PAGE, RI_TYPE_GLOBAL, n)
686#define HID_LOGICAL_MIN(x) HID_REPORT_ITEM(x, RI_GLOBAL_LOGICAL_MIN, RI_TYPE_GLOBAL, 1)
687#define HID_LOGICAL_MIN_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_LOGICAL_MIN, RI_TYPE_GLOBAL, n)
689#define HID_LOGICAL_MAX(x) HID_REPORT_ITEM(x, RI_GLOBAL_LOGICAL_MAX, RI_TYPE_GLOBAL, 1)
690#define HID_LOGICAL_MAX_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_LOGICAL_MAX, RI_TYPE_GLOBAL, n)
692#define HID_PHYSICAL_MIN(x) HID_REPORT_ITEM(x, RI_GLOBAL_PHYSICAL_MIN, RI_TYPE_GLOBAL, 1)
693#define HID_PHYSICAL_MIN_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_PHYSICAL_MIN, RI_TYPE_GLOBAL, n)
695#define HID_PHYSICAL_MAX(x) HID_REPORT_ITEM(x, RI_GLOBAL_PHYSICAL_MAX, RI_TYPE_GLOBAL, 1)
696#define HID_PHYSICAL_MAX_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_PHYSICAL_MAX, RI_TYPE_GLOBAL, n)
698#define HID_UNIT_EXPONENT(x) HID_REPORT_ITEM(x, RI_GLOBAL_UNIT_EXPONENT, RI_TYPE_GLOBAL, 1)
699#define HID_UNIT_EXPONENT_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_UNIT_EXPONENT, RI_TYPE_GLOBAL, n)
701#define HID_UNIT(x) HID_REPORT_ITEM(x, RI_GLOBAL_UNIT, RI_TYPE_GLOBAL, 1)
702#define HID_UNIT_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_UNIT, RI_TYPE_GLOBAL, n)
704#define HID_REPORT_SIZE(x) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_SIZE, RI_TYPE_GLOBAL, 1)
705#define HID_REPORT_SIZE_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_SIZE, RI_TYPE_GLOBAL, n)
707#define HID_REPORT_ID(x) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_ID, RI_TYPE_GLOBAL, 1),
708#define HID_REPORT_ID_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_ID, RI_TYPE_GLOBAL, n),
710#define HID_REPORT_COUNT(x) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_COUNT, RI_TYPE_GLOBAL, 1)
711#define HID_REPORT_COUNT_N(x, n) HID_REPORT_ITEM(x, RI_GLOBAL_REPORT_COUNT, RI_TYPE_GLOBAL, n)
713#define HID_PUSH HID_REPORT_ITEM(x, RI_GLOBAL_PUSH, RI_TYPE_GLOBAL, 0)
714#define HID_POP HID_REPORT_ITEM(x, RI_GLOBAL_POP, RI_TYPE_GLOBAL, 0)
732#define HID_USAGE(x) HID_REPORT_ITEM(x, RI_LOCAL_USAGE, RI_TYPE_LOCAL, 1)
733#define HID_USAGE_N(x, n) HID_REPORT_ITEM(x, RI_LOCAL_USAGE, RI_TYPE_LOCAL, n)
735#define HID_USAGE_MIN(x) HID_REPORT_ITEM(x, RI_LOCAL_USAGE_MIN, RI_TYPE_LOCAL, 1)
736#define HID_USAGE_MIN_N(x, n) HID_REPORT_ITEM(x, RI_LOCAL_USAGE_MIN, RI_TYPE_LOCAL, n)
738#define HID_USAGE_MAX(x) HID_REPORT_ITEM(x, RI_LOCAL_USAGE_MAX, RI_TYPE_LOCAL, 1)
739#define HID_USAGE_MAX_N(x, n) HID_REPORT_ITEM(x, RI_LOCAL_USAGE_MAX, RI_TYPE_LOCAL, n)
968#define HID_ASCII_TO_KEYCODE \
977 {0, HID_KEY_BACKSPACE }, \
979 {0, HID_KEY_ENTER }, \
982 {0, HID_KEY_ENTER }, \
996 {0, HID_KEY_ESCAPE }, \
1002 {0, HID_KEY_SPACE }, \
1004 {1, HID_KEY_APOSTROPHE }, \
1009 {0, HID_KEY_APOSTROPHE }, \
1013 {1, HID_KEY_EQUAL }, \
1014 {0, HID_KEY_COMMA }, \
1015 {0, HID_KEY_MINUS }, \
1016 {0, HID_KEY_PERIOD }, \
1017 {0, HID_KEY_SLASH }, \
1028 {1, HID_KEY_SEMICOLON }, \
1029 {0, HID_KEY_SEMICOLON }, \
1030 {1, HID_KEY_COMMA }, \
1031 {0, HID_KEY_EQUAL }, \
1032 {1, HID_KEY_PERIOD }, \
1033 {1, HID_KEY_SLASH }, \
1062 {0, HID_KEY_BRACKET_LEFT }, \
1063 {0, HID_KEY_BACKSLASH }, \
1064 {0, HID_KEY_BRACKET_RIGHT }, \
1066 {1, HID_KEY_MINUS }, \
1068 {0, HID_KEY_GRAVE }, \
1095 {1, HID_KEY_BRACKET_LEFT }, \
1096 {1, HID_KEY_BACKSLASH }, \
1097 {1, HID_KEY_BRACKET_RIGHT }, \
1098 {1, HID_KEY_GRAVE }, \
1099 {0, HID_KEY_DELETE } \
1112#define HID_KEYCODE_TO_ASCII \
1154 {'\x1b', '\x1b' }, \
1165 {'\'' , '\"' }, /* 0x34 */ \
1166 {'`' , '~' }, /* 0x35 */ \
1167 {',' , '<' }, /* 0x36 */ \
1168 {'.' , '>' }, /* 0x37 */ \
1169 {'/' , '?' }, /* 0x38 */ \
1171 {0 , 0 }, /* 0x39 */ \
1172 {0 , 0 }, /* 0x3a */ \
1173 {0 , 0 }, /* 0x3b */ \
1174 {0 , 0 }, /* 0x3c */ \
1175 {0 , 0 }, /* 0x3d */ \
1176 {0 , 0 }, /* 0x3e */ \
1177 {0 , 0 }, /* 0x3f */ \
1178 {0 , 0 }, /* 0x40 */ \
1179 {0 , 0 }, /* 0x41 */ \
1180 {0 , 0 }, /* 0x42 */ \
1181 {0 , 0 }, /* 0x43 */ \
1182 {0 , 0 }, /* 0x44 */ \
1183 {0 , 0 }, /* 0x45 */ \
1184 {0 , 0 }, /* 0x46 */ \
1185 {0 , 0 }, /* 0x47 */ \
1186 {0 , 0 }, /* 0x48 */ \
1187 {0 , 0 }, /* 0x49 */ \
1188 {0 , 0 }, /* 0x4a */ \
1189 {0 , 0 }, /* 0x4b */ \
1190 {0 , 0 }, /* 0x4c */ \
1191 {0 , 0 }, /* 0x4d */ \
1192 {0 , 0 }, /* 0x4e */ \
1193 {0 , 0 }, /* 0x4f */ \
1194 {0 , 0 }, /* 0x50 */ \
1195 {0 , 0 }, /* 0x51 */ \
1196 {0 , 0 }, /* 0x52 */ \
1197 {0 , 0 }, /* 0x53 */ \
1199 {'/' , '/' }, /* 0x54 */ \
1200 {'*' , '*' }, /* 0x55 */ \
1201 {'-' , '-' }, /* 0x56 */ \
1202 {'+' , '+' }, /* 0x57 */ \
1203 {'\r' , '\r' }, /* 0x58 */ \
1204 {'1' , 0 }, /* 0x59 */ \
1205 {'2' , 0 }, /* 0x5a */ \
1206 {'3' , 0 }, /* 0x5b */ \
1207 {'4' , 0 }, /* 0x5c */ \
1208 {'5' , '5' }, /* 0x5d */ \
1209 {'6' , 0 }, /* 0x5e */ \
1210 {'7' , 0 }, /* 0x5f */ \
1211 {'8' , 0 }, /* 0x60 */ \
1212 {'9' , 0 }, /* 0x61 */ \
1213 {'0' , 0 }, /* 0x62 */ \
1214 {'.' , 0 }, /* 0x63 */ \
1215 {0 , 0 }, /* 0x64 */ \
1216 {0 , 0 }, /* 0x65 */ \
1217 {0 , 0 }, /* 0x66 */ \
1218 {'=' , '=' }, /* 0x67 */ \
1225#endif /* _TUSB_HID_H__ */
hid_gamepad_button_bm_t
Standard Gamepad Buttons Bitmap.
struct TU_ATTR_PACKED hid_gamepad_report_t
HID Gamepad Protocol Report.
hid_gamepad_hat_t
Standard Gamepad HAT/DPAD Buttons (from Linux input event codes)
@ GAMEPAD_HAT_DOWN_LEFT
DPAD_DOWN_LEFT.
@ GAMEPAD_HAT_DOWN_RIGHT
DPAD_DOWN_RIGHT.
@ GAMEPAD_HAT_LEFT
DPAD_LEFT.
@ GAMEPAD_HAT_RIGHT
DPAD_RIGHT.
@ GAMEPAD_HAT_DOWN
DPAD_DOWN.
@ GAMEPAD_HAT_UP_RIGHT
DPAD_UP_RIGHT.
@ GAMEPAD_HAT_CENTERED
DPAD_CENTERED.
@ GAMEPAD_HAT_UP_LEFT
DPAD_UP_LEFT.
hid_keyboard_modifier_bm_t
Keyboard modifier codes bitmap.
struct TU_ATTR_PACKED hid_keyboard_report_t
Standard HID Boot Protocol Keyboard Report.
@ KEYBOARD_MODIFIER_RIGHTALT
Right Alt.
@ KEYBOARD_MODIFIER_RIGHTGUI
Right Window.
@ KEYBOARD_MODIFIER_RIGHTCTRL
Right Control.
@ KEYBOARD_MODIFIER_LEFTGUI
Left Window.
@ KEYBOARD_MODIFIER_LEFTCTRL
Left Control.
@ KEYBOARD_MODIFIER_RIGHTSHIFT
Right Shift.
@ KEYBOARD_MODIFIER_LEFTALT
Left Alt.
@ KEYBOARD_MODIFIER_LEFTSHIFT
Left Shift.
@ KEYBOARD_LED_CAPSLOCK
Caps Lock LED.
@ KEYBOARD_LED_KANA
Kana mode.
@ KEYBOARD_LED_SCROLLLOCK
Scroll Lock LED.
@ KEYBOARD_LED_COMPOSE
Composition Mode.
@ KEYBOARD_LED_NUMLOCK
Num Lock LED.
struct TU_ATTR_PACKED hid_abs_mouse_report_t
hid_mouse_button_bm_t
Standard Mouse Buttons Bitmap.
struct TU_ATTR_PACKED hid_mouse_report_t
Standard HID Boot Protocol Mouse Report.
@ MOUSE_BUTTON_FORWARD
Forward button,.
@ MOUSE_BUTTON_BACKWARD
Backward button,.
@ MOUSE_BUTTON_LEFT
Left button.
@ MOUSE_BUTTON_RIGHT
Right button.
@ MOUSE_BUTTON_MIDDLE
Middle button.
hid_request_enum_t
HID Class Specific Control Request.
hid_subclass_enum_t
HID Subclass.
hid_interface_protocol_enum_t
HID Interface Protocol.
hid_descriptor_enum_t
HID Descriptor Type.
hid_report_type_t
HID Request Report Type.
hid_local_enum_t
HID Local Code.
@ HID_REQ_CONTROL_GET_PROTOCOL
Get Protocol.
@ HID_REQ_CONTROL_SET_REPORT
Set Report.
@ HID_REQ_CONTROL_GET_REPORT
Get Report.
@ HID_REQ_CONTROL_SET_PROTOCOL
Set Protocol.
@ HID_REQ_CONTROL_SET_IDLE
Set Idle.
@ HID_REQ_CONTROL_GET_IDLE
Get Idle.
@ HID_SUBCLASS_BOOT
Boot Interface Subclass.
@ HID_SUBCLASS_NONE
No Subclass.
@ HID_ITF_PROTOCOL_KEYBOARD
Keyboard.
@ HID_ITF_PROTOCOL_MOUSE
Mouse.
@ HID_ITF_PROTOCOL_NONE
None.
@ HID_DESC_TYPE_PHYSICAL
Physical Descriptor.
@ HID_DESC_TYPE_REPORT
Report Descriptor.
@ HID_DESC_TYPE_HID
HID Descriptor.
@ HID_REPORT_TYPE_INPUT
Input.
@ HID_REPORT_TYPE_INVALID
@ HID_REPORT_TYPE_OUTPUT
Output.
@ HID_REPORT_TYPE_FEATURE
Feature.
@ HID_LOCAL_Switzerland
Switzerland.
@ HID_LOCAL_Swiss_German
Swiss/German.
@ HID_LOCAL_Czech_Republic
Czech_Republic.
@ HID_LOCAL_Danish
Danish.
@ HID_LOCAL_Persian_Farsi
Persian (Farsi)
@ HID_LOCAL_Latin_American
Latin_American.
@ HID_LOCAL_Korean
Korean.
@ HID_LOCAL_Taiwan
Taiwan.
@ HID_LOCAL_Turkish_Q
Turkish-Q.
@ HID_LOCAL_Netherlands_Dutch
Netherlands/Dutch.
@ HID_LOCAL_Belgian
Belgian.
@ HID_LOCAL_Canadian_Bilingual
Canadian_Bilingual.
@ HID_LOCAL_Portuguese
Portuguese.
@ HID_LOCAL_Arabic
Arabic.
@ HID_LOCAL_Slovakia
Slovakia.
@ HID_LOCAL_Spanish
Spanish.
@ HID_LOCAL_Russia
Russia.
@ HID_LOCAL_Turkish_F
Turkish-F.
@ HID_LOCAL_NotSupported
NotSupported.
@ HID_LOCAL_Hungary
Hungary.
@ HID_LOCAL_Swedish
Swedish.
@ HID_LOCAL_Yugoslavia
Yugoslavia.
@ HID_LOCAL_International
International.
@ HID_LOCAL_Hebrew
Hebrew.
@ HID_LOCAL_Finnish
Finnish.
@ HID_LOCAL_Canadian_French
Canadian_French.
@ HID_LOCAL_Swiss_French
Swiss/French.
@ HID_LOCAL_Italian
Italian.
@ HID_LOCAL_French
French.
@ HID_LOCAL_German
German.
@ HID_LOCAL_Japan_Katakana
Japan_Katakana.
@ HID_LOCAL_Norwegian
Norwegian.
@ HID_LOCAL_Poland
Poland.
@ HID_USAGE_DESKTOP_SELECT
@ HID_USAGE_DESKTOP_KEYBOARD
@ HID_USAGE_DESKTOP_SYSTEM_BREAK
@ HID_USAGE_DESKTOP_SYSTEM_APP_MENU
@ HID_USAGE_DESKTOP_SYSTEM_MENU_HELP
@ HID_USAGE_DESKTOP_MOTION_WAKEUP
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_SWAP_PRIMARY_SECONDARY
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_EXTERNAL
@ HID_USAGE_DESKTOP_SYSTEM_COLD_RESTART
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_INVERT
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_LCD_AUTOSCALE
@ HID_USAGE_DESKTOP_SYSTEM_DEBUGGER_BREAK
@ HID_USAGE_DESKTOP_SYSTEM_MAIN_MENU
@ HID_USAGE_DESKTOP_SYSTEM_MENU_EXIT
@ HID_USAGE_DESKTOP_GAMEPAD
@ HID_USAGE_DESKTOP_SYSTEM_MENU_UP
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_INTERNAL
@ HID_USAGE_DESKTOP_SYSTEM_MENU_RIGHT
@ HID_USAGE_DESKTOP_SYSTEM_CONTROL
@ HID_USAGE_DESKTOP_DPAD_LEFT
@ HID_USAGE_DESKTOP_APPLICATION_DEBUGGER_BREAK
@ HID_USAGE_DESKTOP_SYSTEM_DOCK
@ HID_USAGE_DESKTOP_TABLET_PC_SYSTEM
@ HID_USAGE_DESKTOP_SYSTEM_SPEAKER_MUTE
@ HID_USAGE_DESKTOP_SYSTEM_SETUP
@ HID_USAGE_DESKTOP_KEYPAD
@ HID_USAGE_DESKTOP_FEATURE_NOTIFICATION
@ HID_USAGE_DESKTOP_SYSTEM_HIBERNATE
@ HID_USAGE_DESKTOP_WHEEL
@ HID_USAGE_DESKTOP_SYSTEM_MENU_SELECT
@ HID_USAGE_DESKTOP_JOYSTICK
@ HID_USAGE_DESKTOP_SLIDER
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_DUAL
@ HID_USAGE_DESKTOP_SYSTEM_SLEEP
@ HID_USAGE_DESKTOP_MOUSE
@ HID_USAGE_DESKTOP_MULTI_AXIS_CONTROLLER
@ HID_USAGE_DESKTOP_DPAD_DOWN
@ HID_USAGE_DESKTOP_RESOLUTION_MULTIPLIER
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_BOTH
@ HID_USAGE_DESKTOP_POINTER
@ HID_USAGE_DESKTOP_SYSTEM_UNDOCK
@ HID_USAGE_DESKTOP_SYSTEM_WARM_RESTART
@ HID_USAGE_DESKTOP_COUNTED_BUFFER
@ HID_USAGE_DESKTOP_SYSTEM_WAKE_UP
@ HID_USAGE_DESKTOP_APPLICATION_BREAK
@ HID_USAGE_DESKTOP_SYSTEM_POWER_DOWN
@ HID_USAGE_DESKTOP_START
@ HID_USAGE_DESKTOP_DPAD_UP
@ HID_USAGE_DESKTOP_SYSTEM_MENU_DOWN
@ HID_USAGE_DESKTOP_BYTE_COUNT
@ HID_USAGE_DESKTOP_SYSTEM_MENU_LEFT
@ HID_USAGE_DESKTOP_HAT_SWITCH
@ HID_USAGE_DESKTOP_SYSTEM_CONTEXT_MENU
@ HID_USAGE_DESKTOP_SYSTEM_DISPLAY_TOGGLE_INT_EXT
@ HID_USAGE_DESKTOP_DPAD_RIGHT
@ RI_LOCAL_DESIGNATOR_MIN
@ RI_LOCAL_DESIGNATOR_MAX
@ RI_LOCAL_DESIGNATOR_INDEX
@ HID_USAGE_CONSUMER_AC_FORWARD
@ HID_USAGE_CONSUMER_TREBLE
@ HID_USAGE_CONSUMER_WIRELESS_RADIO_SLIDER_SWITCH
@ HID_USAGE_CONSUMER_BASS
@ HID_USAGE_CONSUMER_AC_HOME
@ HID_USAGE_CONSUMER_CONTROL
@ HID_USAGE_CONSUMER_PLAY_PAUSE
@ HID_USAGE_CONSUMER_BRIGHTNESS_INCREMENT
@ HID_USAGE_CONSUMER_BASS_INCREMENT
@ HID_USAGE_CONSUMER_POWER
@ HID_USAGE_CONSUMER_SCAN_NEXT
@ HID_USAGE_CONSUMER_BASS_BOOST
@ HID_USAGE_CONSUMER_AC_STOP
@ HID_USAGE_CONSUMER_AC_REFRESH
@ HID_USAGE_CONSUMER_SLEEP
@ HID_USAGE_CONSUMER_RESET
@ HID_USAGE_CONSUMER_BASS_DECREMENT
@ HID_USAGE_CONSUMER_AC_PAN
@ HID_USAGE_CONSUMER_WIRELESS_RADIO_CONTROLS
@ HID_USAGE_CONSUMER_AL_LOCAL_BROWSER
@ HID_USAGE_CONSUMER_AC_SEARCH
@ HID_USAGE_CONSUMER_AC_BACK
@ HID_USAGE_CONSUMER_BRIGHTNESS_DECREMENT
@ HID_USAGE_CONSUMER_VOLUME_DECREMENT
@ HID_USAGE_CONSUMER_STOP
@ HID_USAGE_CONSUMER_AC_BOOKMARKS
@ HID_USAGE_CONSUMER_WIRELESS_RADIO_BUTTONS
@ HID_USAGE_CONSUMER_VOLUME_INCREMENT
@ HID_USAGE_CONSUMER_SCAN_PREVIOUS
@ HID_USAGE_CONSUMER_AL_CALCULATOR
@ HID_USAGE_CONSUMER_TREBLE_INCREMENT
@ HID_USAGE_CONSUMER_TREBLE_DECREMENT
@ HID_USAGE_CONSUMER_AL_EMAIL_READER
@ HID_USAGE_CONSUMER_MUTE
@ HID_USAGE_CONSUMER_VOLUME
@ HID_USAGE_CONSUMER_AL_CONSUMER_CONTROL_CONFIGURATION
@ HID_USAGE_CONSUMER_WIRELESS_RADIO_LED
@ HID_USAGE_FIDO_DATA_OUT
@ HID_COLLECTION_USAGE_MODIFIER
@ HID_COLLECTION_PHYSICAL
@ HID_COLLECTION_USAGE_SWITCH
@ HID_COLLECTION_APPLICATION
@ HID_COLLECTION_NAMED_ARRAY
@ HID_USAGE_PAGE_SIMULATE
@ HID_USAGE_PAGE_BARCODE_SCANNER
@ HID_USAGE_PAGE_CONSUMER
@ HID_USAGE_PAGE_VIRTUAL_REALITY
@ HID_USAGE_PAGE_TELEPHONY
@ HID_USAGE_PAGE_KEYBOARD
@ HID_USAGE_PAGE_DIGITIZER
@ HID_USAGE_PAGE_LIGHTING_AND_ILLUMINATION
@ HID_USAGE_PAGE_GENERIC_DEVICE
@ HID_USAGE_PAGE_ALPHA_DISPLAY
@ RI_GLOBAL_UNIT_EXPONENT
@ HID_USAGE_LIGHTING_LAMP_ARRAY
@ HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT
@ HID_USAGE_LIGHTING_INTENSITY_LEVEL_COUNT
@ HID_USAGE_LIGHTING_BOUNDING_BOX_WIDTH_IN_MICROMETERS
@ HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT
@ HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL
@ HID_USAGE_LIGHTING_GREEN_LEVEL_COUNT
@ HID_USAGE_LIGHTING_POSITION_Z_IN_MICROMETERS
@ HID_USAGE_LIGHTING_LAMP_PURPOSES
@ HID_USAGE_LIGHTING_LAMP_ID_START
@ HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL
@ HID_USAGE_LIGHTING_INPUT_BINDING
@ HID_USAGE_LIGHTING_LAMP_ID
@ HID_USAGE_LIGHTING_POSITION_Y_IN_MICROMETERS
@ HID_USAGE_LIGHTING_AUTONOMOUS_MODE
@ HID_USAGE_LIGHTING_UPDATE_LATENCY_IN_MICROSECONDS
@ HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL
@ HID_USAGE_LIGHTING_RED_LEVEL_COUNT
@ HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT
@ HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT
@ HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS
@ HID_USAGE_LIGHTING_IS_PROGRAMMABLE
@ HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL
@ HID_USAGE_LIGHTING_LAMP_ID_END
@ HID_USAGE_LIGHTING_LAMP_COUNT
@ HID_USAGE_LIGHTING_BOUNDING_BOX_HEIGHT_IN_MICROMETERS
@ HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT
@ HID_USAGE_LIGHTING_BLUE_LEVEL_COUNT
@ HID_USAGE_LIGHTING_MIN_UPDATE_INTERVAL_IN_MICROSECONDS
@ HID_USAGE_LIGHTING_BOUNDING_BOX_DEPTH_IN_MICROMETERS
@ HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT
@ HID_USAGE_LIGHTING_POSITION_X_IN_MICROMETERS
@ HID_USAGE_LIGHTING_LAMP_ARRAY_KIND
AUDIO Channel Cluster Descriptor (4.1)
int8_t rx
Delta Rx movement of analog left trigger.
uint32_t buttons
Buttons mask for currently pressed buttons.
int8_t z
Delta z movement of right analog-joystick.
int8_t x
Delta x movement of left analog-stick.
uint8_t bDescriptorType
Descriptor Type. Value: TUSB_DESC_CS_INTERFACE.
uint8_t bLength
Size of this descriptor in bytes: 9.
int8_t y
Delta y movement of left analog-stick.
int8_t rz
Delta Rz movement of right analog-joystick.
int8_t ry
Delta Ry movement of analog right trigger.
uint8_t hat
Buttons mask for currently pressed buttons in the DPad/hat.