Subject: CVS commit: src/sys/dev/pckbport
To: None <source-changes@NetBSD.org>
From: Steve Woodford <scw@netbsd.org>
List: source-changes
Date: 01/02/2005 22:37:12
Module Name:	src
Committed By:	scw
Date:		Sun Jan  2 22:37:12 UTC 2005

Modified Files:
	src/sys/dev/pckbport: synaptics.c synapticsreg.h synapticsvar.h

Log Message:
Major re-write of the recently-committed Synaptics Touchpad driver,
prompted by jittery and/or random movement during tap gestures, lack
of edge motion, and a general desire to make use of the extra features
available with the native protocol.

 - Ditch the kernel thread; it was overkill for the small amount of
   processing required to deal with touchpad events.

 - If we fail to probe a Synaptics touchpad, issue a RESET command
   to ensure that whatever device is out there is left in a sane
   state (thanks to Reinoud Zandijk for the hint).

 - Completely re-write gesture support.

 - Put the touchpad in 80 packets per second mode and count them so
   they can be used to time gesture durations (instead of using
   mono_time).

 - Enhance up/down button support with options to use them to emulate
   the middle button or Z-axis events (like a traditional wheel mouse).

 - Add 'edge motion'. If a drag gesture is in progress, and the reported
   finger position moves to the touchpad's border region, continue
   to report movement events at a fixed rate as if the finger carried
   on moving in the same direction. This restores some functionality
   usually provided by the touchpad's firmware in PS/2 mode.

 - Filter successive movement events to reduce jitter. When scaling
   movement events, fold the remainder into the next event to prevent
   loss of information during slow/small finger movements. Pointer
   movement is now much more refined.

 - Add support for touchpads which can report more than one finger on
   the pad simultaneously. Optionally use this feature for middle/right
   button emulation (i.e. tap two fingers to emulate middle button).
   This feature is disabled by default (for now) to avoid surprise
   pasting of clipboard text. ;-)


To generate a diff of this commit:
cvs rdiff -r1.2 -r1.3 src/sys/dev/pckbport/synaptics.c
cvs rdiff -r1.1 -r1.2 src/sys/dev/pckbport/synapticsreg.h \
    src/sys/dev/pckbport/synapticsvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.