@@ -248,12 +248,12 @@ TU_ATTR_WEAK bool tud_hid_set_idle_cb(uint8_t idle_rate);
248
248
HID_COLLECTION_END \
249
249
250
250
// Gamepad Report Descriptor Template
251
- // with 16 buttons and 2 joysticks with following layout
252
- // | Button Map (2 bytes) | X | Y | Z | Rz
251
+ // with 16 buttons, 2 joysticks and 1 hat/dpad with following layout
252
+ // | Button Map (2 bytes) | X | Y | Z | Rz (1 byte each) | hat/DPAD (1 byte)
253
253
#define TUD_HID_REPORT_DESC_GAMEPAD (...) \
254
- HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
255
- HID_USAGE ( HID_USAGE_DESKTOP_GAMEPAD ) ,\
256
- HID_COLLECTION ( HID_COLLECTION_APPLICATION ) ,\
254
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
255
+ HID_USAGE ( HID_USAGE_DESKTOP_GAMEPAD ) ,\
256
+ HID_COLLECTION ( HID_COLLECTION_APPLICATION ) ,\
257
257
/* Report ID if any */ \
258
258
__VA_ARGS__ \
259
259
/* 16 bit Button Map */ \
@@ -265,17 +265,27 @@ TU_ATTR_WEAK bool tud_hid_set_idle_cb(uint8_t idle_rate);
265
265
HID_REPORT_COUNT ( 16 ) ,\
266
266
HID_REPORT_SIZE ( 1 ) ,\
267
267
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
268
- /* X, Y, Z, Rz (min -127, max 127 ) */ \
268
+ /* 8 bit X, Y, Z, Rz (min -127, max 127 ) */ \
269
269
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
270
- HID_LOGICAL_MIN ( 0x81 ) ,\
271
- HID_LOGICAL_MAX ( 0x7f ) ,\
272
270
HID_USAGE ( HID_USAGE_DESKTOP_X ) ,\
273
271
HID_USAGE ( HID_USAGE_DESKTOP_Y ) ,\
274
272
HID_USAGE ( HID_USAGE_DESKTOP_Z ) ,\
275
273
HID_USAGE ( HID_USAGE_DESKTOP_RZ ) ,\
274
+ HID_LOGICAL_MIN ( 0x81 ) ,\
275
+ HID_LOGICAL_MAX ( 0x7f ) ,\
276
276
HID_REPORT_COUNT ( 4 ) ,\
277
277
HID_REPORT_SIZE ( 8 ) ,\
278
278
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
279
+ /* 8 bit Hat Button Map */ \
280
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
281
+ HID_USAGE ( HID_USAGE_DESKTOP_HAT_SWITCH ) ,\
282
+ HID_LOGICAL_MIN ( 1 ) ,\
283
+ HID_LOGICAL_MAX ( 8 ) ,\
284
+ HID_PHYSICAL_MIN ( 0 ) ,\
285
+ HID_PHYSICAL_MAX ( 315 ) ,\
286
+ HID_REPORT_COUNT ( 1 ) ,\
287
+ HID_REPORT_SIZE ( 8 ) ,\
288
+ HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
279
289
HID_COLLECTION_END \
280
290
281
291
// HID Generic Input & Output
0 commit comments