You are not logged in.

#1 2010-03-12 18:30:40

evil
Member
From: Indianapolis, IN
Registered: 2010-03-06
Posts: 41
Website

Synaptics Touch Pad - Permenently disabling tapping - A solution

MODERATORS: I wasn't sure where I should post a 'solution' rather than a 'problem/issue' but felt that Hardware Issues was the best location after viewing all other forums.

I recently have had issues with disabling my synaptics touchpad 'tapping' feature. A feature that can be quite annoying when engaging in an irc conversation, especially when you suddenly realize you are not typing anymore because you accidently grazed the touchpad resulting in the the client no longer having focus.

Let me first describe how my system is set-up. I have hot-pluggin enabled, therefore, HAL must be used rather than the infamous xorg.conf. As a matter of fact, I never even created an xorg.conf when setting up my arch system. If you do not have hot plugging enabled, then this particular solution is not for you.

After scouring google searches, the Archlinux forum, and even #archlinux on freenode, I finally decided to just poke around myself. I found the 'hal-device' tool in /usr/bin so called upon it and received a VERY large list of devices being handled by HAL. To make it easier on the eyes and easier to review, I did the following while in ~/.

hal-device > hal-device-output.txt

After reviewing the output of hal-device with my fav. text editor, leafpad, I finally came upon the Synaptics section. After viewing what settings were being fed into HAL and exactly how HAL saw my device, I configured the policies appropriately. If you have not yet copied your Synaptics policy to /etc/hal/fdi/policy then execute the following code:

sudo cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/

This will copy a default policy to the hal policy directory. Now let's compare MY output of hal-device to the default policy.

Output from hal-device

18: udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input_0'
  linux.hotplug_type = 2  (0x2)  (int)
  linux.subsystem = 'input'  (string)
  input.device = '/dev/input/event8'  (string)
  input.product = 'AlpsPS/2 ALPS GlidePoint'  (string)
  input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port'  (string)
  input.x11_options.TapButton1 = '1'  (string)
  input.x11_options.TapButton2 = '2'  (string)
  input.x11_options.TapButton3 = '3'  (string)
  input.x11_driver = 'synaptics'  (string)
  info.subsystem = 'input'  (string)
  info.product = 'AlpsPS/2 ALPS GlidePoint'  (string)
  linux.sysfs_path = '/sys/devices/platform/i8042/serio1/input/input8/event8'  (string)
  info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port'  (string)
  info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input_0'  (string)
  info.category = 'input'  (string)
  info.capabilities = { 'input', 'input.mouse', 'input.touchpad' } (string list)
  linux.device_file = '/dev/input/event8'  (string)

Your output may differ, but the procedure should be the same.

Default HAL policy

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.product" contains="ETPS/2 Elantech Touchpad">
        <append key="info.capabilities" type="strlist">input.touchpad</append>
    </match> 
    <match key="info.capabilities" contains="input.touchpad">
        <merge key="input.x11_driver" type="string">synaptics</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>
        <!-- Arbitrary options can be passed to the driver using
             the input.x11_options property since xorg-server-1.5. -->
        <!-- EXAMPLES:
        Switch on shared memory, enables the driver to be configured at runtime
    <merge key="input.x11_options.SHMConfig" type="string">true</merge>

    Maximum movement of the finger for detecting a tap
    <merge key="input.x11_options.MaxTapMove" type="string">2000</merge>

    Enable vertical scrolling when dragging along the right edge
    <merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>

    Enable vertical scrolling when dragging with two fingers anywhere on the touchpad
    <merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>

    Enable horizontal scrolling when dragging with two fingers anywhere on the touchpad
    <merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge>

    If on, circular scrolling is used
    <merge key="input.x11_options.CircularScrolling" type="string">true</merge>

    For other possible options, check CONFIGURATION DETAILS in synaptics man page
        -->
    </match>
  </device>
</deviceinfo>

Looking at the hal-device output, I see my device is recognized as:  input.product = 'AlpsPS/2 ALPS GlidePoint'  (string)
Looking at the default policy, you can obviously see this is different: <match key="info.product" contains="ETPS/2 Elantech Touchpad">

So, make the appropriate changes to the default hal policy that you copied to /etc/hal/fdi/policy/ (i.e. Changing ETPS/2 Elantech Touchpad to AlpsPS/2 ALPS GlidePoint)

In my situation, you can see that was the only line that differed between hal-device output and the default policy. Therefore, we can now make the appropriate adjustments to turn TAPPING off. Simply change the following lines in the default policy:

    <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>

to the following

    <merge key="input.x11_options.TapButton1" type="string">0</merge>
    <merge key="input.x11_options.TapButton2" type="string">0</merge>
    <merge key="input.x11_options.TapButton3" type="string">0</merge>

Afterwards, save and exit the policy and run:

sudo /etc/rc.d/hal restart

You should now have tapping disabled!!!

NOTE: Throughout this I have used Sudo to take on temporary ROOT priviledges... however, you may not have sudo installed therefore may be omitted if run as the root user.
NOTE2: Also, please note, depending on your device you may need to set MaxTapMove to 0.


Site | Blog | Freenode Nick: i686

Offline

#2 2010-06-25 19:25:44

evil
Member
From: Indianapolis, IN
Registered: 2010-03-06
Posts: 41
Website

Re: Synaptics Touch Pad - Permenently disabling tapping - A solution

Since the X.org update, this has now changed. The file you want to edit now is /etc/X11/xorg.conf.d/10-synaptics.conf. Change TapButton 1-3 option values to 0 then restart X.


Site | Blog | Freenode Nick: i686

Offline

Board footer

Powered by FluxBB