Bug 103947 - can't seem to get a usable acceleration profile on T450s trackpoint
Summary: can't seem to get a usable acceleration profile on T450s trackpoint
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: libinput (show other bugs)
Version: unspecified
Hardware: Other Linux (All)
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-11-28 02:33 UTC by Nathaniel Smith
Modified: 2018-03-23 04:21 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Nathaniel Smith 2017-11-28 02:33:46 UTC
I'm using Debian testing on a Thinkpad T450s, and a recent upgrade made some change to trackpoint handling. Since then I've been unable to find a configuration that makes my trackpoint usable, and I'd really appreciate some help.

With Gnome's default configuration, the pointer's top speed is comfortable and makes it easy to flick the pointer across the screen in the way I expect, but it's very difficult to control at low speeds -- small movements are jerky and I often jump the pointer back and forth several times across a button before managing to land on it and press it. If I verrrry carrrrefully apply the minimum force possible to the pointer stick, it starts to move at a reasonable speed, but as I increase that it feels like it quickly "jumps" to some higher speed. It feels like the acceleration steps are in the wrong place. (I'm not sure how to check if that's true or not though -- I could be hallucinating. Is there some way to debug this, e.g. by asking libinput --debug-events to say when acceleration is kicking in or not?)

On the other hand, if I turn down the mouse speed slider in the Gnome settings app, then fine control becomes reasonable but the top speed is frustratingly slow. Hauling the pointer from one corner of the screen to another feels like a chore.

I've read https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html, and I've tried fiddling empirically with the /sensitivity and /speed entries in /sys/devices/platform/i8042/serio1/serio2, but I still haven't figured out any way to make this work. I feel like I want a way to shift the initial ramp up period over to the right, while keeping the maximum speed in about the same place? Does that make sense? But I can't figure out how to do that. I can't even figure out what the difference is between "sensitivity" and "speed"...

Any help would be much appreciated.
Comment 1 Peter Hutterer 2017-11-29 02:48:09 UTC
Just typed this one, please have a read: https://wayland.freedesktop.org/libinput/doc/latest/trackpoints.html

Oh, and I clearly needed to update the docs, libinput now ignores CONST_ACCEL property. Sorry about that, pushed out now.
Comment 2 Nathaniel Smith 2017-11-29 03:54:40 UTC
Thanks, that's really helpful!

Is it possible to somehow find out what range libinput is using currently? It'd be interesting to compare against what 'measure trackpoint-range' outputs, to get a sense of whether it explains the problem.

I did eventually find 'sudo udevadm info --query=all /sys/class/input/eventN', but it doesn't have any LIBINPUT_ATTR_TRACKPOINT_RANGE entry. I assume that means it's using the default, but what is that? 100? (My actual range is more like 50.)

A few minor suggestions, hopefully useful:

Maybe 'measure trackpoint-range' could just print the current value? It would also be useful if it printed which /sys/class/input/eventN node it was using -- I know there's some easy way to find it but I forget what, so I ended up using trial and error to find it :-)

It'd also be helpful if 'measure trackpoint-range' printed out the device name and dmi modalias -- it's not 100% obvious to me how those are supposed to be put together. I guess that document actually doesn't say how to figure out the device name string at all.
Comment 3 Nathaniel Smith 2017-11-29 04:17:40 UTC
I've been trying

libinput:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT450s:*
  LIBINPUT_ATTR_TRACKPOINT_RANGE=35

and it's a bit hard to say ("it's not what I'm used to!"), but after a few minutes of waving my pointer around it does tentatively seem somewhat better?
Comment 4 Peter Hutterer 2017-11-29 04:19:32 UTC
see https://cgit.freedesktop.org/wayland/libinput/tree/src/libinput-util.h#n57, default range is 20. so if your range is miles off from that, it'd explain the issues.

> Maybe 'measure trackpoint-range' could just print the current value

I'd rather not, there's little benefit beyond possibly introducing a bias.

> It would also be useful if it printed which /sys/class/input/eventN node it was using

Your wish, my command, etc.

https://cgit.freedesktop.org/wayland/libinput/commit/?id=d1146930daef0b9259154658cface5a4f8f5386f

> it's not 100% obvious to me how those are supposed to be put together.

I've done this too many times to be able to write an to-understand summary here. I was hoping the example compared to a dmi modalias on your system would be sufficient to guess the rest. Any chance you can write a blurb for me here? Send it directly to me please (to my bugzilla email), thanks
Comment 5 Nathaniel Smith 2017-11-29 06:19:12 UTC
> if your range is miles off from that

I think I'm settling on 50, which is indeed a ways off from 20. And I guess that matches my original intuition, if the entire acceleration curve was getting jammed into the bottom half of my device's range...

> Any chance you can write a blurb for me here? Send it directly to me please (to my bugzilla email), thanks

Email sent.

One more thought: It would be helpful if the block of instructions that 'measure trackpoint-range' prints at the beginning would include the line: "When finished, press control-C to see the results."

Thanks so much for your help, it's really appreciated.
Comment 6 Peter Hutterer 2017-11-29 06:39:54 UTC
Can you post the full hwdb match please? we should start shipping this so it's fixed for everyone with your laptop.
Comment 7 Nathaniel Smith 2017-11-29 06:55:11 UTC
What I'm using right now (modeled off the example in the docs) is:

libinput:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT450s:*
  LIBINPUT_ATTR_TRACKPOINT_RANGE=50

Do you want the full unredacted dmi modalias?
Comment 8 Timo Aaltonen 2018-02-15 20:13:49 UTC
I have a T470s and have the same issue, the trackpoint feels too sensitive even with the minimum acceleration.
Comment 9 Peter Hutterer 2018-03-23 03:44:27 UTC
Timo, please file a separate bug (so we can get back to it in the future) and run the libinput measure trackpoint-range tool. Thanks.
Comment 10 Peter Hutterer 2018-03-23 04:21:56 UTC
Way too late, but I finally pushed out the range. Sorry about the delay.

commit 93dfd0fa548e4daf43f06c5a04c35bc3fcf8b1be
Author: Peter Hutterer <>
Date:   Fri Mar 23 13:43:07 2018 +1000

     udev: add T450s trackpoint range


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.