Compare commits

...
Sign in to create a new pull request.

11 commits

Author SHA1 Message Date
Peter Hutterer
938d440a6c Fix pointer jitter on ALPS FW v300 (#1336084) 2016-05-23 14:35:54 +10:00
Peter Hutterer
c4869e79dd Fix pointer jitter on the Dell E5420 (#1336084) 2016-05-20 11:32:37 +10:00
Peter Hutterer
149c403c76 discard large cursor jumps (#1335307) 2016-05-12 11:51:28 +10:00
Peter Hutterer
941dd395d8 libinput 1.2.4 2016-04-19 10:32:57 +10:00
Peter Hutterer
3ca14d6080 libinput 1.2.3 2016-04-12 08:18:35 +10:00
Peter Hutterer
363e9d4c1c libinput 1.2.2 2016-03-15 10:45:34 +10:00
Peter Hutterer
f922107f77 Fix jerky pointer motion on the Lenovo T450/T460/X1 3rd hardware 2016-03-11 11:10:40 +10:00
Peter Hutterer
57a02c4fda Fix segfault on mislabeled tablets (#1314955) 2016-03-07 10:29:54 +10:00
Peter Hutterer
3285a7d47d Add libwacom-devel to BuildRequires 2016-03-02 07:55:30 +10:00
Peter Hutterer
7a73ca3b06 libinput 1.2.1 2016-03-02 07:22:16 +10:00
Peter Hutterer
6ed46bac1f libinput 1.1.8 2016-02-18 11:49:04 +10:00
7 changed files with 440 additions and 4 deletions

5
.gitignore vendored
View file

@ -32,3 +32,8 @@
/libinput-1.1.5.tar.xz
/libinput-1.1.6.tar.xz
/libinput-1.1.7.tar.xz
/libinput-1.1.8.tar.xz
/libinput-1.2.1.tar.xz
/libinput-1.2.2.tar.xz
/libinput-1.2.3.tar.xz
/libinput-1.2.4.tar.xz

View file

@ -0,0 +1,66 @@
From e968549f2c4f1d51a921ed4997fc9151d0d91ccb Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed, 27 Apr 2016 11:32:02 +1000
Subject: [PATCH libinput] Make a link to the html docs available as a #define
The "latest" documentation link is the location for the master branch,
released versions have their own directory on the server.
The micro-versions of 90 and above are used for snapshots and release
candidates, so whenever we have a micro version of >= 90 we still want to link
to the "latest" documentation. In all other cases, we link to the current
release.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 4fdaa1b2a96d5d9e7d121fc7082737cc581e8020)
---
configure.ac | 4 ++++
src/libinput-private.h | 8 ++++++++
2 files changed, 12 insertions(+)
diff --git a/configure.ac b/configure.ac
index 602a860..77270fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,6 +17,10 @@ AC_SUBST([LIBINPUT_VERSION_MINOR], [libinput_minor_version])
AC_SUBST([LIBINPUT_VERSION_MICRO], [libinput_micro_version])
AC_SUBST([LIBINPUT_VERSION], [libinput_version])
+AC_DEFINE([LIBINPUT_VERSION_MAJOR], [libinput_major_version], "libinput major version number")
+AC_DEFINE([LIBINPUT_VERSION_MINOR], [libinput_minor_version], "libinput minor version number")
+AC_DEFINE([LIBINPUT_VERSION_MICRO], [libinput_micro_version], "libinput micro version number")
+
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
diff --git a/src/libinput-private.h b/src/libinput-private.h
index 8d2492a..f89ca2e 100644
--- a/src/libinput-private.h
+++ b/src/libinput-private.h
@@ -25,6 +25,8 @@
#ifndef LIBINPUT_PRIVATE_H
#define LIBINPUT_PRIVATE_H
+#include "config.h"
+
#include <errno.h>
#include <math.h>
@@ -33,6 +35,12 @@
#include "libinput.h"
#include "libinput-util.h"
+#if LIBINPUT_VERSION_MICRO >= 90
+#define HTTP_DOC_LINK "https://wayland.freedesktop.org/libinput/doc/latest/"
+#else
+#define HTTP_DOC_LINK "https://wayland.freedesktop.org/libinput/doc/" VERSION "/"
+#endif
+
struct libinput_source;
/* A coordinate pair in device coordinates */
--
2.7.4

View file

@ -0,0 +1,81 @@
From 71841c822cb3cc7069f6a1a834b005fdf0403c69 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue, 12 Apr 2016 11:07:02 +1000
Subject: [PATCH libinput] touchpad: add LIBINPUT_MODEL_WOBBLY_TOUCHPAD for the
HP 14-ac157tu
If some elantech touchpads require a hysteresis, let's use some more generic
tag for those touchpads that require correct handling of pointer wobbles.
https://bugs.freedesktop.org/show_bug.cgi?id=94897
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit afdcaf50157c0a76389740885bed3719b758dc37)
---
src/evdev-mt-touchpad.c | 3 +++
src/evdev.c | 1 +
src/evdev.h | 1 +
udev/90-libinput-model-quirks.hwdb | 8 ++++++++
4 files changed, 13 insertions(+)
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index c50f52d..a92e60b 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -2046,6 +2046,9 @@ tp_init_hysteresis(struct tp_dispatch *tp)
(tp->device->model_flags & EVDEV_MODEL_SYNAPTICS_SERIAL_TOUCHPAD))
goto want_hysteresis;
+ if (tp->device->model_flags & EVDEV_MODEL_WOBBLY_TOUCHPAD)
+ goto want_hysteresis;
+
tp->hysteresis_margin.x = 0;
tp->hysteresis_margin.y = 0;
diff --git a/src/evdev.c b/src/evdev.c
index 6bb8986..f0311c6 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1681,6 +1681,7 @@ evdev_read_model_flags(struct evdev_device *device)
{ "LIBINPUT_MODEL_CYAPA", EVDEV_MODEL_CYAPA },
{ "LIBINPUT_MODEL_ALPS_RUSHMORE", EVDEV_MODEL_ALPS_RUSHMORE },
{ "LIBINPUT_MODEL_LENOVO_T450_TOUCHPAD", EVDEV_MODEL_LENOVO_T450_TOUCHPAD },
+ { "LIBINPUT_MODEL_WOBBLY_TOUCHPAD", EVDEV_MODEL_WOBBLY_TOUCHPAD },
{ NULL, EVDEV_MODEL_DEFAULT },
};
const struct model_map *m = model_map;
diff --git a/src/evdev.h b/src/evdev.h
index 4a5d807..3a7693e 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -114,6 +114,7 @@ enum evdev_device_model {
EVDEV_MODEL_CYAPA = (1 << 15),
EVDEV_MODEL_ALPS_RUSHMORE = (1 << 16),
EVDEV_MODEL_LENOVO_T450_TOUCHPAD= (1 << 17),
+ EVDEV_MODEL_WOBBLY_TOUCHPAD = (1 << 18),
};
struct mt_slot {
diff --git a/udev/90-libinput-model-quirks.hwdb b/udev/90-libinput-model-quirks.hwdb
index 242c444..91ac243 100644
--- a/udev/90-libinput-model-quirks.hwdb
+++ b/udev/90-libinput-model-quirks.hwdb
@@ -81,6 +81,14 @@ libinput:name:Cypress APA Trackpad ?cyapa?:dmi:*
LIBINPUT_MODEL_CYAPA=1
##########################################
+# HP
+##########################################
+
+# HP 14-ac157tu
+libinput:name:*ETPS/2 Elantech Touchpad*:dmi:*svnHP*pvrCNB1:*
+ LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1
+
+##########################################
# LENOVO
##########################################
--
2.7.4

View file

@ -0,0 +1,210 @@
From 1814c8586b62000caab91c5af40f7c5a0a80c384 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue, 16 Sep 2014 15:13:00 +1000
Subject: [PATCH libinput] touchpad: detect and warn about kernel tracking
pointer jumps
If a touch moves by more than 20mm within a single frame, reset the motion
history, effectively discarding the movement. This is a relatively common bug
and almost always needs a kernel fix, so add an explanatory page to the docs.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 6a22eed4efa2a18664d62c6d8131c05258f869ab)
---
doc/Makefile.am | 1 +
doc/page-hierarchy.dox | 1 +
doc/touchpad-jumping-cursors.dox | 54 ++++++++++++++++++++++++++++++++++++++++
src/evdev-mt-touchpad.c | 27 ++++++++++++++++++++
test/touchpad.c | 39 +++++++++++++++++++++++++++++
5 files changed, 122 insertions(+)
create mode 100644 doc/touchpad-jumping-cursors.dox
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 7a7c6cf..f56ed6a 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -27,6 +27,7 @@ header_files = \
$(srcdir)/tapping.dox \
$(srcdir)/test-suite.dox \
$(srcdir)/tools.dox \
+ $(srcdir)/touchpad-jumping-cursors.dox \
$(srcdir)/touchpads.dox
diagram_files = \
diff --git a/doc/page-hierarchy.dox b/doc/page-hierarchy.dox
index 1351a5e..e47e98e 100644
--- a/doc/page-hierarchy.dox
+++ b/doc/page-hierarchy.dox
@@ -7,6 +7,7 @@
- @subpage gestures
- @subpage palm_detection
- @subpage t440_support
+- @subpage touchpad_jumping_cursor
@page touchscreens Touchscreens
diff --git a/doc/touchpad-jumping-cursors.dox b/doc/touchpad-jumping-cursors.dox
new file mode 100644
index 0000000..e581eb1
--- /dev/null
+++ b/doc/touchpad-jumping-cursors.dox
@@ -0,0 +1,54 @@
+/**
+@page touchpad_jumping_cursor Touchpad jumping cursor bugs
+
+A common bug encountered on touchpads is a cursor jump when alternating
+between fingers on a multi-touch-capable touchpad. For example, after moving
+the cursor a user may use a second finger in the software button area to
+physically click the touchpad. Upon setting the finger down, the cursor
+exhibits a jump towards the bottom left or right, depending on the finger
+position.
+
+When libinput detects a cursor jump it prints a bug warning to the log with
+the text <b>"Touch jump detected and discarded."</b> and a link to this page.
+
+In most cases, this is a bug in the kernel driver and to libinput it appears
+that the touch point moves from its previous position. The pointer jump can
+usually be seen in the evemu-record output for the device:
+
+<pre>
+ E: 249.206319 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+ E: 249.218008 0003 0035 3764 # EV_ABS / ABS_MT_POSITION_X 3764
+ E: 249.218008 0003 0036 2221 # EV_ABS / ABS_MT_POSITION_Y 2221
+ E: 249.218008 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
+ E: 249.218008 0003 0000 3764 # EV_ABS / ABS_X 3764
+ E: 249.218008 0003 0001 2216 # EV_ABS / ABS_Y 2216
+ E: 249.218008 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
+ E: 249.218008 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+ E: 249.230881 0003 0035 3752 # EV_ABS / ABS_MT_POSITION_X 3752
+ E: 249.230881 0003 003a 0046 # EV_ABS / ABS_MT_PRESSURE 46
+ E: 249.230881 0003 0000 3758 # EV_ABS / ABS_X 3758
+ E: 249.230881 0003 0018 0046 # EV_ABS / ABS_PRESSURE 46
+ E: 249.230881 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+ E: 249.242648 0003 0035 1640 # EV_ABS / ABS_MT_POSITION_X 1640
+ E: 249.242648 0003 0036 4681 # EV_ABS / ABS_MT_POSITION_Y 4681
+ E: 249.242648 0003 003a 0025 # EV_ABS / ABS_MT_PRESSURE 25
+ E: 249.242648 0003 0000 1640 # EV_ABS / ABS_X 1640
+ E: 249.242648 0003 0001 4681 # EV_ABS / ABS_Y 4681
+ E: 249.242648 0003 0018 0025 # EV_ABS / ABS_PRESSURE 25
+ E: 249.242648 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
+ E: 249.254568 0003 0035 1648 # EV_ABS / ABS_MT_POSITION_X 1648
+ E: 249.254568 0003 003a 0027 # EV_ABS / ABS_MT_PRESSURE 27
+ E: 249.254568 0003 0000 1644 # EV_ABS / ABS_X 1644
+ E: 249.254568 0003 0018 0027 # EV_ABS / ABS_PRESSURE 27
+</pre>
+
+In this recording, the pointer jumps from its position 3752/2216 to
+1640/4681 within a single frame. On this particular touchpad, this would
+represent a physical move of almost 50mm. libinput detects some of these
+jumps and discards the movement but otherwise continues as usual. However,
+the bug should be fixed at the kernel level.
+
+When you encounter the warning in the log, please generate an evemu
+recording of your touchpad and file a bug. See @ref reporting_bugs for more
+details.
+*/
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 2ab6fd3..c50f52d 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -918,6 +918,25 @@ tp_need_motion_history_reset(struct tp_dispatch *tp, uint64_t time)
return rc;
}
+static bool
+tp_detect_jumps(const struct tp_dispatch *tp, struct tp_touch *t)
+{
+ struct device_coords *last;
+ double dx, dy;
+ const int JUMP_THRESHOLD_MM = 20;
+
+ if (t->history.count == 0)
+ return false;
+
+ /* called before tp_motion_history_push, so offset 0 is the most
+ * recent coordinate */
+ last = tp_motion_history_offset(t, 0);
+ dx = fabs(t->point.x - last->x) / tp->device->abs.absinfo_x->resolution;
+ dy = fabs(t->point.y - last->y) / tp->device->abs.absinfo_y->resolution;
+
+ return hypot(dx, dy) > JUMP_THRESHOLD_MM;
+}
+
static void
tp_process_state(struct tp_dispatch *tp, uint64_t time)
{
@@ -946,6 +965,14 @@ tp_process_state(struct tp_dispatch *tp, uint64_t time)
if (!t->dirty)
continue;
+ if (tp_detect_jumps(tp, t)) {
+ log_bug_kernel(tp_libinput_context(tp),
+ "Touch jump detected and discarded.\n"
+ "See %stouchpad_jumping_cursor for details\n",
+ HTTP_DOC_LINK);
+ tp_motion_history_reset(t);
+ }
+
tp_thumb_detect(tp, t, time);
tp_palm_detect(tp, t, time);
diff --git a/test/touchpad.c b/test/touchpad.c
index be9c566..8744cbd 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -3958,6 +3958,43 @@ START_TEST(touchpad_time_usec)
}
END_TEST
+START_TEST(touchpad_jump_finger_motion)
+{
+ struct litest_device *dev = litest_current_device();
+ struct libinput *li = dev->libinput;
+ struct libinput_event *event;
+ struct libinput_event_pointer *ptrev;
+
+ litest_touch_down(dev, 0, 20, 30);
+ litest_touch_move_to(dev, 0, 20, 30, 90, 30, 10, 0);
+ litest_drain_events(li);
+
+ litest_disable_log_handler(li);
+ litest_touch_move_to(dev, 0, 90, 30, 20, 80, 1, 0);
+ litest_assert_empty_queue(li);
+ litest_restore_log_handler(li);
+
+ litest_touch_move_to(dev, 0, 20, 80, 21, 81, 10, 0);
+ litest_touch_up(dev, 0);
+
+ /* expect lots of little events, no big jump */
+ libinput_dispatch(li);
+ event = libinput_get_event(li);
+ do {
+ double dx, dy;
+
+ ptrev = litest_is_motion_event(event);
+ dx = libinput_event_pointer_get_dx(ptrev);
+ dy = libinput_event_pointer_get_dy(ptrev);
+ ck_assert_int_lt(abs(dx), 20);
+ ck_assert_int_lt(abs(dy), 20);
+
+ libinput_event_destroy(event);
+ event = libinput_get_event(li);
+ } while (event != NULL);
+}
+END_TEST
+
void
litest_setup_tests(void)
{
@@ -4077,4 +4114,6 @@ litest_setup_tests(void)
litest_add_for_device("touchpad:bugs", touchpad_tool_tripletap_touch_count, LITEST_SYNAPTICS_TOPBUTTONPAD);
litest_add("touchpad:time", touchpad_time_usec, LITEST_TOUCHPAD, LITEST_ANY);
+
+ litest_add_for_device("touchpad:jumps", touchpad_jump_finger_motion, LITEST_SYNAPTICS_CLICKPAD);
}
--
2.7.4

View file

@ -0,0 +1,35 @@
From 31b1e9e619ebe3281a4659590d7318225b81bd97 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu, 19 May 2016 14:40:33 +1000
Subject: [PATCH libinput] udev: mark ALPS touchpads fw version 300 as wobbly
touchpads
Includes the Dell Lattitude E5420 but since all alps touchpads with the same
fw version are the same (as far as we know) hooking this off the firmware
version should cover this generation.
https://bugzilla.redhat.com/show_bug.cgi?id=1336084
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
udev/90-libinput-model-quirks.hwdb | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/udev/90-libinput-model-quirks.hwdb b/udev/90-libinput-model-quirks.hwdb
index 147fec2..305fed0 100644
--- a/udev/90-libinput-model-quirks.hwdb
+++ b/udev/90-libinput-model-quirks.hwdb
@@ -26,6 +26,10 @@ libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:800
libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:800
LIBINPUT_ATTR_SIZE_HINT=100x55
+libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:300
+libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:300
+ LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1
+
libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:310
libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:310
LIBINPUT_MODEL_ALPS_RUSHMORE=1
--
2.7.4

View file

@ -4,8 +4,8 @@
%global gitversion 58abea394
Name: libinput
Version: 1.1.7
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
Version: 1.2.4
Release: 4%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
Summary: Input device library
License: MIT
@ -20,12 +20,18 @@ Source0: http://www.freedesktop.org/software/libinput/libinput-%{version}
# Not upstream, keep until kernel 4.2 or 4.1.x with dbf3c37086
Patch01: 0001-touchpad-serial-synaptics-need-to-fake-new-touches-o.patch
Patch02: 0001-Make-a-link-to-the-html-docs-available-as-a-define.patch
Patch03: 0001-touchpad-detect-and-warn-about-kernel-tracking-point.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1336084
Patch04: 0001-touchpad-add-LIBINPUT_MODEL_WOBBLY_TOUCHPAD-for-the-.patch
Patch05: 0001-udev-mark-ALPS-touchpads-fw-version-300-as-wobbly-to.patch
BuildRequires: git
BuildRequires: autoconf automake libtool pkgconfig
BuildRequires: libevdev-devel
BuildRequires: libudev-devel
BuildRequires: mtdev-devel
BuildRequires: mtdev-devel libwacom-devel
BuildRequires: pkgconfig(udev)
%description
@ -97,6 +103,39 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%changelog
* Mon May 23 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.4-4
- Fix pointer jitter on ALPS FW v300 (#1336084)
* Fri May 20 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.4-3
- Fix pointer jitter on the Dell E5420 (#1336084)
* Thu May 12 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.4-2
- discard large cursor jumps (#1335307)
* Tue Apr 19 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.4-1
- libinput 1.2.4
* Tue Apr 12 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.3-1
- libinput 1.2.3
* Tue Mar 15 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.2-1
- libinput 1.2.2
* Fri Mar 11 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.1-4
- Fix jerky pointer motion on the Lenovo T450/T460/X1 3rd hardware
* Mon Mar 07 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.1-3
- Fix segfault on mislabeled tablets (#1314955)
* Wed Mar 02 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.1-2
- Add libwacom-devel to BuildRequires
* Wed Mar 02 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.2.1-1
- libinput 1.2.1
* Thu Feb 18 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.1.8-1
- libinput 1.1.8
* Wed Feb 10 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.1.7-1
- libinput 1.1.7

View file

@ -1 +1 @@
a501715a6135ac1f772bb5f3e3183481 libinput-1.1.7.tar.xz
1cbaa34f04a336f2703906d564e0a37a libinput-1.2.4.tar.xz