[Wayland-bugs] [Bug 99410] Lenovo Yoga X1 touchpad unprecise

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Jan 31 01:58:34 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=99410

Peter Hutterer <peter.hutterer at who-t.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEEDINFO

--- Comment #7 from Peter Hutterer <peter.hutterer at who-t.net> ---
ok, I've done an analysis on my T450p which in theory has the same touchpad as
the X1 Yoga. Please attach your dmesg and an evemu-record sequence of such a
circle though so I can verify a few things.

What I found in regards to issue 2 on my touchpad here:
Moving diagonally produces a wavy motion. I can't quite reproduce the circle
here, can you reproduce the wavy motion?
On my device, this is caused by the problem described here:
https://who-t.blogspot.com.au/2016/09/libinput-and-lenovo-t450-and-t460.html

That wavy motion *may* exist on my T440 as well, but it's unclear whether there
it is caused by my finger motion or any other issue. Either way, the same code
and such a pronounced difference hints at a HW/FW bug, see the blog post.
Changing the hysteresis did not have any effect.

The hysteresis is done on a per-axis basis, this could cause the issue you're
seeing. That removing the hysteresis removes the issue verifies this.
Right now I'm assuming that the latest touchpads have a new FW version again
that prevents that bug in the T450p series.

Please remove the call to tp_motion_hysteresis() in libinput's
src/evdev-mt-touchpad.c and try with that version. The diff is:
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index e43a9ba..4bac610 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -1037,7 +1037,6 @@ tp_process_state(struct tp_dispatch *tp, uint64_t time)
                tp_thumb_detect(tp, t, time);
                tp_palm_detect(tp, t, time);

-               tp_motion_hysteresis(tp, t);
                tp_motion_history_push(t);

                tp_unpin_finger(tp, t);

If this works, we'll probably need a two-pronged approach: make the hysteresis
work across both axes simultaneously and have some knob that exposes it, see
bug 98839. Removing the hysteresis altogether does not work, see 48473994c8e60
and bug 94379.

I haven't looked at the pointer acceleration issue (1) yet.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-bugs/attachments/20170131/a864e729/attachment.html>


More information about the wayland-bugs mailing list