touchpad: pull the tap exclusion zone down to the full edge zone
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 9 May 2017 05:07:20 +0000 (15:07 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 11 May 2017 00:30:04 +0000 (10:30 +1000)
This was originally left outside of the button areas in case users tap in
those zones, but we're getting false tap events in that zone.

On a 100mm touchpad, the edge zone is merely 5mm, it's acceptable to ignore
taps in that area even in the software button. We can revisit this if we see
tap detection failures in the future.

https://bugzilla.redhat.com/show_bug.cgi?id=1415796

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

index e0757e17c46210eb122e2543d4af6d64ef3f5595..17b14bc854edda4abcda81337d072bc8c6f2a277 100644 (file)
@@ -557,15 +557,8 @@ tp_palm_tap_is_palm(const struct tp_dispatch *tp, const struct tp_touch *t)
            t->point.x < tp->palm.right_edge)
                return false;
 
-       /* We're inside the left/right palm edge and not in one of the
-        * software button areas */
-       if (t->point.y < tp->buttons.bottom_area.top_edge) {
-               evdev_log_debug(tp->device,
-                               "palm: palm-tap detected\n");
-               return true;
-       }
-
-       return false;
+       evdev_log_debug(tp->device, "palm: palm-tap detected\n");
+       return true;
 }
 
 static bool
index 2731500a21aac2fb8b748fec6ef62b99e675a8a4..d91c2449041b69f16d2b1973c50bb99948f7aaaf 100644 (file)
@@ -1176,15 +1176,15 @@ START_TEST(touchpad_palm_detect_tap_softbuttons)
 
        litest_drain_events(li);
 
-       litest_touch_down(dev, 0, 95, 5);
+       litest_touch_down(dev, 0, 99, 99);
        litest_touch_up(dev, 0);
        litest_assert_empty_queue(li);
 
-       litest_touch_down(dev, 0, 5, 5);
+       litest_touch_down(dev, 0, 1, 99);
        litest_touch_up(dev, 0);
        litest_assert_empty_queue(li);
 
-       litest_touch_down(dev, 0, 5, 99);
+       litest_touch_down(dev, 0, 10, 99);
        litest_touch_up(dev, 0);
        litest_assert_button_event(li,
                                   BTN_LEFT,
@@ -1194,7 +1194,7 @@ START_TEST(touchpad_palm_detect_tap_softbuttons)
                                   LIBINPUT_BUTTON_STATE_RELEASED);
        litest_assert_empty_queue(li);
 
-       litest_touch_down(dev, 0, 95, 99);
+       litest_touch_down(dev, 0, 90, 99);
        litest_touch_up(dev, 0);
        litest_assert_button_event(li,
                                   BTN_LEFT,