Adjusting ThinkPad TrackPoint sensitivity on Ubuntu 16.04 (and others?)

I bought a Lenovo ThinkPad X1 Yoga a while back and have been using it as my "Everything" machine: dev workstation, personal stuff, entertainment device. I'm super happy with both the hardware and Ubuntu 16.04's driver support however I have run into one annoying issue... Well, I'm not sure if "annoying" is the right word for it as it resulted in an actual injury:

The mouse system config applet which ships with Ubuntu 16.04 is unable to adjust the machine's TrackPoint speed and sensitivity to values which I would consider usable. I found myself pushing on the TrackPoint so hard that I eventually started to have a fair deal of pain and swelling in the first joint of my index finger!

Normally one would adjust the TrackPoint responsiveness via the "Mouse and Touchpad" applet:

Screenshot of 'Mouse and Touchpad applet selection'

Screenshot of 'Mouse and Touchpad applet'

Notice that the applet has only a "Pointer speed" adjustment and not individual sliders for speed and sensitivity? I consider that a secondary problem. The primary problem is that even when that slider is laid over to the right the "speed" is not sufficient. As it turns out, adjusting the slider translates into numeric values which live in files in Linux's /sys filesystem. I think this should be consistent across X1 Yoga systems but in my case those files were:

  • /sys/devices/platform/i8042/serio1/serio2/speed
  • /sys/devices/platform/i8042/serio1/serio2/sensitivity

I didn't record the actual values but, from memory, the mouse config applet was injecting values in the range of 90 through 120's into the files where the min:max values are 0:255. You can "echo" new numeric values into these files to tune your mouse sensitivity to your liking like so:

Screenshot of adjusting mouse sensitivity from command line

However be aware of two things:

  1. This will often cause a momentary freakout of your mouse behavior. It takes a second or two for things to settle down.
  2. Changes made in the /sys filesystem do not persist across reboot so you're going to need to put these changes somewhere when they will persist.

According to this post over at the Ubuntu forums, one way to make these changes persist is by adding a config file in /etc/tmpfiles.d. Apparently systemd will re-apply settings placed here at every reboot. Here's the contents of my /etc/tmpfiles.d/trackpoint.conf:

w /sys/devices/platform/i8042/serio1/serio2/speed - - - - 255
w /sys/devices/platform/i8042/serio1/serio2/sensitivity - - - - 175

The Ubuntu forum post mentioned above suggest a reboot to have these systemd configs enforced but I found the following command to work and thus avoid the reboot:

$ sudo systemd-tmpfiles --prefix=/sys --create

If you are like me, your hand will thank you for making these adjustments.


Last posts

  1. Rancher Catalog Templates from Scratch : Part 1 - Catalogs and Templates

    tags: rancherdockerdevopsautomation

  2. Setting Up DH + TLS-based VPN With OpenVPN on a Tomato-based Home Router

    tags: netgeartomatoubuntuvpn

  3. A Small Addition to Deploy to Noop

    tags: puppetnoopdevops

  4. .gitignore to allow 'empty' directory

    tags: git

  5. Turning the Brownfield Green - aka Puppet and "Deploy to Noop"

    tags: puppetnoopdevops