Finally, my long quest for proper touchpad support has come to an end. Specifically, my touchpad now supports two-finger scrolling and smoother/faster acceleration when moving the pointer around.
This comes from a lot of time spent experimenting with different options. So in order to possibly save others the same headache, I will post my solution here.
This applies to FreeBSD 10.2-RELEASE, and my laptop is a Thinkpad T530.
There is only one disclaimer: this configuration has resulted in a non-functional trackpoint (both the trackpad pointer and the three buttons beneath it). If I ever decide to get that sorted out, I'll post an update. However, for now the trackpoint was less important to me than the touchpad features.
This method is quite a bit different than all others I've found in various posts, blogs, mailing lists, and how-to's. All have suggested using the mouse driver instead of the Synaptics driver, but my solution is the opposite.
Of course, the perspective of all these steps are from my personal experience. Adjust and experiment as necessary.
Install the following software from ports (not with pkg(8))
With the pkg(8) versions installed, I was getting errors in Xorg.0.log:
Add to /boot/loader.conf:
In /etc/rc.conf, make sure moused(8) is not enabled. The reason is that it will conflict with your xorg.conf file (as will be shown below). However, hald and dbus did not cause any problems. That is key, because depending on your setup, some features may still rely on those services.
Generate an xorg.conf file as described in the handbook:
Then copy that file to /usr/local/etc/X11/xorg.conf.
You shouldn't have to remove any content from this file. This is my xorg.conf file, excluding the Monitor and Video card sections, with additions noted.
* moused(8) will prevent the use of /dev/psm0, causing errors in Xorg.0.log stating that psm0 is busy or already open.
Two things that I found significant...
1. I didn't have to add synaptics to the "Module" section, and
2. I added a line to prevent devd(8) from auto-adding devices in order to avoid overriding my chosen options.
The "Touchpad0" section, beginning at "VertTwoFingerScroll," will differ according to personal preference. All of these values came from reviewing synaptics(4).
About "EmulateTwoFingerMinZ" and "EmulateTwoFingerMinW"...I'm not positive that they're necessary or if they are indeed optimal values. After further experimentation, I've found that these values are necessary for me to get two-finger vertical scrolling.
And that's it! Hopefully you now have a smooth touchpad experience.
This comes from a lot of time spent experimenting with different options. So in order to possibly save others the same headache, I will post my solution here.
This applies to FreeBSD 10.2-RELEASE, and my laptop is a Thinkpad T530.
There is only one disclaimer: this configuration has resulted in a non-functional trackpoint (both the trackpad pointer and the three buttons beneath it). If I ever decide to get that sorted out, I'll post an update. However, for now the trackpoint was less important to me than the touchpad features.
This method is quite a bit different than all others I've found in various posts, blogs, mailing lists, and how-to's. All have suggested using the mouse driver instead of the Synaptics driver, but my solution is the opposite.
Of course, the perspective of all these steps are from my personal experience. Adjust and experiment as necessary.
Install the following software from ports (not with pkg(8))
With the pkg(8) versions installed, I was getting errors in Xorg.0.log:
Code:
Unable to query/initialize Synaptics hardware
Add to /boot/loader.conf:
Code:
hw.psm.synaptics_support="1"
In /etc/rc.conf, make sure moused(8) is not enabled. The reason is that it will conflict with your xorg.conf file (as will be shown below). However, hald and dbus did not cause any problems. That is key, because depending on your setup, some features may still rely on those services.
Generate an xorg.conf file as described in the handbook:
Code:
# Xorg -configure
Then copy that file to /usr/local/etc/X11/xorg.conf.
# cp /root/xorg.conf.new /usr/local/etc/X11/xorg.conf
You shouldn't have to remove any content from this file. This is my xorg.conf file, excluding the Monitor and Video card sections, with additions noted.
Code:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Touchpad0" "CorePointer" << added
Option "AutoAddDevices" "false" << added
EndSection
Section "Files"
ModulePath "/usr/local/lib/xorg/modules"
FontPath "/usr/local/share/fonts/misc/"
FontPath "/usr/local/share/fonts/TTF/"
FontPath "/usr/local/share/fonts/OTF/"
FontPath "/usr/local/share/fonts/Type1/"
FontPath "/usr/local/share/fonts/100dpi/"
FontPath "/usr/local/share/fonts/75dpi/"
EndSection
Section "Module"
Load "glx"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "InputDevice" << added
Identifier "Touchpad0" << added
Driver "synaptics" << added
Option "Protocol" "psm" << added
Option "Device" "/dev/psm0" << added
Option "SendCoreEvents" "on" << added
Option "VertTwoFingerScroll" "1" << added
Option "EmulateTwoFingerMinZ" "7" << added
Option "EmulateTwoFingerMinW" "7" << added
Option "VertScrollDelta" "-111" << added
Option "TapButton2" "0" << added
EndSection << added
... the rest is irrelevant monitor and screen configurations
* moused(8) will prevent the use of /dev/psm0, causing errors in Xorg.0.log stating that psm0 is busy or already open.
Two things that I found significant...
1. I didn't have to add synaptics to the "Module" section, and
2. I added a line to prevent devd(8) from auto-adding devices in order to avoid overriding my chosen options.
The "Touchpad0" section, beginning at "VertTwoFingerScroll," will differ according to personal preference. All of these values came from reviewing synaptics(4).
About "EmulateTwoFingerMinZ" and "EmulateTwoFingerMinW"...
And that's it! Hopefully you now have a smooth touchpad experience.
Last edited: