TrackPoint problems with latest libinput, Xorg updates (need evdev props)

mousexinputxorg

I'm running Arch Linux. On a recent update of Xorg, evdev was replaced by libinput (by default). When this happened, I lost the xinput properties I use for making my TrackPoint behave properly. Specifically, the properties I rely upon are:

  • Device Accel Profile
  • Device Accel Constant Deceleration
  • Device Accel Adaptive Deceleration
  • Device Accel Velocity Scaling

I had to roll my system back to using evdev. Obviously, that's only a short term solution.

How can I set acceleration and deceleration for the TrackPoint in libinput going forward? xinput list-props doesn't list any properties that obviously (to me) replace those above.

Is anyone else using a TrackPoint with the latest xorg-server and libinput and also making use of custom acceleration and deceleration values?

I have large monitors, so I need the cursor to move fast when I have a long distance to travel, but I need it to have good control when selecting characters and doing other detail work.

These are the evdev-based properties that work well for me:

Device 'Synaptics Inc. Composite TouchPad / TrackPoint (Stick)':
    Device Enabled (152):   1
    Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (276):     5
    Device Accel Constant Deceleration (277):       3.700000
    Device Accel Adaptive Deceleration (278):       4.700000
    Device Accel Velocity Scaling (279):    60.000000
    Device Product ID (271):        1739, 9
    Device Node (272):      "/dev/input/event7"
    Evdev Axis Inversion (280):     0, 0
    Evdev Axes Swap (282):  0
    Axis Labels (283):      "Rel X" (162), "Rel Y" (163)
    Button Labels (284):    "Button Left" (155), "Button Middle" (156), "Button Right" (157), "Button Wheel Up" (158), "Button Wheel Down" (159)
    Evdev Scrolling Distance (285): 0, 0, 0
    Evdev Middle Button Emulation (286):    0
    Evdev Middle Button Timeout (287):      50
    Evdev Third Button Emulation (288):     0
    Evdev Third Button Emulation Timeout (289):     1000
    Evdev Third Button Emulation Button (290):      3
    Evdev Third Button Emulation Threshold (291):   20
    Evdev Wheel Emulation (292):    1
    Evdev Wheel Emulation Axes (293):       0, 0, 4, 5
    Evdev Wheel Emulation Inertia (294):    10
    Evdev Wheel Emulation Timeout (295):    200
    Evdev Wheel Emulation Button (296):     2
    Evdev Drag Lock Buttons (297):  0

I also use xset m 5 to give me the final acceleration I need.

The question is, how to replicate these settings with libinput and newest xorg-server?

Best Answer

You can still use evdev with new kernels and x server versions.

I'm using a Debian system, but it should work similarly. The link I give is for Arch.

You will need to install xf86-input-evdev from the archlinux 'extra' repository.

Once that's done, you can specify in your xorg.conf that you would like to use evdev for a particular device. On my Thinkpad, I actually prefer libinput for trackpoints but prefer evdev for absolutely everything else; with that said, I will show you your trackpoint configuration when set up to use evdev.

# Your Trackpoint evdev rules
Section "InputClass"libinput
    Identifier      "TrackPoint - force evdev"
    Driver          "evdev"
# Note: The actual trackpoint name can vary from system to system.
    MatchProduct    "Synaptics Inc. Composite TouchPad / TrackPoint (Stick)"
    Option      "AccelerationProfile"   "5" # Power function
    Option      "ConstantDeceleration"  "3.7"
    Option      "AdaptiveDeceleration"  "4"
    Option      "VelocityScale"         "60"
    Option      "EmulateWheel"          "true"
    Option      "EmulateWheelButton"    "2"
    Option      "EmulateWheelInertia"   "10"
    Option      "EmulateWheelTimeout"   "200"
    Option      "EmulateThirdButton"    "false"
# Maybe this too?
#   Option      "YAxisMapping"      "4 5"
# Can't find an option for middle button timeout, so that may have to be set using xinput afterwards like you're probably already doing.
EndSection

# a device I want to use evdev for, but set all the properties of myself using xinput
Section "InputClass"
    Identifier      "MS Trackball Optical"
    MatchProduct    "Microsoft Microsoft Trackball OpticalĀ®"
    Driver          "evdev"
EndSection
Related Question