UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

192 lines (124 loc) 8.85 kB
The TrackPoint is Lenovo's trademark for the pointing-stick in the middle of the keyboard. It is supported by [xf86-input-evdev](https://www.archlinux.org/packages/?name=xf86-input-evdev) and [xf86-input-libinput](https://www.archlinux.org/packages/?name=xf86-input-libinput). Default [Xorg](/index.php/Xorg "Xorg") behavior supports click and point. For the `evdev` driver middle-click and scrolling requires extra configuration. ## Contents * [1 GUI configuration](#GUI_configuration) * [2 Middle button scroll](#Middle_button_scroll) * [2.1 Xorg configuration](#Xorg_configuration) * [2.2 Two-button trackpoints](#Two-button_trackpoints) * [3 Sysfs attributes](#Sysfs_attributes) * [3.1 Configuration at boot](#Configuration_at_boot) * [3.1.1 udev rule](#udev_rule) * [3.1.2 systemd.path unit](#systemd.path_unit) * [3.1.3 udev hwdb entry](#udev_hwdb_entry) * [4 Troubleshooting](#Troubleshooting) * [4.1 Trackpoint is not detected or is detected after X minutes](#Trackpoint_is_not_detected_or_is_detected_after_X_minutes) * [4.2 Trackpoint buttons do not always work](#Trackpoint_buttons_do_not_always_work) * [5 See also](#See_also) ## GUI configuration [Install](/index.php/Install "Install") the [gpointing-device-settings](https://aur.archlinux.org/packages/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](https://www.archlinux.org/packages/?name=xf86-input-libinput) is used. ## Middle button scroll When using [xf86-input-libinput](https://www.archlinux.org/packages/?name=xf86-input-libinput), middle-button scrolling is enabled by default. When using [xf86-input-evdev](https://www.archlinux.org/packages/?name=xf86-input-evdev), middle-button scrolling is supported via *xinput* from the [xorg-xinput](https://www.archlinux.org/packages/?name=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](https://www.archlinux.org/packages/?name=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](/index.php/Xorg#Configuration "Xorg") for the [evdev(4)](https://jlk.fjfi.cvut.cz/arch/manpages/man/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](https://www.archlinux.org/packages/?name=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](https://bbs.archlinux.org/viewtopic.php?id=199998) 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](#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](/index.php/Enable "Enable") and [start](/index.php/Start "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](https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb). 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](https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb). Note that since [this commit](https://cgit.freedesktop.org/wayland/libinput/commit/src/evdev.c?id=3669fa10dff95371658647272ef7ac7a3ef29a61) 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. **Note:** It is planned that [libinput 1.12](https://who-t.blogspot.com/2018/06/libinput-and-its-device-quirks-files.html) will stop using udev hwdb for device-specific overrides and move to ini-style files independent of hwdb. ## 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](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 * [How to configure the TrackPoint - ThinkWiki](http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint) * [Trackpoint speed](https://gist.githubusercontent.com/noromanba/11261595/raw/478cf4c4d9b63f1e59364a6f427ffccd63db5e1e/thinkpad-trackpoint-speed.mkd) * [What is the best way to configure a Thinkpad's TrackPoint?](https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint/553926)