two fingers scrolling on a linux synaptics notebook touchpad with X.org 7.4 (xorg-server 1.5)

Last updated on Sat, 2009-05-02 20:21. Originally submitted by fabio on 2008-12-02 12:37.

X.org version 7.4 with xorg-server 1.5 introduces a new way of handling input devices (keyboards, mouses, touchpads, trackball, etc..).

Instead of using some configuration rules in xorg.conf like in Xorg 7.3 and previous versions, input devices are now automatically configured and enabled in Xorg once the system found them.

This process is called Xorg input hotplugging and relies on HAL and Dbus to notify Xorg of additions or removing of input devices. This is a good step forward for Xorg and Linux as Desktop system as it removes all the problems related on having configurations hard coded in the xorg.conf file.

X.org Input Hotplugging and Synaptics Touchpads

Obviously this change introduces differences in how the various input devices are configured. After Archlinux, the linux distribution I use, has upgraded its packages to Xorg 7.4 I had to modify some of the configurations I had for my synaptics touchpad. Obviously I didn't want to loose the two fingers scrolling.

You will need the following packages: xf86-input-evdev and xf86-input-synaptics (your linux distribution might have called them differently). Moreover you will need to have HAL and Dbus enabled and correctly working in your system.

As the new input discovering and configuration now relies on HAL, the synaptics touchpad configurations will be inserted in an HAL .fdi policy rule file. You should find some examples of such files under /usr/share/hal/fdi/policy/10osvendor/ (your distribution might use a different path). Those files are XML policies rules used for configuring hardware devices.

By default HAL uses the rules available at /usr/share/hal/fdi/. Configurations and changes to those rule files should be made inserting modified policy files in /etc/hal/fdi/. Policies files inserted into that folder will have priority on the rules available by default in /usr/share/hal/fdi/.

So.. to configure a Synaptic Touchpad you can create a file called 11-x11-synaptics.fdi in your /etc/hal/fdi/policy/ folder.

Remember that each time you change a HAL policy file you have to restart the HAL daemon and, if the policy file are relevant to Xorg, it's better to also restart Xorg.

11-x11-synaptics.fdi

This is the content of my configuration file:

<?xml version="1.0" encoding="ISO-8859-1"?>                                                                                             
<deviceinfo version="0.2">                                                                                                              
  <device>                                                                                                                              
    <match key="info.capabilities" contains="input.touchpad">                                                                           
      <match key="info.product" contains="Synaptics TouchPad">                                                                          
        <merge key="input.x11_driver" type="string">synaptics</merge>                                                                   
        <!-- Arbitrary options can be passed to the driver using                                                                        
             the input.x11_options property since xorg-server-1.5. -->                                                                  
        <!-- EXAMPLE:                                                                                                                   
        <merge key="input.x11_options.LeftEdge" type="string">120</merge>                                                               
        -->                                                                                                                             
        <!-- Added by Fabio Varesano using setting from xorg.conf after X.org update to 1.5.x                                           
        Following the old xorg.conf settings                                                                                            

        Section "InputDevice"
        Identifier      "Touchpad"
        Driver          "synaptics"
        Option  "Device"        "/dev/input/mouse0"
        Option  "Protocol"      "auto-dev"         
        Option  "LeftEdge"      "1700"             
        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"             
        Option  "AccelFactor" "0.0010"             
        Option  "SHMConfig"     "on"               
        Option  "VertTwoFingerScroll"   "1"        
        Option  "HorizTwoFingerScroll"  "1"        
        EndSection                                 
        -->                                        
        <merge key="input.x11_options.LeftEdge" type="string">1700</merge>
        <merge key="input.x11_options.RightEdge" type="string">5300</merge>
        <merge key="input.x11_options.TopEdge" type="string">1700</merge>
        <merge key="input.x11_options.BottomEdge" type="string">4200</merge>
        <merge key="input.x11_options.FingerLow" type="string">25</merge>
        <merge key="input.x11_options.FingerHigh" type="string">30</merge>
        <merge key="input.x11_options.MaxTapTime" type="string">180</merge>
        <merge key="input.x11_options.MaxTapMove" type="string">220</merge>
        <merge key="input.x11_options.VertScrollDelta" type="string">100</merge>
        <merge key="input.x11_options.MinSpeed" type="string">0.10</merge>
        <merge key="input.x11_options.MaxSpeed" type="string">0.70</merge>
        <merge key="input.x11_options.AccelFactor" type="string">0.00150</merge>
        <merge key="input.x11_options.SHMConfig" type="string">on</merge>
        <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
        <merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
        <merge key="input.x11_options.VertEdgeScroll" type="string">1</merge>
        <merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge>
        <merge key="input.x11_options.TapButton1" type="string">1</merge>
        <merge key="input.x11_options.TapButton2" type="string">2</merge>
        <merge key="input.x11_options.TapButton3" type="string">3</merge>
      </match>

      <match key="info.product" contains="AlpsPS/2 ALPS">
        <merge key="input.x11_driver" type="string">synaptics</merge>
      </match>
      <match key="info.product" contains="appletouch">
        <merge key="input.x11_driver" type="string">synaptics</merge>
      </match>
      <match key="info.product" contains="bcm5974">
        <merge key="input.x11_driver" type="string">synaptics</merge>
      </match>
    </match>
  </device>
</deviceinfo>

For your reference I inserted in the file my old xorg.conf touchpad settings. They are commented into the HAL configuration file and have been deleted into xorg.conf as no more used.

You can see that the new settings are pretty similar to the old ones: it's just changed the syntax but the settings name and some values are actually the same.

As you can note by comparing the speed and acceleration values from the current configuration and the old one seems that the new Synaptics Drivers have a lower sensitivity. So I had to make those values higher to get the same pointer speed I was used to. The affected values are MinSpeed, MaxSpeed and AccelFactor.

Moreover, as tapping and scrolling now have to be explicitly enabled, we now have 5 new settings: VertEdgeScroll, HorizEdgeScroll, TapButton1, TapButton2 and TapButton3. The first two enabled vertical and horizontal edge scrolling while the last three enable tapping.

Changes to xorg.conf

Obviously there are settings in xorg.conf which are now useless.

In the ServerLayout section you might comment out (add a # at the beginning of the line) each InputDevice line as we no more use input devices configured in xorg.conf.

Section "ServerLayout"
        Identifier     "Simple Layout"
        Screen      0  "aticonfig-Screen[0]" 0 0
#       InputDevice    "Mouse1" "CorePointer"
#       InputDevice    "Touchpad"  "SendCoreEvents"
#       InputDevice    "Keyboard1" "CoreKeyboard"
EndSection

Then we will have to comment out each InputDevice section we migh have.

Always remember to restart HAL and Xorg once doing such changes.

Works for me!

Submitted by Clinton Skakun (not verified) on Sun, 2009-02-08 22:00.

Hi and thanks, I downgraded last week after getting frustrated with this new configuration but yesterday I decided to upgrade my system completely. Found this post in a google search. Your settings work fine for me. But I had one problem: I had to add those settings to the /etc/hal/fdi/policy/shmconfig.fdi as mentioned by Jay. The mouse was on crack until I did that. I also added those settings to the regular files in the /etc/ and /usr/share hal directories.

Thanks for sharing, it finally works and my system can be up to date again. I also noticed that using Hal solves a lot of other problems. Like my sound, but another story.

Regards
Clinton Skakun

thanks a bundle :D

Submitted by william (not verified) on Thu, 2009-02-05 19:22.

Thanks a bundle for this,
was like the rest also struggling getting my lill acer one back to life again in X.
now tapping and scrolling works like a charm ^_^

all the Best,

William

Thanks! A few tweaks of

Submitted by night (not verified) on Sat, 2009-01-24 00:45.

Thanks! A few tweaks of mouse sensitivity + your config changes worked like a charm!

Thanks, thanks, thanks. I'm

Submitted by theloz (not verified) on Tue, 2008-12-23 00:27.

Thanks, thanks, thanks. I'm crying from happiness :). 2 weeks struggling with the new xorg, and than this post... Works perfectly on my Samsung NC10.

:-) I'm glad you find it

Submitted by fabio on Tue, 2008-12-23 00:36.

:-) I'm glad you find it useful.

Thank you mate, it works

Submitted by maLen (not verified) on Tue, 2008-12-02 21:01.

Thank you mate, it works perfectly!
Keep up the good work!!!

Small correction to my previous post

Submitted by jay (not verified) on Tue, 2008-12-02 16:44.

Hi,
The values given at the bottom of my reply are the touch pad edge values. Im sorry about my writting :)

No good for Lenovo R61

Submitted by jay (not verified) on Tue, 2008-12-02 16:34.

Hi,
I am fixing the issues after the last system update as many of others:)
With the new xorg now Im running with NO xorg.conf.
Now everything is working fine other than the touch pad.
It is not responding for tapping and scrolling and I gave a try with your settings but no luck.

I think may be I will have to find the exact valuse for
the followings. But I have no idea how to find them at the moment.

1700
5300
1700
4200

Thanks in advance for any help.

Did you tried to get the

Submitted by fabio on Tue, 2008-12-02 17:07.

Did you tried to get the correct values using synclient?

Do you still have the values

Submitted by fabio on Tue, 2008-12-02 17:04.

Do you still have the values which worked on your old xorg.conf? You could use them as I did not changed them in the upgrading from Xorg 7.3 to 7.4.

Ah.. and always remember to restart hal using /etc/rc.d/hal restart issued by root.

Its working now !!

Submitted by jay (not verified) on Sat, 2008-12-06 03:15.

Hi,
Thanks for the reply.
I managed to get the tapping and scrolling work with the touch pad.
For some reason the 11-x11-synaptics.fdi never worked for me. I had to add /etc/hal/fdi/policy/shmconfig.fdi with all the options and it worked well after a reboot.

Cheers,
Jay

Does not work for me

Submitted by Pimmelorus (not verified) on Sun, 2009-02-22 22:02.

I also wanted to say that the solution as shown in this blog does not work for me. I run a Samsung nc10 with linux Mint 6 (which in essence is Ubuntu 8.10).

So, I am also very much interested in a more precise description of the workaround.

I'm sorry but I can't help

Submitted by fabio on Mon, 2009-02-23 01:07.

I'm sorry but I can't help you more. I'm definitely a beginner in this field.

You should ask for help to the Xorg mailing list.

touchpad

Submitted by Norman (not verified) on Mon, 2009-01-12 20:22.

What were the settings for /etc/hal/fdi/policy/shmconfig.fdi with all the options?

I have nothing in this and have had problems with my touchpad for months.
tia

I'm sorry.. but I don't have

Submitted by fabio on Tue, 2009-01-13 20:18.

I'm sorry.. but I don't have that file. No idea what it is needed for you.

I'm glad it worked .. but I

Submitted by fabio on Sat, 2008-12-06 13:44.

I'm glad it worked .. but I really would like to know why it didn't worked with the standard file name.

Take care.

Post new comment

The content of this field is kept private and will not be shown publicly.
If you have a personal or company website insert its address in the form http://www.example.com/ .
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <del> <img> <h2> <h3> <h4> <b> <video> <sub> <sup>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.
  • You may use [inline:xx] tags to display uploaded files or images inline.
  • You may insert videos with [video:URL]
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

More information about formatting options