Synaptics Touchpad xfree driver hack :)

Arne Schwabe arne at rfc2549.org
Thu Jan 1 05:26:16 PST 2004


Hi,

I changed from debian gnu/linux to freebsd 3 weeks ago. Almost
everything with my Notebook worked fine but the Touchpad was not as
good as in linux or windows. Since I really wanted to have my middle
button of the trackpoint and the scrolling of the touchpad working I
decided to try to port the XFree86 synaptics Driver for Linux.
(A nice thing is that Synaptics has a full spec to the protocol used
available online)

Since I am a real C Newbie. (This is more or less my first time
writing C), not everything is really clean, to be honest it is more a
collection of hack I am afraid and this approch somewhat against the
idea of sysmouse. :/ But it still works for me [tm] ;)

The synaptics XFree86 driver *should* detect all features and use them
like on linux. But for now initialisation of an attached second mouse
is not done (I was too lazy to do it, and for me it works without it)

I hope someone with more C skills then I can clean this mess a little
up/advise me how to clean it up and I hope I have picked the right
mailing list :)

But I you want to try it:

download my patches from plaisthos.de/synaptics:

wget http://www.plaisthos.de/synaptics/synaptics-driver.diff
wget http://www.plaisthos.de/synaptics/synaptics.kern.diff

Apply the 2. Patch to your kernel source (My sources should be
-current :))

(cd /usr/src/sys/; patch -p1 <
/location/of/the/patch/synaptics.kern.diff)

Rebuild your kernel and reboot. Check if my code recognized your
Touchpad:

Jan  1 12:41:29 kamino kernel: psm0: model Synaptics Touchpad, device ID 0-00, 2 buttons


Copy /usr/src/sys/sys/mouse.h to /usr/include/sys, or do a make world
(cp /usr/src/sys/sys/mouse.h /usr/include/sys)

Download the Xfree Synaptics Driver Sources from
http://w1.894.telia.com/~u89404340/touchpad/

wget http://w1.894.telia.com/~u89404340/touchpad/files/synaptics-0.12.2.tar.bz2


Unpack it and apply the patch:

tar xfvj synaptics synaptics-0.12.2.tar.bz2
cd synaptics
patch -p1 < synaptics-driver.diff

To build it use gmake:

gmake synaptics_drv.o

(a plain gmake won't work, since the tools don't build at the Moment
but they not so important)

copy the driver to your XFree Installation:

cp synaptics_drv.o /usr/X11R6/lib/modules/input

Disable moused, in case it is running:

killall moused

Edit your XF86Config:

In ServerLayout you should change your Corepointer line to:
        InputDevice    "synaptics" "CorePointer"

And now add this: 

Section "InputDevice"
  Driver        "synaptics"
  Identifier    "synaptics"
  Option        "Device"        "/dev/bpsm0"
  Option        "Protocol"      "psaux"
  Option        "LeftEdge"      "1900"
  Option        "RightEdge"     "5400"
  Option        "TopEdge"       "1900"
  Option        "BottomEdge"    "4000"
  Option        "FingerLow"     "25"
  Option        "FingerHigh"    "30"
  Option        "MaxTapTime"    "180"
  Option        "MaxTapMove"    "220"
  Option        "VertScrollDelta" "100"
  Option        "MinSpeed"      "0.02"
  Option        "MaxSpeed"      "0.18"
  Option        "AccelFactor" "0.0010"
  Option        "SHMConfig"     "on"
#  Option       "Repeater"      "/dev/ps2mouse"
EndSection

Pray and start X :)

If something goes wrong, let me now.
I hope someone else besides me has some use of my hacking.

Arne


More information about the freebsd-current mailing list