After the recent upgrade in ArchLinux of xorg-server from 1.4.x to 1.5.x my thrusty Logitech Marble FX trackball did not work entirely. The trackball does not have a dedicated scroll wheel, but by pressing a button, and using the trackball, you can scroll both vertical and horizontal.

In order to get the emulated scroll working again you first have to update the evdev driver (the xf86-input-evdev package), as version 2.0.7 doesn’t support the needed options.

I use the xf86-input-evdev-git PKGBUILD from aur (which depends on xkeyboard-config-git) which works fine.

Once you have build the packages and installed them (remove the conflicting packages by using pacman -Rd packagename) you will have to create a Hal fdi file, I created “/etc/hal/fdi/policy/11-x11-mouse.fdi” containing:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.mouse">
      <match key="info.product" contains="PS2++ Logitech Mouse">
        <merge key="input.x11.Protocol" type="string">ExplorerPS/2</merge>
        <merge key="input.x11_options.Buttons" type="string">7</merge>
        <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
        <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge>
        <merge key="input.x11_options.EmulateWheel" type="string">True</merge>
        <merge key="input.x11_options.EmulateWheelButton" type="string">8</merge>
        <merge key="input.x11_options.EmulateWheelInertia" type="string">30</merge>
        <merge key="input.x11_options.Emulate3Buttons" type="string">False</merge>
      </match>
    </match>
  </device>
</deviceinfo>

Now shutdown X, restart hal and X and the emulated scroll whell should work just fine. I have the following output in my “/var/log/Xorg.0.log”:

(II) config/hal: Adding input device PS2++ Logitech Mouse
(**) PS2++ Logitech Mouse: always reports core events
(**) PS2++ Logitech Mouse: Device: "/dev/input/event3"
(II) PS2++ Logitech Mouse: Found 4 mouse buttons
(II) PS2++ Logitech Mouse: Found x and y relative axes
(II) PS2++ Logitech Mouse: Configuring as mouse
(**) Option "Emulate3Buttons" "False"
(II) PS2++ Logitech Mouse: Forcing middle mouse button emulation off.
(**) Option "EmulateWheel" "True"
(**) Option "EmulateWheelButton" "8"
(**) Option "EmulateWheelInertia" "30"
(**) Option "YAxisMapping" "4 5"
(**) PS2++ Logitech Mouse: YAxisMapping: buttons 4 and 5
(**) Option "XAxisMapping" "6 7"
(**) PS2++ Logitech Mouse: XAxisMapping: buttons 6 and 7
(**) PS2++ Logitech Mouse: EmulateWheelButton: 8, EmulateWheelInertia: 30, EmulateWheelTimeout: 200
(II) XINPUT: Adding extended input device "PS2++ Logitech Mouse" (type: MOUSE)