Extra pointer motion with current git xf86-input-synaptics

Peter Hutterer peter.hutterer at who-t.net
Sun Sep 28 01:17:31 PDT 2008

On Sun, Sep 28, 2008 at 08:23:51AM +0100, Magnus Kessler wrote:
> I have just reverted the part of commit  
> c405a69f83dab77cfe6c76f718a3ca5614a85918 that passes the actual x/y ranges 
> to xf86InitValuatorAxisStruct. Now the extra movement is gone, but I get a 
> somewhat quicker cursor movement than I was used to before. This would be 
> due to the other recent changes that set new default values for the 
> acceleration parameters, of course.

> I'm trying to see where in the valuators are actually used inside the X 
> server. With a smaller range than [0, -1] some rounding error (?) seems to 
> create that extra pixel offset for each event processed. This is on a 
> 64-bit platform, in case this is important.

Check out GetPointerEvents in xserver/dix/getevents.c. 

We take valuator coordinates, scale them to screen coords based on the axis
information and then scale them back to device coords*.

The screen coords are used to move the cursor and the scaling is done based on
the axis ranges. Hence the different acceleration when you change the axis
range to 0,-1 (in which case the screen coords are used as axis ranges).

On top of it all, pointer acceleration kicks in as well. So the problem you're
experiencing (i don't see it on similar hardware) can be:
1. in-driver scaling issues
2. server scaling issues
3. pointer accel issues

1. is easy to figure out by putting xf86Msg(X_ERROR, "...") before
xf86PostMotionEvent and xf86PostButtonEvent in the driver and checking the 
valuators. If they change, the driver is to blame.

2 and 3 are a bit harder to find out, but narrowing it down to 1 or [2,3]
would be good already.


* the last step is buggy, we lose information here :(

More information about the xorg mailing list