Since the mouse is used only infrequently, it can easily be misplaced, especially in the case of a wireless mouse (which will often be found with a dead battery as well). As such, in the rare case when it is needed, a user will be forced to retrieve the mouse from under the desk or in the fridge or wherever it has gone. The ability to handle any situation completely from the keyboard would free the user from the periodic need to locate the mouse, and thus produce a greater sense of peace and happiness.
A number of hardware solutions have been devised to this common problem, as will be revealed if one searches for "keyboard with trackball". However, since hardware cannot be downloaded for free, a software solution could be desirable. Because Windows users encounter this problem so frequently, they would be best served by an embedded mouse control device. BSD users of all stripes would prefer to code their own solution to the problem, and would not appreciate a downloadable kernel module. As such, ignoring the tiny proportion of mac users, our only market will be Linux.
For Project 4, create a kernel module that will allow the keyboard to be used to control the mouse, by moving it with the arrow keys and clicking using the pause button. Specifically:
Register a keyboard notifier, as for project 3, and look for presses of the arrow keys (feel free to ignore the arrows on the numpad which depend on numlock, and just use the plain arrows). Also look for the pause key.
When the arrow keys are pressed, report relative movement in the direction corresponding with the arrow key.
When the pause button is clicked, report a left mouse click. Click and drag can be implemented by reporting only a "down" press when the key is pressed down, and an "up" with the key is released.
Note for laptop users: Feel free to substitute any keys you want for pause and/or arrows.