# Touchpad horizontal scroll WAS working

## BeteNoire

I have my touchpad configured to scroll horizontally and vertically by the edges. Few days ago I've noticed that horizontal scrolling does not work. Here is some output:

```
bete@argent ~ $ grep -i horizedge /etc/X11/xorg.conf

   Option "HorizEdgeScroll" "1"

bete@argent ~ $ synclient -l|grep -i horizedge

    HorizEdgeScroll         = 0

bete@argent ~ $ grep -i horizedge /var/log/Xorg.0.log

(**) Option "HorizEdgeScroll" "1"

bete@argent ~ $ synclient -l|grep -i horizedge

    HorizEdgeScroll         = 0
```

Log shows that everything should be fine, but it isn't - horiz scroll is dead.

Xev shows button 4 and 5 for vertical scroll, but does not show any button on horizontal scroll.

I can bring it back to life with the command:

```
synclient HorizEdgeScroll=1
```

```
synclient -l|grep -i horizedge

    HorizEdgeScroll         = 1
```

Now xev shows button 6 and 7 when scrolling on the bottom edge, but it should be working after X starts.

Here's my xorg.conf: http://pastebin.com/kzwaX3cH and the complete Xorg log:http://pastebin.com/5SQRhrRw

Any clues?

----------

## audiodef

I assume you updated something - possibly an emerge -uDN world or something similar. 

Anyway, you can try putting synclient HorizEdgeScroll=1 into /etc/conf.d/local as a workaround until you figure it out.

----------

## Odysseus

 *BeteNoire wrote:*   

> I have my touchpad configured to scroll horizontally and vertically by the edges. Few days ago I've noticed that horizontal scrolling does not work. Here is some output:
> 
> ```
> bete@argent ~ $ grep -i horizedge /etc/X11/xorg.conf
> 
> ...

 

I believe that most recent versions of Xorg with the synaptics touchpad driver modifications are no longer done in the xorg.conf file. Rather, the driver requires hal, evdev and modifying or creating a .fdi file in /etc/hal/policy/11-x11-synaptics.fdi. The file is in HTML format and there are many threads on the board describing what modifications to make. This is what I've done and works beautifully on my laptop for both horizontal vertical and circular scrolling.

I hope this helps.

Ciao

----------

## Mad Merlin

 *Odysseus wrote:*   

>  *BeteNoire wrote:*   I have my touchpad configured to scroll horizontally and vertically by the edges. Few days ago I've noticed that horizontal scrolling does not work. Here is some output:
> 
> ```
> bete@argent ~ $ grep -i horizedge /etc/X11/xorg.conf
> 
> ...

 

It's recommended (or was, at least) to configure the touchpad via HAL in the file you mentioned, but HAL seems to be going away in newer versions of Xorg, along with the file you mentioned. I was lazy about the matter and left my touchpad config in xorg.conf (HAL didn't exist back then), and it's still working like the day I added it. AFAIK, using xorg.conf for synaptics config is merely deprecated, it still works.

Edit: Here's what works for me:

```

Section "InputDevice"

        Identifier  "TouchPad"

        Driver      "synaptics"

        Option      "Device" "/dev/input/mouse0"

        Option      "Protocol" "auto-dev"

        Option      "LeftEdge" "0"

        Option      "RightEdge" "0"

        Option      "TopEdge" "0"

        Option      "BottomEdge" "0"

        Option      "FingerLow" "25"

        Option      "FingerHigh" "30"

        Option      "MaxTapTime" "180"

        Option      "MaxTapMove" "220"

        Option      "VertScrollDelta" "100"

        Option      "MinSpeed" "0.09"

        Option      "MaxSpeed" "0.18"

        Option      "AccelFactor" "0.0015"

        Option      "RTCornerButton" "0"

        Option      "RBCornerButton" "0"

        Option      "TapButton1" "0"

        Option      "TapButton2" "0"

        Option      "TapButton3" "0"

        Option      "VertEdgeScroll" "1"

        Option      "HorizEdgeScroll" "1"

        Option      "SHMConfig" "on"

EndSection

```

I use the entire touchpad as a scrolling device, as it's useless as a pointing device, that's what the nipple is for.

----------

## Odysseus

Yes it's true that xorg 1.8 is going to be removing hal, but as of now hal and evdev with the synaptics driver is the recomended method. When 1.8 comes out your xorg.conf is going to be deprecated too. As of this posting there are several major issues with xorg -hal, chief among them KDE and Gnome need hal and the synaptics driver to work correctly. My laptop has an Alps touchpad which uses the synaptics driver but has different geometry and sensitivity than synaptics. But for reference I'm going to include my personal xorg.conf and my /etc/hal/policy/11-x11-synaptics.fdi file. The fdi file I use, I got from the Sabayon website. It's a generic setup that includes vertical, horizontal and circular scrolling; as well as accelerated cursor movements and very sensitive tapping. 

One more thing if you have updated xorg-server anytime recently you need to rebuild your input drivers, so try doing this first. On my machine whenever I rebuild xorg i also rebuild hal, evdev, mouse, synaptics, keyboard, and joystick. Hopefully this will get you going.

My xorg.conf

```
# nvidia-xconfig: X configuration file generated by nvidia-xconfig

# nvidia-xconfig:  version 1.0  (buildmeister@builder75)  Tue Dec  8 21:04:28 PST 2009

Section "ServerLayout"

    Identifier     "Layout0"

    Screen      0  "Screen0" 0 0

    Option         "Xinerama" "0"

EndSection

Section "Module"

    Load           "i2c"

    Load           "synaptics"

    Load           "glx"

EndSection

Section "Monitor"

    Identifier     "Monitor0"

    VendorName     "Dell"

    ModelName      "Sharp"

    HorizSync       30.0 - 75.0

    VertRefresh     60.0

EndSection

Section "Device"

    Identifier     "Device0"

    Driver         "nvidia"

    VendorName     "NVIDIA Corporation"

    BoardName      "GeForce Go 7800 GTX"

EndSection

Section "Screen"

    Identifier     "Screen0"

    Device         "Device0"

    Monitor        "Monitor0"

    DefaultDepth    24

    Option         "Coolbits" "1"

    Option         "TwinView" "0"

    Option         "metamodes" "nvidia-auto-select +0+0"

    SubSection     "Display"

        Depth       24

    EndSubSection

EndSection

```

My /etc/hal/policy/11-x11-synaptics.fdi

```
<?xml version="1.0" encoding="ISO-8859-1"?>

<deviceinfo version="0.2">

  <device>

    <match key="info.capabilities" contains="input.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. -->

   <merge key="input.x11_options.SHMConfig" type="string">true</merge>

   <merge key="input.x11_options.MaxTapMove" type="string">2000</merge>

   <merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>

   <merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge>

   <merge key="input.x11_options.CircularScrolling" type="string">true</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>

    <!-- MacBook 5 touchpad support -->

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

        -->

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

        <merge key="input.x11_options.LeftEdge" type="string">0</merge>

        <merge key="input.x11_options.RightEdge" type="string">1280</merge>

        <merge key="input.x11_options.TopEdge" type="string">0</merge>

        <merge key="input.x11_options.BottomEdge" type="string">800</merge>

        <merge key="input.x11_options.ClickFinger1" type="string">1</merge>

        <merge key="input.x11_options.ClickFinger2" type="string">3</merge>

        <merge key="input.x11_options.ClickFinger3" type="string">2</merge>

        <merge key="input.x11_options.HorizEdgeScroll" type="string">0</merge>

        <merge key="input.x11_options.VertEdgeScroll" type="string">0</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.HorizScrollDelta" type="string">0</merge>

        <merge key="input.x11_options.VertScrollDelta" type="string">40</merge>

        <merge key="input.x11_options.PressureMotionMinZ" type="string">10</merge>

        <merge key="input.x11_options.FingerLow" type="string">16</merge>

        <merge key="input.x11_options.FingerHigh" type="string">80</merge>

        <merge key="input.x11_options.FingerPress" type="string">256</merge>

        <merge key="input.x11_options.PalmDetect" type="string">1</merge>

        <merge key="input.x11_options.PalmMinWidth" type="string">10</merge>

        <merge key="input.x11_options.PalmMinZ" type="string">200</merge>

        <merge key="input.x11_options.MinSpeed" type="string">0.8</merge>

        <merge key="input.x11_options.MaxSpeed" type="string">1.2</merge>

        <merge key="input.x11_options.AccelFactor" type="string">0.10</merge>

        <merge key="input.x11_options.MaxTapMove" type="string">25</merge>

        <merge key="input.x11_options.MaxTapTime" type="string">223</merge>

        <merge key="input.x11_options.MaxDoubleTapTime" type="string">200</merge>

        <merge key="input.x11_options.TapButton1" type="string">1</merge>

        <merge key="input.x11_options.TapButton2" type="string">3</merge>

        <merge key="input.x11_options.TapButton3" type="string">2</merge>

        <merge key="input.x11_options.RTCornerButton" type="string">0</merge>

        <merge key="input.x11_options.RBCornerButton" type="string">0</merge>

        <merge key="input.x11_options.LTCornerButton" type="string">0</merge>

        <merge key="input.x11_options.LBCornerButton" type="string">0</merge>

      </match>

    </match>

  </device>

</deviceinfo>

```

I hope these help you out!

Ciao

----------

## BeteNoire

Configuring input devices via hal is droppend and xorg 1.8 uses udev.

Regardless of what automagical methods xorg uses, settings can still be tweaked good, old fashioned method via xorg.conf - it is what I need to do.

----------

