Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!mailrus!tut.cis.ohio-state.edu!mandrill!gatech!bloom-beacon!EXPO.LCS.MIT.EDU!jim
From: jim@EXPO.LCS.MIT.EDU (Jim Fulton)
Newsgroups: comp.windows.x
Subject: Re: The morality of warping the cursor
Message-ID: <8806281423.AA04976@EXPO.LCS.MIT.EDU>
Date: 28 Jun 88 14:23:21 GMT
References: <4390@mit-vax.LCS.MIT.EDU>
Sender: daemon@bloom-beacon.MIT.EDU
Organization: X Consortium, MIT Laboratory for Computer Science
Lines: 51


For those who have netnews, this topic was recently discussed in 
comp.windows.misc as well.


> There have been a couple of articles where people have stated
> absolutely that warping the cursor is bad user interface policy; that
> users should have exclusive control of the cursor at all times.

The usual reason given is the principle of least astonishment.  Warping the
pointer can disrupt the mental illusion that the cursor on the screen is
directly tied to the pointer.  By moving the cursor out from under the user,
you run the risk of breaking hand-eye coordination.  Also, some devices (such
as absolute tablets) might refuse to be warped. 


>                                               I personally feel that
> intelligent warping on the part of the application can greatly enhance
> a user interface.

Intelligent is the operative word.  You have to be as unobtrusive as possible
so as not to interfere with the user's "kinetic memory" of where things are.
As people become familar with an interface, they build up dexterity that helps
them identify and acquire targets quickly, without much thought.  This is
particularly true if delays in the interface allow a user to provide input
faster than it is consumed.  Some people have advocated doing relative warping
followed as soon as possible by restoring the pointer to its previous position
to prevent such "mouse-ahead" from being lost. 


> Imagine using Emacs, for example, if you had to move the cursor
> manually below the mode line in order to type a Meta-X command.

Even warping the pointer in this case would be bad since it assumes
pointer-driven input focus (if the M-X window were separate from the main
editing portion).  It is important to distinguish use of the pointer by the
window manager (e.g. selecting an "active" window) from use of the pointer by
the application (e.g. drawing, selecting objects, etc.).  The application
should never warp the pointer to accomplish the former task.  Instead, if the
editor's top level window already has the focus, it could then set the focus to
the M-X subwindow as described in the Inter-Client Communications
Conventions Manual.  Navigation is definitely one of the thorniest issues 
in building user interfaces.

There are times when warping the pointer does make a user interface more
intuitive.  However, it has to be done with care so as not to break the user's
sense of control or make presumptions about the type of input focus management
being used. 


Jim Fulton
MIT X Consortium