I’ve realized that the problem stems from using the x86-input-evdev-ahm driver. The driver allows you to modify keys, for example, to allow a “space/shift dual role key”.
The driver creates a file /etc/X11/xorg.conf.d/80-ahm.conf which overrides the default touchpad settings in /etc/X11/xorg.conf.d/30-touchpad.conf.
To fix, just give the touchpad configuration a higher number than the ahm config, for example, 90-touchpad.conf.

Now you can use the default libinput library for the touchpad.

I’ve re-installed my laptop from scratch with Manjaro Architect, using the i3 community edition.

My laptop has a touchpad, an ETPS/2 Elantech.

It doesn’t work out of the box.

i3 is a tiling window manager, so I have to find a way to configure the touchpad. For i3, it makes sense to use the X11 configuration.

Create a new file in the folder /etc/X11/xorg.conf.d/.

In my case, there already was a file called 30-touchpad.conf:

Section "InputClass"
    Identifier "touchpad"
    Driver "libinput"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "Tapping" "on"
    Option "NaturalScrolling" "true"

The configuration uses the libinput driver, the currently recommended library to handle input devices.

I’m running the 5.4.40 kernel, which is the latest LTS kernel as of May 2020.

There is an older driver called Synaptics which is deprecated.

But try as I might, I couldn’t get libinput working.

Touchpad with i3wm

  1. Make sure that your BIOS settings use the “Basic” option for the touchpad.

  2. Install xf86-input-synaptics:

yay -S xf86-input-synaptics
  1. Create a configuration file for X11. Higher numbers take precedence over lower numbers. My current touchpad configuration is /etc/X11/xorg.conf.d/90-touchpad.conf:
Section "InputClass"
        Identifier "touchpad"
        MatchIsTouchpad "on"
        Driver "synaptics"
	Option "VertScrollDelta"  "-200"
        Option "HorizScrollDelta" "-200"

        Option "TapButton1"       "1"
        Option "TapButton2"       "3"

        Option "Protocol"         "event"
        Option "HorizHysteresis"  "0"
        Option "VertHysteresis"   "0"
        Option "PalmDetect"       "1"
        Option "PalmMinZ"         "150"
        Option "GrabEventDevice"  "1"

There are lots of option you can choose from.

  1. Now reboot or re-log.

Further Reading