On Thu Jul 31 16:50:21 2025 +0000, Tomasz Pakuła wrote:
Okay, yeah. I think I finally understand the issue at hand here. The autocenter behavior can/is different for other drivers, but since everything in Wine passes through PID, that's they way everything will behave on the other side. Since no FFB racing wheel that's build upon PID supports this non-standard auto-centering, some games might not actually disable autocenter properly because it didn't come up in their testing. In my testing, I found that `PID_USAGE_DC_STOP_ALL_EFFECTS` does not actually always come after reset, at least in ETS2/ATS but maybe this game actually check first if the device supports autocenter, instead of just blindly disabling it?
What is being tested is that:
``` IDirectInputDevice8_SetProperty( device, DIPROP_AUTOCENTER, DIPROPAUTOCENTER_OFF ) IDirectInputDevice8_Acquire( device ) ```
Triggers `PID_USAGE_DC_DEVICE_RESET` + `PID_USAGE_DC_STOP_ALL_EFFECTS`, and that:
``` IDirectInputDevice8_SetProperty( device, DIPROP_AUTOCENTER, DIPROPAUTOCENTER_ON ) IDirectInputDevice8_Acquire( device ) ```
Triggers `PID_USAGE_DC_DEVICE_RESET` only, and by default the device has the property set to `DIPROPAUTOCENTER_ON` (so `Acquire` will trigger the latter).
And that seems to be the only effect of DIPROP_AUTOCENTER with the generic HID PID DInput driver. Of course, applications may also have different expectations for the reasons above if a vendor-specific DInput driver should be involved.