synaptics: ValuatorAxis limits are set from device limits => non-mooth scrolling

Tibor Zenis zenis at fmph.uniba.sk
Tue May 11 09:01:09 PDT 2010


Hello,
the synaptics driver sets the ValuatorAxis limits to the device limits
(like an absolute axis device - synaptics driver sends relative events
to X-server) and the X pointer position can obtain only discrete values.
The cursor moves by stairs.
Example:
  X-server x-resolution: 1920
  Touchpad: x-axis range 32 - 544
    Only every  1920 / (544 - 32) = 3.75  column can be hit


Next simple patch disables setup of the ValuatorAxis limits and after
applying the patch the cursor moves smoothly with a pixel precision.

Regards,
	Tibor Zenis



--- xserver-xorg-input-synaptics-1.2.1/src/synaptics.c  2010-04-01 16:32:13.000000000 +0200
+++ xserver-xorg-input-synaptics-1.2.1_fix/src/synaptics.c      2010-04-01 16:17:47.000000000 +0200
@@ -922,7 +922,8 @@ DeviceInit(DeviceIntPtr dev)
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
             axes_labels[0],
 #endif
-            min, max, priv->resx * 1000, 0, priv->resx * 1000);
+//            min, max, priv->resx * 1000, 0, priv->resx * 1000);
+            -1, -1, 1, 0, 1);
     xf86InitValuatorDefaults(dev, 0);
 
     /* Y valuator */
@@ -940,7 +941,8 @@ DeviceInit(DeviceIntPtr dev)
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
             axes_labels[1],
 #endif
-            min, max, priv->resy * 1000, 0, priv->resy * 1000);
+//            min, max, priv->resy * 1000, 0, priv->resy * 1000);
+            -1, -1, 1, 0, 1);
     xf86InitValuatorDefaults(dev, 1);
 
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0





-- 
,..,.,..,.,..,.,..,.,..,.,..,
; Tibor Zenis               ;
: zenis @ fmph . uniba . sk :
'``'`'``'`'``'`'``'`'``'`'``'


More information about the xorg-devel mailing list