Bug 95030 - Macbook Pro 2015 touchpad activated when finger is hovering
Summary: Macbook Pro 2015 touchpad activated when finger is hovering
Status: RESOLVED NOTOURBUG
Alias: None
Product: Wayland
Classification: Unclassified
Component: libinput (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-20 05:26 UTC by Cole Mickens
Modified: 2016-05-13 00:08 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
touchpad.evemu (67.18 KB, text/plain)
2016-05-09 00:33 UTC, Peter Hutterer
Details
evemu recording with contact (109.12 KB, text/plain)
2016-05-09 01:14 UTC, Cole Mickens
Details

Description Cole Mickens 2016-04-20 05:26:38 UTC
The touchpad on the MBP 2015 model (the force touchpad model) is overly sensitive. It reacts to my finger, even when my finger is not yet actually in contact with the touchpad.

This bug was affecting me on my Chromebook Pixel 2 early on in libinput's life, but was quickly addressed. I'm assuming a similar issue is at play here.

Please let me know if I can provide any additional information. Thanks.
Comment 1 Cole Mickens 2016-04-20 05:27:31 UTC
I'm currently using libinput version 1.2.2. I don't see anything mentioned in the 1.2.3 changelog that makes me think this is addressed in 1.2.3.
Comment 2 Cole Mickens 2016-04-20 05:41:47 UTC
I can now confirm it still happens with libinput v1.2.3.
Comment 3 Peter Hutterer 2016-04-22 04:39:19 UTC
record one of these hovering sequences with evemu-record and attach it here please, thanks.
Comment 4 Peter Hutterer 2016-05-05 04:01:40 UTC
ping?
Comment 5 Cole Mickens 2016-05-06 19:14:15 UTC
I tried to make sure I only hovered and didn't touch the touchpad.

This is the log as captured by:

`sudo evemu-record /dev/input/event11 > bcm5974.log`

https://gist.githubusercontent.com/anonymous/7062945e0599195bec470ac1a2d58415/raw/dadda577c6a13fc8d644abf98035620c785a87cc/bcm5974.log
Comment 6 Peter Hutterer 2016-05-09 00:33:29 UTC
Created attachment 123555 [details]
touchpad.evemu

Please always attach files instead of linking to external sites.
Comment 7 Peter Hutterer 2016-05-09 00:45:59 UTC
ok, so we get BTN_TOUCH from the kernel but the major/minor axes look out of whack. can you submit a recording with a real touch for comparison please? A single short sequence of a pointer movement is sufficent
Comment 8 Cole Mickens 2016-05-09 01:14:46 UTC
Created attachment 123556 [details]
evemu recording with contact

I executed: 'sudo evemu-record /dev/input/event11 > bcm5974.log'

Then I dragged my finger across the touchpad from left to right.
Comment 9 Peter Hutterer 2016-05-09 01:50:28 UTC
First thing I noticed: ABS_MT_TOUCH_MAJOR is not set when hovering. Can you confirm that? Piping evemu-record through "grep ABS_MT_TOUCH_MAJOR" should be enough to verify that (use unbuffer to avoid false positives caused by buffering)
Comment 10 Cole Mickens 2016-05-09 05:29:29 UTC
I don't have unbuffer and couldn't easily acquire it, but evemu was outputting timestamps and I wasn't seeing anything buffered in a way that would affect my observations. Here's what I observed.

Hovering: no ABS_MT_TOUCH_MAJOR output

Touching with one finger: inconsistent results. I would get ABS_MT_TOUCH_MAJOR, but sometimes it would stop appearing for a second or two even though the cursor was moving.

Touching with two fingers: seemed like I saw the event more consistently, but there were still times when I would vertical scroll with two fingers. Chrome was certainly moving up and down a lot, but I had numerous gaps, a second, up to 5 seconds, where I wasn't seeing that event output, despite the cursor reacting as I would expect.
Comment 11 Peter Hutterer 2016-05-09 05:48:21 UTC
(In reply to Cole Mickens from comment #10)
> Hovering: no ABS_MT_TOUCH_MAJOR output

ok, that's good news then (I'll need to check the kernel driver to be sure though)

> Touching with one finger: inconsistent results. I would get
> ABS_MT_TOUCH_MAJOR, but sometimes it would stop appearing for a second or
> two even though the cursor was moving.

that is acceptable. the kernel buffers values, so if the major axis does not change then no events will be sent. and since the axis describes the size of the touchpoint it does not change too much while the finger pressure remains the same. Can you confirm though that the ABS_MT_TOUCH_MAJOR event comes as soon as you physically touch the touchpad? To detect this we only need one event, after that it doesn't matter (though it'd be interesting to see if it goes back to 0 or so on physical release)
Comment 12 Cole Mickens 2016-05-09 05:52:20 UTC
>Can you confirm though that the ABS_MT_TOUCH_MAJOR event comes as soon as you physically touch the touchpad?

Yes. As soon as I make contact that event is emitted.

>(though it'd be interesting to see if it goes back to 0 or so on physical release)

I'm not sure how to tell if this is the case since evemu-record presents them as distinct events rather than a continuous value that I can watch "go back to 0", other than the fact that if I go from physical-contact to hovering, the event stops being output.
Comment 13 Peter Hutterer 2016-05-09 05:55:44 UTC
(In reply to Cole Mickens from comment #12)
> I'm not sure how to tell if this is the case since evemu-record presents
> them as distinct events rather than a continuous value that I can watch "go
> back to 0", other than the fact that if I go from physical-contact to
> hovering, the event stops being output.

pipe the evemu record into a file and search for the last occurrence of the event. Then check what that value is. Repeat a few times to see if there's any pattern.
Comment 14 Benjamin Tissoires 2016-05-09 07:44:09 UTC
This needs to be fixed in the kernel unfortunately. We could detect this in libinput, but it just does not make sense to detect all various bugs from the kernel. Here the kernel says that the device is touching while it is hovering, so it's a bug.

Please open a bug on https://bugzilla.kernel.org/, mentioning this one, and attach your recordings there too. Make sure to have the input component selected, and also reference the new bug here. I'll try to poke the various maintainers for this driver then.

I do not have any MacBook available for the tests, and I assume the required patch might affect other generations, so better have the actual maintainer handling this.

Regarding the pixel 2 mentioned in comment 0, there was a bug in both the kernel and libinput IIRC, and we fixed those in a timely manner, yes :)
Comment 15 Peter Hutterer 2016-05-13 00:08:57 UTC
Closing this for now, please re-open when the kernel fix is in and it still doesn't work in libinput


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.