How to Configure Mouse Drivers in Windows 3.11

Proper cursor movement in Microsoft Windows 3.11 required precise coordination between real-mode DOS drivers, Windows configuration files, and underlying hardware interrupts. Because Windows 3.11 operated as a 16-bit graphical environment on top of MS-DOS, getting a mouse to function smoothly involved establishing base hardware communication, specifying Windows-native display drivers in SYSTEM.INI, and tuning pointer ballistics in WIN.INI.

The Dual-Layer Driver Requirement

Windows 3.11 relied on a two-tier driver model for pointer devices:

  1. DOS-Level TSR Driver: Before launching Windows via the WIN command, a real-mode mouse driver had to be loaded in DOS. This was achieved by adding DEVICE=C:\DOS\MOUSE.SYS in CONFIG.SYS or executing MOUSE.COM inside AUTOEXEC.BAT. While the Windows GUI used its own internal driver, the DOS TSR (Terminate and Stay Resident) program was required for pointer functionality in full-screen or windowed MS-DOS prompts within Windows.
  2. Windows Protected-Mode Driver: Once Windows initialized, it took control of hardware communication using dedicated 16-bit drivers and 32-bit virtual device drivers (VxDs) defined in its initialization files.

Configuration of SYSTEM.INI

The primary file responsible for hardware device mapping in Windows 3.11 was SYSTEM.INI. To ensure correct cursor movement without freezing or erratic tracking, specific entries were required in two primary sections:

  • [boot] Section: Defines the core graphical driver for the pointing device.

    [boot]
    mouse.drv=mouse.drv

    (Third-party hardware frequently replaced standard mouse.drv with proprietary alternatives, such as Logitech's lmouse.drv or Microsoft's msmouse.drv.)

  • [386Enh] Section: Defines the Virtual Mouse Driver (VxD) that handled hardware interrupts and arbitration between DOS sessions and the Windows environment.

    [386Enh]
    mouse=*vmd

    If using proprietary drivers, this entry pointed to an external .386 file, such as device=lvmd.386.

Port and Hardware Assignments

Proper tracking required accurate detection of the interface type—Serial, PS/2, or Bus mouse:

  • Serial Mice: Connected to COM1 or COM2 ports. The COM port had to use standard hardware resources (COM1: IRQ 4, Address 03F8h; COM2: IRQ 3, Address 02F8h). Sharing IRQs with other serial peripherals, such as modems on COM3 or COM4, caused severe pointer lag, stuttering, or permanent freezing upon cursor movement.
  • PS/2 Mice: Required dedicated IRQ 12 support provided by the system motherboard and an auxiliary port controller. In Windows 3.11, the Windows Setup utility (SETUP.EXE executed from DOS or within Windows) had to explicitly select "Microsoft, or PS/2" as the mouse type.

Sensitivity and Ballistics in WIN.INI

Cursor acceleration curves and sensitivity thresholds were governed by the [windows] section of WIN.INI. While often configured via the Windows Control Panel, manual edits were frequently used to eliminate sluggish or oversensitive tracking:

[windows]
MouseSpeed=1
MouseThreshold1=4
MouseThreshold2=12
  • MouseSpeed: Set the acceleration multiplier (0 = no acceleration, 1 = single acceleration threshold, 2 = dual acceleration threshold).
  • MouseThreshold1: The number of pixels the mouse needed to move in a single polling interval before the cursor speed doubled.
  • MouseThreshold2: The number of pixels required before the cursor speed quadrupled (only applied when MouseSpeed was set to 2).