[comp.windows.x] The morality of warping the cursor

josh@mit-vax.LCS.MIT.EDU (Joshua Marantz) (06/28/88)

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.

I am interested in why people feel this way.  I personally feel that
intelligent warping on the part of the application can greatly enhance
a user interface.  I say this with some trepidation because people on
this newsgroup occasionally flame and tar and feather people who have
ideas different then their own.

So I am looking for an enlightened discussion on the benefits and
pitfalls of carefully warping the cursor.

Obviously, one potential pitfall is if a program that you thought was
idle decides to suddenly wake up and warp the pointer, things could
get weird.  But if in the course of traversing a menu or drawing a
graphical object, the application moves the cursor to fall within an
area that it is constrained to stay, then this only speeds the user
interaction.

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.  Long
movements are easier with a mouse than a text cursor, but the concept
is the same.  The application knows what you are doing, and should
help you do it.  Naturally, the application has to be careful to avoid
making wrong assumptions about what it assumes the user is doing.

Another common application for pointer warping might be to have more
than one cursor, only one of which is attached to the mouse at one
time.  I did this recently for an interactive bezier spline program I
was fooling around with.  You got to adjust any of the four control
points by moving the mouse, and you switched control points by hitting
F1, F2, F3, or F4.  The mouse would jump to the control point you
wanted to adjust.  If the system didn't do this, then the mere act of
switching (say) from point #2 to point #3 would implicitly move point #3
to where point #2 was when you switched.

I would like to thank the X developers for giving me the power to do
what I felt was necessary, even if they personally thought it was the
wrong thing to do.

I hope this article stimulates some interesting discussion on this
subject.  I am also interested in other user interface topics, though
there may be a better group for that.  Any pointers (no pun intended)?

-Joshua Marantz
Viewlogic Systems, Inc.

jee@teddy.UUCP (John E Elsbree) (06/28/88)

In article <4390@mit-vax.LCS.MIT.EDU> josh@mit-vax.LCS.MIT.EDU (Joshua Marantz) writes:
>
>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.

This brings up a question that's been sitting in my mind for a while...

Say your pointing device deals in absolute coordinates (a tablet, for
example).  What does it mean to warp the pointer?  Sure, the cursor on
the screen can be forced to a new position, but the tablet would
immediately pull it back to its own absolute coordinates.

Or do I misunderstand something?
							- John
-- 
John E Elsbree                  /|\       GenRad, Inc.
...!mit-eddie!genrad!jee       /_ _\      300 Baker Avenue
(617)369-4400, ext 2935        \ |\       Concord, MA 01742, USA
(508)369-4400 (after July 16)   \| \

jim@EXPO.LCS.MIT.EDU (Jim Fulton) (06/28/88)

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

jim@EXPO.LCS.MIT.EDU (Jim Fulton) (06/29/88)

>                              So I don't see any reason why a tablet
> should refuse to be warped.

The simple answer is "because they don't want to."

A better answer is that for tablets that do proximity notification, yes it is
trivial to simulate a relative device.  For those that don't (and silly as it
sounds, not all do), it's not quite as easy. 

More importantly, a lot of people who use tablets actually like them to be
absolute.  To some, it provides a more natural metaphor for positioning.

I, myself, hate tablets (unless I'm doing something that involves drawing, then
they are much nicer then mice).  But those who do like them are free to use
them.

Caveat software developer,
Jim

diamant@hpfclp.SDE.HP.COM (John Diamant) (06/29/88)

> 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.
> 
> I am interested in why people feel this way.  I personally feel that
> intelligent warping on the part of the application can greatly enhance
> a user interface.

I think I'm the one that started this (in comp.windows.misc, but it drifted
over here, apparently).  Anyway, I originally stated that warping the pointer
was bad.  After some discussion, I revised to comment to instead be that
changing the user's focus is bad.  So, if the warping is a direct result of a
user action, and the input focus and pointer remain (logically) where the user
put them, then I see no problem.  It's mainly an issue of "principle of
least astonishment").  If you are merely following through on a user action,
then it may be appropriate.

One person in this debate pointed out that this is fine for locators that
use relative addressing, but an absolute locator device (a graphics tablet)
is hosed if you ever warp the mouse.

John Diamant
Software Development Environments
Hewlett-Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hplabs,hpfcla}!hpfclp!diamant

eli@haddock.ISC.COM (Elias Israel) (06/29/88)

In article <4390@mit-vax.LCS.MIT.EDU> josh@mit-vax.LCS.MIT.EDU (Joshua Marantz) writes:
>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.

My experience with warping cursors comes not from X, but from the
Apollo DM, which routinely moves the cursor out from under your hand.
I think it's "immoral" to warp the cursor for the simple reason that the
new cursor position will no longer correspond to the position of the
user's hand. Example: I move the cursor to the upper left to select an
icon to de-iconify. When I do it, the DM warps the cursor to the bottom
line of the window thus created, moving it more than 3/4 of the way
across the screen. Now my hand is in the upper left of my mouse pad and
the cursor is much nearer to the lower right. I find this very
annoying.

I also dislike warping cursors for a more philosophical reason. I do not
like machines (or programs) that presume to know what I, the human, am
up to. Going back to the Apollo DM example, I often keep a number of
manual pages in iconified windows at the top of the screen. Sometimes, I
like to open up a number of them for examination. Without the warping
cursor, I could simply select and de-iconify each one in turn. Because
the DM warps the cursor to the bottom line of every window as it is
opened, I have to lift the mouse, reposition it, and drag all the way
back for each icon that I want to de-iconify. The window manager should
just let me move the cursor as I see fit.

I've never met a warp that I liked. Perhaps I haven't met any of the
really good ones.

Elias Israel		   | "Justice, n. A commodity which in more or
Interactive Systems Corp.  | less adulterated condition the State sells
Boston, MA		   | to the citizen as a reward for his allegiance,
..!ima!haddock!eli	   | taxes, and personal service."
			   |     -- Ambrose Bierce, _The Devil's Dictionary_ 

al@eos.UUCP (Al Globus) (06/30/88)

From article <4390@mit-vax.LCS.MIT.EDU>, by josh@mit-vax.LCS.MIT.EDU (Joshua Marantz):
> 
> 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.
> 
> I am interested in why people feel this way.  I personally feel that
> intelligent warping on the part of the application can greatly enhance
> a user interface. 

Open Look moves the cursor without user input in several circumstances
to optimize mouse movement.  Looks like a good job to me.  The scroll
bars are particularly well done.

mckee@corwin.ccs.northeastern.EDU (George McKee) (07/01/88)

Things get more interesting if you have more than one cursor.
For instance if you have a text window that allows you to cut from
anywhere but paste and type only at one point, like a (pardon the
expression) Sun shelltool does, it's real nice to have the text
cursor warp down to the fixed typein point whenever you type any
character.
	But the mouse pointer doesn't warp.  You can then unwarp
the text cursor back to wherever the mouse pointer is with a single
button click.  I could envision a complex system with several kinds
of cursors under control of different mouse buttons, some of which
are warped by the program under certain conditions.
	There should always be something like a window-manager-cursor
that never gets warped, though.

	- George McKee
	  NU Computer Science

Curbow.osbunorth@XEROX.COM (07/02/88)

Re: Warping

I work on Xerox Viewpoint (follow on to STAR), where warping the cursor is
considered to be a major sin. I also use XDE, Macintosh and SmallTalk-80 - none
of which warp the pointer. So, when I first experienced warping in SunTools and
then in OpenLook, I was skeptable. After some experience with warping, I am
still undecided. There are times when it is nice to have the cursor warped. For
example, to buttons on a "Notice" (OL name) or DialogBox (Mac name). But, there
are also times when having the cursor warped is annoying as hell. For example,
when I popup a menu on the header, and decide that I don't want that menu. When
I release the Select button, the cursor goes back to the header, despite the
fact that I have usually moved off the header.

Other cases where it would be wrong to warp the cursor to the "Notice" buttons":
 - For example, when the Notice is less than life-threatening and the cursor
need not be restricted to the Notice box. 

 - Should some process other than the one currently having the input focus
decide to put up a Notice.
 
I'm in favor of "intelligent" warping, but this is a case where less is better
than more. I would be happier if there were NO warping rather than TOO MUCH
warping.   


One person's opinion on the subject.

 
/David