Вожусь сейчас с поддержкой мышки для ОС ASPekt, она там просто АХТУНГОВАЯ! Драйвер MS.PRC. Впрочем, встречал я и другие драйвера, но в этой системе такой.
Ахтунги начинаются с самого начала.
При определении, есть мышь или нету, драйвер опрашивает датчик перемещения по X, и если он дает число 8 (т.е. мышь в горизонтальном направлении не движется), то мышка присутствует. Таким образом, если вы елозите мышкой в момент загрузки ASPekt, то мыши вы лишаетесь до перезагрузки системы.

Но самый большой ахтунг в интерпретации данных перемещения мыши. Данная мышь имеет два регистра, перемещение по X (-8..7), и перемещение по Y (-8..7). Причем, эти числа не линейное перемещение, логарифмическое! И не просто обычное логарифмическое, когда реальное перемещение равно X^(чего-то там), а степень зависит от СУММАРНОГО перемещения по двум осям. Т.е. образно можно сказать так, что перемещение по X=X^(X+Y), а по Y=Y^(X+Y).
Вот и попробуй в таких условиях напиши линейный драйвер мыши, чтобы она двигалась так же ровненько и хорошо, как виндовая.
Да, и еще один бонус - драйвер предполагает, что мышь не может сменить направление движения с + на - за один раз. Только через 0. А если не через 0, то он ПИЛЮЕТ на изменение знака, и продолжает считать, что она продолжает двигаться в предыдущем направлении.

---------- Post added at 02:58 ---------- Previous post was at 02:44 ----------

Точнее, формула будет такова:

rx = x * (2^((x + y) / 2))
ry = y * (2^((x + y) / 2))

Плохо в этой формуле то, что перемещение по осям сильно связано между собой, и чтобы вычислить приближение rx и ry к желаемой точкe перемщения (чтобы добиться линейности), придется решить неслабое такое уравнение.