linux/drivers/input/mouse
Daniel Kurtz 48064bdcd6 Input: synaptics - fix 1->3 contact transition reporting
Investigating the following gesture highlighted two slight implementation
errors with choosing which slots to report in which slot when multiple
contacts are present:

Action                 SGM  AGM (MTB slot:Contact)
1. Touch contact 0    (0:0)
2. Touch contact 1    (0:0, 1:1)
3. Lift  contact 0    (1:1)
4. Touch contacts 2,3 (0:2, 1:3)

In step 4, slot 1 was not being cleared first, which means the same
tracking ID was being used for reporting both the old contact 1 and the
new contact 3.  This could result in "drumroll", where the old contact 1
would appear to suddenly jump to new finger 3 position.

Similarly, if contacts 2 & 3 are not detected at the same sample, step 4
is split into two:

Action                SGM  AGM  (MTB slot:contact)
1. Touch contact 0   (0:0)
2. Touch contact 1   (0:0, 1:1)
3. Lift  contact 0   (1:1)
4. Touch contact 2   (0:2, 1:1)
5. Touch contact 3   (0:2, 1:3)

In this case, there was also a bug.  In step 4, when contact 1 moves from
SGM to AGM and contact 2 is first reported in SGM, slot 0 was actually
empty.  So slot 0 can be used to report the new SGM (contact 0),
immediately.  Since it was empty, contact 2 in slot 0 will get a new
tracking ID.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2013-02-13 20:21:12 -08:00
..
alps.c Input: ALPS - print small buffers via %*ph 2012-10-30 00:47:04 -07:00
alps.h Input: ALPS - add semi-MT support for v4 protocol 2012-05-10 22:32:20 -07:00
amimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
appletouch.c USB: input: appletouch: fix up compiler warning 2012-05-04 15:35:56 -07:00
atarimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bcm5974.c HID: Add support for the MacBook Pro 10,2 keyboard / touchpad 2012-10-31 10:42:33 +01:00
cyapa.c Input: add driver for Cypress APA I2C Trackpad 2013-01-17 00:28:10 -08:00
cypress_ps2.c Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
cypress_ps2.h Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
elantech.c Input: MT - Add flags to input_mt_init_slots() 2012-09-19 19:50:18 +02:00
elantech.h Input: elantech - add resolution query support for v4 hardware 2011-11-20 22:28:34 -08:00
gpio_mouse.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
hgpk.c Input: hgpk - use %*ph to dump small buffer 2012-09-12 21:57:13 -07:00
hgpk.h Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
inport.c
Kconfig Input: add driver for Cypress APA I2C Trackpad 2013-01-17 00:28:10 -08:00
lifebook.c Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
lifebook.h Input: psmouse - do not carry DMI data around 2009-12-03 23:25:36 -08:00
logibm.c
logips2pp.c Input: convert obsolete strict_strtox to kstrtox 2011-11-09 21:23:26 -08:00
logips2pp.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
Makefile Input: add driver for Cypress APA I2C Trackpad 2013-01-17 00:28:10 -08:00
maplemouse.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
navpoint.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
psmouse.h Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
pxa930_trkball.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
rpcmouse.c input: rpcmouse: use __iomem pointers for MMIO 2012-09-19 15:37:13 +02:00
sentelic.c Merge branches 'from-henrik', 'hidraw', 'logitech', 'picolcd', 'ps3', 'uclogic', 'wacom' and 'wiimote' into for-linus 2012-10-01 14:36:26 +02:00
sentelic.h Input: sentelic - report device's production serial number 2012-05-10 20:39:04 -07:00
sermouse.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
synaptics_i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
synaptics_usb.c Input: synaptics_usb - Remove TrackPoint name trailing whitespace 2012-07-06 19:12:17 -07:00
synaptics.c Input: synaptics - fix 1->3 contact transition reporting 2013-02-13 20:21:12 -08:00
synaptics.h Input: synaptics - print firmware ID and board number at init 2012-07-07 18:20:08 -07:00
touchkit_ps2.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
touchkit_ps2.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
trackpoint.c Input: trackpoint - use psmouse_fmt() for messages 2012-04-10 00:40:39 -07:00
trackpoint.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
vsxxxaa.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00