Control-C to copy. Control-V to paste. Control-X to cut. Proficient PC users know about these and other keyboard shortcuts for Windows. Ever wonder about the history behind them?
First, IBM came up with the Systems Application Architecture. That’s right; IBM, not Microsoft. In 1987, IBM was the sheriff in town, with Microsoft playing second fiddle. (At the first meeting between IBM representatives and Microsoft, Bill Gates was mistaken for the office assistant.) The purpose of the SAA project was given as:
During 1987 IBM introduces Systems Application Architecture, which is designed to make application programs look and work in the same manner across the entire range of the company’s personal computing systems, midrange processors and System/370 processors.
This was most ambitious. The Macintosh had been introduced three years earlier. The Amiga and the Atari ST came out a year after that. User friendly was the buzzword du jour throughout the IT sector and Big Blue was looking stodgy.
Nobody ever accused mainframes of being easy to use. IBM had to play catch-up. But, unlike the upstarts, they couldn’t start from stratch; they had to adapt decades-old software that ran on MVS, VM/CMS, and OS/400 in addition to the then-brand new OS/2. This meant that IBM had, as an explicit design goal, “a common user interface for the entire IBM product line. A user who sits down at a PC should see the same menus, keyboards and procedures that he would at a 3270 terminal.”
Here is what a 3270 terminal looked like. Remember that old school ASCII terminals did not have mice. Keeping all of this in mind, note that IBM wanted to make a user interface that would work the same on both those terminals and top-of-the-line 386 personal computers. Naturally, they made some compromises.
You Put a Keyboard Interface in My GUI!
When people think of the CUA user interface (those who even recognize the acronym, that is) they think of keyboard shortcuts like Ctrl-C, Ctrl-V, and so forth. The actual CUA standard, however, specified both a keyboard interface and a graphical user interface. The specification for the graphical user interface included descriptions of the appearance and behavior of such user interface elements as menus, buttons, dialog boxes, and the like. As the CUA standard was updated, the graphical standard was changed to reflect a more “object oriented” model of software design.
Mainframe terminals did not have mice and they could not support bit-mapped graphics, besides. But they definitely had keyboards. The keyboard interface served as the common denominator for CUA applications whether they ran on mainframes, minicomputers, or microcomputers. This led to the design goal of having all operations being accesible by both mouse and keyboard.
You can see this for yourself in Windows. Press the F10 key and you will see the menu bar activate. You can also activate a menu by pressing the Alt key and the underlined letter of the respective menu that you want to access. The F6 key cycles the focus between different panes of the current window. To select text, press the Shift key while using any cursor-control sequence. Try them; they work.
Where Microsoft Comes In
The CUA standard mentions OS/2 but it doesn’t mention Microsoft Windows. Yet, here we are, using those keybindings. Earlier, I mentioned that Microsoft was the Sauron to IBM’s Morgoth. IBM and Microsoft jointly developed the first three releases of OS/2 (versions 1.0, 1.1, and 1.2). OS/2 had to conform to CUA, so Microsoft picked it up from IBM. By the Joint Development Agreement between the two companies, each had access to much of the source code of the other. That’s how CUA got into Windows. In 1990, Windows 3.0 became a phenomenal success, which contributed to the break-up between Big Blue and Chairman Bill. By then, CUA conventions were firmly rooted in the design of Windows.
Aside from IBM and Microsoft, the only fully CUA-compliant user interface is the Common Desktop Environment. Until Linux took off, the CDE was the graphical user interface for Unix, at least commercial Unix. It was also the graphical user interface for OpenVMS. Unlike Microsoft Windows, the CDE implements both the graphical and keyboard parts of the CUA, perhaps the only environment aside from OS/2 to do so.
Between those familiar with CUA keyboard shortcuts on Windows and those migrating from commercial flavors of Unix, the developers of GNOME and KDE on Linux were all but forced to adopt most of those same keybindings themselves. I remember Linux geeks on Slashdot in the 1990s being chastened when they realized that Windows 95 had more extensive and consistent keyboard shortcuts than their favorite desktop environment of the month.
Be aware that, although CUA keyboard shortcuts are de facto standards for Linux graphical user interfaces, they have made no inroads into the Linux command line or text-only programs. In those situations, Emacs- and Vim-style bindings are much more common.
It is worth your while to master the keybindings of the Common User Access standard. This skill will serve you well whether you use Microsoft Windows or Linux. You may even find them helpful if you ever ride the big iron. You can subscribe to John Cook’s ShortCut Twitter feed to get regular reminders of individual shortcuts. More complete lists of keyboard shortcuts are available at WikiPedia and Microsoft.