TrackPoint

From ArchWiki
Jump to: navigation, 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-settings 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.

Tip: On two button trackpoints, the scroll button can be set to right click button without removing functionality.

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
Note:
  • 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

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.

/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
  POINTINGSTICK_CONST_ACCEL=1.5

You can find various vendor/model keys in the udev hardware database.

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.

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

See also