tablet: increase touch arbitration rectangle height

A user was experiencing issues with their hand being recognized as
touch input above the stylus tip.

Since touch above the stylus should be rare, increase the touch
arbitration rectangle height by 50mm.

Fix: https://gitlab.freedesktop.org/libinput/libinput/-/issues/809
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
This commit is contained in:
José Expósito 2022-11-23 08:48:55 +01:00 committed by Peter Hutterer
parent 8a6ca3c1c5
commit 96e57b5eff
2 changed files with 6 additions and 6 deletions

View file

@ -1501,8 +1501,8 @@ tablet_calculate_arbitration_rect(struct tablet_dispatch *tablet)
mm = evdev_device_units_to_mm(device, &tablet->axes.point); mm = evdev_device_units_to_mm(device, &tablet->axes.point);
/* The rect we disable is 20mm left of the tip, 50mm north of the /* The rect we disable is 20mm left of the tip, 100mm north of the
* tip, and 200x200mm large. * tip, and 200x250mm large.
* If the stylus is tilted left (tip further right than the eraser * If the stylus is tilted left (tip further right than the eraser
* end) assume left-handed mode. * end) assume left-handed mode.
* *
@ -1523,8 +1523,8 @@ tablet_calculate_arbitration_rect(struct tablet_dispatch *tablet)
r.x = 0; r.x = 0;
} }
r.y = mm.y - 50; r.y = mm.y - 100;
r.h = 200; r.h = 250;
if (r.y < 0) { if (r.y < 0) {
r.h -= r.y; r.h -= r.y;
r.y = 0; r.y = 0;

View file

@ -4891,7 +4891,7 @@ START_TEST(touch_arbitration_outside_rect)
return; return;
x = 20; x = 20;
y = 45; y = 70;
/* disable prox-out timer quirk */ /* disable prox-out timer quirk */
litest_tablet_proximity_in(dev, x, y - 1, axes); litest_tablet_proximity_in(dev, x, y - 1, axes);
@ -4912,7 +4912,7 @@ START_TEST(touch_arbitration_outside_rect)
litest_assert_touch_sequence(li); litest_assert_touch_sequence(li);
/* above rect */ /* above rect */
litest_touch_sequence(finger, 0, x + 2, y - 35, x + 20, y - 10, 3); litest_touch_sequence(finger, 0, x + 2, y - 65, x + 20, y - 40, 3);
libinput_dispatch(li); libinput_dispatch(li);
litest_assert_touch_sequence(li); litest_assert_touch_sequence(li);