# 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-settings package.

## 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` 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"
        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 the `/sys/devices/platform/i8042/serio1/serio2/` 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.

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

## See also

- How to configure the TrackPoint - ThinkWiki
- Trackpoint speed
- What is the best way to configure a Thinkpad's TrackPoint?

Categories:

- Input devices
- Lenovo