josh@mit-vax.LCS.MIT.EDU (Joshua Marantz) (06/30/88)
Some interesting points have been brought up about the morality of warping the cursor. The problems with warping the cursor include: 1. Some pointing devices, such as tablets, report absolute position. Some of these tablets can be treated like mice because they report positional movement. With others, this won't work so well. 2. Principle of least astonishment: the user may not be expecting the mouse to be moved, and may be in the middle of another mouse operation when the software yanks the mouse out from under him and puts it somewhere. 3. Application software sometimes makes bad assumptions about what the user is doing. This was illustrated by the example on the Apollo DN computer where the user had a few icons for help files, and wanted to expand them all. But after he expanded each one, the computer would move the cursor to the last line in the help file. 4. The mouse must be moved within some physical constraint, such as an optical pad or a limited desktop. When the mouse is warped across the screen, the user may have to physically pick up the mouse and move it to the other edge of the desktop before he can usefully move the pointer 5. An application that moves the cursor may break the user's perception that he has control of it. 6. Several arguments about focus mangement were made, but they seem to apply mainly to window managers moving the mouse in and out of top level windows. While all these are valid objections, I think that objections 2, 3, and 5 can all be addressed by following a simple guideline: Applications should only only warp the cursor in direct response to a user's request to do so. The simplest example is a system that binds the keyboard arrow keys to move the pointer in the appropriate direction. This is useful in drawing packages where it is sometimes difficult to precisely position objects freehand with the mouse. The system would warp the cursor in direct response to a user request. The user should not be "astonished" that the pointer was moved for him, nor should his mental model of pointer control be broken. Since the sole purpose of the keyboard arrow keys is to move the pointer, the application should have every right to assume it knows what the user is doing. The trouble starts when applications link two actions together. For example, expanding an icon and moving the pointer to a predefined position in the new window. Between the arrow-key example and the move-mouse-to-new-window example, there are a continuum of intermediate examples where a user-invoked function should or should not have an associated mouse movement. Where you draw the line is probably a matter of personal taste. One thing is certain. Like most user-interface tools, pointer warping is a technique that must be used carefully. The only way to determine if its usage is appropriate for a given situation is to try it out on unbiased users. I don't think the objections raised are serious enough to condemn the technique altogether. -Joshua Marantz Viewlogic Systems, Inc.
eichin@ATHENA.MIT.EDU (Mark W. Eichin) (07/01/88)
JM>From: mit-vax!josh@bloom-beacon.mit.edu (Joshua Marantz) JM>Organization: Viewlogic Systems, Inc. JM>The simplest example is a system that binds the keyboard arrow keys to JM>move the pointer in the appropriate direction. This is useful in JM>drawing packages where it is sometimes difficult to precisely position JM>objects freehand with the mouse. JM>-Joshua Marantz JM>Viewlogic Systems, Inc. Has anyone implemented such, at the window manager level? I know it sounds like a step backwards, but I'd be interested in seeing something (preferably an isolated application) that would make some keys into mouse-motion keys, to allow navigating solely from the keyboard. It'd be easy to do for a single application, but I want it for *all* windows. It isn't clear to me where to start on this... Mark Eichin <eichin@athena.mit.edu> SIPB Member & Project Athena ``Watchmaker''