https://bugs.winehq.org/show_bug.cgi?id=45992
Bug ID: 45992 Summary: Some Unity games expect XInputSetState to succeed or ignore gamepad input Product: Wine Version: unspecified Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: xinput Assignee: wine-bugs@winehq.org Reporter: beren.minor+wine@gmail.com Distribution: ---
Created attachment 62554 --> https://bugs.winehq.org/attachment.cgi?id=62554 Force HID_set_state to succeed
As described in the title, it looks like that some games (Unity based AFAIK) are calling XInputSetState on detected gamepads, and expect it to return ERROR_SUCCESS.
For example, "Mages of Mystralia" - Unity engine based - was not detecting my XBox360 gamepad correctly, with wine 3.18, although many calls to XInputGetState were logged, and although it looked to be correctly detected according to HID messages. I believe this also happens for other Unity games.
For some reason, the gamepad force feedback support is not detected (not sure if it should under wine), and the feature flag isn't present on the corresponding device, so XInputSetState > HID_set_state returns ERROR_UNSUPPORTED.
Changing ERROR_UNSUPPORTED to ERROR_SUCCESS - see attached patch file - fixes the gamepad detection issue, and the game accepts gamepad input afterwards. Of course, this isn't the proper way to fix the issue, but it's a workaround for the games.