[Bug 60381] New: XInput: The controller "disable" feature is not implemented (bug in all versions since Wine 3.2)
http://bugs.winehq.org/show_bug.cgi?id=60381 Bug ID: 60381 Summary: XInput: The controller "disable" feature is not implemented (bug in all versions since Wine 3.2) Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: xinput Assignee: wine-bugs@list.winehq.org Reporter: svartchimpans@gmail.com Target Milestone: --- Distribution: --- Wine's control panel has a "Game Controllers" tool for managing gamepads. It divides them into 3 sections: - "Connected (DirectInput devices)": Controllers end up here if they don't support HID (XInput), or if you click the "override" button which forces XInput gamepads to be handled by DirectInput instead. - "Connected (XInput devices)": Controllers end up here if they support HID (XInput). - "Disabled": Controllers end up here if you click the "disable" button, which removes the controller from the DirectInput and XInput UI sections and puts it in this list of disabled controllers. Except, the code for that is not implemented. Here's what the control panel does under the hood: - It creates the key `HKEY_CURRENT_USER\Software\Wine\DirectInput\Joysticks` - It creates a string value named exactly the same as the controller (such as "Controller (XBOX 360 For Windows)"). - It sets the value to "override" if the user clicks Override, or "disabled" if the user clicks Disable. Here's that the DLLs do with that information: - DirectInput (https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/dinput/device.c?ref_t...): * Function: "device_instance_is_disabled" * Checks "override": If detected, it forcibly enables DirectInput for that controller. * Checks "disabled": If detected, it rejects that controller. - XInput (https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/xinput1_3/main.c?ref_...): * Function: "device_is_overridden" * Checks "override": If detected, it rejects that controller, so that DirectInput can pick it up instead. * DOES NOT CHECK "disabled". If the controller is Disabled, Wine's XInput still enumerates it and provides it to games. This has real consequences, because some games ONLY work with "XInput controller #1", so it's vital that we can disable unwanted gamepads. That is why I consider this major. It's also a very quick code fix. :) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60381 Ken Sharp <imwellcushtymelike@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|XInput: The controller |XInput: The controller |"disable" feature is not |"disable" feature is not |implemented (bug in all |implemented |versions since Wine 3.2) | Version|unspecified |11.18 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60381 --- Comment #1 from John <svartchimpans@gmail.com> --- Resolved by this merge request: https://gitlab.winehq.org/wine/wine/-/merge_requests/12160 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60381 John <svartchimpans@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED --- Comment #2 from John <svartchimpans@gmail.com> --- The fix has been merged and will be in Wine 11.19 at the earliest. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60381 --- Comment #3 from John <svartchimpans@gmail.com> --- One more useful note regarding the "XInput" controller disable bug: - Many games only use XInput for controllers, and will ignore the legacy DirectInput APIs. - So if a person is stuck with an old version of Wine/Proton which doesn't have the controller "disable" bugfix, try instead setting the unwanted controller to "override" so that it becomes DirectInput. Chances are very good that it will then be removed from the game as desired. --- I also forgot to mention an interesting detail which isn't documented anywhere, so I am adding it here to help search engines pick it up: You can apply the Wine controller override/disable per-game instead of globally, by moving the setting to a per-executable location (app.exe is an example, so just use the correct executable name): `HKEY_CURRENT_USER\Software\Wine\AppDefaults\app.exe\DirectInput\Joysticks` Everything else is exactly the same as the global key location described in the first message. This is useful if you just want to hide a controller from a specific game that doesn't work when multiple controllers are attached. While still being able to use all controllers in other games. That's all folks. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60381 Ken Sharp <imwellcushtymelike@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |d8b9b7c087033b14437ae41d52f | |93e0131742838 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla