Monday, October 08, 2012

 

escape Confusion

About the title: this is not advice on what to do when one is confused, it is an attempt (a short essay) to dispel the confusion about the escape key and escape codes that yesterday's piece in the New York Times (Who Made The Escape Key) may have created. The key source of confusion is well expressed by a reader on the comments:
isaac32767, Portland, OR, wrote:

Bob Bemer invented the Escape *code* (or character), not the key. He contributed a number of special codes to ASCII, a standard way to encode common characters. Ironically, Bemer worked for IBM, the very last major computer company to adopt ASCII. On communications terminals (which were originally designed to talk to other terminals, not computers), the escape character means “the following sequence does not have its normal meaning.” It's used for things like changing the color of text. You could (still can) enter this character by typing Control-[, but an escape character was needed often enough to rate its own key on most terminals. Today's computer keyboards owe their design to these terminals.
The author of the New York Times piece, and the "expert" consulted, seem not to realize that the key originated at IBM because IBM was still using EBCDIC rather than ASCII to encode (associate numbers with) letters and other symbols. The keyboards for the IBM machines could not produce many ASCII character codes necessary to communicate with ASCII equipment. The "trick" was to reserve a character that would, as Isaac32767 says, mean "use the following numbers to produce an ASCII code" (as IBM describes in their manual for z/OS ). When the keyboard was used on ASCII computers, such as PCs, that function was no longer needed. I guess nobody ever needed to key in EBCDIC codes while working on ASCII machines, but do not know why not. In any case, the escape key was adopted as what I'd call a "soft break", used to get running programs to cancel an operation in progress without terminating the program.

One of the shortcomings of the article is that it omits mention other keys that all said "Stop what you’re doing. I need to take control." (the purported role of escape) to various degrees: break, pause and SysRq, and special key combinations like crtl-c (or ctrl-d, depending on the operating system) and ctrl-alt-del. As explained in various Wikipedia articles, SysRq (or System) got the attention of the machine at a very fundamental level, allowing one to actually switch the operating system one was using. It is not clear whether this is the same as calling for a boot loader and rebooting, or if there was some way to load more than one OS and switch back and forth. Break has its origins in the way telegraph keys function. ctrl-break and ctrl-c are now commonly used to stop a program that is running (particularly if one fears it will never terminate if left running). escape often has a similar function within an application, killing an operation or macro but not terminating the application.

As should be familiar to people needing to use characters from, say, foreign alphabets not assigned to keys on their keyboard (a challenge when traveling, for instance), the way to enter such *codes* on ASCII keyboards no longer relies on escape but now uses alt. For example, the way to enter escape is "alt+0 alt+2 alt+7 (holding alt down for the three strokes works at least as well). (in emacs, this would be M-027).

To summarize, escape was not another attention button, it was a special symbol meaning "consider the keyboard type to have changed for the following sequence of keystrokes." IBM put a key for it on their EBCDIC keyboards and left it on the PC keyboard when they introduced the PC; application programmers adopted it as soft break in the ASCII environment.



Note: Lotus 1-2-3 and Lotus Symphony had a way of entering escape sequences putting the ASCII code between braces.  Escape, which one might need to invoke in a macro but could not key in directly, was {027}.

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?