Windows 95 Mouse Speed and Acceleration Explained
Windows 95 introduced a standardized, user-friendly approach to mouse configuration, moving input management away from disparate MS-DOS configuration files into a centralized graphical interface. This article explains how the operating system processed mouse movement, detailing the Control Panel interface, the underlying threshold-based acceleration mechanics, the Windows Registry keys involved, and the transition to protected-mode drivers.
The Mouse Properties Interface
Users adjusted pointer behavior through the Mouse Properties applet,
accessible via the Control Panel or by executing main.cpl.
The "Motion" tab contained two primary settings:
- Pointer Speed: A slider that adjusted the baseline sensitivity of the mouse.
- Pointer Acceleration: A set of radio buttons allowing users to select between "None," "Slow," "Medium," and "Fast."
The Threshold-Based Acceleration Mechanism
Unlike modern operating systems that often use continuous dynamic curves for pointer precision, Windows 95 utilized a distinct threshold-based multiplier system. This method checked how many physical units (mickeys) the mouse moved during a single interrupt interval.
The calculation relied on three core parameters:
- MouseSpeed (0, 1, or 2): Defined the maximum multiplier level permitted.
- MouseThreshold1: The primary movement threshold.
- MouseThreshold2: The secondary movement threshold.
When acceleration was active, the operating system calculated movement using the following logic:
- Level 0 (None): The cursor moved linearly relative to the physical mouse movement. No acceleration was applied.
- Level 1 (Slow/Medium): If the mouse moved further
than the value defined by
MouseThreshold1in a single tick, the reported distance beyond that threshold was doubled. - Level 2 (Fast): If the movement exceeded
MouseThreshold1, the distance was doubled. If the movement exceeded the higherMouseThreshold2, the movement was quadrupled.
This stepped approach allowed users to make precise, pixel-by-pixel movements when moving the mouse slowly, while allowing the cursor to travel across the entire screen quickly when flicking the device rapidly.
Registry Configuration and APIs
These settings were stored in the user-specific section of the Windows Registry at:
HKEY_CURRENT_USER\Control Panel\Mouse
The system read and wrote values to three specific string values:
MouseSpeedMouseThreshold1MouseThreshold2
Software and games could read or modify these values programmatically
using the Win32 API function SystemParametersInfo with the
action flags SPI_GETMOUSE and SPI_SETMOUSE.
When changes were made, the system broadcast the
WM_SETTINGCHANGE message to notify running applications of
the update.
Driver Architecture
Windows 95 replaced real-mode DOS drivers (such as
MOUSE.COM and MOUSE.SYS) with protected-mode
Virtual Device Drivers (VxDs), primarily VMOUSE.VXD. This
driver handled communication with physical PS/2, serial, or bus mouse
hardware without dropping into real mode, improving system stability and
responsiveness. The Windows 95 USER subsystem applied the
sensitivity and acceleration formulas directly to the coordinates
delivered by the driver before rendering the cursor position on the
screen.