On Tue Jun 18 15:15:44 2024 +0000, Rémi Bernon wrote:
In general we prefer to avoid options, unless really necessary. In this case the option doesn't seem to be necessary and instead we should have a way to send unaccelerated values with rawinput messages and accelerated values with the other messages. You still need to send accelerated input x/y values for non-raw mouse messages, and other cursor position logic anyway. This could be done like the wine-staging patch you used here, with a flag, but then it would require calling NtUserSendHardwareInput twice, and that's probably not great. Otherwise you could pass the raw values in a custom struct, as NtUserSendHardwareInput lparam, possibly with a flag to indicate the presence or absence of raw values (so that other drivers can keep the current behavior).
@rbernon I tried to make the code universal and it retains the current behavior if the flag was not passed by the driver. I noticed some things in your proton patches, but I still don't fully understand how it all works.