Monday, February 4, 2008

Slow down your evdev mouse

Evdev is a generic input device driver for xorg. It provides basic support to a wide range of keyboards and mice. Particularly, sometimes the mouse driver may not work well with your stylish mouse, e.g. my Logitech VX Revolution. Then give evdev a shot and very likely it's gonna work like a charm. Generic as it is, however, evdev lacks many advanced features, among which one remarkable feature is to slow down mouse speed. AFAIK the mouse driver also lacks this functionality in its up-to-date version. To make it even worse, evdev does not respect "xset m" instructions, which could be used as a workaround for mouse. Thus if you possess a mouse with really high resolution, the flying speed will likely render it useless with evdev.

Now that's enough for background. I've made a tiny patch against xf86-input-evdev version 1.1.5, to add a "Speed" parameter to evdev. It takes a real value between 0 and 1, and a line like this in your evdev device section
Option "Speed" "0.5"
will slow down your mouse by half. The option defaults to 1.0 meaning original speed.

The patch is here (evdev-speed-1.1.5.patch) and I've also built a deb package for it here (xserver-xorg-input-evdev_1.1.5-0ubuntu2+jason1_i386.deb).

4 comments:

Anonymous said...

Thanks! This works great. I installed the deb on my Ubuntu 7.10 system. The problem now is that Ubuntu continuously wants to update the deb back to the original version. Any way to disable this behavior?

Jason said...

You can simply "hold" the package, either through "aptitude hold package" command or through the synaptic gui.

Matt said...

I coded up a speed patch for evdev 2.1.2 that readers might find useful:

http://www.mattwhitlock.com/evdev-2.1.2-speed.patch


Since all evdev configuration is now done through HAL FDI policy files, you can configure your mouse speed by adding the following lines to /etc/hal/fdi/policy/10-x11-input.fdi:

<device>
  <match key="info.capabilities"
        contains="input.mouse">
    <merge key="input.x11_options.Speed"
          type="string">0.75</merge>
  </match>
</device>

FYI: If you don't have a 10-x11-input.fdi file, those lines should be wrapped in a <deviceinfo version="0.2"> root element.

This patch includes support for XInput run-time properties, so if your X.org server is new enough, you can change the mouse speed without restarting X or replugging the mouse, by using the 'xinput' utility.

Unknown said...

evdev-2.2.5-speed.patch