52

The previously useful ThinkWiki pages appear quite outdated. I am trying to permanently change my TrackPoint sensitivity and speed settings and enable middle mouse button scrolling. I have tried configure-trackpoint in the past, but the settings were not saved permanently (they are lost after restart).

I have tried gpointing-device-settings. Using it, I can get middle mouse button scrolling to work, but I cannot change the speed or sensitivity settings of the trackpoint. All methods on the ThinkWiki page that I've tried do not work as directed in Ubuntu 11.04. Can someone explain how to permanently edit the TrackPoint settings so that I can use it correctly?

0

11 Answers 11

55

Unfortunately there seems to be no easy way. What I will describe is how to create a new Upstart job to set the values on boot through the virtual filesystem under /sys.

  1. Find the device path of your trackpoint

    Run the following in a gnome-terminal (press Alt + F2, type gnome-terminal, and hit Enter):

    find /sys/devices/platform/i8042 -name name | xargs grep -Fl TrackPoint | sed 's/\/input\/input[0-9]*\/name$//'
    

    In my case this returns /sys/devices/platform/i8042/serio1/serio2 - change to whatever it returns for you in the following steps.

  2. Find values for sensitivity and speed

    Run the following commands in a gnome-terminal:

    echo 220 | sudo tee /sys/devices/platform/i8042/serio1/serio2/sensitivity
    

    for a sensitivity of 220 (this will ask you for your password), and

    echo 100 | sudo tee /sys/devices/platform/i8042/serio1/serio2/speed
    

    for a speed of 100. Once you found values you are comfortable with, make the change permanent using an Upstart job:

  3. Create a new udev rule

    Now we need to apply the settings during the system start. Therefore, press Alt + F2, type gksu gedit /etc/udev/rules.d/trackpoint.rules, and hit Enter (this will ask you for your password). Then paste the following:

    SUBSYSTEM=="serio", DRIVERS=="psmouse", WAIT_FOR="/sys/devices/platform/i8042/serio1/serio2/sensitivity", ATTR{sensitivity}="220", ATTR{speed}="110"
    

    (Update) As WAIT_FOR is deprecated, on newer systems you can use DEVPATH instead:

    SUBSYSTEM=="serio", DRIVERS=="psmouse", DEVPATH=="/sys/devices/platform/i8042/serio1/serio2", ATTR{sensitivity}="220", ATTR{speed}="110"     
    

    Save the file and either reboot or run the commands above:

    sudo udevadm control --reload-rules
    sudo udevadm trigger 
    
5
  • 5
    Thanks for the very detailed reply. So I did some more digging and tweaking from the ThinkWiki articles last night, and I discovered something else that worked. First two steps should be the same. Instead of an Upstart job, I used udev rules. I created a file by pressing Alt+F2, typing gksu gedit /etc/udev/rules.d/trackpoint.rules and pasted the following: SUBSYSTEM=="serio", DRIVERS=="psmouse", WAIT_FOR="/sys/devices/platform/i8042/serio1/serio2/sensitivity", ATTR{sensitivity}="200", ATTR{speed}="150" Then reboot. Is there any reason I should use Upstart vs udev rules? Apr 29, 2011 at 16:01
  • IMO the udev approach is the better one, thanks! Edited that into the answer. :-)
    – htorque
    Feb 26, 2012 at 9:04
  • 1
    NOTE: use DEVPATH==" (two equals), otherwise it wont work. Cannot edit the post with just one char change, so just left a comment..
    – baldr
    Jun 1, 2017 at 11:46
  • The udev rule doesn't seem to work in Ubuntu 16.04. See the later answers for other approaches (e.g. the one from Nguyen Thanh Tung).
    – MakisH
    Dec 5, 2017 at 17:07
  • Is there anyway to make it more sensitive? Mine was on 200 and 255 is nowhere near enough....
    – Levi H
    Jun 9, 2021 at 9:43
23

Here's how I was able to make the Trackpoint more sensitive:

  1. Start in the terminal with:

    $ xinput --list --short
    

    You will see something like this:

    omicron@omicron:~$ xinput --list --short
    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint    id=10.  [slave  pointer  (2)]
    ⎜   ↳ ImPS/2 Generic Wheel Mouse                id=12   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Power Button                              id=6    [slave  keyboard (3)]
        ↳ Video Bus                                 id=7    [slave  keyboard (3)]
        ↳ Power Button                              id=8    [slave  keyboard (3)]
        ↳ Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint    id=9    [slave  keyboard (3)]
        ↳ Eee PC WMI hotkeys                        id=11   [slave  keyboard (3)]
    
  2. Find your Trackpoint device. In my case it is id=10.

  3. Find the list of properties available to your device:

    $ xinput --list-props "10"
    
  4. To change the speed, do:

    $ xinput --set-prop "10" "libinput Accel Speed" 0.5
    

    "10" here is the device ID (Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint id=10), so put your ID here, and "0.5" is the level of sensitivity. You can experiment with the sensitivity by putting numbers between 0 and 1. The larger the number, the higher the speed.

    I use 0.4 or 0.45

  5. IMPORTANT: When the speed is chosen, copy the command to autostart:

    Startup Applications

If the settings stop working at some point, check the ID or the device's properties again. There may be some changes to your devices table, and the ID may shift.

6
  • 4
    Unfortunately I get: property 'Device Accel Constant Deceleration' doesn't exist, you need to specify its type and format Not sure how to do that... any suggestions? (Thinkpad T420, Ubuntu 18.04)
    – JamesBB
    Jun 1, 2018 at 17:58
  • 1
    I think you're restricted to the properties shown by xinput list-props $device_id (where device_id= 10 in the above example). For example, on my Thinkpad X1c5 running 18.04, I have a property called libinput Accel Speed that seems tweakable
    – sxc731
    Aug 21, 2018 at 16:55
  • 1
    BTW, changing the Trackpoint rubber cap might also help. Mine was hopelessly hard (to the point my finger was hurting) and after thoroughly wearing it out (within only 18 months, which never happened on many previous ThinkPads) I decided to invest ca $15 in replacements caps (Lenovo part no 4XH0L55146, comes with 10 of those). The outcome is amazing: my Trackpoint has gone from being way too hard to actually being too sensitive. The setting that works for me now (X1c5 with TPPS/2 ALPS TrackPoint on 18.04) is "libinput Accel Speed" -1.0 (being the min acceleration setting). YMMV of course
    – sxc731
    Aug 23, 2018 at 11:47
  • 2
    I have thinkpad E480 and Ubuntu 18.04 and xinput --set-prop "12" "libinput Accel Speed" -0.5 command worked Sep 12, 2018 at 18:08
  • 1
    The most upvoted answer stopped working after the most recent system update for some reason (Arch/Manjaro). This worked for me. Thanks.
    – xji
    Apr 5, 2019 at 19:32
15

For my Thinkpad T530, and Ubuntu 15.10. Just use:

sudo -i gedit /etc/udev/rules.d/10-trackpoint.rules

and then add the following content on, then restart. The setting value will be kept.

ACTION=="add",
SUBSYSTEM=="input",
ATTR{name}=="TPPS/2 IBM TrackPoint",
ATTR{device/sensitivity}="190",
ATTR{device/speed}="180",
ATTR{device/inertia}="6",
ATTR{device/press_to_select}="0"
4
  • This works even when the files needed in the other answers (serio1/sensitivity) do not exist
    – Soupy
    Apr 14, 2018 at 18:52
  • This seems to have worked for me. :) (ThinkpadT420, Ubuntu18.04). Just need to play with the settings, a bit tedious having to restart each time, but I can live with that.
    – JamesBB
    Jun 1, 2018 at 18:31
  • 2
    @JamesBB running udevadm trigger --action add --subsystem all will make udev apply the rules to all the present devices. Jul 7, 2018 at 14:06
  • @CameronNemo - will try that, thanks! Seems to need --subsystem-match all, but I think that's working.
    – JamesBB
    Jan 10, 2019 at 13:24
13

This is based on Vitaly Dubyna's answer, but updated to work for recent (2019) Thinkpads and Xorg versions (thanks to the comments to that answer).

From the command line, enter this command (only the part after the $):

$ xinput | grep -i trackpoint
TPPS/2 Elan TrackPoint   id=12 

Note id=12 (may be different on your system).

$ xinput --list-props 12
...
libinput Accel Speed (300):     0.000000
libinput Accel Speed Default (301):     0.000000
...

Experiment with the speed setting; negative values allowed. For example,

$ xinput --set-prop 12 'libinput Accel Speed' -0.25

Once you're satisfied, add the command as a startup application (typically under Start menu > Preferences > Startup applications).

The above setting name is confirmed for Thinkpad models X1c5 (Ubuntu 18.04), E480 (18.04), and E490 (Mint 19.1).

Note: the numbering (id=12) may get shuffled if you have an external keyboard or mouse plugged in. For more robustness, try this:

xinput --set-prop $(xinput | perl -ne 'if(/TrackPoint.*id=(\d+)/) { print $1; }') 'libinput Accel Speed' -0.25
4

@vitaly-dubyna has the right answer. On debian his method works flawlessly. To make your life easier, put a file .xsessionrc in your home directory with all the settings so that it will be loaded after each restart.

make a new file use vim, pico, gedit --

vim .xsessionrc 

then stick this inside

xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 1
xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 2
xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 200
xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 7 6 4 5
xinput set-prop "TPPS/2 IBM TrackPoint" "Device Accel Constant Deceleration" 0.4

where the first 4 lines is to setup vertical and horizontal scrolling with trackpoint and the last line is to control the speed / and sensitivity.

Note that because the device ID can change depending on whether some input devices are enabled / disabled in BIOS, it is preferable to use the device name in quotes. For most thinkpads TPPS/2 IBM TrackPoint is the reference.


**EDIT:**Nov 2015

#get the device ID for the trackpad. We know it contains the string "TPPS"
ibm_trackpad_id=$(xinput | grep 'TPPS' | cut -d"=" -f2 | cut -f1)
echo $ibm_trackpad_id > ~/temp/ibm_trackpad_id

#set desired params for trackpoint
xinput set-prop $ibm_trackpad_id "Evdev Wheel Emulation" 1
xinput set-prop $ibm_trackpad_id "Evdev Wheel Emulation Button" 2
xinput set-prop $ibm_trackpad_id "Evdev Wheel Emulation Timeout" 200
xinput set-prop $ibm_trackpad_id "Evdev Wheel Emulation Axes" 7 6 5 4
xinput set-prop $ibm_trackpad_id "Device Accel Constant Deceleration" 0.15

# get wireless mouse device ID 
logitech_mouse_id=$(xinput | grep "Logitech" | cut -d"=" -f2 | cut -f1)
echo $logitech_mouse_id > ~/temp/logitech_mouse_id

# this is device dependent. Map the buttons on your mouse the functionality you want. 
xinput set-button-map $logitech_mouse_id 1 2 3 4 5 6 7 9 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

# set props for external mouse
xinput set-prop $logitech_mouse_id "Device Accel Constant Deceleration" 1.7
xinput set-prop $logitech_mouse_id "Device Accel Adaptive Deceleration" 2
xinput set-prop $logitech_mouse_id "Evdev Wheel Emulation" 1
xinput set-prop $logitech_mouse_id "Evdev Wheel Emulation Axes" 7 6 5 4
xinput set-prop $logitech_mouse_id "Evdev Wheel Emulation Button" 8
2
  • 1
    Your "Evdev Wheel Emulation Axes" setting uses natural scrolling horizontally, normal scrolling vertically. I guess most want all-natural scrolling (use 7 6 5 4) or all-normal scrolling (use 6 7 4 5).
    – tanius
    Feb 28, 2015 at 2:22
  • As of Ubuntu 17.10, the evdev driver that this solution relies on is no longer installed by default. You can still install it with sudo apt install xserver-xorg-input-evdev or use the now-default libinput driver instead. In which case, the answer by @htorque is the way to configure speed and sensitivity.
    – tanius
    Feb 2, 2018 at 14:32
2

Configure libinput options via xorg.conf.d and udev

As of Ubuntu 17.10, the libinput driver is now the standard.

Some of its options can be configured via the X.org mechanism, but speed and sensitivity need to be configured with udev rules to put in kernel driver parameters. (See the answer by @htorque for that.)

For configuring the other options, create a file /etc/X11/xorg.conf.d/52-trackpoint-tweaks.conf (or similarly named). The file should have this content:

Section "InputClass"
    Identifier         "Trackpoint tweaks"
    MatchProduct       "TPPS/2 IBM TrackPoint"
    MatchDevicePath    "/dev/input/event*"

    # The default driver now, so optional to put in this line. 
    # But does not hurt mentioning where the options will go.
    Driver             "libinput"

    Option             "NaturalScrolling"      "true"
EndSection

To see the effect, you have to restart X of course. For the list of the other available X.org options, see man(4) libinput.

For a list of the corresponding (but differently named) xinput properties, see xinput --list-prop "TPPS/2 IBM TrackPoint" or again man(4) libinput. You can use these to test out effects immediately with xinput --set-prop […] commands, without having to restart X every time. And then use the equivalents in the 52-trackpoint-tweaks.conf file to make the changes permanent, as shown above.

2

On Ubuntu 20.04 LTS and Thinkpad Yoga 4th Gen, the following permanently changes the trackpoint settings (taken from post).

Step 0. Figure out the name of the device (as htorque suggested):

find /sys/devices/platform/i8042 -name name | xargs grep -Fl TrackPoint | sed 's/\/input\/input[0-9]*\/name$//'

For me it returns /sys/devices/platform/i8042/serio1 (without serio2).

Now I quote a slightly modified original post:

Step 1. Install sysfsutils:

sudo apt-get install sysfsutils

Step 2. Edit the /etc/sysfs.conf. Add the following lines at the end.

devices/platform/i8042/serio1/sensitivity = 215
devices/platform/i8042/serio1/rate = 280
devices/platform/i8042/serio1/speed = 150
devices/platform/i8042/serio1/inertia = 1

Play with the values until you find the ones you like. Run sudo service sysfsutils restart to apply the changes.

Note that those settings persist over restart.

1
  • Thanks so much! I setup this solution many years ago (Ubuntu 11.10?) and then recently reset it accidentally during an upgrade. I had no idea how to recreate it until I found your answer. Works perfectly, except I do need the /serio1/serio2 device path, but your Step 0 command told me that anyway :)
    – ntc2
    Jan 15 at 4:32
1

If you are using Ubuntu 15.04 or later (Which will have SystemD installed instead of Upstart), then there is a method posted here which you can use:

https://askubuntu.com/a/611076/253579

0

I have a thinkpad and got everything setup as desired through an application called Pointing Devices, which is just a bit more advanced mouse settings dialog.

I don't recall how many options there were for sensitivity, but unlike the built-in mouse settings screen, this one regognized the trackpoint and trackpad independently and allowed for greater control like setting the scroll button (was button 2 in my configuration) and enabling palm detection sensitivity.

1
  • There are no options for sensitivity or speed with gpointing-device-settings. Apr 29, 2011 at 15:48
0

Configure evdev options via xorg.conf.d (DEPRECATED)

The evdev driver was the default driver for the trackpoint in earlier versions of Ubuntu, but as of Ubuntu 17.10, the approach below is deprecated and does not work out of the box anymore. This is because the evdev driver which is not installed by default anymore as the libinput driver is the standard now – see my other answer for configuring that.

If you want, you can still use the evdev solution below after installing the driver with sudo apt install xserver-xorg-input-evdev (source).

Everything can be configured nicely in an /etc/X11/xorg.conf.d/52-trackpoint-tweaks.conf file (or similarly named – on Ubuntu, you have to create directory and file, but the mechanism works; maybe one of the directory names is x11 instead of X11 in some versions).

The file should have this content:

Section "InputClass"
    Identifier "Trackpoint tweaks"
    MatchProduct       "TPPS/2 IBM TrackPoint"
    MatchDevicePath    "/dev/input/event*"

    # Specify the driver, as else Ubuntu 17.10 will use libinput.
    Driver             "evdev"

    # Configure wheel emulation, using middle button and "natural scrolling".
    Option             "EmulateWheel"            "on"
    Option             "EmulateWheelButton"      "2"
    Option             "EmulateWheelTimeout"     "200"
    Option             "EmulateWheelInertia"     "7"
    Option             "XAxisMapping"            "7 6"
    Option             "YAxisMapping"            "5 4"

    # Set up an acceleration config ("mostly linear" profile, factor 5.5).
    Option             "AccelerationProfile"     "3"
    Option             "AccelerationNumerator"   "55"
    Option             "AccelerationDenominator" "10"
    Option             "ConstantDeceleration"    "3"
EndSection

To see the effect, you have to restart X of course. To play with these settings while X is running, use xinput, but note that option names are different there.

As pointed out by @Vitaly Dubyna, "Constant Deceleration" can be used to control sensitivity – it scales down all movements with that factor, so value "3" makes all movements 3 times slower compared to default "1".

Option documentation:

0

On Lubuntu 19.10 for a X201 Thinkpad my red trackpoint was too sensitive.

I opened the Preferences -> LXQt settings -> Keyboard and Mouse

I scrolled down the left pane to Mouse and Touchpad

I selected the device TTPS/2 IBM TrackPoint

I changed the Acceleration speed to -1,00 (minus one)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .