I'm having issues with the Trackpoint on my Thinkpad T14. When I'm using the Trackpoint, it often happens that it recalibrates while I'm using it, leading to movement of the cursor in the opposite direction when I actually release the Trackpoint. This effect is far but new; in fact, a drift_time sysfs setting was submitted and added to kernel 3.19 (psmouse module) about 10 years ago. This is also what can be found when searching online for a solution to the problem. However, this setting just doesn't exist on my system:
$ ls -alh /sys/devices/platform/i8042/serio1
total 0
drwxr-xr-x 5 root root 0 5. Feb 10:04 .
drwxr-xr-x 5 root root 0 5. Feb 10:04 ..
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 bind_mode
-r--r--r-- 1 root root 4.0K 5. Feb 10:54 description
lrwxrwxrwx 1 root root 0 5. Feb 10:05 driver -> ../../../../bus/serio/drivers/psmouse
--w------- 1 root root 4.0K 5. Feb 18:14 drvctl
-r--r--r-- 1 root root 4.0K 5. Feb 18:14 firmware_id
drwxr-xr-x 2 root root 0 5. Feb 10:05 id
drwxr-xr-x 3 root root 0 5. Feb 10:04 input
-r--r--r-- 1 root root 4.0K 5. Feb 18:14 modalias
drwxr-xr-x 2 root root 0 5. Feb 18:10 power
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 press_to_select
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 protocol
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 rate
-rw-r--r-- 1 root root 4.0K 5. Feb 18:17 resetafter
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 resolution
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 resync_time
-rw-r--r-- 1 root root 4.0K 5. Feb 18:14 sensitivity
lrwxrwxrwx 1 root root 0 5. Feb 10:04 subsystem -> ../../../../bus/serio
-rw-r--r-- 1 root root 4.0K 5. Feb 10:04 uevent
$ find /sys -name 'drift'
Nothing
The Trackpoint otherwise works as designed, including middle-clicking and scrolling. My questions:
- Do I need to install another module or software package?
- Do I need to add parameters to the kernel to make this work?
- Was this configuration interface redesigned and the setting is now somewhere else? (note that I tried
resetafterandresync_timealready, to no avail) - Something else?
Some info about my system:
$ uname -a
Linux xxxxxx 6.12.9+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.9-1~bpo12+1 (2025-01-19) x86_64 GNU/Linux
$ cat /sys/devices/platform/i8042/serio1/input/input5/name
TPPS/2 Elan TrackPoint
Update
I went into this again and dug through some kernel sources of the psmouse module. What caught my attention is the trackpoint_is_attr_available() function in trackpoint.c:
static bool trackpoint_is_attr_available(struct psmouse *psmouse,
struct attribute *attr)
{
struct trackpoint_data *tp = psmouse->private;
return tp->variant_id == TP_VARIANT_IBM ||
attr == &psmouse_attr_sensitivity.dattr.attr ||
attr == &psmouse_attr_press_to_select.dattr.attr;
}
This if condition looks like it would give me exactly the two attributes that I'm seeing, press_to_select and sensitivity, when the trackpoint variant is anything else than TP_VARIANT_IBM. So that might explain why I'm not seeing any of the other attributes, but then the IBM variant is the first one of several that could be there:
static const char * const trackpoint_variants[] = {
[TP_VARIANT_IBM] = "IBM",
[TP_VARIANT_ALPS] = "ALPS",
[TP_VARIANT_ELAN] = "Elan",
[TP_VARIANT_NXP] = "NXP",
[TP_VARIANT_JYT_SYNAPTICS] = "JYT_Synaptics",
[TP_VARIANT_SYNAPTICS] = "Synaptics",
};
I remember having seen "Synaptics" also quite a few times in web searches and I think even one of my previous Thinkpads listed the trackpoint as TPPS/2 Synaptics TrackPoint, where I had those other attributes available.
So I'm not really closer to a solution now. What bugs me most is that I can't find a reference to those attributes being missing anywhere on the web, despite seeing that Linux on ThinkPads appears to be a fairly common combination. Something's wrong, but I just can't find out what.