Skip to content

Lab 4 Context: Why Pointing Devices Matter

The mouse changed personal computing because it made direct manipulation practical. Windows, menus, drawing tools, games, graphical editors, and desktop-style file managers all depend on continuous pointing input.

At the controller level, a mouse is a stream of packets. The packet format is small, but it contains several ideas that recur in protocols: synchronization bits, signed movement fields, button state, overflow flags, and explicit enable/disable commands. Unlike a keyboard scancode, a mouse packet also describes movement. The program must decide how relative deltas affect a cursor, camera, selection box, or game object.

From Keyboard To Mouse

The mouse still goes through the i8042-style controller in this lab, but the data model is richer than keyboard scancodes. A keyboard event can be one or two bytes. A mouse event is usually a packet whose bytes are meaningful only as a group.

This makes Lab 4 a bridge between input and graphics. You are not required to draw a full pointer UI yet, but the parser you write should be good enough for a final project to build one. Keep the low-level packet decoder independent from screen coordinates so that later applications can choose their own coordinate system, sensitivity, and clipping behavior.

Course/docs licensed CC BY 4.0. Code licensed MIT.