The axes wheel, gas, and brake are just differently named replacements for X, Y, and Z when using wheel-like joysticks.
Make those accessible by remapping them to X, Y, and Z internally.
Signed-off-by: Tim Schumacher timschumi@gmx.de --- dlls/dinput/joystick_linux.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 628674644e..d1e9d43470 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -239,6 +239,14 @@ static INT find_joystick_devices(void) joydev.dev_axes_map[j] = j; found_axes++; } + else if (axes_map[j] <= 10) + { + /* Axes 8 through 10 are Wheel, Gas and Brake, + * remap to 0, 1 and 2 + */ + joydev.dev_axes_map[j] = axes_map[j] - 8; + found_axes++; + } else if (axes_map[j] == 16 || axes_map[j] == 17) { -- 2.21.0
Wheel, gas, and brake are replacements for X, Y and Z in wheel-like joysticks. Remap them internally to send inputs as X, Y, and Z.
Signed-off-by: Tim Schumacher timschumi@gmx.de --- dlls/winejoystick.drv/joystick_linux.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/dlls/winejoystick.drv/joystick_linux.c b/dlls/winejoystick.drv/joystick_linux.c index 287f4be60d..7c24040761 100644 --- a/dlls/winejoystick.drv/joystick_linux.c +++ b/dlls/winejoystick.drv/joystick_linux.c @@ -280,10 +280,13 @@ static const WCHAR ini[] = {'W','i','n','e',' ','J','o','y','s','t','i','c','k', switch (jstck->axesMap[i]) { case 0: /* X */ case 1: /* Y */ + case 8: /* Wheel */ + case 9: /* Gas */ lpCaps->wNumAxes++; break; case 2: /* Z */ case 6: /* Throttle */ + case 10: /* Brake */ lpCaps->wNumAxes++; lpCaps->wCaps |= JOYCAPS_HASZ; break; @@ -365,13 +368,16 @@ LRESULT driver_joyGetPosEx(DWORD_PTR dwDevID, LPJOYINFOEX lpInfo) if (ev.type == (JS_EVENT_AXIS)) { switch (jstck->axesMap[ev.number]) { case 0: /* X */ + case 8: /* Wheel */ jstck->x = ev.value; break; case 1: /* Y */ + case 9: /* Gas */ jstck->y = ev.value; break; case 2: /* Z */ case 6: /* Throttle */ + case 10: /* Brake */ jstck->z = ev.value; break; case 5: /* Rz */ -- 2.21.0
The axes wheel, gas, and brake are just differently named replacements for X, Y, and Z when using wheel-like joysticks.
Make those accessible by remapping them to X, Y, and Z internally.
Signed-off-by: Tim Schumacher timschumi@gmx.de --- v2: This time without tabs --- dlls/dinput/joystick_linux.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 628674644e..d1e9d43470 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -239,6 +239,14 @@ static INT find_joystick_devices(void) joydev.dev_axes_map[j] = j; found_axes++; } + else if (axes_map[j] <= 10) + { + /* Axes 8 through 10 are Wheel, Gas and Brake, + * remap to 0, 1 and 2 + */ + joydev.dev_axes_map[j] = axes_map[j] - 8; + found_axes++; + } else if (axes_map[j] == 16 || axes_map[j] == 17) { -- 2.21.0