The unexpected touch activity is:

Upon interaction the pointer moves to the equivalent place on the screen as if it were a touchscreen. This is exacerbated by the range between the touchpad and the screen being miscalibrated, so touching the top right corner of the trackpad only takes me 90% to the top and 98% to the right.

For example: If my mouse pointer is on the bottom left of the screen and I move it toward the top right I am unable to reach the tabs in my firefox window, so I put my finger in the middle of the trackpad expecting the some internal mechanism to store pointer location and resume movement from the last place the pointer was at, however it doesnt do that. The pointer resets according to the equivalent location on the screen.

I've gone through the man pages here:
Libinput Manpages
Xorg Manpages

The documentation on the Arch site is pretty terse, and other sites I've looked at, including the FAQ official libinput site, don't mention this problem ever ocurring.

Help? Thanks

I expect there to be a setting for these two things. Nonetheless, here's the xinput and xinput-list-props:

â¡ Virtual core pointer                     id=2    [master pointer  (3)]
â   â³ Virtual core XTEST pointer               id=4    [slave  pointer  (2)]
â   â³ AlpsPS/2 ALPS DualPoint TouchPad         id=10   [slave  pointer  (2)]
â   â³ AlpsPS/2 ALPS DualPoint Stick            id=11   [slave  pointer  (2)]
⣠Virtual core keyboard                    id=3    [master keyboard (2)]
    â³ Virtual core XTEST keyboard              id=5    [slave  keyboard (3)]
    â³ Video Bus                                id=6    [slave  keyboard (3)]
    â³ Power Button                             id=7    [slave  keyboard (3)]
    â³ Sleep Button                             id=8    [slave  keyboard (3)]
    â³ AT Translated Set 2 keyboard             id=9    [slave  keyboard (3)]
    â³ Dell WMI hotkeys                         id=12   [slave  keyboard (3)]

x-input -list-props 10
(my touchpad)

Device 'AlpsPS/2 ALPS DualPoint TouchPad':
    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 (280): 0
    Device Accel Constant Deceleration (281):   1.000000
    Device Accel Adaptive Deceleration (282):   1.000000
    Device Accel Velocity Scaling (283):    10.000000
    Device Product ID (273):    2, 8
    Device Node (274):  "/dev/input/event7"
    Evdev Axis Inversion (284): 0, 0
    Evdev Axis Calibration (285):   <no items>
    Evdev Axes Swap (286):  0
    Axis Labels (287):  "Abs X" (277), "Abs Y" (278), "Abs Pressure" (279)
    Button Labels (288):    "Button Left" (155), "Button Middle" (156), "Button Right" (157), "Button Wheel Up" (158), "Button Wheel Down" (159)
    Evdev Scrolling Distance (289): 0, 0, 0
    Evdev Middle Button Emulation (290):    0
    Evdev Middle Button Timeout (291):  50
    Evdev Third Button Emulation (292): 0
    Evdev Third Button Emulation Timeout (293): 1000
    Evdev Third Button Emulation Button (294):  3
    Evdev Third Button Emulation Threshold (295):   20
    Evdev Wheel Emulation (296):    0
    Evdev Wheel Emulation Axes (297):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (298):    10
    Evdev Wheel Emulation Timeout (299):    200
    Evdev Wheel Emulation Button (300): 4
    Evdev Drag Lock Buttons (301):  0
  • What does the touchpad show up as in 'xinput' and 'xinput list-props'? Are you using the stock Arch kernel? Is xf86-input-libinput actually installed? (Wouldn't be the first time someone forgot it.) Does the problem persist if you downgrade to xf86-input-synaptics? – user1686 Dec 21 '16 at 20:53
  • xf86-input-libinput was not installed. i never would've guessed that would be the problem. How was I able to use my input devices if no drivers were installed and the xorg.conf files followed the libinput syntax? I am guessing xorg assumes a libinput dependency in it's configuration but doesn't / didn't install it? How did this work at all? Is there a fallback driver system that I was using? – Andrew Dec 21 '16 at 23:26
  • There's a fallback xf86-input-evdev driver. (Before libinput, a combination of evdev and xf86-input-synaptics was the most common one.) – user1686 Dec 22 '16 at 7:48

This usually means that libinput is not, in fact, installed properly. Just having the libinput library present is not enough for Xorg to use it – it needs the "input driver" xf86-input-libinput for that.

There are several Xorg input drivers – alongside the libinput-based one (which is very new, with plans to take over the world) it also has a minimalistic xf86-input-evdev driver, as well as the previously popular xf86-input-synaptics for all kinds of touchpads.

Touchpads send absolute X,Y coordinates, so that things like clickpads or multi-touch gestures could be interpreted by programs – it's up to libinput or synaptics to convert them to relative motion events. But the output shown by your xinput list-props indicates that the touchpad only had the xf86-input-evdev driver attached.

The "evdev" driver had been the default choice for the past several years until libinput came, since it can handle mice, keyboards, and everything the kernel throws at it (although not necessarily well, as you've noticed). Meanwhile, both "libinput" and "synaptics" drivers also use the kernel's evdev subsystem but have additional logic to interpret the received events.

(Historically, before even evdev, there were separate interfaces for nearly everything – keyboards, PS/2 mice, serial mice, joysticks, etc. – and separate X drivers for them as well, such as "xf86-input-kbd" or "-mouse" or "-joy"; not to mention pre-KMS video drivers, which for a long time had to directly deal with things like PCI or the video BIOS. The X server was practically an OS!)

The Arch xorg-server package is built so that it depends on some input driver, but doesn't specify which one (e.g. many people still use evdev+synaptics, not libinput). Normally when installing Xorg pacman will ask which one of multiple "provider" packages to install:

:: There are 2 providers available for xf86-input-driver:
:: Repository extra
   1) xf86-input-evdev  2) xf86-input-libinput

Enter a number (default=1): 

If you just hit Return and accept the defaults, pacman will choose the first item alphabetically and you will get the minimal evdev-based driver, which does practically no interpretation on input events – if the kernel sends absolute coordinates to it, then that's what Xorg is going to see.

Oh, and according to the xinput output your Unicode settings are broken.

| improve this answer | |
  • Thanks. That explains it. I remember instaling evdev, and that is indeed what I saw while browsing the config files. – Andrew Dec 22 '16 at 14:21

Solved. Thanks @grawity. A quick pacman -Ss xf86-input-libinput revealed that xf86-input-libinput indeed was not installed. I installed the package and rebooted. Upon rebooting the touchpad was functioning properly. Correct answer to the person who can answer the followup questions I asked in the comments to the original post.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.