Windows 3.11 Mouse Cursor Rendering Explained

In Microsoft Windows 3.11, the primary system component responsible for rendering mouse cursor movement on screen was the display driver (DISPLAY.DRV), working under the direction of the core USER.EXE subsystem. While mouse hardware signals were initially captured by a dedicated pointing device driver, the actual visual representation, movement updates, and pixel manipulation of the cursor fell strictly under the display driver's architecture.

The Role of the Display Driver (DISPLAY.DRV)

The display driver was the low-level graphics component in Windows 3.x directly interfaced with the video hardware. Because it controlled the frame buffer, it was the only system component equipped to draw, move, and erase the cursor image across video memory.

Depending on the user's video adapter, cursor rendering occurred in one of two ways:

  • Software Cursor Emulation: For basic adapters (such as standard VGA), the display driver drew the cursor manually using software routines. When the cursor moved, the driver saved the background pixels beneath the new location, applied an AND/XOR mask to draw the cursor icon, and restored the original background pixels at the previous location.
  • Hardware Cursor Acceleration: On advanced graphics accelerators common during the Windows 3.11 era (such as S3, Cirrus Logic, or Tseng Labs chipsets), the display driver utilized hardware cursor capabilities. In this mode, the driver loaded the cursor bitmap into dedicated hardware registers on the graphics card. Moving the cursor did not require redrawing background pixels; the driver simply updated the hardware coordinates, eliminating screen flicker.

Coordination with USER.EXE and MOUSE.DRV

The rendering process was part of a tightly coordinated pipeline among three key Windows 3.11 components:

  1. MOUSE.DRV: Detected the physical mouse movement via hardware interrupts (such as IRQ 12 for PS/2 mice or COM port interrupts for serial mice). It calculated relative coordinate shifts and signaled the operating system.
  2. USER.EXE: The user interface manager received the raw input coordinates from MOUSE.DRV. It tracked window boundaries, maintained clipping regions, determined the appropriate cursor shape (such as an arrow, hourglass, or text I-beam), and issued instructions to reposition the pointer.
  3. Display Driver Execution: USER.EXE invoked the display driver's cursor export functions (such as MoveCursor and SetCursor). The display driver then performed the actual drawing or hardware position update on the monitor.