History of Key Shortcuts: Emacs, vim, WASD
Keyboard Influence on Key Shortcut Design
In my study of keyboarding in the past 20 years, i've noticed that the choices of many shortcuts in many apps are adopted to the many aspects of the keyboard hardware of the time in use by the community. Emacs's keybinding is not simply based on the first letter of commands, but the QWERTY layout's key positions have significant influence on it. This also applies to the letter choice of unix's shell commands. Much of this influences of design are unconscious.
Emacs Meta and Control
As a example, emacs's Meta key, and heavy use of Ctrl as primary modifier, and avoiding any Ctrl+Shift+letter in its keyboard shortcuts, are caused by the lisp keyboard hardware and dumb terminals of 1980s. 〔see Emacs: One Thousand Default Keybinding〕
〔see Lisp Machine Keyboards ⌨〕
How did emacs's cursor movement keys {C-n, C-p, C-f, C-b} came about?
… At the time [1976] Guy Steele put together the Emacs default key mappings, many people in the target user community (about 20 people at MIT!) were already using these key bindings. It would have been hard to get the new Emacs bindings accepted by the community if they differed for such basic commands. As you point out, anyone using Emacs can very easily change this based on their own ergonomic preferences.
Why emacs doesn't have any Control+Shift+letter key?
Because, in terminal, Control+Shift+letter has the same signal as Control+letter.
See also:
History of vi Keys
Terminal Keys
Many of the text terminal keys in Linux we are familiar today, are not keyboard shortcuts or keybindings proper. They are simply input method for ASCII control characters. 〔see ASCII Characters〕
For example, Ctrl+d exits the terminal, but only if the cursor is at the beginning of the prompt, because Ctrl+d is actually the input for sending the ASCII Control character “End Of Transmission” . 〔see Linux: Terminal Control Sequence Keys〕
Gamers WASD Keys History
The X C V for Cut Copy Paste
Windows's PrtScn/SysRq for Screenshot
Conclusion?
If there's any conclusion, it is that many keyboard shortcut or hotkey choices are based on what is practical at the time. Issues of logical design, ergonomics, consistency, efficiency, are less important. Some of these concept didn't even exist at the time, and some choice was good at the time but computer systems and hardware and keyboard all have changed.
In retrospect, many of the choices are not the best today. For example, QWERTY layout was practical at the time, but the Dvorak Layout was invented too late, when convention was already established, and concept of keyboard ergonomics may not even exist. But typing on computer is done by everyone today, for chatting, emails, all sorts of communication, and programing has become a field that's some million times more than the number of typists 40 years ago.
〔see Dvorak Keyboard Layout〕
Emacs's primary modifier the Ctrl is much better at the Alt position on today's PC keyboards.
“vi”'s Escape might be better today at PC keyboard's Alt or CapsLock positions. vi's {h j k l} is still pretty good, but {i j k l} is equally efficient but more intuitive. 〔see Arrow Keys: vim HJKL vs Inverted T〕
The way CapsLock work should be deprecated. It should work as a key to capitalize the next letter key press. (not as a “lock”) This way, Shift can be entirely removed.
Any modifier keys such as {Shift, ❖ Window, etc} should be deprecated. Instead, they should just be special keys, as starting key for a key sequence to call commands. (like how Microsoft Windows's Alt key works (from about Windows 95 to Windows 7).) 〔see Ban Key Chords〕
The defunct keys: Insert, PrintScreen, ScrollLock, Pause, Break, really should be gone. 〔see Print Screen, SysRq, ScrLk, Pause, Break Keys〕 The NumLock on the number keypad also is a relic, from a time long past that keyboards don't have dedicate arrow keys and Page up/down Home/End etc keys.
Today, there needs to be keys to change sound level, play/pause music, next/previous song. Luckily, these have been on most keyboards since about mid 2000s, just that they have not been standardized in layout. Similarly, there needs keys to launch frequently used apps such as email, web browser. These have also been widely popular in keyboards. There needs to be keys to switch to previous next app/window/tab. Also needed is dedicated keys for {copy, cut, paste, undo, redo}. These are used in about every application on a hourly basis. Major keyboard makers Microsoft and Logitech have started to make keyboards with these functions pre-assigned to the F1 to F12 Function keys. However, it creates problems because these function keys already have uses in many applications, especially for programers. Microsoft also introduced the F-Lock key to toggle the purpose of the F function keys, but that created more problem than is worth. 〔see The F-Lock Key Problem〕
2013-07-17 addendum: Hacker News discussion. https://news.ycombinator.com/item?id=6056420
2013-07-29 thanks to Liam Proven (https://x.com/lproven) for correction on Apple keyboard photo used.
2017-05-18 addendum: Hacker News discussion. https://news.ycombinator.com/item?id=14367207
Keybinding and Input-System
- Why Alt Tab is Bad
- How Many Shortcuts Are There
- Emacs vs vim, Keybinding Efficiency
- vim HJKL vs IJKL
- Gamers WASD Keys
- Design of vim Mode Activation Key
- History of Key Shortcuts: Emacs, vim, WASD
- History of vi Keys
- Muscle Memory vs Mnemonics
- Ctrl ❌
Ban Key Combos - Ban Shift Key
- Function Key vs Key Chord
- Fast-repeat vs Non-fast-repeat Keys
- Modifier Keys Usage Frequency
- Keyboard Shortcut vs Launch Buttons
- Best Way to Insert Parenthesis/Brackets
- Math Input Design
- Create Math APL Keyboard Layout
- Linux Mac Windows, Which is Best for Keybinding?
- Dual-Function Keys (Home Row Mods)
- Xah Shorthand System (Abbrev Input)