[PATCH v9 6/8] winex11.drv: Implement native mouse-movement raw-input using RawMotion.
Rémi Bernon
rbernon at codeweavers.com
Tue Jul 30 02:42:37 CDT 2019
On 7/29/19 7:00 PM, Derek Lesho wrote:
> I agree that splitting up the patches is a good idea, but is it
> necessary that we continue supporting XInput 2.0? 2.1 was released in
> 2011 and I doubt many people running the latest versions of wine are
> going to be on such an ancient xserver.
I agree but it may be a matter of taste and Alexandre will decide
whether he's OK with requiring XInput >= 2.1. I wrote the patch to be
backward compatible but it could be simplified if that's OK.
> Also, I am not quite sure what you mean by replacing the existing code
> with the rawinput version.
AFAIU the existing RawMotion event handler was sending INPUT messages to
the server for the sole purpose of emulating and sending raw input
messages. It is not required anymore so you can replace this "normal"
input with your "raw" input code. The "normal" input messages will still
be sent when MotionNotify events are processed.
> Windows raw-input still operates on ints,
> and XI2 only sends rawmotion mouse events in raw_values as whole
> numbers, even if they're floats. However, when getting the data from
> valuators.values, there are not whole due from mouse acceleration /
> scaling. Even if we did send the floats to wineserver, I don't know
> how we'd transform them ourselves to match what the DE does ourselves.
From what I could see for relative X/Y, XInput2 raw values looks to be
integral values in floating point fields, and the values are the same as
on Windows: +-1.0 for the smallest increment. Of course it may depend on
the hardware / driver; I tested with some generic touchpad and mouse
with the same results.
It looks to be slightly different for mouse wheel though, with an 8x factor:
* Using a stepping mouse wheel, I saw +-15.0 for a wheel step in
XInput2, corresponding to +-120 on Windows.
* With touchpad finger scrolling, the smallest XInput2 raw value was
around 0.488158 but Windows was acting like it was accumulating until
value was >= 120 (but that may also be the VM acting in the middle).
--
Rémi Bernon <rbernon at codeweavers.com>
More information about the wine-devel
mailing list