http://bugs.winehq.org/show_bug.cgi?id=36035
Bug ID: 36035 Summary: not every joystick button is recognized, mapped correctly Product: Wine Version: 1.7.17 Hardware: x86-64 OS: Mac OS X Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dinput Assignee: wine-bugs@winehq.org Reporter: f.platte@platte-web.de
Wine 1.7.17 solved some joystick related crashes for me (refer to bug 33958 [http://bugs.winehq.org/show_bug.cgi?id=33958]).
Anyway some work still needs to be done, as not every button is recognized (missing: A, B, X, Y, black, white - XBOX [original] Controller, while Start/Back are working and being assigned as the default go forward/backward buttons). The D-Pad works, too, but it cannot be used for navigation (or similar), as it's only recognized as being 4 independent buttons. Furthermore Wine does not handle the Z/RZ axis properly (others work). They are treated as independent axis while actually both represent half an axis.*** - This makes acceleration (racing game) to be active while not being actually pressed and braking being activated upon hitting "acceleration" (Z-axis). The RZ axis is being ignored completely although it's assigned to breaking in the games settings. This is not an issue with the game (Colin McRea Rally 2005) as it occurs within other games, too.
I'm using my XBOX one controller with a special OS X driver (http://xhd.sourceforge.net) in version 2.0.0 (http://xhd.cvs.sourceforge.net/viewvc/xhd/xhd/Release/) with 64bit support, which is required by OS X Mountain Lion and greater. (I'm on 10.8.5.) - The driver itself does work (tested with OS X native/cider games and confirmed with the drivers panel graphical feedback.)
*** I do not now how it's actually supposed to behave/work, but this seems lil the best explanation concerning functionality.
http://bugs.winehq.org/show_bug.cgi?id=36035
Rastafabi f.platte@platte-web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ken@codeweavers.com See Also| |http://bugs.winehq.org/show | |_bug.cgi?id=33958
http://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #1 from Rastafabi f.platte@platte-web.de --- Created attachment 48188 --> http://bugs.winehq.org/attachment.cgi?id=48188 Screenshots to show the issue (jpg, png)
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #2 from Austin English austinenglish@gmail.com --- This is your friendly reminder that there has been no bug activity for over a year. Is this still an issue in current (1.7.51 or newer) wine?
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #3 from Rastafabi f.platte@platte-web.de --- Yes. Still an issue. Some axis are badly recognised/assigned, so that they can't be used ingame.
https://bugs.winehq.org/show_bug.cgi?id=36035
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |00cpxxx@gmail.com, | |winetest@luukku.com
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #4 from winetest@luukku.com --- Can you retest with wine 1.8 or 1.9 series? If there has been any improvements.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #5 from Rastafabi f.platte@platte-web.de --- I'm still experiencing the same issues with latest stable and development versions. One thing to consider might be that it's not actually an HID-compliant joystick, though the OS X driver does make it so, which works seamlessly in system-native games. also most of the "buttons" are actually axis as they are pressure sensitive (valid for A, B, X, Y, black and white and obviously the pads and the "rear shoulder controls"). However this does not make a difference within games on OS X as the driver even offers a configuration to advertise them as buttons. Anyway no matter which mode is selected it still does not work within wine.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #6 from Bruno Jesus 00cpxxx@gmail.com --- Please attach a +dinput log. You can read more at http://wiki.winehq.org/FAQ#get_log
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #7 from Rastafabi f.platte@platte-web.de --- I would like to post the log but it's an 200MB log/txt file after just launching and quitting a game with +dinput being the only active variable.
https://bugs.winehq.org/show_bug.cgi?id=36035
fjfrackiewicz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fjfrackiewicz@gmail.com
--- Comment #8 from fjfrackiewicz@gmail.com --- (In reply to Rastafabi from comment #7)
I would like to post the log but it's an 200MB log/txt file after just launching and quitting a game with +dinput being the only active variable.
You can still compress it and add the compressed log as a file :)
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #9 from fjfrackiewicz@gmail.com --- (In reply to fjfrackiewicz from comment #8)
(In reply to Rastafabi from comment #7)
I would like to post the log but it's an 200MB log/txt file after just launching and quitting a game with +dinput being the only active variable.
You can still compress it and add the compressed log as a file :)
As an attachment I meant.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #10 from Rastafabi f.platte@platte-web.de --- Created attachment 56421 --> https://bugs.winehq.org/attachment.cgi?id=56421 +dinput Logfile
Couldn't imagine an txt-file could be compressed by any significant amount. Now it's attached.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #11 from Bruno Jesus 00cpxxx@gmail.com --- This is what Wine recognizes for your controller:
trace:dinput:alloc_device 6 axes 8 buttons 0 povs
Axes X,Y, rX, rY, Z, lZ. Let's first check if all buttons and axes are correctly recognized. In a Xbox 360 controller the correct number is 6 axes, 11 buttons and 1 POV, so it seems weird to me the 8 buttons and 0 POVs. What is the real number of axes, buttons and povs that native OSX finds (let's forget about the half-axis problem for the moment).
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #12 from Bruno Jesus 00cpxxx@gmail.com --- Created attachment 56496 --> https://bugs.winehq.org/attachment.cgi?id=56496 patch
Please get a new +dinput with the attached patch. I don't have OSX so I could not compile or test the patch. Minor compilation problems may happen.
https://bugs.winehq.org/show_bug.cgi?id=36035
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #56496|0 |1 is obsolete| |
--- Comment #13 from Bruno Jesus 00cpxxx@gmail.com --- Created attachment 56497 --> https://bugs.winehq.org/attachment.cgi?id=56497 patch 2
Sorry, I misinterpreted Usage Page vs Usage, the previous patch is incorrect.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #14 from Bruno Jesus 00cpxxx@gmail.com --- The povs = 0 is expected because the driver or the OS is not enumerating a kHIDUsage_GD_Hatswitch. The driver uses plain buttons to emulate the POV (aka hat).
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #15 from Rastafabi f.platte@platte-web.de --- Created attachment 56517 --> https://bugs.winehq.org/attachment.cgi?id=56517 Button map
Here you have the button map. I don't know when I'll be able to commit the test.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #16 from Bruno Jesus 00cpxxx@gmail.com --- I see what you mean but that is not what the driver is passing to us through HID. That is why I need the log with the patch applied.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #17 from Rastafabi f.platte@platte-web.de --- I tried building dinput.dll.so, but it does not work to to the variable element being used before being declared (lines 638 and 642). Building the entire engine failed for me due to some gdi related errors.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #18 from Rastafabi f.platte@platte-web.de --- The specified lines refer to the joystick_osx.c file
https://bugs.winehq.org/show_bug.cgi?id=36035
Ken Thomases ken@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #56497|0 |1 is obsolete| |
--- Comment #19 from Ken Thomases ken@codeweavers.com --- Created attachment 56530 --> https://bugs.winehq.org/attachment.cgi?id=56530 Fixed version of patch
As requested on #winehackers, I have tweaked attachment 56497 to fix build errors.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #20 from Rastafabi f.platte@platte-web.de --- Created attachment 56540 --> https://bugs.winehq.org/attachment.cgi?id=56540 +dinput Logfile (build 56530)
As already mentioned I could only build input.dll.so as building the whole engine failed. This is the log using the manually copied file on 2.0rc1 engine.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #21 from Rastafabi f.platte@platte-web.de --- Created attachment 56541 --> https://bugs.winehq.org/attachment.cgi?id=56541 Button map (updated)
Again the image of the labelled image of the controller. But now with further details and a screenshot of the driver panel in OS X confirming all the functions. BTW: I have the direct comparison between the Mac-nativ (stuttering but fully working) version of Colin McRea 2005 (called Colin McRea Mac) and the smoothly running PC version which lacks full controller support.
https://bugs.winehq.org/show_bug.cgi?id=36035
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|not every joystick button |Colin McRea Rally 2005 has |is recognized, mapped |problems identifying Xbox |correctly |controller buttons with XHD | |joystick driver in OSX Keywords| |hardware
--- Comment #22 from Bruno Jesus 00cpxxx@gmail.com --- Thanks for testing the patch, it works as I expected. Now every button is recognized correctly.
trace:dinput:get_osx_device_elements axes 6 povs 0 buttons 14
Can you reproduce the issue using the game demo? http://www.gamershell.com/download_6814.shtml
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #23 from Rastafabi f.platte@platte-web.de --- It does not yet work. Being curious to why I checked wine's controller panel. While the buttons indeed are registered they do not react on input yet. BTW: Are you heading at fixing the missing buttons AND the "half-axis" issue?
https://bugs.winehq.org/show_bug.cgi?id=36035
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW
--- Comment #24 from Bruno Jesus 00cpxxx@gmail.com --- My patch was only half of the job, it was meant to recognize the buttons and now it does, but there is a missing part related to parsing the buttons pressed which is a bit more of code. I will have a way to test this in OSX in near future so I'll make a proper patch, for now just wait a bit more please.
The half-axis problem will be fixed with the new HID driver so Dinput will be able to address that better.
----------------------------------------
As a reminder to myself:
Make poll_osx_device_state recognize the misc button the same way as get_osx_device_elements.
trace:dinput:poll_osx_device_state element <IOHIDElement 0x40263b60 type 1 usage 9/1 device 0x40325930> fixme:dinput:poll_osx_device_state kIOHIDElementTypeInput_Misc / unhandled usage 1 trace:dinput:poll_osx_device_state element <IOHIDElement 0x40263510 type 1 usage 9/2 device 0x40325930> fixme:dinput:poll_osx_device_state kIOHIDElementTypeInput_Misc / unhandled usage 2 trace:dinput:poll_osx_device_state element <IOHIDElement 0x40263d00 type 1 usage 9/3 device 0x40325930> fixme:dinput:poll_osx_device_state kIOHIDElementTypeInput_Misc / unhandled usage 3
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #25 from Rastafabi f.platte@platte-web.de --- Alright! Thank you for your work! Seeing forward to use it. If you need further testing drop me a note.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #26 from Bruno Jesus 00cpxxx@gmail.com --- I could install the driver but now I noticed that it only works for the original Xbox controller, I only have the 360 one. I tried tweaking the PID in the files but when I plug the controller it blinks and turns off, OSX dmesg shows a connection of the device but nothing else, I don't how to further debug because I lack OSX skills.
At least I can compile the patch and I'll send for you to test.
https://bugs.winehq.org/show_bug.cgi?id=36035
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #56530|0 |1 is obsolete| |
--- Comment #27 from Bruno Jesus 00cpxxx@gmail.com --- Created attachment 56673 --> https://bugs.winehq.org/attachment.cgi?id=56673 patch v2
Please get a new +dinput with this patch. I tested some other HID controllers and they work and from the previous log you attached this should work for the XHD driver too.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #28 from Rastafabi f.platte@platte-web.de --- It does work now! Every button is recognised and can be assigned in game.
I don't now if it's related to this but the Z and RZ axis are not recognised at all if they are set to mimic buttons within the OS X driver panel. Apart from this the missing-button-bug can be considered to be solved and the remaining issues (half-axis-problem, axis as buttons not recognised) could be separated into new bugs I think.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #29 from Bruno Jesus 00cpxxx@gmail.com --- Please attach a new +dinput with the patch by doing this:
1) get into the game screen where you config the joystick 2) press A button 3) then press Z/rZ 5 times each 4) press Y button
This is just to simplify the search for the axes events inside the log.
For the half-axis problem I have created bug 42137.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #30 from Rastafabi f.platte@platte-web.de --- Created attachment 56698 --> https://bugs.winehq.org/attachment.cgi?id=56698 Winelog, +dinput - documenting axis-as-buttons recognition issue
+dinput log as requested. buttons were pressed within the controller calibration panel as requested A - 5*Z - 5*Rz - Y nothing else pressed during run.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #31 from Rastafabi f.platte@platte-web.de --- here is another great macOS XBOX controller driver which theoretically includes support for any XBOX controller. This one does not work for my hardware revision though, as my controller is recognised as hub. Anyway it should work for you, as you mentioned you have a XBOX 360 controller. However I do not know whether this driver delivers comparable results concerning the HID events. https://github.com/360Controller/360Controller
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #32 from Bruno Jesus 00cpxxx@gmail.com --- (In reply to Rastafabi from comment #30)
+dinput log as requested. buttons were pressed within the controller calibration panel as requested A - 5*Z - 5*Rz - Y nothing else pressed during run.
Thanks for the log and, you executed the actions perfectly so the log was very clear.
Unfortunately the driver does not do what I believe you think. It will not turn the Z/rZ axes into standard buttons. In the log there are 10 registered changes in the Z and rZ, 5 on each. The problem seems to be related to the range, but I'm unsure it is a Wine problem.
If you don't make the triggers act as buttons do they work correctly? If yes, please add a new log repeating the same procedure.
https://bugs.winehq.org/show_bug.cgi?id=36035
--- Comment #33 from Rastafabi f.platte@platte-web.de --- (In reply to Bruno Jesus from comment #32)
Unfortunately the driver does not do what I believe you think. It will not turn the Z/rZ axes into standard buttons. In the log there are 10 registered changes in the Z and rZ, 5 on each. The problem seems to be related to the range, but I'm unsure it is a Wine problem.
Your indeed right. I should have checked before. Sorry. While the controllers driver panel offers the specified settings it actually does not do anything. I tested them on a native macOS game which results in the axis being seen as axis anyway. Seems like this functionality is broken within the driver itself. Quiet stunning anyway how good the driver works considering, that is was being written for OS X 10.2 Jaguar which was released 14 years ago in 2002.
This means you can close this bug as soon as you send your patch upstream.
BTW.: Do you have a any ETA for your HID Driver (and with it for the half-axis problem)?
https://bugs.winehq.org/show_bug.cgi?id=36035
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
--- Comment #34 from Bruno Jesus 00cpxxx@gmail.com --- Glad to see it works properly now with the patch and that the other problem was not a problem. I'll test that other 360 driver from comment 31, it is surprising to me that there is no native Xbox driver for OSX.
I have no estimates about the HID driver because Wine is currently in code freeze for the 2.0 release and also because I'm not directly involved in it, but if I had to guess it would be at some point in this year.
https://bugs.winehq.org/show_bug.cgi?id=36035
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #56673|0 |1 is patch| |
https://bugs.winehq.org/show_bug.cgi?id=36035
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |leslie_alistair@hotmail.com
--- Comment #35 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Is this still an issue in wine 3.20?