PDA

View Full Version : Microsoft Mouse driver for non-MS mice


milanca
06-03-2009, 04:34 PM
I was looking for more windows/linux like mouse movement under OSX and the closest solution i came up with was Microsoft Intelli mouse(explorer) with Microsoft IntelliPoint driver. I have Logitech MX400 Laser mouse and Logitech VX nano cordless. Logitech software allows me to map the buttons but the acceleration curve is still in OSX fashion. IntelliPoint driver completely replaces it with its own acceleration curve and the mouse movement is more in Windows-like manner.

Searching the net i found this post explaining how to use MS driver (IntelliPoint software can be downloaded from MS site) with non-MS mice.

http://groups.google.com/group/alphagrip/browse_thread/thread/4174e7cf5ed909aa?pli=1

I have tested it with VX nano cordless mouse and A4Tech X7 mouse. I started to love my Hack again. Here is also a quick howto, with some more details, based on the original link, if you would like to use this driver for your mouse.

Open SystemProfiler, navigate to USB section:

http://milanca.infinitemac.com/images/mouse/system_profiler.jpg

My A4Tech mouse has product id: 0x000e and vendor id:0x09da. You can use osx calculator (apple+3 to switch) to convert hex to dec values. Converted product id is 14 and vendor id is 2522.

Install Microsoft IntelliPoint software (can be downloaded from MS site) and after restart navigate to:

/System/Library/Extensions/MicrosoftMouse.kext/Contents/Plugins/MicrosoftMouseUSB.kext/

If you open Package Contents you'll have Info.plist here which you can edit with PlistEditor, TextMate, etc.

Add this section before first <key>:

<key>A4Tech</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.microsoft.driver.MicrosoftMouseUSB</string>
<key>HIDPointerAccelerationTable</key>
<data>
AACAAFVTQioABwAAAAAAAQABAAAAAQAAAAAgAAAQAABxOwAATO MA
BE7FAA03BAAFRAAAFIAAAAcsAAAj4AAACQAAADSwAAAK2AAARf AA
AA0IAABXkAAAD2AAAGkAAAASEAAAeoAAABUAAACJAAAAF8AAAJ EA
AAAawAAAlrAAAB2QAACZsAAAIKAAAJswAAAj8AAAnDAAACewAA Cc
MAAAAIAAABIAAHE7AABWfwAESgAADqAAAAY6AAAfQAAABygAAC kA
AAAI2AAAPGAAAAm4AABHQAAACrAAAFMwAAALwAAAYDAAAAzAAA Bs
IAAADuAAAIQgAAARYAAAnSAAABQAAAC0AAAAFsAAAMcAAAAZoA AA
1AAAABzgAADbAAAAIIAAAOAAAAAkQAAA4wAAACegAADjAAAAAL AA
ABQAAHE7AABhTgAESgAAD2AAAAUyAAAXYAAABjIAACCgAAAHLA AA
LCAAAAgIAAA3oAAACOQAAENAAAAJwAAAUIAAAAqgAABfIgAAC5 AA
AG1wAAAMcAAAewAAAA6AAACYoAAAEMAAALYAAAATQAAA0gAAAB Zg
AADpAAAAGiAAAPoAAAAdoAABAwAAACEgAAEHAAAAJIAAAQoAAA An
oAABDAAAAADgAAARAABxOwAAbXcABBoAABHwAAAFGgAAG/AAAAXw
AAAmYAAABvwAADQAAAAITAAAT+AAAAlsAABt4AAACngAAI3AAA AL
sAAAtkAAAA1QAADZgAAAEQAAAPeAAAAVwAABEQAAABlgAAEgAA AA
HUAAASgAAAAhAAABLgAAACSAAAEyAAAAJ4AAATUAAAAAUAAAEg AA
cTsAAEuwAARMAAAOAAAABUAAABVQAAAHJAAAJiAAAAi0AAA1wA AA
CpAAAEmAAAAL6AAAVoAAAA0gAABiAAAADhgAAGrQAAAPGAAAdA AA
ABGQAACHgAAAFFAAAJoAAAAXYAAAqYAAABpgAAC0AAAAHVAAAL kA
AAAg0AAAvIAAACQgAAC9gAAAJ7AAAL6AAAABAAAAEAAAcTsAAF Z/
AAO4AAASoAAABSAAACVAAAAGCAAAN4AAAAbwAABfAAAAB/AAAIoA
AAAJKAAAyyAAAArwAAD3gAAADSAAARyAAAAQAAABOAAAABRAAA FK
AAAAGQAAAVMAAAAc0AABVwAAACDgAAFbgAAAJCAAAV2AAAAnoA AB
XgAAAFJwAAAJlNEAWTAAAAoSaQBf8AAACpAAAGawAAAA4AAAHA AB
GFUAATAAAAGyKAAC8AAAAlNpAAagAAADb0oAENAAAAOteAAUWA AA
A+ulABfgAAAEKdMAG2gAAARoAAAe8AAABKIBACKYAAAE2VYAJi AA
AAUUqwApaAAABVAAACywAAAFgAEAMcgAAAW1VgA2QAAABeqrAD q4
AAAGIAAAPzAAAAZiAABD3AAABp6rAEh4AAAG21YATRQAAAcYAA BR
sAAAB3oBAFbcAAAH2VYAW/gAAAg4qwBhFAAACJgAAGYwAAAJFgEA
bAAAAAmRVgBx0AAACgyrAHegAAAKiAAAfXAAAAEAAAATAAEYVQ AB
MAAAAbIoAAMQAAACU2kABxAAAAMvSgARgAAAA6z7AByIAAAEOq sA
KOAAAASBVgAwiAAABMgAADgwAAAFDVYAQJgAAAVQAABI8AAABc ar
AFKwAAAGOAAAXHAAAAbxVgBnwAAAB0yrAG1YAAAHqAAAcvAAAA hM
AAB5BAAACPAAAH8YAAAJlAAAhSwAAAo4AACLQAA=
</data>
<key>IOClass</key>
<string>MicrosoftMouseUSB</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
<key>bConfigurationValue</key>
<integer>1</integer>
<key>bInterfaceNumber</key>
<integer>0</integer>
<key>idProduct</key>
<integer>14</integer>
<key>idVendor</key>
<integer>2522</integer>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>2</integer>
<key>bInterfaceSubClass</key>
<integer>1</integer>
</dict>


Change key name and Product/Vendor ids with your converted values. If you use TextMate you can save the file at this point.
Launch terminal and become 'su' so we can fix permissions/ownership/extensions cache


sudo -s
cd /System/Library/Extensions
chmod -R 755 MicrosoftMouse.kext
chown -R root:wheel MicrosoftMouse.kext
cd ..
rm -rf Extensions.*
kextcache -k Extensions/
reboot


After restarting you can use this driver. In system preferences->microsoft mouse->pointer speed you can switch from OSX mouse tracking to IntelliPoint pointer speed and adjust it to your needs. Check if the driver is properly loaded by clicking on mouse pointer icon (top right corner next to the '?' icon). Under Mouse Info you should have something like this:

http://milanca.infinitemac.com/images/mouse/microsoft_mouse.jpg

Regards

elk
06-03-2009, 05:28 PM
Nice Idea and a very good tutorial.
But I have a question: Could I use this for trackpads (in my case a synaptic) too? I love OSX, but the cursor-acceleration is crap :)

Best regards,
elk

broker220981
09-25-2009, 02:25 AM
Tried that, still not the same.
Driver recognized my mouse, but it still feels wrong - like if mac driver is actually active, but Microsoft one sits on top of it and tries recalculate the movement.
I have windows machine on the same table with exact the same mouse. The difference feels especially when doing lots of short fast movements (shaking).

NghiaDev
12-16-2009, 09:02 AM
Well done! Really good guide!
I followed the instructions and everything works fine.
In my opinion the mouse and font rendering from Microsoft Windows are better than Mac OS X's way.
It's really difficult to control the mouse that doesn't move at the same speed ( Mac OS X )
Snow does not offer this option for users ( bad )

milanca
12-17-2009, 12:46 AM
@NghiaDev, thanks.

@broker220981, yes i guess you're right, mac os x native driver is still active in a way and MS driver is recalculating the movement in its way. Far from perfect solution but a bit better, or at least it seems to me.

What i wanted, and actually tried, is to re-compile IOHIDFamily back in 10.5.x. Mouse movement and accel. curve is there and the code is very old; I compared it with tiger's kext (part with mouse movement and acc.) and its the same one. I wanted to disable acceleration at all but the kext is missing zillion files to compile properly. So i gave up setting up its build environment. When i have some more free time i will try to set it up in Snow Leopard and try to patch it again. Just hope i won't give up that soon.

Symbiosis
09-15-2011, 03:29 PM
I have a MacBookPro with 10.7 Lion and Logitech mouse. Made all by tutorial, it is very simple... But Intellimouse does not recognise my mouse. Show: No microsoft mouse was found. Why it happens ? Please, Help me ! (((

Andru
09-16-2011, 11:38 PM
But Intellimouse does not recognise my mouse. Show: No microsoft mouse was found. Why it happens ? Please, Help me ! (((

Hi, Symbiosis. New versions of Microsoft drivers need to be a binary patch.
Navigate to MicrosoftMouse.kext/Contents/MacOS and open MicrosoftMouse file in any Hex Editor. Find the line 077D and replace it on your Product ID. Save and exit from the Hex Editor. Then go to MicrosoftMouse.kext/Contents/Plugins/MicrosoftMouseUSB.kext/Contents and open Info.plist. Find there <key>M077D</key> and change Product/Vendor IDs below.
Good luck. :)

NghiaDev
07-28-2012, 03:54 AM
@Andru: Thanks