How do I set acceleration on "TPPS/2 IBM TrackPoint" ?

Hi I have issues with setting acceleration on my Trackpoint device.
I can set acceleration via KDE gui without issues on external mouse and touchpad.
But not the trackpoint.

Tried the old trick: xset m 5 1. It works on all other distros I run but not here. The command does nothing.
I read The taming of the mouse guide: http://zderadicka.eu/the-taming-of-the-mouse-details-of-mouse-setup-in-x/
But I can’t make any sense of it. What do I do with that information to change the acceleration? Hopefully to something that resembles the “xset m 5 1” command.

user@linux-9egv:~> xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Optical Mouse id=9 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
user@linux-9egv:~>

Looking at the TPPS/2 IBM TrackPoint in detail give me this.

user@linux-9egv:~> xinput list-props 12
Device ‘TPPS/2 IBM TrackPoint’:
Device Enabled (135): 1
Coordinate Transformation Matrix (137): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (294): 0.000000
libinput Accel Speed Default (295): 0.000000
libinput Accel Profiles Available (296): 1, 1
libinput Accel Profile Enabled (297): 1, 0
libinput Accel Profile Enabled Default (298): 1, 0
libinput Natural Scrolling Enabled (299): 0
libinput Natural Scrolling Enabled Default (300): 0
libinput Send Events Modes Available (278): 1, 0
libinput Send Events Mode Enabled (279): 0, 0
libinput Send Events Mode Enabled Default (280): 0, 0
libinput Left Handed Enabled (301): 0
libinput Left Handed Enabled Default (302): 0
libinput Scroll Methods Available (303): 0, 0, 1
libinput Scroll Method Enabled (304): 0, 0, 1
libinput Scroll Method Enabled Default (305): 0, 0, 1
libinput Button Scrolling Button (306): 2
libinput Button Scrolling Button Default (307): 274
libinput Middle Emulation Enabled (308): 0
libinput Middle Emulation Enabled Default (309): 0
Device Node (281): “/dev/input/event7”
Device Product ID (282): 2, 10
libinput Drag Lock Buttons (310): <no items>
libinput Horizontal Scroll Enabled (283): 1
user@linux-9egv:~>

Any help and input is welcome!
Thank you

It is likely that the trackpoint is now being handled by libinput, and this may influence the best approach here. Check with

grep "Using input driver" /var/log/Xorg.0.log

You could create a custom config file in /etc/X11/xorg.conf.d with the appropriate options for this device, and that does depend on the Xorg input driver in use. For libinput, the options are described in the man page

man libinput

A second approach is to add a custom entry in the udev hwdb as described here
http://who-t.blogspot.co.nz/2014/12/building-a-dpi-database-for-mice.html

I helped a user get their mouse acceleration set as desired using this approach as described here…

https://forums.opensuse.org/showthread.php/520893-Mouse-DPI-settings?p=2799327#post2799327

You need the ‘mouse-dpi-tools utility’ (so may need to install ‘libevdev-tools’ package first).
The essential idea is to create a custom file (eg /usr/lib/hwdb.d/71-mouse.hwdb) with an entry that matches your trackpoint device and an acceleration parameter.

I can help guide you through the process if you get stuck or need further clarification.

Libinput gives me this

user@linux-9egv:~> grep “Using input driver” /var/log/Xorg.0.log
14095.264] (II) Using input driver ‘libinput’ for ‘Power Button’
14095.335] (II) Using input driver ‘libinput’ for ‘Video Bus’
14095.346] (II) Using input driver ‘libinput’ for ‘Sleep Button’
14095.396] (II) Using input driver ‘libinput’ for ‘Logitech USB-PS/2 Optical Mouse’
14095.540] (II) Using input driver ‘libinput’ for ‘AT Translated Set 2 keyboard’
14095.572] (II) Using input driver ‘synaptics’ for ‘SynPS/2 Synaptics TouchPad’
14095.708] (II) Using input driver ‘libinput’ for ‘TPPS/2 IBM TrackPoint’
14095.742] (II) Using input driver ‘libinput’ for ‘ThinkPad Extra Buttons’
17060.186] (II) Using input driver ‘libinput’ for ‘Logitech USB-PS/2 Optical Mouse’

…mm seems like a lot of work… the mouse worked fine in 13.2. How should I do this?

That command was used to report the Xorg driver was in use ie libinput as suspected :wink:

…mm seems like a lot of work… the mouse worked fine in 13.2. How should I do this?

Well, openSUSE 13.2 was likely using the evdev input driver, and with the move to using libinput (which is superseding the use of evdev and synaptics drivers), some input devices will require further tweaking to provide the expected behaviour for users. In some cases bug reports may be needed. Anyway, I suggest you start with adjusting the device acceleration via a custom Xorg config file.

Create a file eg /etc/X11/xorg.conf.d/30-trackpoint.conf with something like

Section "InputDevice"
         Identifier   "Trackpoint"
         MatchProduct "TPPS/2 IBM TrackPoint"
         Driver "libinput"
         Option "AccelSpeed"   "0.5"
         Option "AccelProfile"   "flat"
EndSection

*The acceleration parameter is a value from -1 to 1.

BTW, you should be able to set the acceleration (with immediate effect) using xinput eg

xinput --set-prop 12 'libinput Accel Speed' 0.2

However it won’t persist through a reboot.

I created the file but after reboot system cannot start xorg.
Made a backup of the log and removed the file.

160.282]
X.Org X Server 1.18.3
Release Date: 2016-04-04
160.282] X Protocol Version 11, Revision 0
160.282] Build Operating System: openSUSE SUSE LINUX
160.282] Current Operating System: Linux linux-9egv 4.4.36-8-default #1 SMP Fri Dec 9 16:18:38 UTC 2016 (3ec5648) x86_64
160.282] Kernel command line: BOOT_IMAGE=/vmlinuz-4.4.36-8-default root=/dev/mapper/system-root resume=/dev/system/swap splash=silent quiet showopts
160.282] Build Date: 22 November 2016 02:59:06PM
160.282]
160.282] Current version of pixman: 0.34.0
160.282] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
160.282] Markers: (–) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
160.282] (==) Log file: “/home/user/.local/share/xorg/Xorg.0.log”, Time: Fri Dec 16 09:33:16 2016
160.282] (==) Using config directory: “/etc/X11/xorg.conf.d”
160.282] (==) Using system config directory “/usr/share/X11/xorg.conf.d”
160.283] Parse error on line 3 of section InputDevice in file /etc/X11/xorg.conf.d/30-trackpoint.conf
“MatchProduct” is not a valid keyword in this section.
160.283] (EE) Problem parsing the config file
160.283] (EE) Error parsing the config file
160.283] (EE)
Fatal server error:
160.283] (EE) no screens found(EE)
160.283] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
160.283] (EE) Please also check the log file at “/home/user/.local/share/xorg/Xorg.0.log” for additional information.
160.283] (EE)
160.283] (EE) Server terminated with error (1). Closing log file.

I tried that other thing. Typing that gives me:

user@linux-9egv:~> xinput --set-prop 12 ‘libinput Accel Speed’ 0.2
property ‘libinput Accel Speed’ doesn’t exist, you need to specify its type and format
user@linux-9egv:~>

   160.283] Parse error on line 3 of section InputDevice in file /etc/X11/xorg.conf.d/30-trackpoint.conf
    "MatchProduct" is not a valid keyword in this section.

Sorry, that should have been

Section "InputClass"
   Identifier   "Trackpoint"
   MatchProduct "TPPS/2 IBM TrackPoint"
   Driver "libinput"
   Option "AccelSpeed"   "0.5"
   Option "AccelProfile"   "flat"
EndSection

I tried that other thing. Typing that gives me:

user@linux-9egv:~> xinput --set-prop 12 'libinput Accel Speed' 0.2
property 'libinput Accel Speed' doesn't exist, you need to specify its type and format
user@linux-9egv:~>

Not sure what went wrong here, unless the device order changed perhaps. List the trackpoint device properties again. (In your opening post it was device 12)

xinput

Then list the properties…

xinput list-props <device number>

and the property we were trying to adjust was ‘libinput Accel Speed’. In general

xinput set-prop <device name or number> <property> <value>

Useful references…

https://wiki.archlinux.org/index.php/Mouse_acceleration
https://wiki.archlinux.org/index.php/Libinput

Thank you. System booted fine this time with the 30-trackpoint.conf
The acceleration is still the same. Should it be? Or should something happen with the new file?

The id is still the same.

user@linux-9egv:~> xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=13   [slave  keyboard (3)]
user@linux-9egv:~>



user@linux-9egv:~> xinput list-props 12
Device 'TPPS/2 IBM TrackPoint':
        Device Enabled (135):   1
        Coordinate Transformation Matrix (137): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Accel Speed (294):     0.500000
        libinput Accel Speed Default (295):     0.000000
        libinput Accel Profiles Available (296):        1, 1
        libinput Accel Profile Enabled (297):   0, 1
        libinput Accel Profile Enabled Default (298):   1, 0
        libinput Natural Scrolling Enabled (299):       0
        libinput Natural Scrolling Enabled Default (300):       0
        libinput Send Events Modes Available (278):     1, 0
        libinput Send Events Mode Enabled (279):        0, 0
        libinput Send Events Mode Enabled Default (280):        0, 0
        libinput Left Handed Enabled (301):     0
        libinput Left Handed Enabled Default (302):     0
        libinput Scroll Methods Available (303):        0, 0, 1
        libinput Scroll Method Enabled (304):   0, 0, 1
        libinput Scroll Method Enabled Default (305):   0, 0, 1
        libinput Button Scrolling Button (306): 2
        libinput Button Scrolling Button Default (307): 274
        libinput Middle Emulation Enabled (308):        0                                                                                            
        libinput Middle Emulation Enabled Default (309):        0                                                                                    
        Device Node (281):      "/dev/input/event7"                                                                                                  
        Device Product ID (282):        2, 10                                                                                                        
        libinput Drag Lock Buttons (310):       <no items>                                                                                           
        libinput Horizontal Scroll Enabled (283):       1                                                                                            
user@linux-9egv:~> 
 xinput set-prop <device name or number> <property> <value>

Should it look something like?:

 xinput set-prop 12 libinput Accel Speed 0.2

But I get the same as before:


user@linux-9egv:~> xinput set-prop 12 libinput Accel Speed 0.2
property 'libinput' doesn't exist, you need to specify its type and format
user@linux-9egv:~>

Your acceleration value is now reported at the value you set via the Xorg config file at least. However, you report that it hadn’t had a noticeable effect? BTW, are you trying to increase or decrease the speed?

Should it look something like?:
Code:
xinput set-prop 12 libinput Accel Speed 0.2
But I get the same as before:

The property string does need to be enclosed within quotes. I’m not sure on why this isn’t working as expected (based on your previous xinput info).

Oh yeah that works. I did miss the end quote. It works. The speed is higher. Perhaps not ideally. I can only set the value as high as 1. Which is not fast enough. Is that all there is to do with the settings?

I want to make the cursor faster. Perhaps 5% faster than in a Windows OS with mouse setting at maxmimum without precision ticked. That’s what xset 5 1 resembles.
My motivation is that it takes a lot of force with my finger to move the cursor around with the pointing stick. With the present settings (value at 1) moving it require me to push the stick all the way down in one direction to get the cursor to full speed. Quite painful for my finger after a few minutes.
And this wear out the red pointing stick cap in less than two weeks. I do have a small bag with spare ones. But reducing its normal life cycle from about two to three months to less than two weeks is significant. Its much softer just after this day.

This reads like progress. There is the acceleration profile which can be changed from ‘flat’ to ‘adaptive’ for some input devices.

Section "InputClass"
   Identifier   "Trackpoint"
   MatchProduct "TPPS/2 IBM TrackPoint"
   Driver "libinput"
   Option "AccelSpeed"   "1"
   Option "AccelProfile"   "adaptive" 
   EndSection

Other than that I’m not sure what else can be done, except to force the use of the evdev driver instead.

FWIW, here’s a discussion on libinput pointer acceleration

https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html

mm I saw no difference with putting adaptive in the file.
How would you force suse to use evdev?

Did you restart the X-server after the edit?

How would you force suse to use evdev?

Making an appropriate config file to get the device handled with the evdev driver. I’m away from my Linux machines currently but I can assist further in an hour or so if it’s not clear to you on how to proceed.

Okay, in order for your trackpoint to be handled explicitly via the evdev driver (as it was in openSUSE 13.2)…

  1. Make sure that ‘xf86-input-evdev’ is installed. You can check this with
rpm -qa|grep xf86-input

If necessary, install with

zypper in xf86-input-evdev
  1. To override the 60-libinput.conf (catchall), you’ll need to create 75-trackpoint.conf (and remove your earlier custom config file)
Section "InputClass"
        Identifier "Trackpoint"
        MatchProduct "TPPS/2 IBM TrackPoint" 
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Be careful with your syntax. Once saved, restart the X-server with CTRL+ALT+Backspace (twice), and verify the input driver in use for your trackpoint is now the evdev driver. Hopefully, it will provide the desired behaviour without further tweaking. However, this is easily achieved with the appropriate options being added to 75-trackpoint.conf, (or using the xset command should work as it used to in openSUSE 13.2).

Report back with your results.

Oh yeah there we go! xset command works beautifully! Eh how would you edit the file to get the desired xset 5 1 to persist after a reboot?

You could create an autostart script, and add it via System Settings > Startup and Shutdown > Autostart

FWIW, here’s a thread discussing similar (but for disabling mouse acceleration)…

https://forums.opensuse.org/showthread.php/512622-How-to-disable-mouse-acceleration-permanently

You could adapt it to set the desired acceleration/threshold values.

Thank you. I’ve forgot this. It came back to me when I read the script.
I think I have my issue solved. Thank you so much for your time and effort!

Okay to summarize this thread for my sake and other potential users who wishes to use “evdev” instead of “libinput” driver with a “TPPS/2 IBM TrackPoint”. Perhaps these steps varies from case to case. In my case my understanding to do this is the following:

Find your device by tyeboot computer or rping this in a terminal:

xinput

For example:

user@linux-9egv:~> xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=9    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=13   [slave  keyboard (3)]
user@linux-9egv:~>

In this list I find the device I want to change “TPPS/2 IBM TrackPoint”.

Check if the device is actually handled by libinput

grep "Using input driver" /var/log/Xorg.0.log

For example:

user@linux-9egv:~> grep "Using input driver" /var/log/Xorg.0.log
 14095.264] (II) Using input driver 'libinput' for 'Power Button'
 14095.335] (II) Using input driver 'libinput' for 'Video Bus'
 14095.346] (II) Using input driver 'libinput' for 'Sleep Button'
 14095.396] (II) Using input driver 'libinput' for 'Logitech USB-PS/2 Optical Mouse'
 14095.540] (II) Using input driver 'libinput' for 'AT Translated Set 2 keyboard'
 14095.572] (II) Using input driver 'synaptics' for 'SynPS/2 Synaptics TouchPad'
 14095.708] (II) Using input driver 'libinput' for 'TPPS/2 IBM TrackPoint'
 14095.742] (II) Using input driver 'libinput' for 'ThinkPad Extra Buttons'
 17060.186] (II) Using input driver 'libinput' for 'Logitech USB-PS/2 Optical Mouse'

In this list i find my device confirmed to be handled by libinput: “TPPS/2 IBM TrackPoint”

Okay now to proceed to override this device from using libinput to evdev driver. Do the following:

Check if “xf86-input-evdev” installed

rpm -qa|grep xf86-input

If not install

zypper in xf86-input-evdev

Be superuser and create a text file in “/etc/X11/xorg.conf.d/” with name: “75-trackpoint.conf”

Section "Inp"[utClass"
        Identifier "Trackpoint"
        MatchProduct "TPPS/2 IBM TrackPoint" 
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Save file.
Reboot computer or restart x-server with CTRL+ALT+Backspace (twice)

Open a terminal and type “xset m 5 1” or a value with your desired effect and confirm the command is working by moving your mouse around.

If you want this to be automatically executed on login everytime:

Open a file manager and show hidden files.
Create a text file with the extension .“desktop” in ~/.config/autostart/ with any name. For example “mouse.desktop” and make it allowed to execute.
Edit the file and paste this:

[Desktop Entry]
X-SuSE-translate=true
Encoding=UTF-8
Name=Cyborg
Exec=/usr/bin/xset m 1/1 0
Icon=suse
Terminal=false
Type=Application
Categories=GNOME;GTK;Application;Utility;

Replace the line after x set with your own value to achieve desired effect.
I want to use “xset m 5 1” so my file looks like:

[Desktop Entry]
X-SuSE-translate=true
Encoding=UTF-8
Name=Cyborg
Exec=/usr/bin/xset m 5 1
Icon=suse
Terminal=false
Type=Application
Categories=GNOME;GTK;Application;Utility;

Save file.
Reboot computer or restart x-server with CTRL+ALT+Backspace (twice)
Confirm that it worked by moving your mouse around.
Done.

Glad to have been of help. :slight_smile:

BTW, this procedure is more of a workaround (or short term solution), as the libinput input stack takes over from evdev and synaptics drivers. (In fact, Wayland will soon replace the use of Xorg, and that relies solely on libinput for input devices.) As such, the libinput developers would prefer users to participate by submitting bug reports where they find device behaviour characteristics and problems that need resolving.

https://www.freedesktop.org/wiki/Software/libinput/