View Full Version : Bind extra buttons as non-keyboard keys, on Logitech mice, for gaming.

09-14-03, 03:17 AM
How to bind non-keyboard keys to Logitech mouse buttons. This method was implemented on the Logitech MX700, but should work with other Logitech mice. The objective is to make use of all those extra buttons, without causing conflicts between games. This method works with MouseWare version 9.78. Hopefully the steps below are easy and accurate enough to follow for most users.

1) First use MouseWare to bind a keypress.

a) Find Mouse Properties at: Start->ControlPanel->Mouse.
Select the 'Buttons' tab.
Select your mouse button under 'Button Assignments'.
Click the 'Modify' button.
b) In the drop down box under 'Select the function you want for your device button' chose 'KeyStroke'.
c) In the 'Keystroke Assignment' section, press a key to bind it.

I typically bind like this:

'button 4' (default is 'cruise up') -> bind to F3 -> edit reg to F13.
'button 5' (default is 'cruise down') -> bind to F4 -> edit reg to F14.
'button 8' (default is 'quick switch') -> bind to F5 -> edit reg to F15.

Note that advanced users may want to skip the intermediate bindings via the Mouse Properties, but I find them helpful to easily tell which buttons and registry entries are which.

2) Edit the registry and modify the key bindings for non-keyboard keys.

a) Locate this key:
HKEY_CURRENT_USER\Software\Logitech\MouseWare\Curr entVersion
\**eg 'Cordless Optical 6'**\0001
\Assignments\**eg. 'EightMouseShortClick'**\Keystroke

NOTE: You will have different, or similar values for my examples in that registry key.

Button 'EightMouseShortClick' in Registry is 'button 7' in Mouse Properties.
Button 'SeventhMouseShortClick' in Registry is 'button 4' in Mouse Properties.
Button 'SixthMouseShortClick' in Registry is 'button 8' in Mouse Properties.

(Side joke: With wacky naming consistency like that, you begin to understand logitech driver development issues.)

b) Now, for each of these value entries, modify like this:

For example, to change F3 to F13:
DisplayName data changes from 'F3' to 'F13'.
LParam data changes from '61' to '100'.
VirtualKey data changes from '114' to '124'.

Here are some example values:

DisplayName (For MouseWare) = F13,F14,F15
LParam (For DirectX) = 100,101,102
VirtualKey (For Win32) = 124,125,126

NOTE: These 'DirectX' and 'Win32' key values came from the Windows and DirectX programming SDKs.
For DirectX, you would find them in eg. *YOUR DIRECTX SDK*\Include\dinput.h
For Win32, you would find them in eg. *YOUR DEV STUDIO FOLDER SOMEWHERE*\Include\WinUser.h
You will have to convert Hex to Decimal for the numbers.
If you are not a programmer, or don't have access to these files, request specific key IDs in an appropriate forum, or 'google' for them. Someone will help.

Conclusion: No more stupid binding 'CTRL' and other useful keys that will cause conflict between games! I have successfully tested this method to bind the extra 3 buttons on my Logitech MX700, and used them in 'Unreal Tournament 2003' and 'Americas Army'. They should work for many games, but not all. The games must allow the entry of keystrokes (at that point, you press your mouse button), and must support keys not present on normal keyboards. I have found the F13 to F15 keys work well, but there are other keys including those found on foreign (non English, U.S.) keyboards that would work.


The Baron
09-14-03, 11:16 AM
Oh Snap... that solves THAT.

Good job, Chief.