[Usability] The importance of good mouse acceleration



Hi there,

I would like to raise an issue which has a large impact on usability, and yet
which rarely seems to be discussed: that of mouse acceleration. (I realise
that not everyone uses a mouse as their pointing device, but the following
still holds.)

X currently implements a system of mouse acceleration which is sub-standard,
and which compares badly against the algorithms used in Windows and MacOS. X's
method can be summarised as follows:

1. When the mouse is moving slowly, no scaling is applied.
2. Once the mouse moves faster than a certain (user-defined) speed threshold,
a constant (user-defined) scaling is applied.

Why is this method sub-standard? Let me give a few reasons:

1. The user has no control over the scaling which is applied below the
threshold (when the mouse is moving slowly).
2. The scaling above the threshold works very crudely; the pointer 'jumping' a
certain number of pixels for every mouse increment.
3. If the scaling above the threshold is anything except 1:1, there is a
discontinuity in the mapping between mouse velocity and pointer velocity.
(Imagine a graph which starts off as (y = x) and then jumps to (y = 2x) at the
threshold point.)
4. If the scaling above the threshold is set low, the user can find themselves
in a bizarre situation where moving the mouse faster (across the threshold)
makes the pointer move slower.

In other words, the mouse acceleration does not succeed in its goal, which is
to give the user a smooth and intuitive method of navigating the whole screen
easily whilst maintaining precision at the pixel level.

Why does this affect GNOME? Because no matter how good GNOME gets in terms of
usability, it will always be hindered by X's bad mouse acceleration, unless
something is done. Improvements based on Fitt's Law will be lost on users with
high-res displays who cannot reach the edge of the screen quickly. Users
migrating from other OSes will wonder why the mouse feels sluggish. If GNOME
is interested in the whole user experience and wants to see Linux succeed on
the desktop, it must be concerned about mouse acceleration.

I am posting here as opposed to the XFree86 lists because I much admire
GNOME's efforts to improve the desktop, and I sense that you are far more
receptive to UI issues than are the XFree86 developers (who have to worry
about supporting the latest video cards and things like that).

What can be done? I see two possibilities:

1. Using any influence that GNOME has at its disposal, convince the
maintainers of X of the importance of good mouse acceleration, and get them to
implement it.
(It's not rocket science: see
http://www.microsoft.com/whdc/hwdev/tech/input/pointer-bal.mspx for a
description of how it's done in WinXP)

2. Do the acceleration directly on the raw device data and write it back out
to a fifo for X to read.
(This has already been implemented; see http://www.apia.dhs.org/software/macc/ )

My dream is to see decent mouse acceleration included by default in the major
Linux distros, so that everyone might get the full benefit from their desktop.

Please let me know what your thoughts are on this issue, and the best way to
proceed.

Many thanks,

Jonathan Vaughan





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]