Alexandre Julliard pushed to branch master at wine / wine
Commits: d2dbc8db by Tomasz Pakuła at 2025-03-25T21:50:48+01:00 dinput/tests: Add tests for 6-axis force feedback joystick.
- - - - - e986b80a by Tomasz Pakuła at 2025-03-25T21:50:48+01:00 include: Define the max number of supported HID PID axes.
- - - - - 613997b5 by Tomasz Pakuła at 2025-03-25T21:50:48+01:00 winebus: Support creation of dynamic number of PID axes.
Allow the PID descriptor building function to create up to MAX_PID_AXES FFB-enabled axes. This will allow better effect handling and support for devices with more than two FFB axis.
Devices with only one axis, can be actually presented as such.
- - - - - 8e3acf8e by Tomasz Pakuła at 2025-03-25T21:50:48+01:00 winebus: Get the number of haptic axes from SDL.
Wine will now create PID axes in the virtual descriptor based on the haptic axes found in the SDL joystick.
With the recent SDL hint SDL_JOYSTICK_HAPTIC_AXES, it's possible to limit the exposed FFB axes to just one, even if device presents more. This, in turn fixes force feedback in Richard Burns Rally which includes all ffb axes on effect creation, but then updates this effec with only the steering axis. Changing cAxes and rgdwAxes after effect creation is forbidden and renders force feedback broken.
This issue is not wine-specific as the same thing happens on Windows for all steering wheels which define more than one FFB axis. On windows, this can be worked around with registry hacks which remove DIDFT_FFACTUATOR and DIDOI_FFACTUATOR from second axis dwType and dwFlags.
SDL_HapticNumAxes() was available since SDL 2.0
- - - - -
7 changed files:
- dlls/dinput/joystick_hid.c - dlls/dinput/tests/force_feedback.c - dlls/winebus.sys/bus_sdl.c - dlls/winebus.sys/bus_udev.c - dlls/winebus.sys/hid.c - dlls/winebus.sys/unix_private.h - include/wine/hid.h
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/compare/f2f198dd9855460e2b7769e32221fb...