48

There was actually a pretty big push among some vendors in the 1980's to have a dedicated Help Key (conveniently labeled as Help). Atari introduced it in 1983, and kept it to the end. The Commodore Amiga had it from the A500 onward. I'm sure there are other vendors who tried. To my knowledge, the support for the dedicated Help Key in applications was kind of spotty.

But it was the F1 key that would become the defacto standard for quickly accessing a "Help" function, and which we still follow today. How did this standard become popularized?

  • 12
    It was part of IBM's CUA: en.wikipedia.org/wiki/Common_User_Access – Ross Ridge Jun 14 '18 at 14:09
  • 24
    Dumb anecdote: In the early 90's I had a really crappy job doing technical support for a cheap clone maker. We actually had multiple users call for assistance when presented with a dialog saying "press any key to continue". Apparently they were unsure which key was the "any key". Fortunately, the junk keyboards we were selling had a blank key next to the space bar so we happily told users that was the 'any key'. :-) – Geo... Jun 14 '18 at 14:26
  • 5
    Apple introduced a 'help' key on the Apple Extended Keyboard in 1987 where 'insert' goes on a full-size PC keyboard, and kept it there on full-size keyboards for 20 years. It never really seemed to do much though, presumably because Apple has usually preferred smaller keyboards by default. – Tommy Jun 14 '18 at 16:03
  • 3
    @Tommy Actually, if you use a standard PC keyboard with a Mac, it still calls Insert the Help key! – SilverWolf Jun 14 '18 at 23:04
  • 9
    @Tommy, I was studying computer science a the time and was actually taught that "press a key" is far better than "press any key", since there is no "any" key, but "a" key is. – Tero Lahtinen Jun 15 '18 at 8:21
50

While general purpose function keys are something that had already been introduced in the 60s by manufacturers like Friden (Flexowriter, 1965) or HP (9810A, 1971), it wasn't until IBM's 3270 that function keys were widely available. 3270 terminals are block-orientated, which means all keystrokes, thus all editing, are local. Only the whole screen can be sent back (*1). The PF (and PA) keys are an exception to this as they deliver short predefined messages directly to the mainframe (*2), allowing the (mainframe) program to respond directly to such a request.

When CICS (developed in the late 60s) added 3270 support (~1974), a help utility was added and by convention activated via PF1. Due to the asynchronous nature of PF key messages this enabled the addition of help information/screens to an existing application without modifying it (*3). Using PF1 became the de facto standard for mainframe applications, not just with IBM and CICS.

When the PC became available, many professional programs did follow the same practice, but it wasn't until 1987 when IBM published their Common User Access (CUA) guidelines as part of the Systems Application Architecture (SAA) standards, that F1 as Help became the 'official' standard.


*1 - Well, not entirely true as a terminal can be ordered to send back either the whole screen, all fields, only modified fields, or marked regions. But that's part of the high art of block terminal programming.

*2 - Sending a message to the host - no matter if it's a full screen or a function key - always generates an input interrupt requesting attention and delivering the data (when served). A PF key delivers only two bytes of information (plus some header) which makes transmission, moving and handling way faster than a whole screen.

*3 - CICS is a Transaction Monitor, something that PC developers might call an application framework - or a program/window manager, or even an operating system. It offers a backbone structure where individual programs are 'just' function modules loaded into this framework and executed upon messages from the monitor program - like incoming screen (user input), network messages, lost connection or the like. In fact, they might only get loaded on demand and unloaded after handling such a message.

Much like a window manager can handle certain UI functionality without activating a user program, CICS can offer to handle (some) function keys without activating any user module. Doing help screens is one of these offers.

10

As Ross Ridge mentioned in a comment, it was part of IBM's Common User Access guidelines. These guidelines were based in part on the behaviour of existing "killer apps" for PC - which at the time mostly meant office applications.

The spreadsheet software Lotus 1-2-3 used F1 for help from its first release in 1983, as can be seen in the manual available here, and in the four years between its release and IBM releasing the CUA would become the preeminent spreadsheet application (source).

  • 3
    Not realy. Most of the CUA was based arround the existing 3270/CICS world and rather adapted to PC use. It's goal was to provide similar handling all across IBM products. And lets be honest, it's way less work to tell new programs how to handle user input than to modify software already existign for decades :)) – Raffzahn Jun 14 '18 at 14:49
6

I was working as a programmer at WordPerfect in the late 80's and someone there decided to leave it where it had been on the DG machine and put the help key on the F3 key on the PC also. Microsoft put it on the F1 key in all their Windows products and it seemed everyone else followed suit. In later versions, WordPerfect also moved to the F1 key and I have not seen any deviations since. I always thought the F1 key made more sense.

  • 2
    This is just about an answer to the question. If you'd like to share your WordPerfect development stories I'd appreciate it if you could write a post or two for our much neglected blog. You might also find the tour interesting, if you want to get acquainted with the Stack Exchange model. – wizzwizz4 Jun 15 '18 at 18:52
3

In addition to the 3270 terminals described by Raffzahn, there were also the 5250 range. These were used by IBM's midrange systems: S/34, S/36, S/38, and AS/400. The AS/400 lives on today but has been through many name changes: iSeries, System i, and now IBM i (that list might not be complete).

They operated similarly to the 3270 terminals but they were not compatible. They were also block oriented. A typical screen contained a mix of literals, output fields, input fields, and both (input / output) fields. The user could only enter to the input or both fields. The data would only be sent to the host when Enter or one of a limited number of other keys was pressed. Depending on the key, all of the input data would be returned or just the event that the key had been pressed. The Enter key always sends the data. The function keys might or might not send the data at the programmer's choice. A few other keys would cause the screen to be submitted, these would either always send the data (e.g. page keys) or never send the data (help key). The reason that the help key did not send data is that sending triggered the simple local validation (e.g. required entry); if help triggered this then the user could not use help to find out why the data was invalid. An annoying consequence was that when you exited help, you found that all of you entries had been lost.

All (at least all that I know) 5250 terminals had dedicated Help keys. SSA / CUA came in between the S/3x models and the AS/400. Prior to that F1 was usually exit. After that, F3 became exit and F1 typically duplicated Help (but a mean programmer could define then differently).

The most primitive of these terminals that I have encountered was the 5251. Search for IBM 5251 for plenty of images. These were huge and very heavy. You could imagine driving a truck over them and they would survive. We used to nickname them "Russian TVs".

On the older devices, some keys were odd by today's standards. Enter was where the right Ctrl key is today. The key in the position of the modern Enter was Field Exit which cleared the remainder of the current field and moved to the next. It did not submit the screen to the host. Page Up and Page Down were Roll Down and Roll Up with Roll Down corresponding to Page Up and vice versa. The oldest models had no dedicated function keys. There was a single key called Cmd. You pressed this followed by 1 to 9 (not on the numeric pad) for F1 to F9. Note followed by not together as Shift, Alt, or Ctrl are typically used. F10 was Cmd and 0, F11 was Cmd and -, F12 was Cmd and =. F13 through F24 were similar to F1 to F12 but shifted the second key. So F16 was Cmd and Shift+4 and F24 was Cmd and Shift+=. This applied even on non-US keyboards where the shifted numeric keys might have different normal values. In these days, it was typical to call then command keys rather than function keys. Later terminals switched to a more modern style with a separate row of 12 keys labelled F1 to F12. Some had a second row for F13 to F24.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.