From: Matt Mayfield Date: Wed, 22 Aug 2018 01:54:58 +0000 (-0500) Subject: touchpad: fine tune size-based thumb detection X-Git-Tag: 1.11.903~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=27c42990d85dcffe0114a52bcf5ff66d0f730c7b;p=platform%2Fupstream%2Flibinput.git 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. --- diff --git a/quirks/50-system-apple.quirks b/quirks/50-system-apple.quirks index f643ccc..9f6d172 100644 --- a/quirks/50-system-apple.quirks +++ b/quirks/50-system-apple.quirks @@ -34,7 +34,7 @@ MatchProduct=0x030E AttrSizeHint=130x110 AttrTouchSizeRange=20:10 AttrPalmSizeThreshold=900 -AttrThumbSizeThreshold=800 +AttrThumbSizeThreshold=700 [Apple Touchpad OneButton] MatchUdevType=touchpad diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index 6404175..53e3c22 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -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: *