This wulf7 [1] is a really nice guy that helped me run full featured Synaptics TouchPad with FreeBSD on Panasonic Toughbook CF-MX4 [2][3]. Now it works for moused and libinput with all multitouch gestures like two or three finger scroll, scale, etc! The problem was in detection mechanism as device is connected over multiplexer with both PS/2 and SMBus but multitouch works only over SMBus. Although fix requires change and rebuild of FreeBSD Kernel I hope it gets quickly to the upstream [4]. I had a chance to exercise building whole FreeBSD distribution into the USB memstick image, so I could test driver fix on a target computer without even touching its hard drive contents :-)
/* psm has a special support for GenMouse + SynTouchpad combination */ if (active_ports_count >= 2) { for (port = 0; port < KBDC_AUX_MUX_NUM_PORTS; port++) {
That 2 above had to be changed into 1 in /usr/src/sys/dev/atkbdc/psm.c
. Nice? That’s what I call a one-bit-fix :-)
In addition, when you work with Synaptics Touchpad in Xorg and you want to use its all features like tap-to-click, natural (swapped) two finger scroll, two and three finger gestures, don’t use moused
,xmodmap
, or xinput
as this will produce inconsistent behavior in applications based on different toolkits (i.e. GTK will scroll up while Qt will scroll down etc), instead use the new way of input based on libinput
and modify MatchIsTouchpad
section of /usr/local/share/X11/xorg.conf.d/40-libinput.conf
like:
Section "InputClass" Identifier "libinput touchpad catchall" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event5" Option "NaturalScrolling" "on" Option "Tapping" "on" Option "ClickMethod" "clickfinger" Driver "libinput" EndSection
[1] https://github.com/wulf7/iichid
[2] https://github.com/wulf7/iichid/issues/51
[3] https://github.com/wulf7/iichid/issues/53
[4] https://reviews.freebsd.org/D28502