“You have to set ‘SHMConfig’ ‘true’…” – even though you have created shmconfig.fdi

In previous blog entries (disabling the touchpad whilst typing and installing gsynaptics) I described how to enable SHMConfig in order to control the touchpad.

I had some feedback from at least two readers who could not enable SHMConfig, and when they tried to use gsynaptics or syndaemon, they were met with the error “You have to set ‘SHMConfig’ ‘true’ in xorg.conf or XF86Config“. The instructions provided in the post to enable SHMConfig using the /etc/hal/fdi/policy/shmconfig.fdi method did not appear to be working.

After a lot of troubleshooting work with Travis, we were able to determine why this was occuring, and how to resolve it.

Firstly, and briefly, the why. The HAL daemon (hald) keeps a cache in /var/cache/hald/fdi-cache. For some reason, hald was using this cache file, and not picking up the newly created shmconfig.fdi file.

Now the important part – how to resolve it! This is easy, you just need to remove the cache:

sudo rm /var/cache/hald/fdi-cache

Provided you have created the shmconfig.fdi file as described in the gsynaptics post, reboot your machine, and you should be able to load gsynaptics and setup syndaemon without being told SHMConfig needs to be set to true. The fdi-cache file will be recreated when you reboot, and you shouldn’t have any more problems.

A big thanks to Travis for helping to troubleshoot this one!


6 thoughts on ““You have to set ‘SHMConfig’ ‘true’…” – even though you have created shmconfig.fdi

  1. Hi Kayno -

    Credit to yourself for cracking the problem – I just did what I was told!

    Anyway, in my case, the syndaemon still worked. That is, the touchpad would not bounce around while I typed. It was just trying to invoke the Touchpad option in Preferences which produced the error. So in the scheme of things, a minor issue.

    Talking about the syndaemon syntax, what’s your thoughts on adding the ‘-t’ switch? I believe ‘-t’ keeps the cursor active while you type while still disabling the cursor from jumping around.

  2. You must be very careful with your thumbs when you type, Travis! I found my thumbs, hovering at the ready for the space, often brush the touchpad.

    From the syndaemon man page:

    -i How many seconds to wait after the last key press before enabling the touchpad. (default is 2.0s).
    -d Start as a daemon, ie in the background.
    -p Create a pid file with the specified filename. A pid file will only be created if the program is started in daemon mode.
    -t Only disable tapping and scrolling, not mouse movements, in response to keyboard activity.
    -k Ignore modifier keys when monitoring keyboard activity.
    -K Like -k but also ignore Modifier+Key combos.

    The -t flag is a good suggestion – I guess it is the tapping/scrolling on the touchpad that causes the focus loss (from the window/textbox you I am typing in). I might give that a go – sometimes I do catch the unresponsive touchpad whilst it is locked out for a second!

  3. Sadly, doesn’t work for me. gsynaptics works fine, syndaemon barfs with BadDevice. Ubuntu 9x.

  4. followed all above and after multiple reboots & removing cache, etc, finally got some success when I amended xorg.conf file itself.
    ie. $sudo gedit /etc/X11/xorg.conf

    and made sure that I added “SHMConfig” “true” in appropriate section, ie:
    Section “InputDevice”
    Identifier “Synaptics Touchpad”
    Driver “synaptics”
    Option “SendCoreEvents” “true”
    Option “Device” “/dev/psaux”
    Option “Protocol” “auto-dev”
    Option “HorizEdgeScroll” “0″
    Option “SHMConfig” “true”

    After reboot, was finally able to open Touchpad from the Startup menu without the bloody annoying “GSynaptics couldn’t initialize.
    You have to set ‘SHMConfig’ ‘true’ in xorg.conf or XF86Config to use GSynaptics” message! :D
    Appending the xorg.conf file is apparently not the preferred method of resolving this, but it’s the only one that worked for me, so there it is.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>