summaryrefslogtreecommitdiff
path: root/doc/touchpad-jumping-cursors.dox
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-09-16 15:13:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2016-04-28 10:01:20 +1000
commit6a22eed4efa2a18664d62c6d8131c05258f869ab (patch)
treea4313b12701bd522fa5f6acb10443246f30536ca /doc/touchpad-jumping-cursors.dox
parent774be50e68b2d62d9dfbfa3bfffd59be7e89bf3c (diff)
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>
Diffstat (limited to 'doc/touchpad-jumping-cursors.dox')
-rw-r--r--doc/touchpad-jumping-cursors.dox54
1 files changed, 54 insertions, 0 deletions
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.
+*/