Bug 99139

Summary: Delay after resting thumb
Product: Wayland Reporter: Joe Paley <joe.paley>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED NOTABUG QA Contact:
Severity: normal    
Priority: medium CC: peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu events
lib-input events verbose
Here is another recording
Output from record session
events verbose output

Description Joe Paley 2016-12-18 16:38:55 UTC

    
Comment 1 Joe Paley 2016-12-18 16:40:25 UTC
I rest my thumb on the trackpad and move the pointer with my index finger.  When I do this, there is typically a ~1 second delay before the pointer starts moving.  After the delay, everything works well.
Comment 2 Joe Paley 2016-12-18 16:41:27 UTC
On a Dell XPS 13 running Mint 18
Comment 3 Peter Hutterer 2016-12-18 21:28:38 UTC
record the interaction with evemu-record please and attach the output here. that way I can replay it and see what's happening. sudo libinput-debug-events --verbose may be helpful too to identify what's going on.
Comment 4 Joe Paley 2016-12-18 22:07:34 UTC
Created attachment 128530 [details]
evemu events

Hard to tell if this captured it since the mouse wasn't moving while I was recording, but I believe it did because when I play it back it starts by interpreting it as a two-finger scroll and then just moves the pointer (without me lifting my thumb).
Comment 5 Joe Paley 2016-12-18 22:08:49 UTC
Created attachment 128531 [details]
lib-input events verbose

Not the same session as the evemu capture.
Comment 6 Peter Hutterer 2016-12-21 02:47:33 UTC
(In reply to Joe Paley from comment #4)
> Created attachment 128530 [details]
> evemu events

sorry, I can't replay this, you cut off the device description at the top which I need to recreate the device. Please attach the full log.
Comment 7 Joe Paley 2016-12-21 20:13:34 UTC
Created attachment 128619 [details]
Here is another recording

I made this recording via:
sudo evemu-record /dev/input/event15 evemu2.txt > ~/record.txt
Comment 8 Joe Paley 2016-12-21 20:14:00 UTC
Created attachment 128620 [details]
Output from record session
Comment 9 Peter Hutterer 2016-12-21 21:15:23 UTC
sigh, that was a bug we fixed over a year ago but apparently mint ships a 2 year old version of evemu. Please grab evemu from git, thanks.

http://cgit.freedesktop.org/evemu/
Comment 10 Peter Hutterer 2016-12-21 22:13:32 UTC
ok, reconstructed the file here and the basic problem is: our thumb detection currently only works on the very bottom of the touchpad, see https://wayland.freedesktop.org/libinput/doc/latest/palm_detection.html

From what I can tell, your thumb rests in the center of the touchpad, about 1/3 up from the bottom. So it's detected as normal finger and thus the motion becomes a two-finger scroll motion. Indeed, that's what I see in libinput-debug-events (run with --verbose for more info).

I'm assuming the delay is thus caused by these scroll events, unless you have something scrollable under the cursor it will appear as a motion delay. In this recording, the pointer movement doesn't start until you lift one finger at the 0.541628 event. 

Also note that your touchpad support pressure so we really can't tell whether a finger is a thumb or a normal finger. All I can recommend here is that you either only place the thumb in the software button area at the bottom of the touchpad or not rest your thumb on the touchpad, sorry.
Comment 11 Joe Paley 2016-12-21 22:27:06 UTC
Thank you for taking a look, Peter.

I also have a mac laptop running OS X which handles this case flawlessly.  No matter where I rest my thumb, it is ignored.  Can you using the size of the finger (as well as relative location) to determine if it is a thumb?

Playing around with this on my mac laptop:

If I put my thumb down and move it, it moves the cursor
Then add my index finger on top, index finger moves the cursor, moving my thumb now does nothing

Doesn't matter where on the touch pad I do this and it works correctly.  I will note that if I turn the laptop upside down this does not work (my index finger must be above the thumb).
Comment 12 Peter Hutterer 2016-12-21 22:43:23 UTC
(In reply to Joe Paley from comment #11)
> I also have a mac laptop running OS X which handles this case flawlessly. 
> No matter where I rest my thumb, it is ignored.  Can you using the size of
> the finger (as well as relative location) to determine if it is a thumb?

on the mac we could, but not on the XPS. the apple touchpad provides a lot more information and I'm assuming they use pressure to detect thumbs. Your touchpad here merely provides x and y coordinates, nothing more.
Comment 13 Joe Paley 2016-12-21 22:49:19 UTC
I don't think it's pressure.  On the mac I can rest my thumb lightly, and it works.  Conversely I can press hard with my index finger and use my middle finger above it and it always treats my index as a finger (does not ignore).  However if I lay down the index, it's ignored like a thumb.

However if the trackpad just gives you a single x/y point, nothing you can do.
Comment 14 Joe Paley 2016-12-22 00:22:51 UTC
Using my XPS again, I actually have the exact same issue even if I have my thumb at the bottom of the trackpad
Comment 15 Peter Hutterer 2016-12-22 00:33:24 UTC
The bottom area where we can detect palm is really small because in the upper area we too rely on pressure (see the graphic in the link above.

If you have software buttons enabled however, any finger resting in the software button area should be ignored. Running libinput-debug-events --verbose should tell you more about the state machines and how they trigger.
Comment 16 Joe Paley 2016-12-23 00:07:55 UTC
Created attachment 128643 [details]
events verbose output

This is a case where I rested my thumb at the bottom of the touch pad, moved the index finger, moved my index (nothing happened), then a bit later the pointer moved.  
At some point the thumb state toggles, which is likely where my index finger is moving the pointer.  However I'm keeping my thumb in the same place the whole time.  What is trigger the eventual recognition of my thumb, and how is that different from when I originally put my thumb down?
Comment 17 Peter Hutterer 2017-01-03 00:25:55 UTC
hmm, hard to say without the matching evemu recording, the debugging output isn't as useful as it could be. what I can read out of it though:

* the first finger seems to be outside of the button area and is not a thumb
* there is a pinch gesture triggered, at 1.40s into the recording the thumb is tagged as thumb and the gesture is cancelled. because there is now a single finger it continues as motion.

I suspect nothing listens to the pinch gesture, that's why it looks like a delay.
So the main question is why the thumb is detected as is, but without an evemu recording of this triggering I can't tell, sorry.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.