touchpad-jumping-cursors.rst 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. .. _touchpad_jumping_cursor:
  2. ==============================================================================
  3. Touchpad jumping cursor bugs
  4. ==============================================================================
  5. A common bug encountered on touchpads is a cursor jump when alternating
  6. between fingers on a multi-touch-capable touchpad. For example, after moving
  7. the cursor a user may use a second finger in the software button area to
  8. physically click the touchpad. Upon setting the finger down, the cursor
  9. exhibits a jump towards the bottom left or right, depending on the finger
  10. position.
  11. When libinput detects a cursor jump it prints a bug warning to the log with
  12. the text **"Touch jump detected and discarded."** and a link to this page.
  13. .. note:: This warning is ratelimited and will stop appearing after a few
  14. times, even if the touchpad jumps continue.
  15. In most cases, this is a bug in the firmware (or kernel driver) and to
  16. libinput it appears that the touch point moves from its previous position.
  17. The pointer jump can usually be seen in the :ref:`libinput record
  18. <libinput-record>` output for the device:
  19. ::
  20. E: 249.206319 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
  21. E: 249.218008 0003 0035 3764 # EV_ABS / ABS_MT_POSITION_X 3764
  22. E: 249.218008 0003 0036 2221 # EV_ABS / ABS_MT_POSITION_Y 2221
  23. E: 249.218008 0003 003a 0065 # EV_ABS / ABS_MT_PRESSURE 65
  24. E: 249.218008 0003 0000 3764 # EV_ABS / ABS_X 3764
  25. E: 249.218008 0003 0001 2216 # EV_ABS / ABS_Y 2216
  26. E: 249.218008 0003 0018 0065 # EV_ABS / ABS_PRESSURE 65
  27. E: 249.218008 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
  28. E: 249.230881 0003 0035 3752 # EV_ABS / ABS_MT_POSITION_X 3752
  29. E: 249.230881 0003 003a 0046 # EV_ABS / ABS_MT_PRESSURE 46
  30. E: 249.230881 0003 0000 3758 # EV_ABS / ABS_X 3758
  31. E: 249.230881 0003 0018 0046 # EV_ABS / ABS_PRESSURE 46
  32. E: 249.230881 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
  33. E: 249.242648 0003 0035 1640 # EV_ABS / ABS_MT_POSITION_X 1640
  34. E: 249.242648 0003 0036 4681 # EV_ABS / ABS_MT_POSITION_Y 4681
  35. E: 249.242648 0003 003a 0025 # EV_ABS / ABS_MT_PRESSURE 25
  36. E: 249.242648 0003 0000 1640 # EV_ABS / ABS_X 1640
  37. E: 249.242648 0003 0001 4681 # EV_ABS / ABS_Y 4681
  38. E: 249.242648 0003 0018 0025 # EV_ABS / ABS_PRESSURE 25
  39. E: 249.242648 0000 0000 0000 # ------------ SYN_REPORT (0) ----------
  40. E: 249.254568 0003 0035 1648 # EV_ABS / ABS_MT_POSITION_X 1648
  41. E: 249.254568 0003 003a 0027 # EV_ABS / ABS_MT_PRESSURE 27
  42. E: 249.254568 0003 0000 1644 # EV_ABS / ABS_X 1644
  43. E: 249.254568 0003 0018 0027 # EV_ABS / ABS_PRESSURE 27
  44. In this recording, the pointer jumps from its position 3752/2216 to
  45. 1640/4681 within a single frame. On this particular touchpad, this would
  46. represent a physical move of almost 50mm. libinput detects some of these
  47. jumps and discards the movement but otherwise continues as usual.
  48. If your only encounter with these jumps is the warning printed to the log,
  49. libinput functions as intended.
  50. When you encounter the warning in the log, please generate a recording of
  51. your touchpad with :ref:`libinput record <libinput-record>` and file a bug.
  52. See :ref:`reporting_bugs` for more details.
  53. Note that it most cases, libinput cannot actually fix the issue. Filing a
  54. bug is useful to figure out if there are other factors at play or whether
  55. there are heuristics we can employ to reduce the impact.
  56. ------------------------------------------------------------------------------
  57. AlpsPS/2 ALPS DualPoint TouchPad jumping to 4095/0
  58. ------------------------------------------------------------------------------
  59. A special case of pointer jumps happens on ``AlpsPS/2 ALPS DualPoint TouchPad``
  60. devices found in the Lenovo ThinkPad E465 and E550 and likely others with
  61. the same touchpad hardware. On those devices, the touchpad occasionally
  62. sends an event for the second finger to move to position 4095/0 before
  63. moving back to the original position. libinput detects this movement and
  64. removes it but depending on the interaction this may cause a smaller jump
  65. later when the coordinates reset to the new position of the finger.
  66. Some more information is available in `Gitlab Issue #492 <https://gitlab.freedesktop.org/libinput/libinput/-/issues/492>`__.