Subject: Multi-level mouse acceleration, anyone?
To: None <current-users@netbsd.org>
From: Martijn van Buul <pino@dohd.org>
List: current-users
Date: 01/14/2006 08:53:33
Hello,

Am I correct in concluding that we currently don't support "modern" mouse
acceleration on a per-mouse basis? AFAIK, all we have is X11's mouse
acceleration, which suffers from two major flaws:

1) It's not a per-mouse setting, but applies to all mice
2) It has only one control point, which makes it jerky.

The reason I'm asking is that I recently recoverd a keyboard with built-in
trackball from the "about to be thrown away gadgets"-bin at work, and I'm
starting to like it. However, at the default acceleration settings (Which
I assume means "No acceleration"), the thing is a bit slow. Getting the mouse
cursor to the other side of the screen is tedious, so I need some kind of
acceleration.

X11's mouse acceleration offers only two parameters: a factor, and a threshold.
The basic idea is that you can have a higher acceleration factor, while still
being able to acchieve some level of precision. The problem is that this
scheme is very clunky, as the transition from "No acceleration" to "full
acceleration" is abrupt, effectively limiting the usable acceleration speed.
Under (excusez-moi le mot) Windows, mouse acceleration works by having
*several* control points (Quite possibly using a linear interpolation between
them, I'm not sure). This allows for a much easier and smoother mouse control,
while still being able to get a high acceleration.

However, there's a second issue with X11's acceleration, one which Windows
doesn't quite tackle either: All mice are considered equal. In addition to
my trackball, I also have a USB mouse connected. I only want to accelerate
the trackball, not the mouse - the mouse is speedy enough by itself. The
distiction between the two pointing device is lost by the time it reaches
X11 though, as our own wsmux takes care of combining mouse data.

Considering that I'm "in the market" for a small project, I'm playing with
the idea of teaching wsmouse about mouse acceleration - unless someone has
a better idea, of course. By having it in wsmouse, each individual pointing
device can have their own acceleration curve, and I don't think it needs
specific knowledge of the kind of mouse it's actually dealing with, so I don't
see any reason to implement it to the various mousedrivers. Yet, it needs to
sit below wsmux if we want control of individual mice.

Any suggestions?

-- 
    Martijn van Buul - pino@dohd.org - http://www.stack.nl/~martijnb/
	 Geek code: G--  - Visit OuterSpace: mud.stack.nl 3333
 The most exciting phrase to hear in science, the one that heralds new
discoveries, is not 'Eureka!' (I found it!) but 'That's funny ...' Isaac Asimov