Hello,
I have written a filter driver for Windows 2000 and above to extend generic mouse functionality.
Currently, it features the following options:
- Button assignments
- Wheel assignments
- Mouse sensitivity
- Mouse acceleration
- Mouse smoothing
- Wheel sensitivity
- Wheel acceleration
- Alternative mouse settings
The driver is not feature-complete and the existing ones may be subject to change.
It does not include any configuration wizard, so usability is very poor.
Although I expect it to be stable, I did not perform extensive testing prior to release, so it should be regarded as a beta version.
The 64-bit build has not been tested at all.
The INF file does only support HID-compliant mouse devices at the moment.
Installation0. If running Windows Vista "x64", enable test signing:
Enabling Test Signing1. Download the attached archive and extract its content to a local directory.
2. Open Device Manager and update the mouse device(s) you want to install the driver for.
(http://img222.imageshack.us/img222/7540/01le3.th.png)3. Do not let Windows search for a new driver, but choose the aforementioned directory instead.
(http://img222.imageshack.us/img222/3086/02wy0.th.png)4. If you have an
SSE2-capable PC, you may choose an optimized build.
(http://img222.imageshack.us/img222/6796/03kk1.th.png)The 64-bit build already uses SSE2 instructions.
5. Let the installation complete by confirming a possible warning message.
The driver should now be installed and the mouse should not feel any different.
Open Registry Editor and navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\moudrv\Parametersto adjust the settings to your likings.
(http://img222.imageshack.us/img222/6449/04bg0.th.png)Thanks to the following website, manually entering hexadecimal representations of floating-point values is not as difficult as it seems:
IEEE-754 Floating-Point Conversion(http://img222.imageshack.us/img222/8448/05fi8.th.png)ConfigurationSee
public.h for definitions.
Button & Wheel AssignmentsAssignmentButton1Down
AssignmentButton1Up
AssignmentButton2Down
AssignmentButton2Up
AssignmentButton3Down
AssignmentButton3Up
AssignmentButton4Down
AssignmentButton4Up
AssignmentButton5Down
AssignmentButton5Up
AssignmentWheelDown
AssignmentWheelUp
AssignmentWheelLeft
AssignmentWheelRight
Bit fields of bit flags of
VALID_ASSIGNMENTS_BUTTON (buttons) and
VALID_ASSIGNMENTS_WHEEL (wheel). Combinations are possible.
Support for horizontal (or tilt) wheel requires Windows Vista or above.
The driver does not support more than five buttons, because Windows does not support more than five buttons. Additional buttons are device-specific.
Mouse SensitivityMouseSensitivityX
MouseSensitivityY
Simple multiplication.
Default: 1.0
Allowed range: (> -Infinity) - (< +Infinity)
Mouse AccelerationMouseAccelerationX
MouseAccelerationY
Quake 3's method, but mouse speed is calculated after sensitivities have been applied.
Default: 0.0 (off)
Allowed range: (> -Infinity) - (< +Infinity)
Mouse SmoothingMouseSmoothingMaximumX,
MouseSmoothingMaximumY,
MouseSmoothingSensitivityX,
MouseSmoothingSensitivityY
Auto-adaptive exponentially-weighted moving average.
Smoothing is proportional to mouse speed.
MouseSmoothingMaximum? controls maximum strength.
Default: 0.0 (off)
Allowed range: 0.0 - 100.0 (not recommended)
MouseSmoothingSensitivity? controls strength gain.
Default: 0.0 (off)
Allowed range: 0.0 - (< +Infinity)
Wheel SensitivityWheelSensitivityX
WheelSensitivityY
See
Mouse Sensitivity.
Wheel AccelerationWheelAccelerationX
WheelAccelerationY
See
Mouse Acceleration.
Alternative Mouse SettingsAltMouseSensitivityX
AltMouseSensitivityY
AltMouseAccelerationX
AltMouseAccelerationY
AltMouseSmoothingMaximumX
AltMouseSmoothingMaximumY
AltMouseSmoothingSensitivityX
AltMouseSmoothingSensitivityY
See resp. sections above.
To enable, disable or toggle alternative mouse settings, set
MOUSE_ALT_SETTINGS_ENABLE,
MOUSE_ALT_SETTINGS_DISABLE or
MOUSE_ALT_SETTINGS_TOGGLE assignments.
Known IssuesThe driver uses
KeQueryPerformanceCounter for time measurement.
Depending on architecture and operating system, it may return unreliable results (
KB274323,
KB895980,
KB896256,
KB909944).