Men loven of propre kynde newefangelnesse.
?span>Chaucer, "The Squire's Tale"
I have been variously castigated and applauded for creating the one-button mouse and some of the basic methods for using it. Questions from readers of drafts of this book indicated that they thought that the way the Macintosh worked was the way that earlier mouse-driven systems from Xerox PARC worked and were curious as to the differences. This appendix describes the mouse-based systems that I saw at Xerox Palo Alto Research Center (PARC) when I was a visitor there. The even earlier use of the mouse at Douglas Englebart's group at the Stanford Research Institute (SRI) was embedded in a system that was decades ahead of its time in many ways and contained valuable ideas that have not yet been widely applied. Englebart's software, however, was often modal and was sometimes inefficient at the keystroke level.
Few users of modern personal computers remember what you had to go through to make a selection with the PARC system, as exemplified by its most popular text editor, BRAVO. Tapping each of the three mouse buttons on the PARC mice will be denoted by L, M, and R (for left, middle, and right). BRAVO did not use mouse button quasimodes.
To select a character: point to the character, L.
To select a word: point to word, M.
To select an arbitrary string of characters: point to first character, L; point to last character, R.
To select a string of words: point to first word, M; point to last word, R.
A typical mistake was using L and then M, which merely restarted the selection at what you thought was going to be the end of the desired selection. This was very frustrating, especially when the selection was large. Notice, however, that you never had to "back out" of a selection; you could always just start a new one without penalty. This was a true advance over most contemporaneous systems, which required that you use ESC or some such to cancel a selection-in-progress before you could start another.
There was an earlier editor developed, but not used much, at PARC (and of which I was unaware at the time) that used click and drag to select text. Using the notation presented in Section 3-1: To select some text, point to the top of the text, L, point to a lower point in the text, . But this idea was not extended to other kinds of selection.
L, and point to the other end, . This technique came to be called "click and drag."
To delete text: Select text and type d. The problem here was that you had to be aware of the existence of a selection before you knew what typing the letter d would do. In the Macintosh, I chose to use the Delete key to delete text both when you are typing and when you are editing.
To insert text: Point to an insertion point, L; type i; type the new text, tap the ESC key. The ESC key took you out of insert mode. The Macintosh's design did not have an insert mode, and its method has become universal: To insert text, point and click at the desired insertion point, L; type new text. Instead of having an explicit delimiter to start the typing, as at PARC, you just started typing. You did not have to press ESC or anything else at the end; merely starting a new task would end the old. In BRAVO, you replaced text with this method: Select old text, type r, type new text, tap the ESC key. To replace text on the Macintosh: select old text, tap Delete, type new text. This design differs from the current Macintosh and Windows model, which seems simpler: To replace text, select old text, type new text.
As users have discovered, however, this often causes accidental loss of text. In the original design, which requires one keystroke more than the present method, typing is never destructive, and the text editor is, and feels, more secure; this is a lot to gain from one additional keystroke. It is also a good example of a situation where keystroke count is less important than other factors. In this case, the more important factors are (1) not losing content (a side effect of the popular paradigm) and (2) fostering habituation (use only the Delete key to remove content).
Unlike BRAVO and some other editors designed at PARC, on the Macintosh and, to a large extent, on subsequent systems, typing a plain letter never acts as a command. In retrospect, the improvements seem obvious, but they did not seem so at the time. My design for an interface based on a one-button mouse was refined and extended in discussions with many coworkers, most notably Brian Howard and Bill Atkinson, and, of course, many adjustments were made based on observations made during user testing and during subsequent development. Some users do have difficulty both holding down a button and simultaneously moving a graphical input device, but this is partly dependent on the physical design of the graphical input device and whether it is a mouse or another input device. In the Macintosh design, this problem was alleviated by having only one large button on the mouse, with low holding force and good tactile feedback. (Some of the recent touchpads with poorly designed buttons, especially those on portables, make dragging difficult and error-prone.) Additionally, the improvement and error reduction afforded by the elimination of modes often overweigh the pointing errors due to dragging, even with less-than-optimal graphical input devices.
What I did not see at the time is that multiple buttons on a mouse can work well if the buttons are labeled. If the Macintosh mouse had had multiple buttons, if the buttons had been permanently labeled, and if they had been used only for their designated functions, a multiple-button mouse might have been a better choice. A better mouse might have two buttons on top, marked "Select" and "Activate," and a "Grab" button on the side that is activated by squeezing the mouse. This last button would be marked Grab. Some mice at present have a wheel on top that is used primarily for scrolling. Better still would be a small trackball in that location. The mouse would control the position of the cursor; the trackball could be used, for example, to manipulate objects or to make selections from menus that float with the cursor.