From ArchWiki
Jump to navigation Jump to search

The TrackPoint is Lenovo's trademark for the pointing-stick in the middle of the keyboard. It is supported by xf86-input-evdev and xf86-input-libinput.

Default Xorg behavior supports click and point. For the evdev driver middle-click and scrolling requires extra configuration.

GUI configuration

Install the gpointing-device-settingsAUR package.

Note: This software is not maintained anymore (last release in 2013). It may not allow deep configuration when xf86-input-libinput is used.

Middle button scroll

When using xf86-input-libinput, middle-button scrolling is enabled by default.

When using xf86-input-evdev, middle-button scrolling is supported via xinput from the xorg-xinput package. For example:

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" 6 7 4 5
  • Devices names can be listed with xinput --list or hwinfo.
  • The "Device Accel Constant Deceleration" line configures the sensitivity of the trackpoint.

Xorg configuration

Alternative to an ~/.xinitrc configuration, you can also create an Xorg#Configuration for the evdev(4)driver. For example, as /etc/X11/xorg.conf.d/20-thinkpad.conf, replacing TPPS/2 IBM TrackPoint with the device name from xinput:

Section "InputClass"
    Identifier	"Trackpoint Wheel Emulation"
    Driver "evdev"
    MatchProduct	"TPPS/2 IBM TrackPoint"
    MatchDevicePath	"/dev/input/event*"
    Option		"EmulateWheel"		"true"
    Option		"EmulateWheelButton"	"2"
    Option		"Emulate3Buttons"	"false"
    Option		"XAxisMapping"		"6 7"
    Option		"YAxisMapping"		"4 5"

Two-button trackpoints

On two-button trackpoints, using xf86-input-libinput, the scroll button can be set to right-click button without removing functionality.

Replacing device with the device name from xinput:

$ xinput set-prop "device" "libinput Button Scrolling Button" 3

Sysfs attributes

TrackPoints expose their attributes as files in /sys/devices/platform/i8042/serio1/. For example, to manually enable the tap-to-click functionality:

# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select
Note: The location of the attribute files may be different depending on the device you are using. Systems with both a TrackPoint and a touchpad device will use either /sys/devices/platform/i8042/serio1/serio2/ or /sys/devices/platform/i8042/serio1/serio3/ for the path, whereas systems with only a TrackPoint device will use the /sys/devices/platform/i8042/serio1/ path.

Configuration at boot

udev rule

This rule increases the trackpoint speed and enables tap to select (see above) on boot.

ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/sensitivity}="240", ATTR{device/press_to_select}="1"

systemd.path unit

There have been reports on the forums that the attributes/files under /sys/devices/platform/i8042/serio1/serio2/ appear too late in the boot process for the above (or similar) udev rule(s) to have an effect on them. Instead, a systemd.path unit can be used to configure attributes of the TrackPoint.

First create an executable script named e.g. /usr/local/bin/ that sets the TrackPoint attributes as shown in the #Sysfs attributes section. Then create the following systemd units. Make sure that all attributes modified by the script are listed with PathExists.

Description=Watch for, and modify, Trackpoint attributes


Description=Set TrackPoint attributes


Finally, enable and start the trackpoint_parameters.path systemd unit.

udev hwdb entry

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Since around version 1.12 libinput stopped using udev hwdb for device-specific overrides and moved to ini-style files independent of hwdb (see #device-quirks). (Discuss in Talk:TrackPoint#)

Libinput applies its own parameters to sysfs based on entries in the udev hardware database[dead link 2020-04-03 ⓘ]. This is the behavior on systems running a Wayland compositor, as libinput is the only supported input interface in that environment. Changes made prior to the start of a Wayland compositor or X session will be overwritten.

To override libinput's default settings, add a local hwdb entry:

evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:*

You can find various vendor/model keys in the udev hardware database[dead link 2020-04-03 ⓘ]. Note that since this commit libinput ignores the POINTINGSTICK_CONST_ACCEL parameter and uses POINTINGSTICK_SENSITIVITY. The range is 0-255.

Reload udev's hwdb to apply the changes:

# udevadm hwdb --update

To test the changes prior to restarting your compositor or X session, first find your device input node /dev/input/eventX using:

# libinput list-devices

Run the following to generate some debug output:

# udevadm trigger /sys/class/input/eventX
# udevadm test /sys/class/input/eventX
Note: This will not actually apply the parameters from hwdb, but you can verify the changes in the output of the udevadm test command.

Finally, restart your Wayland compositor or X session to apply the changes.


With the libinput switch to the new device-quirks .ini-style configuration files, you can adjust trackpoint parameters via local overrides in /etc/libinput/.

For example, to override the pointing speed, create /etc/libinput/local-overrides.quirks:

[Trackpoint Override]

For more information, see libinput: Installing temporary local device quirks

Note: Model quirks are internal API and may change at any time. No backwards-compatibility is guaranteed. Local overrides should only be used until the distribution updates the libinput packages.


Trackpoint is not detected or is detected after X minutes

This appears to be a kernel bug. See:

A workaround is passing proto=bare to the psmouse module. However, this disables scrolling with the clickpad and the two-finger middle click:

# modprobe psmouse proto=bare

Trackpoint buttons do not always work

If you discover that disabling the touchpad in the BIOS disables the wrong buttons and/or that the trackpoint buttons work very unreliable a workaround is to pass proto=imps to the psmouse module.

# rmmod psmouse; modprobe psmouse proto=imps

Two-finger scroll ceases to work after suspending

On some laptops, psmouse seems to fail on start up, or after suspend:

psmouse serio1: synaptics: Unable to initialize device

One workaround is to use add psmouse.synaptics_intertouch=0 to your kernel commandline.

Trackpoint moves on its own

On some ThinkPads the TrackPoint cursor moves spontaneously after release and it does not stop. This happens because of a low value of the drift_time parameter (e.g. 5), you need to change it to 25 or 30 to fix the problem. This can be done with a udev rule:

ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/drift_time}="25"

See also