https://bugs.winehq.org/show_bug.cgi?id=42137
Bug ID: 42137 Summary: DirectInput needs to join both Xbox shoulder triggers into a single axis (aka half-axis problem) Product: Wine Version: 1.6.1 Hardware: x86 OS: Linux Status: NEW Keywords: hardware Severity: normal Priority: P2 Component: directx-dinput Assignee: wine-bugs@winehq.org Reporter: 00cpxxx@gmail.com CC: aric@codeweavers.com Distribution: ---
When MS introduced the Xbox controller into dinput it had the idea of joining both Xbox controller shoulder triggers into a single axis. So the left trigger ranges to the negative side while the right trigger to the positive side of the same axis.
Wine currently exposes the triggers are separate axes Z and rZ, this affects some games negatively because the not-pressed default values for the triggers is the lowest possible, for example if the axis ranges from -100 to +100 Wine exposes -100 to the application. The effect is that the application thinks the axis is always pressed and weird things happen, eg auto selecting Z/rZ as every button when configuring a joystick or wrongly selecting Z/rZ as rX/rY making FPS players always look up or down.
I don't know if this happens only for Xbox controllers but I believe so. I'll have the chance to test with a real PS3 controller soon.
If that is MS only, we need to find a way to distinguish the joysticks (VID/PID?) and merge the axes to mimic MS behavior.
At the same time and in opposite direction the XInput API does not employ this hack, since XInput was made for Xbox only controllers it will properly report the values for the axes separately.
https://bugs.winehq.org/show_bug.cgi?id=42137
Aaron Paden aaronbpaden@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aaronbpaden@gmail.com
--- Comment #1 from Aaron Paden aaronbpaden@gmail.com --- I'm assuming this is why Z,rZ shows up in the top-left corner instead of in the center in the game controller test.
I know the same problem exists in my Mad Catz Wired Xbox 360 Controller, which has its own VID:PID 0738:4716
I also have a Matricom gamepad that exhibits the same behavior. It's not an xbox 360 controller, but it *shows up* as an xbox 360 controller in lsusb, so I'm assuming it uses Microsoft's VID. Its VID:PID is 045e:028e
There are probably other gamepads, though, that have the same issue and don't use Microsoft's VID, so you'll probably have to maintain a list.
https://bugs.winehq.org/show_bug.cgi?id=42137
--- Comment #2 from Bruno Jesus 00cpxxx@gmail.com --- The list is a bit long: http://lxr.free-electrons.com/source/drivers/input/joystick/xpad.c#L122
https://bugs.winehq.org/show_bug.cgi?id=42137
--- Comment #3 from Aaron Paden aaronbpaden@gmail.com --- Ah, cool, at least its all in one place! :)
https://bugs.winehq.org/show_bug.cgi?id=42137
BieHDC byi5000@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |byi5000@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=42137
Omar Pakker wine@opakker.nl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wine@opakker.nl
https://bugs.winehq.org/show_bug.cgi?id=42137
Wade Berrier wberrier@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wberrier@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=42137
--- Comment #4 from Wade Berrier wberrier@gmail.com --- *** Bug 45669 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=42137
--- Comment #5 from Wade Berrier wberrier@gmail.com --- For what it's worth, I tried some games with Steam/Proton that used to exhibit this behavior (Lego Star Wars, for example) and now the games are working as expected in that environment.
I'm not sure what to attribute the fix for.
https://bugs.winehq.org/show_bug.cgi?id=42137
pattietreutel katyaberezyaka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |katyaberezyaka@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=42137
jeremiahpwilson@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremiahpwilson@yahoo.com
--- Comment #6 from jeremiahpwilson@yahoo.com --- I can still reproduce the "Z/rZ behavior in top left of Wine Controller Test" issue with a Steam Controller, sc-controller 0.4.7, and Wine-TKG 4.19.r0.g1f775840. I also suspect it's responsible for weird movement in Final Fantasy IX and menu issues in Final Fantasy VII.
https://bugs.winehq.org/show_bug.cgi?id=42137
--- Comment #7 from jeremiahpwilson@yahoo.com --- For now, I've managed to find a workaround using evdev-joystick to map the axes to -100 and +100. It seems to work all right, but I've only tested it on Final Fantasy IX so far, so I don't know if it'll fix all the half-axis problems.
https://bugs.winehq.org/show_bug.cgi?id=42137
Rémi Bernon rbernon@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rbernon@codeweavers.com
--- Comment #8 from Rémi Bernon rbernon@codeweavers.com --- This should be fixed by today's release, thanks to the new winexinput driver and when using a dinput HID backend joystick. Although it's still in an experimental stage it should hopefully be usable.
https://bugs.winehq.org/show_bug.cgi?id=42137
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #9 from joaopa jeremielapuree@yahoo.fr --- FOllowing Remi Bernon, this bug should be fixed in wine-6.19 (see comment 7). Can an administrator close this bug as FIXED?
https://bugs.winehq.org/show_bug.cgi?id=42137
Rémi Bernon rbernon@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |2eea1d615ae7e74282fe19e015e | |cadd10b4be9ee Status|NEW |RESOLVED
--- Comment #10 from Rémi Bernon rbernon@codeweavers.com --- Marking as fixed, it can be confirmed with joy.cpl and also compared between the normal operation mode with combined triggers, and "overriden" mode where DInput overrides ownership of the XInput device, and reports the triggers as separate axes.
https://bugs.winehq.org/show_bug.cgi?id=42137
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.20.