Cursor jumps when clicking while moving
Submitted by Mike C. Fletcher
Assigned to Peter Hutterer @whot
Description
This is running on a Kubuntu 15.10 (using the Neon packages for KDE) with kernel 4.2.0-34-generic and synaptics driver version 1.8.2-1ubuntu1 and xorg version 1:7.7+7ubuntu4 .
This appears to at least be related to #87788, though with different hardware running on a very up-to-date machine (that report is from 2014). This is seen on a Dell XPS 15 9550 (early 2016 model with a fully multi-touch-capable touchpad) with the following reported in dmesg during boot:
[ 2.277771] psmouse serio1: synaptics: queried max coordinates: x [..5664], y [..4646] [ 2.322865] psmouse serio1: synaptics: queried min coordinates: x [1278..], y [1206..] [ 2.412838] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2, id: 0x1e2b1, caps: 0xf00123/0x840300/0x12e800/0x0, board id: 3125 , fw id: 1961136 [ 2.469331] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
the issue occurs in the following case:
- move cursor with one finger in the trackpad area (to target a control)
- while moving, rest another finger in the "click button" area at the bottom of the touchpad (preparing to click)
- lift the "moving" finger while clicking the button-area finger
It can also be produced with left-to-right and bottom to top offsets by rapidly switching between fingers used to move (i.e. separate fingers and "rock" between them), but obviously the "click with the mouse button" case is the most common (and frustrating) case. That is, it is possible to have the touchpad register a "jump" without clicking in the "button" area, and the jump can occur in any direction, not just down.
This seems like it could be largely mitigated by looking for a jump of greater than a human would possibly be able to move on the trackpad in a given period of time and resetting the "last position" to current position, or better, issuing a mouse-up-mouse-down sequence for previous and current positions.
While it might still occur in the rare cases where the user was moving at the extreme bottom of the touchpad area, the jump would be far smaller (the jump is generally going all the way to the bottom of the screen in a single step and registering the clicks on the task-bar instead of the control targeted in client windows).
The evemu-record log of a jump looks like this, with the jump happening at 7.674717.
E: 7.635071 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.647477 0003 0036 2637 # EV_ABS / ABS_MT_POSITION_Y 2637 E: 7.647477 0003 003a 0053 # EV_ABS / ABS_MT_PRESSURE 53 E: 7.647477 0003 0001 2637 # EV_ABS / ABS_Y 2637 E: 7.647477 0003 0018 0053 # EV_ABS / ABS_PRESSURE 53 E: 7.647477 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.659907 0003 0035 3289 # EV_ABS / ABS_MT_POSITION_X 3289 E: 7.659907 0003 0036 2639 # EV_ABS / ABS_MT_POSITION_Y 2639 E: 7.659907 0003 003a 0051 # EV_ABS / ABS_MT_PRESSURE 51 E: 7.659907 0003 0000 3289 # EV_ABS / ABS_X 3289 E: 7.659907 0003 0001 2639 # EV_ABS / ABS_Y 2639 E: 7.659907 0003 0018 0051 # EV_ABS / ABS_PRESSURE 51 E: 7.659907 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.674717 0003 0036 2643 # EV_ABS / ABS_MT_POSITION_Y 2643 E: 7.674717 0003 003a 0043 # EV_ABS / ABS_MT_PRESSURE 43 E: 7.674717 0003 0001 2643 # EV_ABS / ABS_Y 2643 E: 7.674717 0003 0018 0043 # EV_ABS / ABS_PRESSURE 43 E: 7.674717 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.694278 0003 0035 2367 # EV_ABS / ABS_MT_POSITION_X 2367 E: 7.694278 0003 0036 4568 # EV_ABS / ABS_MT_POSITION_Y 4568 E: 7.694278 0003 003a 0025 # EV_ABS / ABS_MT_PRESSURE 25 E: 7.694278 0003 0000 2367 # EV_ABS / ABS_X 2367 E: 7.694278 0003 0001 4568 # EV_ABS / ABS_Y 4568 E: 7.694278 0003 0018 0025 # EV_ABS / ABS_PRESSURE 25 E: 7.694278 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.707251 0003 003a 0050 # EV_ABS / ABS_MT_PRESSURE 50 E: 7.707251 0003 0018 0050 # EV_ABS / ABS_PRESSURE 50 E: 7.707251 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 7.719144 0003 0035 2375 # EV_ABS / ABS_MT_POSITION_X 2375 E: 7.719144 0003 0036 4516 # EV_ABS / ABS_MT_POSITION_Y 4516 E: 7.719144 0003 003a 0057 # EV_ABS / ABS_MT_PRESSURE 57
Version: 7.7 (2012.06)