Tim Schumacher : dinput/linuxinput: Remap wheel axes to X, Y, and Z.

Alexandre Julliard julliard at winehq.org
Mon Jun 3 16:07:14 CDT 2019


Module: wine
Branch: master
Commit: 5d51d8a25efcfd73687f5f59e817ee92824ca4ea
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5d51d8a25efcfd73687f5f59e817ee92824ca4ea

Author: Tim Schumacher <timschumi at gmx.de>
Date:   Sat Jun  1 13:49:51 2019 +0200

dinput/linuxinput: Remap wheel axes to X, Y, and Z.

Signed-off-by: Tim Schumacher <timschumi at gmx.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/joystick_linuxinput.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 8d80b34..fdfbc7f 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -502,14 +502,18 @@ static JoystickImpl *alloc_device(REFGUID rguid, IDirectInputImpl *dinput, unsig
     /* Count number of available axes - supported Axis & POVs */
     for (i = 0; i < ABS_MAX; i++)
     {
-        if (i < WINE_JOYSTICK_MAX_AXES &&
+        if (idx < WINE_JOYSTICK_MAX_AXES &&
+            i < ABS_HAT0X &&
             test_bit(newDevice->joydev->absbits, i))
         {
             newDevice->generic.device_axis_count++;
             newDevice->dev_axes_to_di[i] = idx;
             newDevice->generic.props[idx].lDevMin = newDevice->joydev->axes[i].minimum;
             newDevice->generic.props[idx].lDevMax = newDevice->joydev->axes[i].maximum;
-            default_axis_map[idx] = i;
+            if (i >= 8 && i <= 10) /* If it's a wheel axis... */
+                default_axis_map[idx] = i - 8; /* ... remap to X/Y/Z */
+            else
+                default_axis_map[idx] = i;
             idx++;
         }
         else




More information about the wine-cvs mailing list