TrackPoint
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.
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:
~/.xinitrc
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" EndSection
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
/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.
/etc/udev/rules.d/10-trackpoint.rules
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/trackpoint_configuration.sh
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
.
/etc/systemd/system/trackpoint_parameters.path
[Unit] Description=Watch for, and modify, Trackpoint attributes [Path] PathExists=/sys/devices/platform/i8042/serio1/press_to_select [Install] WantedBy=default.target
/etc/systemd/system/trackpoint_parameters.service
[Unit] Description=Set TrackPoint attributes [Service] ExecStart=/usr/local/bin/trackpoint_configuration.sh
Finally, enable and start the trackpoint_parameters.path
systemd unit.
udev hwdb entry
Libinput applies its own parameters to sysfs based on entries in the udev hardware database. 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:
/etc/udev/hwdb.d/99-trackpoint.hwdb
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:* POINTINGSTICK_SENSITIVITY=250
You can find various vendor/model keys in the udev hardware database. 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
udevadm test
command.Finally, restart your Wayland compositor or X session to apply the changes.
Troubleshooting
Trackpoint is not detected or is detected after X minutes
This appears to be a kernel bug. See: https://bugzilla.kernel.org/show_bug.cgi?id=33292
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.
# rmmode psmouse; modprobe psmouse proto=imps