Difference between revisions of "TrackPoint"

From ArchWiki
Jump to navigation Jump to search
m (Trackpoint buttons do not always work: fix a typo in the command name)
m (fixed lipinput list-devices command)
 
Line 121: Line 121:
 
To test the changes prior to restarting your compositor or X session, first find your device input node {{ic|/dev/input/eventX}} using:
 
To test the changes prior to restarting your compositor or X session, first find your device input node {{ic|/dev/input/eventX}} using:
  
  # libinput-list-devices
+
  # libinput list-devices
  
 
Run the following to generate some debug output:
 
Run the following to generate some debug output:

Latest revision as of 15:41, 18 April 2019

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:

~/.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

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.

/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

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. 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
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.

device-quirks

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]
MatchUdevType=pointingstick
AttrTrackpointMultiplier=0.75

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.

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.

# rmmod psmouse; modprobe psmouse proto=imps

See also