Configuring Sentelic touchpad on ASUS G74S laptop running Fedora 16

NOTE:  This does NOT work with Fedora 17.  In Fedora 17, you can simply remove all references to touchpads in the xorg.conf and let the hotpluging stuff take over. In Fedora 17, the touchpad is correctly recognized and,at least in KDE, appears in the system settings.

A while ago, I bought an ASUS G74 laptop — the specs were great and I do a fair amount of imaging work on the road.  I’m running Fedora 16 64-bit (kernel 3.3.4-3.fc16.x86_64 )  with KDE 4.8.2.

I was having a heck of a time configuring the Sentelic touchpad.  It was recognized correctly as “SPPS/2 Sentelic FingerSensingPad” and run by the ubitquitous evdev driver.  It was recognized as a “mouse,” however, and I could not configure it using the KDE desktop tools.  I badly needed it to do three-button emulation, but no such luck.  By default, the /etc/X11/xorg.conf file described it as in InputDevice:

Section “InputDevice”

Identifier  “Touchpad”
Option      “RightEdge” “5300″
Option      “TopEdge” “1700″
Option      “BottomEdge” “4200″

Option      “FingerLow” “25″
Option      “FingerHigh” “30″
Option      “MaxTapTime” “180″
Option      “MaxTapMove” “220″
Option      “VertScrollDelta” “100″
Option      “MinSpeed” “0.06″
Option      “MaxSpeed” “0.12″

Driver         “synaptics”
Option         “Device” “/dev/input/mouse0″
Option         “Protocol” “auto-dev”
Option         “Emulate3Buttons” “on”
Option      “LeftEdge” “1700″
Option         “AccelFactor” “0.0010″
Option         “SHMConfig” “on”
EndSection

 

To be honest, I don’t know how this got generated — I’ve updated a lot of drivers that automatically massaged the xorg.conf file (particularly NVIDIA drivers), so who knows.

A quick look around the web suggested that the kernel used the synaptics driver, so that was OK, I thought.  However, the synaptics tools such as synclient couldn’t find the driver (even though it came up in modprobe -l) Ever since udev started dealing with hotplugging and evdev took over all the drivers in the kernel, I have never been able to makes sense of what the xorg.conf file was good for.  I gamely tried to change the driver to “evdev” but that didn’t help all that much.  I tried to use the device using the  “input” convention (e.g. /dev/input/event5 ), but that didn’t fix anything.  I won’t go over the stuff about /dev/input/eventnnn (where “nnn” is a number) and udev, but the bottom line is that it is not trivial to figure out what goes where now.

Then, reading the descriptions, I found that if you want to use xorg.conf to modify something that udev and evdev are controlling, you can do it not by modifying the *device* (which seems to try to grab control  from udev/evdev but is often ignored) but by modifying the description of the *class* of devices.  Thus, to change the configuration of the Sentelic touchpad, I used “InputClass” instead of “InputDevice”:

Section “InputClass”
Identifier     “FSPPS/2 Sentelic FingerSensingPad”
Driver         “evdev”
Option         “Protocol” “auto-dev”
Option         “Emulate3Buttons” “on”
Option         “AccelFactor” “0.0010″
Option         “SHMConfig” “on”
EndSection

 

This works for turning on three button emulation.  It will also work with the configuration parameters I’ve played with.

 

Note that there is no “Device” option, and I don’t know if the Driver statement is actually necessary.  Also note that “InputClass” sections are *not* included in the ServerLayout list at the beginning of xorg.conf.

 

Hope this helps somebody