The sections below describe the trackpoint magic multiplier and how to apply it to your local device. See Motion range on trackpoints for an explanation on why this multiplier is needed.
The magic trackpoint multiplier is not user visible configuration. It is part of the Device quirks system and provided once per device.
User-specific preferences can be adjusted with the Pointer acceleration setting.
The magic trackpoint multiplier¶
To accommodate for the wildly different input data on trackpoint, libinput uses a multiplier that is applied to input deltas. Trackpoints that send comparatively high deltas can be “slowed down”, trackpoints that send low deltas can be “sped up” to match the expected range. The actual acceleration profile is applied to these pre-multiplied deltas.
Given a trackpoint delta
(dx, dy), a multiplier
M and a pointer acceleration
f(dx, dy) → (dx', dy'), the algorithm is effectively:
f(M * dx, M * dy) → (dx', dy')
Adjusting the magic trackpoint multiplier¶
This section only applies if:
the trackpoint default speed (speed setting 0) is unusably slow or unusably fast, and
the lowest speed setting (-1) is still too fast or the highest speed setting is still too slow, and
If the only satisfactory speed settings are less than -0.75 or greater than 0.75, a multiplier may be required.
A specific multiplier will apply to all users with the same laptop model, so proceed with caution. You must be capable/willing to adjust device quirks, build libinput from source and restart the session frequently to adjust the multiplier. If this does not apply, wait for someone else with the same hardware to do this.
Finding the correct multiplier is difficult and requires some trial and error. The default multiplier is always 1.0. A value between 0.0 and 1.0 slows the trackpoint down, a value above 1.0 speeds the trackpoint up. Values below zero are invalid.
The multiplier is not a configuration to adjust to personal preferences. The multiplier normalizes the input data into a range that can then be configured with the speed setting.
$ cd path/to/libinput.git # Use an approximate multiplier in the quirks file $ cat > quirks/99-trackpont-override.quirks <<EOF [Trackpoint Override] MatchUdevType=pointingstick AttrTrackpointMultiplier=1.0 EOF # Use your trackpoint's event node. If the Attr does not show up # then the quirk does not apply to your trackpoint. $ ./builddir/libinput quirks list /dev/input/event18 AttrTrackpointMultiplier=1.0 # Now start a GUI program to debug the trackpoint speed. # ESC closes the debug GUI $ sudo ./builddir/libinput debug-gui
Replace the multiplier with an approximate value and the event node with
your trackpoint’s event node. Try to use trackpoint and verify the
multiplier is good enough. If not, adjust the
.quirks file and re-run the
libinput debug-gui. Note that the
libinput debug-gui always feels
less responsive than libinput would behave in a normal install.
Once the trackpoint behaves correctly you are ready to test the system libinput:
$ sudo cp quirks/99-trackpoint-override.quirks /etc/libinput/local-overrides.quirks
Now verify the override is seen by the system libinput
$ libinput quirks list AttrTrackpointMultiplier=1.0
If the multiplier is listed, restart your Wayland session or X server. The new multiplier is now applied to your trackpoint.
If the trackpoint behavior is acceptable, you are ready to submit this file upstream. First, find add a more precise match for the device so it only applies to the built-in trackpoint on your laptop model. Usually a variation of the following is sufficient:
[Trackpoint Override] MatchUdevType=pointingstick MatchName=*TPPS/2 IBM TrackPoint* MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadT440p* AttrTrackpointMultiplier=1.0
Look at your
/sys/class/dmi/id/modalias file for the values to add. Verify
libinput quirks list still shows the
it does, then you should report a bug with the contents of
the file. Alternatively, file a merge request with the data added.