[comp.sys.mac] There *ARE* uses for forcing the mouse to a location

kk@mcnc.org (Krzysztof Kozminski) (06/07/90)

In the beginning a suggestion to Apple:

1) Let the user choose in the Control Panel whether she/he wants to allow
   a 'jumping mouse pointer'.  There's lotsa space there to fit one checkbox
   that is needed.

2) Provide a flag in SysEnvirons that lets the program know the status of
   this bit, so that the program can use it for the convenience of the user.

3) Provide this sorely missing routine for setting the mouse position.
   Something like SetMouse(x,y), returning TRUE if mouse was set, or
   FALSE if it was not set. (e.g, if the user has turned the 'jumpy mouse'
   off, or the position was off-screen or something like this).

In article <16995@phoenix.Princeton.EDU> bskendig@phoenix.Princeton.EDU (Brian Kendig) writes:
>In article <1990Jun5.091419.14219@portia.Stanford.EDU> canuck@portia.Stanford.EDU (William Stocker) writes:
>>I'm writing a Mac program in THINK Pascal 3.0, and need to force the
>>mouse to a particular screen location.
>
>    DON'T DO IT.  It's *very* bad technique, and your application
>    won't run, besides.
>
>Tell me what, exactly, this `good purpose' is that you've thought up,
>and I and millions of other Netters will help you come up with a more
>proper way of doing it.

I am not the original poster, but coming up with a good purpose seems to
be a trifle (hey, I am so stuffed with painkillers right now that I can
come up with ANY idea for anything :-)

Purpose 1.  Imagine running MacDraw on a large screen (1200x1000 pixels
or more), editing some stuff in the lower right corner.  You want to
change a tool and continue drawing in the lower right corner. You have
to move the mouse all the way to the palette, select a tool, and move
it all the way back.  Kinda trouble, especially on a cluttered desk with
all 2 inches to mouse about without bumping your coke can off the desk...

Solution accordingly to the guidelines: you gotta roll this mouse.  Or
dig up this reference card and find out which option-command-control-
capslock-shift combination selects the tool you want (in case your
program was produced by a certain company that considers shift-option-H
to be a perfect mnemonic for changing the text style to subscript :-)

Solution that comes immediately to anybody whose perspective has not
been limited by a puny 512x340 screen and/or by The Gospel from Apple (or
whose perspective has been broadened by a substantial dose of opiates
after surgery :-)
- press, say, <CTRL> key: pointer moves to the palette containing
  controls <-> CTRL key - quite easy to remember.
- select the tool you want,
- release the <CTRL>: pointer moves to the area where you were doing your
  things

Purpose 2: You are editing elaborate widgets on your elaborate multi-screen
setup, double-click on a widget to open a dialog, and thanx to the ossified
guidelines gotta move this mouse to the dialog, then back to your widget ...
Opening the dialog in the vicinity of the widget would obscure the widget,
hence is no good...

Solution: if looking at the widget is useful while manipulating the dialog,
open the dialog on another screen, jump the pointer there, return the
pointer to the widget after dismissing the dialog.

I would be very interested in hearing any suggestions for handling such
situations that are both convenient and consistent with the guidelines
(then I'll swallow another Percocet and generate more 'good purposes').

Actually, here's the best reason: LOTS of programs using X-windows move
the mouse.  How are you going to run X-windows on a Mac without this
capability?

KK
-- 
Kris Kozminski   kk@mcnc.org
"The party was a masquerade; the guests were all wearing their faces."

bskendig@phoenix.Princeton.EDU (Brian Kendig) (06/07/90)

In article <2285@speedy.mcnc.org> kk@mcnc.org.UUCP (Krzysztof Kozminski) writes:
>1) Let the user choose in the Control Panel whether she/he wants to allow
>   a 'jumping mouse pointer'.  There's lotsa space there to fit one checkbox
>   that is needed.

Can you say `counterintuitive'?  Sure, you can...

> ...

>In article <16995@phoenix.Princeton.EDU> bskendig@phoenix.Princeton.EDU (Brian Kendig) writes:
>>In article <1990Jun5.091419.14219@portia.Stanford.EDU> canuck@portia.Stanford.EDU (William Stocker) writes:
>>>I'm writing a Mac program in THINK Pascal 3.0, and need to force the
>>>mouse to a particular screen location.

>>    DON'T DO IT.  It's *very* bad technique, and your application
>>    won't run, besides.

>>Tell me what, exactly, this `good purpose' is that you've thought up,
>>and I and millions of other Netters will help you come up with a more
>>proper way of doing it.

>Purpose 1.  Imagine running MacDraw on a large screen (1200x1000 pixels
>or more), editing some stuff in the lower right corner.  You want to
>change a tool and continue drawing in the lower right corner. You have
>to move the mouse all the way to the palette, select a tool, and move
>it all the way back.  Kinda trouble, especially on a cluttered desk with
>all 2 inches to mouse about without bumping your coke can off the desk...

>Solution accordingly to the guidelines: you gotta roll this mouse.  Or
>dig up this reference card and find out which option-command-control-
>capslock-shift combination selects the tool you want (in case your
>program was produced by a certain company that considers shift-option-H
>to be a perfect mnemonic for changing the text style to subscript :-)

Then we've gotta come up with better standard guidelines.  I'd rather
be able to hit Command-Minus to select subscript than have to follow
the mouse as it jumps all over the screen...

>Solution that comes immediately to anybody whose perspective has not
>been limited by a puny 512x340 screen and/or by The Gospel from Apple (or
>whose perspective has been broadened by a substantial dose of opiates
>after surgery :-)
>- press, say, <CTRL> key: pointer moves to the palette containing
>  controls <-> CTRL key - quite easy to remember.
>- select the tool you want,
>- release the <CTRL>: pointer moves to the area where you were doing your
>  things

Better yet -- hit the Control key, and the tool palette comes up right
under your pointer.  Same effect, but the machine doesn't wrench your
hand away from you.

>Purpose 2: You are editing elaborate widgets on your elaborate multi-screen
>setup, double-click on a widget to open a dialog, and thanx to the ossified
>guidelines gotta move this mouse to the dialog, then back to your widget ...
>Opening the dialog in the vicinity of the widget would obscure the widget,
>hence is no good...

>Solution: if looking at the widget is useful while manipulating the dialog,
>open the dialog on another screen, jump the pointer there, return the
>pointer to the widget after dismissing the dialog.

Or hit Return for the OK button, Command-Period for the Cancel button,
and other command-things for other buttons (such as Cmd-S for "Save").

I can just see it now -- I'm working, and suddenly my pointer
vanishes.  After a long search, I find it on another monitor beside a
dialog box.  Foo.

>I would be very interested in hearing any suggestions for handling such
>situations that are both convenient and consistent with the guidelines
>(then I'll swallow another Percocet and generate more 'good purposes').

The point here is that the Mac interface is designed to be as natural
as possible.  The pointer is your hand.  When you're working at your
desk and you need to grab a pencil instead of the pen you're using, do
you teleport your hand over to the pencil-box to get one?  No -- you
put the pencilbox as close to your work area as you can.

>Actually, here's the best reason: LOTS of programs using X-windows move
>the mouse.  How are you going to run X-windows on a Mac without this
>capability?

Go ahead and provide the capability in an X-windows server; I don't
feel like getting into the methodology behind different windowing
systems.  But Apple is trying to make their Macintosh OS as intuitive
as possible; having the pointer jump all over the screen would
sacrifice this to a degree.

The Macintosh has gained a lot of its success because it finds
innovative, intuitive ways to simply do things that are complicated to
do on other machines.  If you start doing esoteric things with menus,
windows, and especially the pointer, novice users will become confused
and leave.

     << Brian >>
-- 
| Brian S. Kendig      \ Macintosh |   Engineering,   | bskendig             |
| Computer Engineering |\ Thought  |  USS Enterprise  | @phoenix.Princeton.EDU
| Princeton University |_\ Police  | -= NCC-1701-D =- | @PUCC.BITNET         |
... s l o w l y,  s l o w l y,  w i t h  t h e  v e l o c i t y  o f  l o v e.

philip@Kermit.Stanford.EDU (Philip Machanick) (06/07/90)

In article <2285@speedy.mcnc.org>, kk@mcnc.org (Krzysztof Kozminski) writes:
> In the beginning a suggestion to Apple:
> 
> 1) Let the user choose in the Control Panel whether she/he wants to allow
>    a 'jumping mouse pointer'.  There's lotsa space there to fit one checkbox
>    that is needed.
> 
> 2) Provide a flag in SysEnvirons that lets the program know the status of
>    this bit, so that the program can use it for the convenience of the user.
> 
> 3) Provide this sorely missing routine for setting the mouse position.
>    Something like SetMouse(x,y), returning TRUE if mouse was set, or
>    FALSE if it was not set. (e.g, if the user has turned the 'jumpy mouse'
>    off, or the position was off-screen or something like this).

"sorely missing?" See below - I can't say I particularly miss this feature.
I used the Mac first, them moved to X. Beware of the "the first system I
used is best" syndrome. I can do the same thing back to you (but I won't).
[...]
> I am not the original poster, but coming up with a good purpose seems to
> be a trifle (hey, I am so stuffed with painkillers right now that I can
> come up with ANY idea for anything :-)
> 
> Purpose 1.  Imagine running MacDraw on a large screen (1200x1000 pixels
> or more), editing some stuff in the lower right corner.  You want to
> change a tool and continue drawing in the lower right corner. You have
> to move the mouse all the way to the palette, select a tool, and move
> it all the way back.  Kinda trouble, especially on a cluttered desk with
> all 2 inches to mouse about without bumping your coke can off the desk...
> 
> Solution accordingly to the guidelines: you gotta roll this mouse.  Or
> dig up this reference card and find out which option-command-control-
> capslock-shift combination selects the tool you want (in case your
> program was produced by a certain company that considers shift-option-H
> to be a perfect mnemonic for changing the text style to subscript :-)
> 
> Solution that comes immediately to anybody whose perspective has not
> been limited by a puny 512x340 screen and/or by The Gospel from Apple (or
> whose perspective has been broadened by a substantial dose of opiates
> after surgery :-)
> - press, say, <CTRL> key: pointer moves to the palette containing
>   controls <-> CTRL key - quite easy to remember.
> - select the tool you want,
> - release the <CTRL>: pointer moves to the area where you were doing your
>   things
My solution: exactly rhe same, only you warp the palette to the cursor instead.
Why?
- it's more consistent with the rest of the interface
- you don't lose sight of the cursor
- you stay focussed on 1 part of the screen
> Purpose 2: You are editing elaborate widgets on your elaborate multi-screen
> setup, double-click on a widget to open a dialog, and thanx to the ossified
> guidelines gotta move this mouse to the dialog, then back to your widget ...
> Opening the dialog in the vicinity of the widget would obscure the widget,
> hence is no good...
> 
> Solution: if looking at the widget is useful while manipulating the dialog,
> open the dialog on another screen, jump the pointer there, return the
> pointer to the widget after dismissing the dialog.
Instead of the idiotic beep when you click outside a modal dialog, the dialog
should warp to the cursor. Better still, the modal dialog should be movable,
so you can adjust its position once it's near enough to reach without risk
to your ligaments. 
> I would be very interested in hearing any suggestions for handling such
> situations that are both convenient and consistent with the guidelines
> (then I'll swallow another Percocet and generate more 'good purposes').
I'd hate to be responsible for your health, but please feel free to
continue the discussion.
> Actually, here's the best reason: LOTS of programs using X-windows move
> the mouse.  How are you going to run X-windows on a Mac without this
> capability?
Fair enough, but you are presumably conscious that you are in a different
operating system if you use X, just the same as you have to change to
MS-DOS mode if you run Soft PC, or find the keyboard behaving in funny
ways if you use your Mac as a VT100 terminal. This doesn't stop you from
trying to think of alternatives more consistent with the Mac interface
(for example, there are some contexts where Soft PC uses standard Mac
open file dialogs, and I use a Mac-style dialog to enter my unix password
in Microphone II).

See also comp.sys.mac.programmer for my suggestion for menus on a big
screen.

Philip Machanick
philip@pescadero.stanford.edu

edgar@function.mps.ohio-state.edu (Gerald Edgar) (06/07/90)

 * Solution: if looking at the widget is useful while manipulating the dialog,
 * open the dialog on another screen, jump the pointer there, return the
 * pointer to the widget after dismissing the dialog.

ADB Macs can have two mice plugged in.  We just need the software to run
both mice, one for each screen ...  After all, I have two hands.
--
  Gerald A. Edgar          
  Department of Mathematics             Bitnet:    EDGAR@OHSTPY
  The Ohio State University             Internet:  edgar@mps.ohio-state.edu
  Columbus, OH 43210   ...!{att,pyramid}!osu-cis!shape.mps.ohio-state.edu!edgar

kk@mcnc.org (Krzysztof Kozminski) (06/08/90)

[I've added comp.sys.mac.programmer to the distribution - I think it's
 weird it wasn't there in the first place ... - KK]

I am still going to defend the idea that allowing the software to
control the mouse position is occasionally a Good Thing, and my primary
example of such is still a situation when you need to go to a tool
palette or a modal dialog and then return to the place on the screen
that is distant from the palette/dialog. Some details on the methodology
I intend to use are included.

First of all, please remember that I would like to see this feature to
be switchable on or off from the Control Panel, thus conforming to the
principal idea of giving the control TO THE USER. I am somewhat surprised
to see a dissent in this respect. By all means, 'jumping cursor' should
be switched off as a default, but if the user is willing to accept the
chance of an occasional confusion as a price of the increased convenience
on many other occasions, then LET HIM/HER use it.  The official guidelines
forbiding this reek of BigBrotherhood to me.  The restriction was
acceptable in the times of a 9 inch screen, because it was not really
noticeable.  I think it is time to relax it (see the elaboration of the
X-windows argument later on) - what do Apple people think about it?

So far, the alternate proposals to my examples of a Good Thing  were:

>From: edgar@function.mps.ohio-state.edu (Gerald Edgar)
> ADB Macs can have two mice plugged in.  We just need the software to run
> both mice, one for each screen ...  After all, I have two hands.

Some people could cope with this - but I personally find it very awkward
to operate even a single mouse with my left hand.  And keeping two mice
within the reach of my right hand brings the vision of tangled cords...
and if you need to type, two mice are no good, unless lingual dexterity
allows you to operate keyboard with your tongue :-)

>From: bskendig@phoenix.Princeton.EDU (Brian Kendig)
>Better yet -- hit the Control key, and the tool palette comes up right
>under your pointer.

While trying to break one guideline, I probably should not use another as
an argument, but aren't 'jumping windows' another no-no?  I have a better
argument against it anyway: this will generate an update event (possibly
also for some background applications), thus slowing you down and negating
the speedup that is desired by allowing the pointer to warp over to the
palette.

>Or hit Return for the OK button, Command-Period for the Cancel button,
>and other command-things for other buttons (such as Cmd-S for "Save").

I am talking about editing complicated (maybe hierarchically organized)
widgets - with just as complicated dialogs (or windows) associated with
them - try, e.g, to manipulate a scrollable list with a keyboard - yuck.

>From: philip@pescadero.stanford.edu (Philip Machanick)
> The dialog should warp to the cursor. Better still, the modal dialog
> should be movable, so you can adjust its position once it's near enough
> to reach without risk to your ligaments. 

OUCH, that hurts (a torn ligament is why I had my knee surgery yesterday :-)
(and if anybody is wondering why the smiley, read my previous article :-):-)

I presume that you mean that the dialog should come up near the cursor
(to avoid a jumping window, and to avoid having two areas to update).
But the dialog will obscure the widget you're editing - this is why I
wanted it to show up away from the cursor in the first place.

Now back to the X-windows: this is where I hope to make a final convincing
argument.  I'd like just to mention that "the first system I used is best"
syndrome does not apply here; I am not pushing Xerox Star paradigms, am I ?-)
I've picked the X-windows just because sometimes I have to use them.
Normally I run UW or Telnet from a Mac, so that I can write documents while
watching over the number crunchers outputs in the terminal emulator windows.

X-window emulators on a Mac are a fact.  Allowing the software to move the
pointer all over the screen is a necessity for this particular application.
The size of the X-window market seems to my uneducated in the marketing
matters self a good reason for Apple to provide some kind of consistent
access to these undocumented low-memory globals to the X-developers.
So why should this acces be denied to others?  Assuming that the user
knows when to expect a 'pointer warp', there is nothing wrong with it.
The feature should be used with good judgement, and the current guidelines
seem to deny that developers have the ability to make such a judgement.

Some final wrap-up.

>Brian Kendig:
>If you start doing esoteric things with menus, windows, and especially the
>pointer, novice users will become confused and leave.

And it you forbid doing esoteric things, sophisticated users will leave.
Point in case: several weeks ago my officemate, showing off some features of
an elaborate schematic capture program, was gloating over the fact that when
he was adding a new element, after checking on some attribute of the element,
the pointer jumped to the next checkbox that was likely to be checked -
the choice of the next checkbox depended here on ALL the previously
checked boxes, so no nice things like a default button or a default choice
of selected checkboxes could be implemented.  And he asked: "now can YOUR
Mac do THIS?"  I failed to defend the Mac Way...

>>1) Let the user choose in the Control Panel whether she/he wants to allow
>>   a 'jumping mouse pointer'.  There's lotsa space there to fit one checkbox
>>   that is needed.
>Can you say `counterintuitive'?  Sure, you can...

Come on, this was just a sketch, not a final interface specification. There's
enough space in the Control Panel to put a detailed exaplanation.  Speaking
of 'counterintuitive' I haven't seen many Mac users outside CS/EE who would
find the RAM Cache control *understandable*, all intuition aside.

OK, now, how am I going to do this in my program for widget editing ...

First of all, while displaying the About... dialog on startup, I watch
these undocumented locations, compare them with the legally obtained
mouse location, and, if they do not agree, I assume that something is
not compatible and disable the pointer warp.  Just to make sure, I
request that the user moves the mouse before dismissing the startup
dialog - to double check that the numbers agree - but usually the user
will fiddle with the mouse without a reminder.  Of course, the entire
feature can be disabled via the program setup/preferences dialog, just
in case the initial checks happen to be insufficient.  Furhtermore, I
store the environment in the preferences file, so that when the
program is moved to a different machine/system version, the feature
becomes automatically disabled (just in case low memory suddenly
becomes protected and trying to read it produces an exception), and
the user is notified that the warp mode is off.

All the above seems to me quite failproof - any comments are welcome.

Now when do I use mouse warp?  Precisely for moving the pointer to one
of the several palettes with the tools. Pressing the CTRL (the actual
modifier key used is selectable via the preferences/setup dialog)
turns on the 'warp watch':  when the user moves the pointer towards
one of the palettes, it is automatically moved all the way there.
Selecting a tool transports the pointer back. Moving the pointer off
the palette while still holding CTRL warps it to another palette,
provided that the direction of move is correct, otherwise beep and warp
mode off (no return to the work area), to allow exit the warp mode if
the user wishes so. 

Aside of the pointer returning to the work area after tool selection,
all the above is totally consistent with the interface guidelines - it
just can be considered as an ultra-fast, speed-sensitive  mouse tracking.

I have a couple of other, more elaborate uses, but this article is
already way too long ... have I made any converts yet?

KK
-- 
Kris Kozminski   kk@mcnc.org
"55 saves lives. 110 saves twice as much"

sec@cs.umn.edu (Stephen E. Collins) (06/08/90)

bskendig@phoenix.Princeton.EDU (Brian Kendig) writes:

[stuff]

>Or hit Return for the OK button, Command-Period for the Cancel button,
>and other command-things for other buttons (such as Cmd-S for "Save").

[more stuff]

>The point here is that the Mac interface is designed to be as natural
>as possible.  The pointer is your hand.  When you're working at your
>desk and you need to grab a pencil instead of the pen you're using, do
>you teleport your hand over to the pencil-box to get one?  No -- you
>put the pencilbox as close to your work area as you can.

But your hand is limited by the laws of physics.  There are things you
can do on a computer that make it easier than simply trying to immitate
real life.  I'd hope we're trying to use the computer to advance beyond
the limitations of standard procedure.  If my computer functions exactly
like my real desk, paper, and pencil, why should I use a computer?

[even more stuff]

>The Macintosh has gained a lot of its success because it finds
>innovative, intuitive ways to simply do things that are complicated to
>do on other machines.  If you start doing esoteric things with menus,
>windows, and especially the pointer, novice users will become confused
>and leave.

If I follow your logic correctly, you're saying that something such as
holding down option-command while restarting the mac; or shift-control
while bringing up the control panel is "innovative and intuitive".  However,
something such as moving the pointer to a dialog that requires a mouse-click
before the user can proceed is "esoteric and confusing".

Stephen E. Collins
University of Minnesota Microcomputer & Workstation Networks Center
sec@boombox.micro.umn.edu

billkatt@mondo.engin.umich.edu (billkatt) (06/08/90)

In article <2291@speedy.mcnc.org> kk@mcnc.org.UUCP (Krzysztof Kozminski) writes:
>Now back to the X-windows: this is where I hope to make a final convincing
>argument.  I'd like just to mention that "the first system I used is best"
>syndrome does not apply here; I am not pushing Xerox Star paradigms, am I ?-)
>I've picked the X-windows just because sometimes I have to use them.
>Normally I run UW or Telnet from a Mac, so that I can write documents while
>watching over the number crunchers outputs in the terminal emulator windows.
>
>X-window emulators on a Mac are a fact.  Allowing the software to move the
>pointer all over the screen is a necessity for this particular application.
>The size of the X-window market seems to my uneducated in the marketing
>matters self a good reason for Apple to provide some kind of consistent
>access to these undocumented low-memory globals to the X-developers.
>So why should this acces be denied to others?  Assuming that the user
>knows when to expect a 'pointer warp', there is nothing wrong with it.
>The feature should be used with good judgement, and the current guidelines
>seem to deny that developers have the ability to make such a judgement.

Yes, X-window SERVERS on a Mac are a fact.  They don't EMULATE X-windows, ok?
I am using Mac X right now, and it doesn't warp my cursor.  It has a check
box "Enable Mouse Movement Under Client Control", and I keep it disabled.
I haven't had ANY compatibility problems yet.  BTW, I originally turned it off
because I was tired of Motif (specifically MWM) warping my cursor to the OK
button.  If I want it there I'll put it there.  So, it is not a necessity.

I'll put an argument forth against respositioning the cursor to the next
likely check box.  I know, FOR SURE, in every Mac program I use that if I
position the cursor over a box and click three times, it will ALWAYS just
change the state of that box three times.

Say I have four check boxes:

             +-+        +-+       +-+        +-+
         A   !X!     B  !X!     C ! !      D ! !
             +-+        +-+       +-+        +-+

If you position the cursor over 'C' and click three times, what will the
state be?  I know on my Mac it will be A-On, B-On, C-On, D-Off.  What will
it be on that guys machine?  He doesn't know unless he tries it and then
remembers it.  It is a matter of intuition, it is important that the user
know what is going to happen every time they do something BEFORE they do it.
The Mac provides that.

The mouse pointer belongs to the user.  It should never be moved by the
program.  If programs start moving it, they user no longer feels they have
control over what happens.  You should move your windows under the cursor,
since the windows belong to the program.


=============================================================================
Steve Bollinger                                                    ____/|
909 Church St. Apt C                                               \ o.O|
Ann Arbor, Mi. 48104                                                =(_)=
(313)-662-4073 -home (313)-763-3070 -work                             U     
billkatt@mondo.engin.umich.edu                              -ACK ACK ACK ACK!
                                                              "thhhhppppttt!"

bskendig@phoenix.Princeton.EDU (Brian Kendig) (06/08/90)

In article <2291@speedy.mcnc.org> kk@mcnc.org.UUCP (Krzysztof Kozminski) writes:
>First of all, please remember that I would like to see this feature to
>be switchable on or off from the Control Panel, thus conforming to the
>principal idea of giving the control TO THE USER. I am somewhat surprised
>to see a dissent in this respect. By all means, 'jumping cursor' should
>be switched off as a default, but if the user is willing to accept the
>chance of an occasional confusion as a price of the increased convenience
>on many other occasions, then LET HIM/HER use it.  The official guidelines
>forbiding this reek of BigBrotherhood to me.  The restriction was
>acceptable in the times of a 9 inch screen, because it was not really
>noticeable.  I think it is time to relax it (see the elaboration of the
>X-windows argument later on) - what do Apple people think about it?

I cringe at the thought of adding more things to the Control Panel.
The RAM cache is esoteric enough, but fortunately, its use doesn't
really affect novices much, so they can tinker with it as much as they
want to without getting confused.

And this isn't Big-Brother-hood by any means.  Rather, it's an effort
to break the misconception that the more obscure a computer is, the
more powerful it is.  By refusing to allow programmers to go add all
sorts of obscure functions to the machine, Apple is trying to ensure
that it remains as simple as possible while still being powerful.

This is achieved by having the Mac be as intuitive as possible.  It
resembles familiar things: the pointer is your hand, you throw things
in the trash can to get rid of them, you can drag icons that look like
pieces of paper into folders.  In my opinion, menus and dialog boxes
are necessary evils; someday, someone will think up a really
innovative way to do away with them entirely, thereby allowing even
more simplicity.  (Who ever saw a desk with a menubar on it?)  But
then again, I'm an idealist, and I'm content to bear with them.
[ 1/2 ;-) ]

>So far, the alternate proposals to my examples of a Good Thing  were:

>>From: edgar@function.mps.ohio-state.edu (Gerald Edgar)
>> ADB Macs can have two mice plugged in.  We just need the software to run
>> both mice, one for each screen ...  After all, I have two hands.

>Some people could cope with this - but I personally find it very awkward
>to operate even a single mouse with my left hand.  And keeping two mice
>within the reach of my right hand brings the vision of tangled cords...
>and if you need to type, two mice are no good, unless lingual dexterity
>allows you to operate keyboard with your tongue :-)

Taste-sensitive computing?  Outrageous!

>>From: bskendig@phoenix.Princeton.EDU (Brian Kendig)
>>Better yet -- hit the Control key, and the tool palette comes up right
>>under your pointer.

>While trying to break one guideline, I probably should not use another as
>an argument, but aren't 'jumping windows' another no-no?  I have a better
>argument against it anyway: this will generate an update event (possibly
>also for some background applications), thus slowing you down and negating
>the speedup that is desired by allowing the pointer to warp over to the
>palette.

Jumping windows aren't exactly a no-no, but whould be avoided.
Jumping palettes are fine, and should be encouraged.  More on this
later.

And update events are practically instantaneous, so that's a non-issue
unless you're using some heinously kludgey plotting program, in which
case the time spent in cleaning up after a palette will be negligible
compared with the time spent in cleaning up after other things.

>>Or hit Return for the OK button, Command-Period for the Cancel button,
>>and other command-things for other buttons (such as Cmd-S for "Save").

>I am talking about editing complicated (maybe hierarchically organized)
>widgets - with just as complicated dialogs (or windows) associated with
>them - try, e.g, to manipulate a scrollable list with a keyboard - yuck.

Then make the widgets simpler.  And it's no problem to manipulate a
scrollable list with the keyboard; I always do (such as in a Standard
File Open dialog. Ever notice that you can begin typing a filename,
and the machine will highlight the name you've started to type?).

>>From: philip@pescadero.stanford.edu (Philip Machanick)
>> The dialog should warp to the cursor. Better still, the modal dialog
>> should be movable, so you can adjust its position once it's near enough
>> to reach without risk to your ligaments. 

Modal dialogs shouldn't be movable.  (Non-modal dialogs should be, of
course.)  A user, when confronted with a movable modal dialog, will
promptly move it aside (probably almost completely off the screen),
then be utterly baffled why the machine keeps beeping at him whenever
he does anything.  Never underestimate the stupidity of a user.

>OUCH, that hurts (a torn ligament is why I had my knee surgery yesterday :-)
>(and if anybody is wondering why the smiley, read my previous article :-):-)

Hope your knee gets better soon...

>I presume that you mean that the dialog should come up near the cursor
>(to avoid a jumping window, and to avoid having two areas to update).
>But the dialog will obscure the widget you're editing - this is why I
>wanted it to show up away from the cursor in the first place.

What if your widget is in the center of the screen?  The dialog will
block it anyway...  Am I getting off the subect, or what?  Hmm.  Never
mind.

>Now back to the X-windows: this is where I hope to make a final convincing
>argument.  I'd like just to mention that "the first system I used is best"
>syndrome does not apply here; I am not pushing Xerox Star paradigms, am I ?-)
>I've picked the X-windows just because sometimes I have to use them.
>Normally I run UW or Telnet from a Mac, so that I can write documents while
>watching over the number crunchers outputs in the terminal emulator windows.

Use MacLayers.  Much nicer than UW.

>X-window emulators on a Mac are a fact.  Allowing the software to move the
>pointer all over the screen is a necessity for this particular application.
>The size of the X-window market seems to my uneducated in the marketing
>matters self a good reason for Apple to provide some kind of consistent
>access to these undocumented low-memory globals to the X-developers.
>So why should this acces be denied to others?  Assuming that the user
>knows when to expect a 'pointer warp', there is nothing wrong with it.
>The feature should be used with good judgement, and the current guidelines
>seem to deny that developers have the ability to make such a judgement.

Or, perhaps, the fact that the pointer doesn't jump all over creation
will become an inspiration to X programmers everywhere, sparking a
worldwide rush to rewrite code.  Ya never know.

>Some final wrap-up.
>
>>Brian Kendig:
>>If you start doing esoteric things with menus, windows, and especially the
>>pointer, novice users will become confused and leave.
>
>And it you forbid doing esoteric things, sophisticated users will leave.
>Point in case: several weeks ago my officemate, showing off some features of
>an elaborate schematic capture program, was gloating over the fact that when
>he was adding a new element, after checking on some attribute of the element,
>the pointer jumped to the next checkbox that was likely to be checked -
>the choice of the next checkbox depended here on ALL the previously
>checked boxes, so no nice things like a default button or a default choice
>of selected checkboxes could be implemented.  And he asked: "now can YOUR
>Mac do THIS?"  I failed to defend the Mac Way...

I've dealt with programs like that before, and I don't like the feel
of them.  When your pointer jumps, there's a brief lapse of time
before your eyes can orient on its new position again.  That throws me
off.  If it doesn't jump, you have to move it yourself, and for me the
latter is actually faster enough that I can notice it...

Show your officemate any typical Macintosh spreadsheet.  When you're
done with one cell, you can hit Tab to move on to the next.  No bother
with the pointer.  Want to change things like the cell's font style?
Hit Command-B or Command-I, then hit Tab again, and repeat as
neccesary.  Here, there's a difference between what your finger is
pointing to and the cell of the spreadsheet you're concerned with,
because you should be able to do different things with one specific
cell.

>>>1) Let the user choose in the Control Panel whether she/he wants to allow
>>>   a 'jumping mouse pointer'.  There's lotsa space there to fit one checkbox
>>>   that is needed.
>>Can you say `counterintuitive'?  Sure, you can...

>Come on, this was just a sketch, not a final interface specification. There's
>enough space in the Control Panel to put a detailed exaplanation.  Speaking
>of 'counterintuitive' I haven't seen many Mac users outside CS/EE who would
>find the RAM Cache control *understandable*, all intuition aside.

There's enough space for an explanation, but putting one in is
cheating.  The options in the Control Panel should be easily
understood by sight: cursor flash rate, time and date, volume, and so
forth.  I don't like the RAM Cache option there, but people can
confuse themselves out of their minds by tinkering with it, so it's
pretty harmless if misused.  On the contrary, a user who's used to
having the pointer stay put will be baffled if it suddenly jumps
around, and vice versa.  Novice users don't think to check the Control
Panel.

>OK, now, how am I going to do this in my program for widget editing ...

>First of all, while displaying the About... dialog on startup, I watch
>these undocumented locations, compare them with the legally obtained
>mouse location, and, if they do not agree, I assume that something is
>not compatible and disable the pointer warp.  Just to make sure, I
>request that the user moves the mouse before dismissing the startup
>dialog - to double check that the numbers agree - but usually the user
>will fiddle with the mouse without a reminder.  Of course, the entire
>feature can be disabled via the program setup/preferences dialog, just
>in case the initial checks happen to be insufficient.  Furhtermore, I
>store the environment in the preferences file, so that when the
>program is moved to a different machine/system version, the feature
>becomes automatically disabled (just in case low memory suddenly
>becomes protected and trying to read it produces an exception), and
>the user is notified that the warp mode is off.

Picture a worst-case scenario.  Apple uses the memory locations for
something else, but they just happen to shadow the mouse every now and
then.  Your program thinks they're okay, and works properly -- for a
while.

"Fiddle with the mouse"?  I never do, and I'd think that a program
that asked me to move the mouse with no easily understandable reason
is being silly.

You're taking too many precautions against something that will
inevitably die on you anyway.  Way back when, Apple told people to
follow certain addressing guidelines.  The programs that didn't follow
the rules crash the IIci and IIfx.  Apple has been warning people not
to tinker with low-memory globals for a longer time.  You're playing
with fire...

>All the above seems to me quite failproof - any comments are welcome.

If a system is idiotproof, than only people who think they know what's
going on will be able to utterly screw it up.  Never underestimate the
destructive power of a novice.

>Now when do I use mouse warp?  Precisely for moving the pointer to one
>of the several palettes with the tools. Pressing the CTRL (the actual
>modifier key used is selectable via the preferences/setup dialog)
>turns on the 'warp watch':  when the user moves the pointer towards
>one of the palettes, it is automatically moved all the way there.
>Selecting a tool transports the pointer back. Moving the pointer off
>the palette while still holding CTRL warps it to another palette,
>provided that the direction of move is correct, otherwise beep and warp
>mode off (no return to the work area), to allow exit the warp mode if
>the user wishes so. 

Sounds neat.  Now, let me try to figure that out... better yet, have a
novice try to figure that out, and try to explain to him why his
pointer jumps around whenever he hits the Control key, and why it
suddenly won't do that anymore after other people have used the
machine (and played with the preferences).

>Aside of the pointer returning to the work area after tool selection,
>all the above is totally consistent with the interface guidelines - it
>just can be considered as an ultra-fast, speed-sensitive  mouse tracking.

Except that it just doesn't model the real world.

Okay, think of it from a psychological angle.  Ninety percent of a
user's time in a graphics application is spent concentrating on the
area of the screen right around the mouse.  If the mouse suddenly
disappears, he has to scan the screen looking for it (not bad on a
nine-inch screen, but larger and multiple ones are a pain --
especially when they're monochrome).  Now, have the mouse keep jumping
all the time, and the user will gradually expand his attention to
cover the entire screen, making him get tired of working sooner.  This
might sound a bit farfetched, but it's the kind of thing I've read
about in psych journals.

I'm still staunchly against letting the computer wrench control of the
pointer away from the user; there are better ways to handle cases
where this seems necessary.

     << Brian >>
-- 
| Brian S. Kendig      \ Macintosh |   Engineering,   | bskendig             |
| Computer Engineering |\ Thought  |  USS Enterprise  | @phoenix.Princeton.EDU
| Princeton University |_\ Police  | -= NCC-1701-D =- | @PUCC.BITNET         |
... s l o w l y,  s l o w l y,  w i t h  t h e  v e l o c i t y  o f  l o v e.

philip@Kermit.Stanford.EDU (Philip Machanick) (06/08/90)

One more thought on this issue. This has largely been argued as a philosophy/
personal preference issue. Of course, human interface is a science (sort of).
It should in principle be possible to program some of the alternatives, and
set people to using them for a few months. The difficult part of course is an
objective measure... I am not convinced by any of this that warping the
cursor is better than warping a tool palette, but if someone is prepared to
program both, I'm prepared to try both.

Philip Machanick
philip@pescadero.stanford.edu

kk@mcnc.org (Krzysztof Kozminski) (06/08/90)

In article <1990Jun7.190113.28131@caen.engin.umich.edu> billkatt@mondo.engin.umich.edu (billkatt) writes:
>I am using Mac X right now, and it doesn't warp my cursor.  It has a check
>box "Enable Mouse Movement Under Client Control", and I keep it disabled.

Which is EXACTLY what I've been proposing all along.  It was *YOUR*
decision to turn this feature off.  You don't like it - fine, don't use
it, but give the others the same choice that you have exercised  by
disabling this checkbox.  Fair?

>If I want it there I'll put it there.

I couldn't agree more.

>[argument against respositioning the cursor to the next likely check box,
>which was one of my (KK) examples of a possibly useful cursor warp, deleted]

I partially agree - the described method may be confusing indeed.  I
would not write an application that would *force* you to use this
method.  But why do you protest against providing a *CHOICE* for those
who would like to have an option of the interaction I described?  (To
say the truth, these weren't exactly checkboxes, but items functionally
very similar to checkboxes).  BTW, the program that I referred to in my
example is what I think is the singularly most popular schematic
capture package - the exact name of the program withheld to avoid
diverging into an unrelated argument about its popularity - so perhaps
some ideas in its interface are found useful by *some* people.  Now
you're tellng them to go buy an XXX brand workstation, 'cause Mac IIfx
won't be caught dead doing a mouse warp ...

>The mouse pointer belongs to the user.  It should never be moved by the
>program.  If programs start moving it, they user no longer feels they have
>control over what happens.

This happens to be your opinion, shared by many people, but it is not an
universal truth ... please, should I direct followups to talk.religion?

>You should move your windows under the cursor,
>since the windows belong to the program.

Don't you think that many people would be confused if windows started
jumping around?  IMHO, this is way worse than having the pointer do
an occasional warp (but I am not going to protest it as long as I
can disable it on *MY* computer).

KK
-- 
Kris Kozminski   kk@mcnc.org
"The party was a masquerade; the guests were all wearing their faces."

bskendig@phoenix.Princeton.EDU (Brian Kendig) (06/08/90)

In article <2294@speedy.mcnc.org> kk@mcnc.org.UUCP (Krzysztof Kozminski) writes:
>In article <1990Jun7.190113.28131@caen.engin.umich.edu> billkatt@mondo.engin.umich.edu (billkatt) writes:
>>The mouse pointer belongs to the user.  It should never be moved by the
>>program.  If programs start moving it, they user no longer feels they have
>>control over what happens.

>This happens to be your opinion, shared by many people, but it is not an
>universal truth ... please, should I direct followups to talk.religion?

Hm, might create an interesting train of discussion...

>>You should move your windows under the cursor,
>>since the windows belong to the program.

>Don't you think that many people would be confused if windows started
>jumping around?  IMHO, this is way worse than having the pointer do
>an occasional warp (but I am not going to protest it as long as I
>can disable it on *MY* computer).

It's basically the difference between either snapping your fingers and
having a notepad ten feet away suddenly appear under your hand, or
snapping your fingers and suddenly having your hand appear over a
notepad ten feet away.

     << Brian >>
-- 
| Brian S. Kendig      \ Macintosh |   Engineering,   | bskendig             |
| Computer Engineering |\ Thought  |  USS Enterprise  | @phoenix.Princeton.EDU
| Princeton University |_\ Police  | -= NCC-1701-D =- | @PUCC.BITNET         |
... s l o w l y,  s l o w l y,  w i t h  t h e  v e l o c i t y  o f  l o v e.

bayes@hpislx.HP.COM (Scott Bayes) (06/11/90)

> One more thought on this issue. This has largely been argued as a philosophy/
> personal preference issue. Of course, human interface is a science (sort of).
> It should in principle be possible to program some of the alternatives, and
> set people to using them for a few months. The difficult part of course is an
> objective measure... I am not convinced by any of this that warping the
> cursor is better than warping a tool palette, but if someone is prepared to
> program both, I'm prepared to try both.
> 
> Philip Machanick
> philip@pescadero.stanford.edu

This is the most sensible response yet.  Rather than guessing, do what
Apple did--Try it!  Scientifically, as an experiment.  Do what the
experimental data tell you, rather than guessing or saying "This is Sooo
neat!  Let's do it."

'Course that's expensive.  So are Macs.  Many people are willing to pay
a premium for some pretty ho-hum H/W (well, at least until some of the
later Mac IIs came out), with a pretty consistent and usable User
Interface.  Wonder if there's a correlation?

Scott "don't Corrupt the Interface by Jumping to Conclusions" Bayes
Hewlett-Packard Company

The opinions expressed above are my own opinions and are not an official
statement of Hewlett-Packard Company.

scottb@hpcvia.CV.HP.COM (Scott_Burke) (06/13/90)

My solution to this problem is simply to use PointingDevice or Mouse2
to dramatically increase the speed of the mouse.  If I have to cross
my 2-page monitor, no big deal; since my mouse moves fast enough, I
can do it without lifting the mouse once.  Perhaps I have a finer 
touch than most people, but I don't think so; I don't mind having an
extremely sensitive mouse.

To me, this discussion seems pointless; Apple's guidelines work just
fine.  An INIT or CDEV can be used to increase the mouse speed for
those few of us that desire it--I'm not sure Apple should allow an
option "Blinding Mouse Speed" in the Control Panel--and I'm perfectly
happy.

scott