https://bugs.winehq.org/show_bug.cgi?id=55653
Bug ID: 55653 Summary: Logitech Extreme 3d Joystick has axes mapped incorrectly Product: Wine Version: 8.16 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dinput Assignee: wine-bugs@winehq.org Reporter: jonathan@jdcox.net Distribution: ---
Using the jstest utility the joystick reports this:
Joystick (Logitech Logitech Extreme 3D) has 6 axes (X, Y, Rz, Throttle, Hat0X, Hat0Y)
wine control shows that Rz is mapped to the Z axis and the throttle is mapped to the Rz axis in wine. These two should be flipped.
I have tested with SDL disabled and enabled and I get the same behavior.
This occurs in current wine and in current proton releases.
The problem does not occur in Proton 6 series, but does with 7 and later.
I am aware this bug tracker is for wine, but using Proton was the best way to test an older, albeit heavily patched, version of wine that I am currently aware of.
This issue is a problem because games in the X-Wing and Tie Fighter series of games treat the rudder (or accidental joystick rotation on this cheap joystick) as throttle movements and constantly adjust throttle during gameplay.
https://bugs.winehq.org/show_bug.cgi?id=55653
Olivier F. R. Dierick o.dierick@piezo-forte.be changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |o.dierick@piezo-forte.be
--- Comment #1 from Olivier F. R. Dierick o.dierick@piezo-forte.be --- Hello,
I don't know if there is a reliable way for Wine to auto-detect the same axes mapping as jstest (I think Wine only gets numbers and assign custom names itself, those names are unrelated to the names from jstest), but I know there is a registry key that you can setup to map the axes manually.
--- Excerpt from https://wiki.winehq.org/Useful_Registry_Keys --- HKEY_CURRENT_USER | +-Software | +-Wine | +-DirectInput | | | +->*<joystick name> = <axes mapping> | | [This maps axes of joystick "joystick name". The "axes mapping" is | | comma-separated list of "axis type"s - one for each joystick axis (hat-pov uses 2 axes). | | "axis type" is one of: X, Y, Z, Rx, Ry, Rz, Slider1, Slider2, POV1, POV2, POV3, POV4. | | To find the joystick name run | | 'WINEDEBUG=+dinput wine game.exe 2>&1 | grep joydev_enum_device' | | Example output: trace:dinput:joydev_enum_deviceW Enumerating the linux Joystick device: /dev/input/js0 (Logitech Logitech Dual Action) | | Example registry entry: "Logitech Logitech Dual Action"="X,Y,Rz,Slider1,POV1". (two "Logitech"s not a typo)] --- end of excerpt ---
Regards.
https://bugs.winehq.org/show_bug.cgi?id=55653
axis6404@proton.me changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |axis6404@proton.me
--- Comment #2 from axis6404@proton.me --- This is probably the same problem https://bugs.winehq.org/show_bug.cgi?id=54947 https://forum.winehq.org/viewtopic.php?t=37595
https://bugs.winehq.org/show_bug.cgi?id=55653
Lone_Wolf Lone_Wolf@klaas-de-kat.nl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Lone_Wolf@klaas-de-kat.nl
--- Comment #3 from Lone_Wolf Lone_Wolf@klaas-de-kat.nl --- I encountered the same issue on archlinux with wine 8.20 while aiming to play n X-Wing Alliance 2.02 [1] .
In the game the twist-axis is seen as throttle, and the real throttle does nothing.
The issue is not limited to the logitecht extreme 3D as the microsoft siewinder precion pro joystick of a friend exhibits exactly the same behaviour .
Since there were reports from 2015 (by myself) & 2019 that didn't mention the issue, I tested older wine versions .
Wine 6.23 is the last version that sets the axes correctly , wine 7.1 and later don't .
evtest showed the joystick axes are seen by linux as X,Y, Rz, throttle, hat0x, hAt0y .
I was unable to use the workaround mentioned in wine wiki[2] to remap the axes. Using Logitect Extreme 3D , "Logitech Extreme 3D" or L"Logitech Extreme 3D" as name had no effect at all.
I'll attach evtest and winedebug logs.
[1] https://appdb.winehq.org/objectManager.php?sClass=version&iId=2916 [2] https://wiki.winehq.org/Useful_Registry_Keys
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #4 from Lone_Wolf Lone_Wolf@klaas-de-kat.nl --- Created attachment 75459 --> https://bugs.winehq.org/attachment.cgi?id=75459 evtest /dev/input/event7
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #5 from Lone_Wolf Lone_Wolf@klaas-de-kat.nl --- Created attachment 75460 --> https://bugs.winehq.org/attachment.cgi?id=75460 WINEPREFIX=~/.wine WINEDEBUG=+dinput wine control joy.cpl > dinput-log.txt 2>&1
https://bugs.winehq.org/show_bug.cgi?id=55653
rens rens.groenewegen@xs4all.nl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rens.groenewegen@xs4all.nl
--- Comment #6 from rens rens.groenewegen@xs4all.nl --- same issue here prior to wine 8.x this worked correctly
joystick map is not parsed from linux, apparently
see difference thrustmaster and logitech extreme 3d pro :
thrustmaster has all axes, going from 0 to 9, 10 total. this results in slot # being the same as function number : 1 = 1, 2 =2, 3 = 3, etc etc. jscal -q /dev/input/js2 jscal -u 10,0,1,2,3,4,5,6,7,16,17,15,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302
logitech extreme (any version , got 2) : jscal -q /dev/input/js0 jscal -u 6,0,1,5,6,16,17,12,288,289,290,291,292,293,294,295,296,297,298,299 /dev/input/js0
logitech only has x, y, throttle and rudder. Logitech Extreme 3D pro) has 6 axes ( 0:X 0 , 1:Y 1 , 2:Rz 5 , 3:Throttle 6 , 4:Hat0X 16 , 5:Hat0Y 17) slot function 0 0 1 1 2 5 3 6 4 16 xhat pov 5 17 yhat pov
but wine 8.x mangles it into this : slot function 0 0 1 1 2 2 3 3
that can NOT work, because there is no function 3 on the logitech stick.....
that s why the throttle does not work. it is not being read.
please fix it
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #7 from rens rens.groenewegen@xs4all.nl --- (In reply to rens from comment #6)
same issue here prior to wine 8.x this worked correctly
joystick map is not parsed from linux, apparently
see difference thrustmaster and logitech extreme 3d pro :
thrustmaster has all axes, going from 0 to 9, 10 total. this results in slot # being the same as function number : 1 = 1, 2 =2, 3 = 3, etc etc. jscal -q /dev/input/js2 jscal -u 10,0,1,2,3,4,5,6,7,16,17,15,288,289,290,291,292,293,294,295,296,297,298,299, 300,301,302
logitech extreme (any version , got 2) : jscal -q /dev/input/js0 jscal -u 6,0,1,5,6,16,17,12,288,289,290,291,292,293,294,295,296,297,298,299 /dev/input/js0
logitech only has x, y, throttle and rudder. Logitech Extreme 3D pro) has 6 axes ( 0:X 0 , 1:Y 1 , 2:Rz 5 , 3:Throttle 6 , 4:Hat0X 16 , 5:Hat0Y 17) slot function 0 0 1 1 2 5 3 6 4 16 xhat pov 5 17 yhat pov
but wine 8.x mangles it into this : slot function 0 0 1 1 2 2 3 3
that can NOT work, because there is no function 3 on the logitech stick.....
that s why the throttle does not work. it is not being read.
please fix it
this means that a t.flight X thrustmaster will work, because slots and functions are identical.. no logitech extreme, force or normal, will work. and probably a whole bunch of sticks with 4 axes and pov x,y will not work either
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #8 from rens rens.groenewegen@xs4all.nl --- (In reply to Olivier F. R. Dierick from comment #1)
Hello,
I don't know if there is a reliable way for Wine to auto-detect the same axes mapping as jstest (I think Wine only gets numbers and assign custom names itself, those names are unrelated to the names from jstest), but I know there is a registry key that you can setup to map the axes manually.
--- Excerpt from https://wiki.winehq.org/Useful_Registry_Keys --- HKEY_CURRENT_USER | +-Software | +-Wine | +-DirectInput | | | +->*<joystick name> = <axes mapping> | | [This maps axes of joystick "joystick name". The "axes mapping" is | | comma-separated list of "axis type"s - one for each joystick axis (hat-pov uses 2 axes). | | "axis type" is one of: X, Y, Z, Rx, Ry, Rz, Slider1, Slider2, POV1, POV2, POV3, POV4. | | To find the joystick name run | | 'WINEDEBUG=+dinput wine game.exe 2>&1 | grep joydev_enum_device' | | Example output: trace:dinput:joydev_enum_deviceW Enumerating the linux Joystick device: /dev/input/js0 (Logitech Logitech Dual Action) | | Example registry entry: "Logitech Logitech Dual Action"="X,Y,Rz,Slider1,POV1". (two "Logitech"s not a typo)] --- end of excerpt ---
Regards.
tried this, makes no difference. its ignored.
wine 8.x simply assumes function nrs are equal to slotnrs.
I have a workaround for this issue, but its of course completely unnecessary.. wine should do what it did before.
workaround: make a virtual joystick with joymap, replacing your hardware, use my GUI to configure your hardware stick for joymap , and it will work again.
info / download is here : https://rensg.home.xs4all.nl/rb3d/joymixerUI.html
use at own risk. might be completely unusable
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #9 from rens rens.groenewegen@xs4all.nl --- the logitech map file for download, simply reads the logitech stick and feeds it to the virtual joymap joystick.
this will result in your game seeing a usable joystick.
might be necessary to first UNPLUG your joystick(s) load the map file with loadmap then plug in the joystick(s)
enjoy.
by the way : affected other games ::
microsoft combat flight sim v3 rise of flight redbaron3d EAW
https://bugs.winehq.org/show_bug.cgi?id=55653
oleg@np880.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |oleg@np880.ru
--- Comment #10 from oleg@np880.ru --- I can confirm this issue. Right now I'm using evsieve to remap this joystick.
sudo evsieve --input /dev/input/by-id/usb-Logitech_Logitech_Extreme_3D-event-joystick --map abs:throttle abs:z --output name='Logitech Logitech Extreme 3D 2'
https://bugs.winehq.org/show_bug.cgi?id=55653
--- Comment #11 from rens rens.groenewegen@xs4all.nl --- (In reply to rens from comment #9)
the logitech map file for download, simply reads the logitech stick and feeds it to the virtual joymap joystick.
this will result in your game seeing a usable joystick.
might be necessary to first UNPLUG your joystick(s) load the map file with loadmap then plug in the joystick(s)
enjoy.
by the way : affected other games ::
microsoft combat flight sim v3 rise of flight redbaron3d EAW
the joymap software now detects plugging and unplugging sticks.
So that means it works automagically now. Just load the map , plugin the sticks and off you go..