touchpad: add pressure-based thumb-detection
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 27 May 2015 08:25:49 +0000 (18:25 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 9 Jul 2015 01:27:53 +0000 (11:27 +1000)
commit3dcf28b919ae598506852b408829a6627168e803
treebc5dd08af5d48ce675d0a980b8221526a64f6bb5
parent4a3288dc59e2f1211c8f69dca3eb4b9ea4059482
touchpad: add pressure-based thumb-detection

All touchpad recordings seen so far show that a value above 100 is definitely
a thumb or a palm. Values below are harder to discern, and the same isn't true
for touchpads supporting ABS_PRESSURE instead of ABS_MT_PRESSURE.

The handling of a touch is as outlined in tp_thumb_detect:
* thumbs are ignored for pointer motion
* thumbs cancel gestures
* thumbs are ignored for clickfinger count
* edge scrolling doesn't care either way
* software buttons don't care either way
* tap: only if thumb on begin

The handling of thumbs while tapping is the simplest approach only, more to
come in follow-up patches.

Note that "thumb" is the synonym for "this touch is too big to be a
fingertip". Which means that a light thumb touch will still be counted as a
finger. The side-effect here is that thumbs resting a the bottom edge of the
touchpad will almost certainly not trigger the pressure threshold because
most of the thumb is off the touchpad.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
src/evdev-mt-touchpad-buttons.c
src/evdev-mt-touchpad-gestures.c
src/evdev-mt-touchpad-tap.c
src/evdev-mt-touchpad.c
src/evdev-mt-touchpad.h