Fix broken 2fg scrolling on single-touch touchpads (#1246651)
- Drop distance threshold for 2fg gesture detection (#1246868)
This commit is contained in:
parent
3abc616915
commit
5d1af9d382
@ -0,0 +1,59 @@
|
|||||||
|
From 6b59b4273c38570258519d16357dd0953b650bc8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Tue, 28 Jul 2015 12:54:16 +1000
|
||||||
|
Subject: [PATCH libinput] touchpad: drop distance threshold to detect pinches
|
||||||
|
|
||||||
|
This gives us too many false positives of 2fg scroll being detected as pinch
|
||||||
|
gesture. Reporter in [1] uses index+ring finger and thus exceeds the distance
|
||||||
|
easily (that's admittedly a special case).
|
||||||
|
|
||||||
|
This is worsed by the lack of a client stack that handles the gestures. User's
|
||||||
|
don't see that they're inadvertently performing a gesture, they just see 2fg
|
||||||
|
scroll not working.
|
||||||
|
|
||||||
|
Drop the distance for now, once we have a ubiquitous client stack we can
|
||||||
|
revisit and bring it back.
|
||||||
|
|
||||||
|
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1246868
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
src/evdev-mt-touchpad-gestures.c | 17 +----------------
|
||||||
|
1 file changed, 1 insertion(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c
|
||||||
|
index 6b1a273..3b1839e 100644
|
||||||
|
--- a/src/evdev-mt-touchpad-gestures.c
|
||||||
|
+++ b/src/evdev-mt-touchpad-gestures.c
|
||||||
|
@@ -264,26 +264,11 @@ tp_gesture_twofinger_handle_state_none(struct tp_dispatch *tp, uint64_t time)
|
||||||
|
static enum tp_gesture_2fg_state
|
||||||
|
tp_gesture_twofinger_handle_state_unknown(struct tp_dispatch *tp, uint64_t time)
|
||||||
|
{
|
||||||
|
- struct normalized_coords normalized;
|
||||||
|
- struct device_float_coords delta;
|
||||||
|
struct tp_touch *first = tp->gesture.touches[0],
|
||||||
|
*second = tp->gesture.touches[1];
|
||||||
|
int dir1, dir2;
|
||||||
|
|
||||||
|
- delta = device_delta(first->point, second->point);
|
||||||
|
- normalized = tp_normalize_delta(tp, delta);
|
||||||
|
-
|
||||||
|
- /* If fingers are further than 3 cm apart assume pinch */
|
||||||
|
- if (normalized_length(normalized) > TP_MM_TO_DPI_NORMALIZED(30)) {
|
||||||
|
- tp_gesture_get_pinch_info(tp,
|
||||||
|
- &tp->gesture.initial_distance,
|
||||||
|
- &tp->gesture.angle,
|
||||||
|
- &tp->gesture.center);
|
||||||
|
- tp->gesture.prev_scale = 1.0;
|
||||||
|
- return GESTURE_2FG_STATE_PINCH;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Elif fingers have been close together for a while, scroll */
|
||||||
|
+ /* if fingers stay unmoving for a while, assume (slow) scroll */
|
||||||
|
if (time > (tp->gesture.initial_time + DEFAULT_GESTURE_2FG_SCROLL_TIMEOUT)) {
|
||||||
|
tp_gesture_set_scroll_buildup(tp);
|
||||||
|
return GESTURE_2FG_STATE_SCROLL;
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From c24a69a0db8cc18e580cc813b91fae6aff9bb74a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Wed, 29 Jul 2015 17:12:53 +1000
|
||||||
|
Subject: [PATCH libinput] gestures: check ntouches, not just num_slots for the
|
||||||
|
number of fingers
|
||||||
|
|
||||||
|
We need to check fake fingers as well as real fingers, especially for
|
||||||
|
two-finger scrolling on single-touch touchpads with BTN_TOOL_DOUBLETAP.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1246651
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
src/evdev-mt-touchpad-gestures.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c
|
||||||
|
index 8bcdeb4..6b1a273 100644
|
||||||
|
--- a/src/evdev-mt-touchpad-gestures.c
|
||||||
|
+++ b/src/evdev-mt-touchpad-gestures.c
|
||||||
|
@@ -157,7 +157,7 @@ tp_gesture_get_active_touches(struct tp_dispatch *tp,
|
||||||
|
|
||||||
|
memset(touches, 0, count * sizeof(struct tp_touch *));
|
||||||
|
|
||||||
|
- for (i = 0; i < tp->num_slots; i++) {
|
||||||
|
+ for (i = 0; i < tp->ntouches; i++) {
|
||||||
|
t = &tp->touches[i];
|
||||||
|
if (tp_touch_active(tp, t)) {
|
||||||
|
touches[n++] = t;
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Name: libinput
|
Name: libinput
|
||||||
Version: 0.20.0
|
Version: 0.20.0
|
||||||
Release: 5%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
Release: 6%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||||
Summary: Input device library
|
Summary: Input device library
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
@ -30,6 +30,9 @@ Patch10: 0003-Tag-synaptics-serial-touchpads-with-a-LIBINPUT_MODEL.patch
|
|||||||
Patch11: 0004-touchpad-disable-2fg-scrolling-on-Synaptics-semi-mt-.patch
|
Patch11: 0004-touchpad-disable-2fg-scrolling-on-Synaptics-semi-mt-.patch
|
||||||
# Bug 1246651 - two-finger scroll stopped working with upgrade to 0.20.0-1
|
# Bug 1246651 - two-finger scroll stopped working with upgrade to 0.20.0-1
|
||||||
Patch12: 0001-udev-add-size-hint-for-appletouch-one-button-touchpa.patch
|
Patch12: 0001-udev-add-size-hint-for-appletouch-one-button-touchpa.patch
|
||||||
|
Patch13: 0002-gestures-check-ntouches-not-just-num_slots-for-the-n.patch
|
||||||
|
# Bug 1246868 Two finger scrolling does not work with first and fourth fingers (cf. Synaptics driver)
|
||||||
|
Patch14: 0001-touchpad-drop-distance-threshold-to-detect-pinches.patch
|
||||||
|
|
||||||
BuildRequires: git
|
BuildRequires: git
|
||||||
BuildRequires: autoconf automake libtool pkgconfig
|
BuildRequires: autoconf automake libtool pkgconfig
|
||||||
@ -107,6 +110,10 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 30 2015 Peter Hutterer <peter.hutterer@redhat.com> 0.20.0-6
|
||||||
|
- Fix broken 2fg scrolling on single-touch touchpads (#1246651)
|
||||||
|
- Drop distance threshold for 2fg gesture detection (#1246868)
|
||||||
|
|
||||||
* Wed Jul 29 2015 Peter Hutterer <peter.hutterer@redhat.com> 0.20.0-5
|
* Wed Jul 29 2015 Peter Hutterer <peter.hutterer@redhat.com> 0.20.0-5
|
||||||
- Add a size hint for Apple one-button touchpads (#1246651)
|
- Add a size hint for Apple one-button touchpads (#1246651)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user