Apple IIgs #85
Moving the Mouse

Written by Matt Deatherage (July 1990)

This Technical Note discusses moving the cursor on the screen without touching the mouse.

It is sometimes desirable to programmatically move the QuickDraw II cursor on the screen without requiring the user to touch the mouse. This can be effective, for example, in tutorial software that actually shows mouse actions such as pulling down menus and dragging windows.

There is not an easy or obvious way to do this in the toolbox. This is not a bad thing; it prevents overzealous programmers from zapping the mouse all over the screen for suspicious reasons. You must remember that the mouse belongs to the user, not to the application. If the user has put the mouse somewhere, it should only be a user's action that causes the cursor to move elsewhere. Most of the time that action is touching the mouse and physically moving it. Do not move the mouse except in response to a user-initiated command.

The most obvious way to move the mouse position -- calling PosMouse with the new mouse position -- is not sufficient; PosMouse does not update the current mouse position. When the mouse is next moved, a mouse interrupt comes through and the new deltas are added to the old mouse position, resulting in correct ReadMouse results after the mouse has been physically moved. Also, PosMouse does not update the cursor on the screen.

Faking Out the System

When you wish to move the mouse yourself, you are in effect replacing (or adding to) the standard mouse with a small programmatic mouse substitute -- your code. This qualifies as a "device" and can be considered an Event Manager "device driver." You can then make the appropriate Event Manager call, FakeMouse. When calling FakeMouse, you supply all the mouse information yourself, allowing you to move the mouse, simulate button presses, and in general replace the mouse.

Further Reference

This and all of the other Apple II Technical Notes have been converted to HTML by Aaron Heiss as a public service to the Apple II community, with permission by Apple Computer, Inc. Any and all trademarks, registered and otherwise, are properties of their owners.