I also located the simracing community discussions around autocenter that caused Tomasz to submit the merge request that removed `DIPROP_AUTOCENTER` support from the SDL and udev input backends. The discussions are in the Matrix Simracing chat group. There is a [link here](https://simracingonlinux.com/) * choose a web client, * signup for a matrix account, * join the Simracing channel (#simracer:matrix.org), and * search the history for autocenter.
and in this [Proton issue report](https://github.com/ValveSoftware/Proton/issues/8395#issuecomment-2857256211).
The issue was that the people would use a force feedback customization program like [Oversteer](https://github.com/berarma/oversteer) to setup their autocenter like they liked. Then when they started their game, the Wine SDL and udev input backends would make the autocenter API calls to turn it off or fully on, undoing whatever customization the individual had made. The workaround was to tweak the autocenter setting in Oversteer again while the program was running, which would cause Oversteer to write it's value again, overriding the Wine value.
So I don't think the initial value work I did in this patch is going to work for these people apart from those who just want it fully off, as it still only does fully on or fully off (and some devices have a bunch of other autocenter settings too, like the amount of damping mixed in to the spring). Fundamentally the problem is Wine and Oversteer colliding on the API.
I haven't thought a lot about it yet, but I think in an ideal world the driver would expose force feedback customization via the sysfs (as many are now) that would then be overlaid on top of the effects API (e.g., like a master/device volume control scales the application volume control).
Then customization programs like Oversteer could just work with the sysfs interface and not collide with programs using the effects API like Wine. This would support multiple customization programs as well as, unlike with force feedback API, customization programs could read the current state from sysfs and initialize their interface with that.