[Bug 381884] Re: Appletouch touchpad driver produces jumpy two-fingered scrolling

Blaine frikker at gmail.com
Wed Sep 23 16:15:42 UTC 2009


Hey everyone.
  I have been hacking away at appletouch.c for a little while now and have had minor success on various fronts.  The reason I am looking at appletouch, not synaptics, is because ideally we want the driver to not 'average' the mouse position when > 2 fingers are being used.  Synaptics only gets the scroll x,y position and finger count.  It would be tough to "unaverage" out the x,y params in the higher level driver.

  So far I have had success in disabling scrolling altogether, to allow
for a fully stable right click.  This means that as soon as I put > 1
finger on the track pad, the cursor will not move, allowing a right
click functionality.  However, the way I implemented it does not allow
for any kind of cursor movement, at all, with more than 1 finger on the
pad.  The side-scrolling feature still works, and in fact this
configuration is pretty nice.  However, ideally we want 2-finger
scrolling.

  My second pseudo-success has come in that I can get 2-finger scrolling
to work without jumpiness, but only if the first finger to touch the pad
is on "top" of the bottom finger (closer to the keyboard).  If the first
finger is furthest from the keyboard, however, jumpy behaviour comes
back.

  I have a few ideas I'm going to try out today.  I'll post back here
with success.  I see, at a minimum, a patch for people who do not want
2-finger scrolling but DO want 2-finger right clicking.

Blaine

PATCH for stable right click, disables 2-finger scrolling.  Edit /etc/hal/fdi/policy/appletouch.fdi and turn on vertical edge scrolling.
/drivers/input/mouse/appletouch.c

620,623c620,629
< 			x = (dev->x_old * 3 + x) >> 2;
< 			y = (dev->y_old * 3 + y) >> 2;
< 			dev->x_old = x;
< 			dev->y_old = y;
---
> 			// *** Fixes the right-click instability problem, but disables 2-finger scrolling ***
> 			if ((max(x_f, y_f)) == 2) {
> 				x = dev->x_old;
> 				y = dev->y_old;
> 			} else {
> 				x = (dev->x_old * 3 + x) >> 2;
> 				y = (dev->y_old * 3 + y) >> 2;
> 				dev->x_old = x;
> 				dev->y_old = y;
> 			}

-- 
Appletouch touchpad driver produces jumpy two-fingered scrolling
https://bugs.launchpad.net/bugs/381884
You received this bug notification because you are a member of Kernel
Bugs, which is subscribed to Linux.




More information about the kernel-bugs mailing list