https://bugs.winehq.org/show_bug.cgi?id=51873
--- Comment #7 from Rémi Bernon rbernon@codeweavers.com --- (In reply to Ivo Ivanov from comment #4)
Regarding the buttons I considered raising the limit but then the layout was not very flexible. I'll have a look at your change, and see if we can maybe change the way it's presented to better support large number of buttons.
I attached a new dinput patch with an updated description for the second issue from my initial report. Yesterday mistakenly wrote "Report Count" 1, while I meant of course "Report Size" 1. As everything with Report Size 1 is considered a button in hidparse.sys (HID_VALUE_CAPS_IS_BUTTON), when enumerating PID input reports in the joystick_hid.c' enum_objects() function, it counts those parameters as buttons. The result is total number of 134 buttons (caps.dwButtons) instead of 128. Here is an excerpt from the descriptor:
/* Usage Page (PID), */ /* Usage (92h), */ /* Collection (Logical), */ /* Report ID (2), */ /* Usage (9Fh), */ /* Usage (A0h), */ /* Usage (A4h), */ /* Usage (A5h), */ /* Usage (A6h), */ /* Logical Minimum (0), */ /* Logical Maximum (1), */ /* Physical Minimum (0), */ /* Physical Maximum (1), */ /* Report Size (1), */ /* Report Count (5), */ /* Input (Variable), */ /* Report Count (3), */ /* Input (Constant, Variable), */ /* Usage (94h), */ /* Logical Minimum (0), */ /* Logical Maximum (1), */ /* Physical Minimum (0), */ /* Physical Maximum (1), */ /* Report Size (1), */ /* Report Count (1), */ /* Input (Variable), */ /* Usage (22h), */ /* Logical Minimum (1), */ /* Logical Maximum (40), */ /* Physical Minimum (1), */ /* Physical Maximum (40), */ /* Report Size (7), */ /* Report Count (1), */ /* Input (Variable), */ /* End Collection, */
Thanks, I send an updated patch today, with tests to validate that any input caps from the PID usage page should be ignored, including value caps (https://source.winehq.org/patches/data/217210)