touchpad: fine tune size-based thumb detection

In testing on an Apple Magic Trackpad, thumb touches are reliably
detected by being quite large in the major dimension, but around
half the size in the minor dimension.
This commit is contained in:
Matt Mayfield 2018-08-21 20:54:58 -05:00
parent 66ac659e36
commit 27c42990d8
2 changed files with 8 additions and 7 deletions

View file

@ -34,7 +34,7 @@ MatchProduct=0x030E
AttrSizeHint=130x110
AttrTouchSizeRange=20:10
AttrPalmSizeThreshold=900
AttrThumbSizeThreshold=800
AttrThumbSizeThreshold=700
[Apple Touchpad OneButton]
MatchUdevType=touchpad

View file

@ -1133,16 +1133,17 @@ tp_thumb_detect(struct tp_dispatch *tp, struct tp_touch *t, uint64_t time)
* a thumb.
*/
if (tp->thumb.use_pressure &&
t->pressure > tp->thumb.pressure_threshold)
t->pressure > tp->thumb.pressure_threshold) {
t->thumb.state = THUMB_STATE_YES;
else if (tp->thumb.use_size &&
(t->major > tp->thumb.size_threshold ||
t->minor > tp->thumb.size_threshold))
} else if (tp->thumb.use_size &&
(t->major > tp->thumb.size_threshold) &&
(t->minor < (tp->thumb.size_threshold * 0.6))) {
t->thumb.state = THUMB_STATE_YES;
else if (t->point.y > tp->thumb.lower_thumb_line &&
} else if (t->point.y > tp->thumb.lower_thumb_line &&
tp->scroll.method != LIBINPUT_CONFIG_SCROLL_EDGE &&
t->thumb.first_touch_time + THUMB_MOVE_TIMEOUT < time)
t->thumb.first_touch_time + THUMB_MOVE_TIMEOUT < time) {
t->thumb.state = THUMB_STATE_YES;
}
/* now what? we marked it as thumb, so:
*