OS X 10.4.11 - Mouse Acceleration

550 views
Skip to first unread message

james_L

unread,
Apr 12, 2008, 5:30:45 AM4/12/08
to alphagrip
I got one of the new AG5's with hardware mouse acceleration a couple
of weeks ago, and was somewhat dissappointed with the trackpad despite
the new firmware. However, a few days later, when I plugged it into a
Windows XP machine, I found that it worked beautifully. With the right
adjustments, you can enjoy comfotable computing even on a Mac!

The culprit is OS X's mouse acceleration (in 10.4 at least). People
have been moaning about it for at least two years. During that time,
the simplest way of changing it, a call to NXSetMouseScaling, has been
deprecated. In 10.4.11, this function is just a stub. So the only
parameter you can directly tweak is the mouse speed, either by way of
the mouse configuration dialog (which only goes up to a setting of
1.7), or MouseZoom (which goes to 10), or a direct call to
IOHIDSetMouseAcceleration.

This single parameter is used to set the mouse speed and acceleration,
by choosing from a list of acceleration curves provided by the mouse
driver. Thus, if you wish to remove the extremely abrupt acceleration,
short of changing the curve in the driver, you can only set the speed
to '0'. This will give an unaccelerated mouse, which will also be
unusably slow. Alternately, increasing the acceleration can make the
abruptness of the curve less noticeable in normal use. This solution
is acceptable, but you don't have to settle for just good enough.

It seems like the mouse acceleration curves can be specified in the
Info.plist of the responsible drivers. For instance, /System/Library/
Extensions/AppleHIDMouse.kext seems to be the driver responsible for
the mouse that came with my iMac. The key HIDPointerAccelerationTable
under the IOKitPersonalities entries appears to control the
acceleration curves. I tried inserting accel curves from Microsoft's
drivers into my mouses' entry, but didn't have any joy (it may or may
not have worked, I couldn't tell).

After some frustration, I hit on a way to get smooth pointing from my
AlphaGrip, and also control its speed independently of my iMac mouse.
The answer was to download the Microsoft Intellipoint driver. To get
it, goto http://www.microsoft.com/hardware/mouseandkeyboard/download.mspx,
select 'Mouse', 'Wireless Optical Mouse', 'Mac OS X', and 'English',
then finish the download and installation.

After the reboot, navigate to /System/Library/Extensions/
MicrosoftMouse.kext/Contents/PlugIns/MicrosoftMouseUSB.kext/Contents.
You will now have to edit the Info.plist there, to add your alphagrip
to the recognised devices. First change the ownership of the folder so
you can save in it, then change the ownership of the file so you can
edit it. Open it in TextEdit. Find the section containing mouse
profiles (after <key>IOKitPersonalities</key> <dict>), which look like
this:

<key>Alphagrip Custom</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.microsoft.driver.MicrosoftMouseUSB</string>
<key>HIDPointerAccelerationTable</key>
<data>
AACAAFVTQioABwAAAAAAAQABAAAAAQAAAAAgAAAQAABxOwAATOMA
BE7FAA03BAAFRAAAFIAAAAcsAAAj4AAACQAAADSwAAAK2AAARfAA
AA0IAABXkAAAD2AAAGkAAAASEAAAeoAAABUAAACJAAAAF8AAAJEA
AAAawAAAlrAAAB2QAACZsAAAIKAAAJswAAAj8AAAnDAAACewAACc
MAAAAIAAABIAAHE7AABWfwAESgAADqAAAAY6AAAfQAAABygAACkA
AAAI2AAAPGAAAAm4AABHQAAACrAAAFMwAAALwAAAYDAAAAzAAABs
IAAADuAAAIQgAAARYAAAnSAAABQAAAC0AAAAFsAAAMcAAAAZoAAA
1AAAABzgAADbAAAAIIAAAOAAAAAkQAAA4wAAACegAADjAAAAALAA
ABQAAHE7AABhTgAESgAAD2AAAAUyAAAXYAAABjIAACCgAAAHLAAA
LCAAAAgIAAA3oAAACOQAAENAAAAJwAAAUIAAAAqgAABfIgAAC5AA
AG1wAAAMcAAAewAAAA6AAACYoAAAEMAAALYAAAATQAAA0gAAABZg
AADpAAAAGiAAAPoAAAAdoAABAwAAACEgAAEHAAAAJIAAAQoAAAAn
oAABDAAAAADgAAARAABxOwAAbXcABBoAABHwAAAFGgAAG/AAAAXw
AAAmYAAABvwAADQAAAAITAAAT+AAAAlsAABt4AAACngAAI3AAAAL
sAAAtkAAAA1QAADZgAAAEQAAAPeAAAAVwAABEQAAABlgAAEgAAAA
HUAAASgAAAAhAAABLgAAACSAAAEyAAAAJ4AAATUAAAAAUAAAEgAA
cTsAAEuwAARMAAAOAAAABUAAABVQAAAHJAAAJiAAAAi0AAA1wAAA
CpAAAEmAAAAL6AAAVoAAAA0gAABiAAAADhgAAGrQAAAPGAAAdAAA
ABGQAACHgAAAFFAAAJoAAAAXYAAAqYAAABpgAAC0AAAAHVAAALkA
AAAg0AAAvIAAACQgAAC9gAAAJ7AAAL6AAAABAAAAEAAAcTsAAFZ/
AAO4AAASoAAABSAAACVAAAAGCAAAN4AAAAbwAABfAAAAB/AAAIoA
AAAJKAAAyyAAAArwAAD3gAAADSAAARyAAAAQAAABOAAAABRAAAFK
AAAAGQAAAVMAAAAc0AABVwAAACDgAAFbgAAAJCAAAV2AAAAnoAAB
XgAAAFJwAAAJlNEAWTAAAAoSaQBf8AAACpAAAGawAAAA4AAAHAAB
GFUAATAAAAGyKAAC8AAAAlNpAAagAAADb0oAENAAAAOteAAUWAAA
A+ulABfgAAAEKdMAG2gAAARoAAAe8AAABKIBACKYAAAE2VYAJiAA
AAUUqwApaAAABVAAACywAAAFgAEAMcgAAAW1VgA2QAAABeqrADq4
AAAGIAAAPzAAAAZiAABD3AAABp6rAEh4AAAG21YATRQAAAcYAABR
sAAAB3oBAFbcAAAH2VYAW/gAAAg4qwBhFAAACJgAAGYwAAAJFgEA
bAAAAAmRVgBx0AAACgyrAHegAAAKiAAAfXAAAAEAAAATAAEYVQAB
MAAAAbIoAAMQAAACU2kABxAAAAMvSgARgAAAA6z7AByIAAAEOqsA
KOAAAASBVgAwiAAABMgAADgwAAAFDVYAQJgAAAVQAABI8AAABcar
AFKwAAAGOAAAXHAAAAbxVgBnwAAAB0yrAG1YAAAHqAAAcvAAAAhM
AAB5BAAACPAAAH8YAAAJlAAAhSwAAAo4AACLQAA=
</data>
<key>IOClass</key>
<string>MicrosoftMouseUSB</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
<key>bConfigurationValue</key>
<integer>1</integer>
<key>bInterfaceNumber</key>
<integer>1</integer>
<key>idProduct</key>
<integer>4107</integer>
<key>idVendor</key>
<integer>1296</integer>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>2</integer>
<key>bInterfaceSubClass</key>
<integer>1</integer>
</dict>

Add the above entry. It has the idProduct and idVendor that my grip
shipped with (the previous batch may have had different idProduct`s),
as well as interface and configuration numbers that identify the mouse
portion of the device. You now need to save the file, and change the
permissions back.

After this is done, the operating system must rebuild its Extensions
cache. To cause this to happen, you must open a Terminal, and:

sudo touch /System/Library/Extensions

and then reboot. If all goes well, your alphagrip's mouse is now
governed by the Microsoft Mouse panel in the preferences dialog.
There, you can set the pointer speed to be independant of the system
pointer speed, and nice and smooth. Whew! As an added bonus, you can
set the vertical scroll speed too. If you are unhappy with your work,
or break something, just remove or reinstall the Microsoft driver.


james

james_L

unread,
Apr 12, 2008, 5:34:59 AM4/12/08
to alphagrip
Just noticed that I missed a tab in the code listing.
<key>Alphagrip Custom</key> should be indented the same as the <dict>
on the following line.

Not sure if .plist files are sensitive to incorrect indentation or
not, so beware.

Peter

unread,
Apr 15, 2008, 10:47:45 AM4/15/08
to alphagrip
Great tip! Worked great for me.

Avram

unread,
Apr 15, 2008, 12:02:45 PM4/15/08
to alphagrip
Nice idea! It also lets you control the mouse buttons, so it's
possible to generate a shift- or command-click.
Plist files are just a type of XML, so whitespace doesn't matter.
Opening and saving with Property List Editor (part of Apple's Dev
Tools) will set it to the 'proper' formatting, if you're picky about
it.
Reply all
Reply to author
Forward
0 new messages