Bug 1469713

Summary: No three finger middle mouse button emulation
Product: [Fedora] Fedora Reporter: Sjoerd Mullender <sjoerd>
Component: xorg-x11-drv-libinputAssignee: Peter Hutterer <peter.hutterer>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 26CC: hdegoede, peter.hutterer, sjoerd
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-07-13 07:01:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
xinput list-props of device without xorg-x11-drv-synaptics-legacy
none
xinput list-props of device with xorg-x11-drv-synaptics-legacy none

Description Sjoerd Mullender 2017-07-11 17:22:34 UTC
Description of problem:
After upgrading to Fedora 26, the three finger click to get an emulated middle mouse button click didn't work anymore.
After installing xorg-x11-drv-synaptics-legacy I got the three finger click back.

Upgrade to Fedora 26 involved replacing the old synaptics driver with the new libinput driver.

I use XFCE as my desktop environment (i.e. X, not Wayland).


Version-Release number of selected component (if applicable):
xorg-x11-drv-libinput-0.25.1-2.fc26.x86_64

How reproducible:


Steps to Reproduce:
1.Run Fedora 26 and start up XFCE.
2.Run xev
3.Attempt three finger click

Actual results:
Three finger click registers as button 1 (left button) click.

Expected results:
Three finger click registers as button 2 (middle button) click.

Additional info:
I use a Dell XPS 13 with a Synaptics touchpad.

Comment 1 Peter Hutterer 2017-07-11 22:06:59 UTC
what's the output of xinput list-props "the touchpad device name"? you can get the device name by just running xinput list)

Comment 2 Sjoerd Mullender 2017-07-12 06:24:57 UTC
Created attachment 1296744 [details]
xinput list-props of device without xorg-x11-drv-synaptics-legacy

This is the output of xinput list-props of the device without xorg-x11-drv-synaptics-legacy installed (and after a reboot).

The output of xinput list for the pointer:
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                        	id=10	[slave  pointer  (2)]
⎜   ↳ DLL0704:01 06CB:76AE Touchpad           	id=12	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=15	[slave  pointer  (2)]

It's id=12 that is being used (disabling it causes the touchpad to stop working).

Comment 3 Sjoerd Mullender 2017-07-12 06:28:31 UTC
Created attachment 1296746 [details]
xinput list-props of device with xorg-x11-drv-synaptics-legacy

This is the output of xinput list-props of the touchpad device with xorg-x11-drv-synaptics-legacy installed.  This works the way I would like.

Comment 4 Peter Hutterer 2017-07-12 23:32:03 UTC
"libinput Click Method Enabled (297):	1, 0"

clickfinger isn't working because the driver defaults to software buttons and you didn't change the click method. You either need to set this in an xorg.cond.f snippet (see man 4 libinput) or change it in the gnome-tweak-tool (for gnome) or however XFCE does it, I don't know that off-hand, sorry. 

Let me know how you go, once that's enabled it should work fine again.

Comment 5 Sjoerd Mullender 2017-07-13 06:56:31 UTC
I created a file /etc/X11/xorg.conf.d/30-touchpad.conf with the following contents:
Section "InputClass"
    Identifier "devname"
    Driver "libinput"
    MatchIsTouchpad "on"
    Option "ClickMethod" "clickfinger"
EndSection

I removed xorg-x11-drv-synaptics-legacy and now things are working properly again (i.e. including three finger click).

https://wiki.archlinux.org/index.php/Libinput#Common_options was very useful in getting this file set up.

Question remains: why does the driver default to software buttons if the hardware buttons are more capable?

Comment 6 Peter Hutterer 2017-07-13 07:01:03 UTC
mostly because we have to default to something and when we decided on this default 3 years ago, the vast majority of touchpads had visible markers to indicate software buttons. That was also the default behaviour in windows for those buttons. Macs had a different default behaviour, so we default to clickfinger there.

There are 2 layers above libinput itself that decide on those defaults, the xorg-x11-drv-libinput driver and the desktop environment. Either of those could switch the default if they see fit and the user would be none the wiser :)

Comment 7 Sjoerd Mullender 2017-07-13 07:30:13 UTC
Thanks, both for the quick help and the explanation.