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.