Summary: | Edge exclusion zone too wide for large touchpad | ||
---|---|---|---|
Product: | Wayland | Reporter: | Peter Y. Chuang <peteryuchuang> |
Component: | libinput | Assignee: | Wayland bug list <wayland-bugs> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | peter.hutterer |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 103208 |
Description
Peter Y. Chuang
2017-10-18 08:13:36 UTC
good point. we should cap these at 8mm or something, but I'd like to figure out where exactly we can start detecting the full palm size on those devices. The problem with the edges is that we don't get a full finger size so a palm looks like a normal finger. So the question is - where does a finger start triggering a palm based on size? You should be able to modify tools/libinput-measure-touch-size to query that information. Or at least use it as base for a new tool that figures this out. > where does a finger start triggering a palm based on size? You should be able
> to modify tools/libinput-measure-touch-size to query that information. Or at
> least use it as base for a new tool that figures this out.
I'm not sure how to go about testing that. However, since 3mm seems pretty sufficient in my own use, I suppose touch-size measurement is more or less right 3mm away from the edges. Though before we can say for sure where, you may add 1 or 2 mm just to be safe.
FWIW, macOS doesn't appear to have exclusion zones at all, though it rejects palm touches on the edge well enough for normal usage (far from perfect though, if one tests it for every conceivable way a palm can touch the touchpad).
starting point: collect the x/y together with the major/minor values. store them in a list and record *a lot* of motions where you move with your finger normally down around/towards/away from the edges. Print all the data, then use gnuplot or python to get some statistics and visualization. You'll probably find that on some x or y coordinates the detected maximum/mean/average values for the major/minors drop off. for gnuplot, I'd print two diagrams, one with x/minor as x/y-axes, one with y/major as x/y-axes. come to think of it, you're probably better off recording a single long evemu recording first, then running this through through a script (instead of re-recording every time). Look at this repo here for some example scripts that do that: https://github.com/whot/input-data-analysis/ I haven't quite figured out how to analyse the recordings with python scripts, unfortunately. Sorry about that. However, I would be more than happy to provide you with more evemu recording if that helps. commit 3e9e0e2eb18f0eae5ffe2be756903d92b8b88f75 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Mon Oct 23 15:30:41 2017 +1000 touchpad: cap the edge palm detection zones at 8mm So do you still want me to have a go at making some evemu recordings around the edges? I'd say give the above commit a try and let's see how we go. it reduces the edge size which was the main issue in this bug. 8mm is large enough that by then the real palm detection should kick in. so if there's another issue with palm detection, it's probably better to file a new bug As I said, I've narrowed it before to 3mm. So I'd say it can be narrower still. Also: /* palm edges are 8% of the width on each side up to a max of 8mm */ mm.x = min(8, width * 0.08); edges = evdev_device_mm_to_units(device, &mm); tp->palm.left_edge = edges.x; mm.x = width * 0.92; edges = evdev_device_mm_to_units(device, &mm); tp->palm.right_edge = edges.x; if (!tp->buttons.has_topbuttons) { /* top edge is 5% of the height */ mm.y = height * 0.05; edges = evdev_device_mm_to_units(device, &mm); tp->palm.upper_edge = edges.y; It appears that only the left edge has been changed, if I'm not mistaken. oops, thanks. I pushed a fix as commit ed52002c8ddeac218ae88231d5a8f759f8733266 (tmp-today/master) Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Mon Oct 23 15:30:41 2017 +1000 touchpad: cap the edge palm detection zones at 8mm |
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.