On Thu Jul 31 16:00:15 2025 +0000, Tomasz Pakuła wrote:
Okay, so without doing this out-of-spec thing, it would be impossible to pass along autocenter at all right? Or is it still impossible at this moment?
We implement the HID PID protocol the way Microsoft does it in dinput.dll, and it has some autocenter semantics we cannot really change without breaking hidraw support (ie: autocenter should be enabled after PID_USAGE_DC_DEVICE_RESET is received on the device side, disabled after PID_USAGE_DC_STOP_ALL_EFFECTS is received. DInput will send PID_USAGE_DC_STOP_ALL_EFFECTS right after PID_USAGE_DC_DEVICE_RESET if autocenter has been disabled on the device by the application).
We can possibly consider adding some Wine-specific bits in the report descriptors, implemented on both dinput and winebus sides to better support SDL/evdev cases, but neither SDL nor evdev seem to have detailed enough API to control these things, and it doesn't solve any vendor-specific behavior problem we may have.
Many vendors don't use the generic HID PID DInput driver on Windows but ship their own DInput and NT device driver. Applications may embed specific knowledge of these devices, and of their Windows drivers behavior. For these, either we would either need to rewrite each vendor driver, which is probably not something we want to do, or we need to work to make the Windows driver work in Wine.