https://bugs.winehq.org/show_bug.cgi?id=46361
--- Comment #9 from imbert.jacquesolivier@gmail.com --- 3.12 doesn't rawinput.c and other new codes about gamepads. So before the news codes, gamepads worked like a charm.
In some forums, I see that the following flag could be the culprit : DIGCF_PRESENT usage.
https://community.osr.com/discussion/269299
I quote the following text : " For some reason some USB(in my case) devices in not returned by SetupDiGetClassDevs with (DIGCF_ALLCLASSES | DIGCF_PRESENT) falgs. Device is present in system and is showed up as connected by device manager and devcon. And the device is returned without DIGCF_PRESENT flag. I see the same problem for USBDeview prograam it also showed device as not connected. What can be the reason? "
2nd solution : https://stackoverflow.com/questions/12485414/setupdienumdeviceinterfaces-fai...
I quote the following text : "To return devices that support a device interface of any class, set the DIFCF_DEVICEINTERFACE flag, set the DIGCF_ALLCLASSES flag, and set ClassGuid to NULL. The function adds to the device information set a device information element that represents such a device and then adds to the device information element a device interface list that contains all the device interfaces that the device supports.
So fix your SetupDiGetClassDevs call by adding the DIGCF_DEVICEINTERFACE flag like:
hDevInfo = SetupDiGetClassDevs(NULL,0,0, DIGCF_PRESENT | DIGCF_ALLCLASSES | DIGCF_DEVICEINTERFACE); "
I will these solutions. If people can test Sonic Mania in original Wine 4.0 to confirm the issue with the gamepad, it can confirmed the current issue.