[PATCH] ClickPad support v4

Chris Bagwell chris at cnpbagwell.com
Mon Dec 27 13:04:46 PST 2010

On Sat, Dec 25, 2010 at 12:48 PM, Kevin O'Connor <kevin at koconnor.net> wrote:
> Hi Chris,
> I noticed this message on the xorg-devel mailing list:
>> Thank for detailed reply.  Do you mind helping me understand how
>> touchpad is being used when jumps occur?  Is use case:
>> * Move cursor to area you want to click with 1 finger.  Pick up 1
>> finger.  Click in button area with 1 finger.
>> or
>> * Move cursor to area you want to cick with 1 finger.  Leave 1 finger
>> on pad.  Click in button area with 2nd finger.
>> First case would move cursor a little bit because of how sensitive
>> touchpads are and lots of X/Y can be sent between time of touch and
>> button press completed.  But it should not be large jump.  We may need
>> to add a gesture style delay when touching in button area so we can
>> tell difference between button press and real movement.
> I have an hp-mini notebook with a clickpad device.  The problem I most
> run into is the first issue - when applying pressure to the pad to
> active the "click button" the cursor will move slightly making it
> difficult to click small buttons.  However, I rarely attempt to click
> with a second finger.
> It would be nice to be able to use the full touchpad area for
> movements, but if I had to trade between jumpy button presses or
> smaller touchpad area, I'd choose having a smaller touchpad area.
>> Second case seems more likely to cause a jump but a) synpatics
>> hardware continues to report 1st finger's X/Y during double touch and
>> b) we have code to expect a jump just in case during that second touch
>> based on either doubletap or finger width.  Are you working with
>> non-synaptics clickpads?
>> Is there any chance you could reproduce basic sequence when jumps
>> occur but using evtest and send me the output?
>> This is one of those problems really buggy me for some reason and I'd
>> like to help resolve it.
> I'm not familiar with xorg development, but I am happy to help.  If
> you're still interested in this info I'll see if I can get evtest
> running.

Thank you, Kevin, for sending me the log files.  It is a small sample
of gestures but I think gives pretty accurate picture.  I'll summarize
here for everyone.

This HP-mini clickpad behaves different then my non-clickpad and isn't
accounted for in xf86-input-synaptics.

* There are between 5-10 sync reports with X/Y updates both before and
after the BTN_LEFT report comes.  We currently ignore first 3 reports
after touch but thats not quite enough.  We do nothing upon BTN_LEFT
release.  We will need either a time based or sample count based hold
off to account for those so people don't get relatively small but
annoying cursor movements while clicking.

* The clickpad seems to only be reporting finger widths of 4 during 1
touch and 5 during 2 touches.  My touchpad does 4 for 1 touch but
gives a much wider range for 2 touch.  Since the default of 2-finger
emulation is W of 6, that logic is never kicking in.

* The (X,Y) finger tracking is not like synaptics hardware docs say.
My touchpad aligns with their specs which say (X,Y) always tracks
first finger touch.  The clickpad seems to change tracking to whatever
makes most sense and seems to do the sane thing of only changing at
transitions of width 4/5 values.

Since xf86-input-synaptics 1.3.0 handles (X,Y) jumps during finger
transitions, if clickpad users set their EmulateTwoFingerMinW to 5 I
suspect they will see a lot less big cursor jumps... but they will
still see small cursor movement click operations.  Users could make
use of AreaBottomEdge to shrink size of touchpad to work around the
smaller movement.


More information about the xorg-devel mailing list