First of all, here's the userland question: Disabling mouse acceleration in Mac OS X @ superuser
To summarize: I want to have linear mouse response on Mac OS X. That is, no acceleration; an adjustable but constant pixels pointer moves / meters mouse moved
ratio.
I have no idea how to go about this. (Well, not true, but it's better to start from scratch.) Should I write a mouse driver? A startup program? A click-and-forget settings adjuster? A preferences pane?
I want my solution to be as simple, universal and unintrusive as possible, so some criteria might be:
I'm a fairly experienced C programmer, both in user and kernel space (in Linux and Windows), but know next to nothing about Mac OS X or Darwin. So anything is appreciated, really ("can't distribute drivers without certificate from Apple") but some documentation/reference would get me a long way ("Darwin's Next Generation Mouse Curve Editing API and Examples").
I know the question is a bit open but I don't even know what kind of a solution could work. Thanks in advance.
Edit: Although I've asked both questions to solve the same problem, this is the programmatical counterpart to the other one. (See the first sentence of this question.) Here I'm trying to create my own solution, so to speak, using - I don't know - some HID API? A driver? A solution on the lines of "open current user's prefs file and change this setting to this" should probably be posted on the other question, but note that such a solution probably doesn't exist.
A lot of my reputation on StackOverflow has come from people voting up this answer, which I wrote way back before I realised that there are several stack exchange websites and that StackOverflow is for programming questions and answers only. Therefore the question above is about how to tackle this if you want to code your own mouse drivers. For all other discussion, go have it here on the superuser site where it belongs.
Original answer follows.
There's a hidden preference that you can change from the Terminal. To read its current value type
defaults read .GlobalPreferences com.apple.mouse.scaling
at the Terminal prompt. Normal values are 0 ~ 3, which can be set by moving the 'Tracking Speed' slider in the Mouse pane of System Preferences. Values of 0 ~ 3 won't disable acceleration, therefore.
However, if you set it to -1 by typing
defaults write .GlobalPreferences com.apple.mouse.scaling -1
in the Terminal, that seems to disable acceleration and set the mouse tracking speed to some constant predefined value which you can't change.
I found I had to log out and back in again for it to take effect. After that, the pixels pointer moves / meters mouse moved
ratio is constant but unfortunately not adjustable.
To revert back to Apple default settings, just open the Mouse pane of System Preferences and change the Tracking Speed to anything, then quit System Preferences.
Mac OS X stores mouse and trackpad settings independently. If you want to disable acceleration on a trackpad instead of a mouse, the instructions are the same, just replace with com.apple.trackpad.scaling
wherever you see com.apple.mouse.scaling
in the above (and use the Trackpad pane of System Preferences instead of the Mouse pane, obviously).
I won't cite a source, since this tip is available in many places on the web. I tried it in OS 10.7 Lion, but many of the sources claim to be using 10.6 Snow Leopard.