SpeedMouse

So I bought a PowerBook 15", my first Mac. I must say I was impressed with the design and quality of this thing, both hardware and software. But I couldn’t use it properly solely because of the craaaaazy mouse acceleration. Even if you move the mouse as smoothly as you can it seems to judder and jump between faster and slower speeds! Once, not thinking, I lifted the mouse up to try and remove the ball to clean it, then I realised it was an optical mouse... So I decided to do something about it. There are a few other programs out there that try to fix this problem, but they don’t work, or at least they don’t do what I want.

SpeedMouse is a modified kernel extension (IOHIDFamily.kext) which removes the Mac OS X mouse acceleration altogether and replaces it with simple, scaled mouse motion. The tracking speed slider in the mouse preference pane now changes the scaling factor rather than the acceleration factor.

Requires: Mac OS X v10.4-10.4.5 (should work on both Intel & IBM)
It will run on future versions UNLESS Apple updates IOHIDFamily.kext, in which case the software update will overwrite this. If that happens you'll have to wait for me to release a new version based on Apple's new version. It works on my USB mouse and PowerBook trackpad. I assume it will work on Bluetooth and other mice; let me know if it doesn't.

There is a readme file included in the download. It would be a good idea to read it. It includes install instructions amongst other useful things. Warning, warning: Don’t just drag / move / copy the kext to your Extensions folder. If you do it will mess up the file ownership and your system will not boot! Use the install script provided.

Download
Download (480KB)

At the moment there is no mouse acceleration at all. I plan to implement some decent acceleration (not like Apple’s) sometime since it’s useful if you need to traverse the screen fast and also do pixel-accurate work such as drawing. The scaled pointer motion is good for normal use though. For games there will probably be an improvement if the game doesn’t already turn off mouse acceleration. If your game does turn it off it should behave just as before.

For those who are interested you can turn off mouse acceleration from an application with the original driver by calling the driver API IOHIDSetMouseAcceleration (handle, -1.0) but you can only have one speed – slooow. The actual changes made to IOHIDFamily.kext for SpeedMouse is nothing more than about 5 lines of code added and about 5 lines removed.