Bug 228875 - Synaptics gestures like two finger scroll and trackpoint do not work.
Summary: Synaptics gestures like two finger scroll and trackpoint do not work.
Status: Closed Works As Intended
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: CURRENT
Hardware: amd64 Any
: --- Affects Only Me
Assignee: Oleksandr Tymoshenko
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-06-10 18:54 UTC by Jason Barbier
Modified: 2019-01-13 19:56 UTC (History)
1 user (show)

See Also:


Attachments
Xorg log (19.38 KB, text/plain)
2018-06-10 18:54 UTC, Jason Barbier
no flags Details
dmesg (39.59 KB, text/plain)
2018-06-10 18:57 UTC, Jason Barbier
no flags Details
pciconf (3.88 KB, text/plain)
2018-06-10 18:58 UTC, Jason Barbier
no flags Details
loader.conf (869 bytes, text/plain)
2018-06-10 19:05 UTC, Jason Barbier
no flags Details
rcconf (1.02 KB, text/plain)
2018-06-10 19:06 UTC, Jason Barbier
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jason Barbier 2018-06-10 18:54:59 UTC
Created attachment 194134 [details]
Xorg log

I have an X1 carbon 6th Gen from Lenovo. When following the handbook to make the synaptics touch pad to work with two finger scroll it makes things like edge scroll work but disables the Trackpoint Device and gestures beyond multi finger tap (like two finger scroll) stop working.
If I disable the X11 synaptics driver all up both the trackpoint and the trackpad work, but none of the gestures other than 1 and 2 finger tap work on the trackpad.

The expected behavior: All features on the trackpad that work in other OSes work (so scrolling with two fingers)
Comment 1 Jason Barbier 2018-06-10 18:57:07 UTC
Created attachment 194135 [details]
dmesg
Comment 2 Jason Barbier 2018-06-10 18:58:12 UTC
Created attachment 194136 [details]
pciconf
Comment 3 Jason Barbier 2018-06-10 19:04:28 UTC
To expand a to a chart here a bit

xf86-input-synaptics on, moused off, hw.psm.synaptics_support=1 hw.psm.trackpoint_support=1: only trackpad works with basic tap gestures and edge scrolling
xf86-input-synaptics on, moused off, hw.psm.synaptics_support=1 hw.psm.trackpoint_support=0: only trackpad works with basic tap gestures and edge scrolling
xf86-input-synaptics on, moused off, hw.psm.synaptics_support=0 hw.psm.trackpoint_support=0: only trackpad works with basic tap gestures and edge scrolling
xf86-input-synaptics on, moused on, hw.psm.synaptics_support=1 hw.psm.trackpoint_support=1: only trackpad works with basic tap gestures and edge scrolling
xf86-input-synaptics on, moused on, hw.psm.synaptics_support=0 hw.psm.trackpoint_support=0: only trackpad works with basic tap gestures and edge scrolling
xf86-input-synaptics off, moused on, hw.psm.synaptics_support=1 hw.psm.trackpoint_support=1: Trackpoint and trackpad work with only tap gestures
xf86-input-synaptics off, moused on, hw.psm.synaptics_support=1 hw.psm.trackpoint_support=0: Trackpoint and trackpad work with only tap gestures
xf86-input-synaptics off, moused on, hw.psm.synaptics_support=0 hw.psm.trackpoint_support=0: Trackpoint and trackpad work with only tap gestures
Comment 4 Jason Barbier 2018-06-10 19:05:22 UTC
Created attachment 194137 [details]
loader.conf

it behaves exactly the same with and without the DSDT tables loaded like they are in this config
Comment 5 Jason Barbier 2018-06-10 19:06:29 UTC
Created attachment 194138 [details]
rcconf
Comment 6 Oleksandr Tymoshenko freebsd_committer freebsd_triage 2019-01-13 19:56:50 UTC
The problem is not in the kernel it's in xf86-input-synaptics driver.

The trackpad sends all events to the driver as a Synaptics packets that are supposed to contain all the information:number of presspoints, movements, "button" states. The trackpoint/buttons events also reported the same way as "guest device" events and can be detected by checking "finger width" field value in a packet to be equal 3 (see sys/dev/atkbdc/psm.c line 3268 and below). The xf86-input-synaptics switches /dev/psm0 "native" mode that disables all the in-kernel processing of synaptics packet and makes kernel pass them to the userland as-is for further handling. The problem is that xf86-input-synaptics doesn't have code to handle guest device events and so the trackpoint and physical buttons do not work.

I ended up using xf86-input-libinput on my Thinkpad for the gestures/synpatics support. I think it requires some changes in kernel config and some X11 drivers before it can be made default for the release.

Closing this issue as "works as intended" because it can't be fixed in FreeBSD code. I am not sure if xf86-input-synaptics is actively maintained but I think it's worth reporting the issue to the upstream.