Keyboard Shortcut vs Launch Buttons
This article discusses computer keyboard keys and design of keyboard shortcut system. This article is written for programers, emacs users, heavy gamers.
I spent a few hours obsessing with key shortcut design again. Re-organizing my 100+ shortcut keys among applications, re-wrote and organized my AutoHotkey scripts, created a page of AutoHotkey example scripts: AutoHotkey Example Scripts, much time spend on thinking about the shortcut design.
For example, in a keyboard shortcut system, there are issues of global keyset, and keyset local to applications, and there are standard typing oriented keys (e.g. a b c, 1 2 3, ! @ # etc.), special function keys (e.g. {F1, F2, PageUp, PageDown, etc}), specialized buttons (such as those buttons and knobs of multimedia keyboards). Then, there's also several key software systems, those from OS (e.g. ❖ Window+e, ❖ Window+l, etc), and keyboard driver, and specialized macro/launch software, and some are ah-hoc from Microsoft Windows Registry. The whole thing is a very complex. (bringing in other OSes, Mac OS X, Classic Mac, Linux, X11, makes it more complex)
Here is few thoughts from my experience i learned in recent months.
Button-Styled Keys Are a Pain
Those special buttons on keyboards, such as those multimedia keys on The Microsoft Natural Ergonomic Keyboard 4000, are a pain to use. They lack tactile feedback.
For example, consider these tasks:
- Switching to next/previous tab in a browser.
- Switch next/previous window.
- Increase sound-level.
A hotkey for these tasks are used many times per hour, and often needs to be pressed multiple times quickly within a second. For a key that needs to be pressed frequently or repeatedly, you should not assign them to those button-styled keys.
The problem of button-styled keys are:
- Hard to locate without looking.
- Takes much more pressure to press.
- Hard to know if you pressed them successfully.
- Feels bad on your finger like ramming into concrete.
I thought of using these special buttons for application-specific functions. Because they stand out as a set of special buttons. For example, the 5 “My Favorites” buttons in the Microsoft 4000 keyboard can have different purposes depending if i'm in a web browser, Second Life viewer, in Emacs, or in folder viewer in desktop. But after a while, i discovered that this is not a good approach due to these button's hard-to-use factor. Because, if the function is frequently used, then pressing these keys is inconvenient, as compared to function keys such as F5.
Most Important Principle: Map Most-Frequently-Used Commands to Most Easy-To-Press Keys
Another experience i gained in the past few months is that, you really want the most frequently used commands to be at the most easy-to-use keys, even if that means breaking certain consistency.
When designing a system of what functions get mapped to which keys, one of the aspect to consider is to put the most frequently needed functionality to the most easy-to-press keys. Easy-to-press here considers key position (e.g. home row keys are easier than F keys; Alt+a is easier than Ctrl+a), as well key physical type (e.g. button styled keys are bad), and also single key or key combination (a is easier than Ctrl+a or Ctrl+Alt+a). For a example of this design principle, see: ErgoEmacs Keybinding .
However, there are other considerations. For example, consistency. For example, you might have all F keys for one of the following group of tasks:
- All F keys are for launching applications.
- All F keys are for global system-wide purposes.
- All F keys are application specific.
- All F keys are related to manipulating window or app (e.g. launch/switch to a app, changing window size, hide app, close window … etc.)
The F keys in the above examples could be another set, such as all Alt+number set, or all Alt+letter keys, or keys on the numeric keypad as a set. Or, perhaps you might think that all Alt+Ctrl+letter space should be for a particular family of related purposes. Or, all keys involving the Tab should be related to having some next/previous concept, such as switching to input fields or switching applications. Or, all keys involving the Shift modifier should mean reverse the functionality, such as ⌘ command+z for undo and ⌘ command+Shift+z for redo on the Mac as well in many applications in Windows and Linux. There are really quite a lot of such design approaches about key set consistency.
Consistency is important because they make the keys easier to remember. NOT!
I realized, that in my 20 years of keyboarding obsession, that you can pretty much throw all these thoughts out of the window. The above design approaches are not practical, because there are too many conflicting criteria for consistency, and the other aspects are often more important.
For example, let's say you put all F keys to launch apps. However, most people only use few applications daily, not 12. So half of the F key spots would be wasted. But suppose you did put all 12 F keys to launch 12 apps. Now, what you gonna do with Alt+Fkey? Should it all be system wide, or they should all be app specific, or should they all be related to manipulating windows, or should they all be related to navigation? … Once you decided a consistent scheme for Alt+Fkey, then what about Alt+letter keys? What consistency scheme can you assign to that? Then what about Ctrl+Fkey set? or ❖ Window+Fkey set? Then what about 2-modifier combinations? You can see that your consistency scheme can be only consistent to some artificial degree, yet making a lot sacrifice to key spots and practical uses.
Part of the reason is because that the keyboard hardware itself is badly designed. 〔see Keyboard Design Flaws〕 The computer keyboard we use are evolved from typewriter machines and computers of 1960s and 1980s, and it evolved very slowly. It is nothing of a coherent design. Similarly, computer software, their interface, also evolved, but changing much faster than keyboard hardware changes. The shortcuts we have today are much result of this rather incoherent co-evolution. 〔see History of Key Shortcuts: Emacs, vim, WASD〕
I find that, given today's computer keyboard and the software applications, the most critical principle is simply to put the most frequently needed functionality to be the most easy-to-press keys. This is more important than maintaining consistency
Single Key is Much Better than Key Combinations
Also, i found, that the advantage of single key shortcut over combo keys is much more significant than i thought.
For example, say that F6 is launching the Firefox browser. I use 3 browsers daily, because i am a web developer. I might think, that F6 launches Firefox, and Ctrl+F6 launches Microsoft's browser, and Alt+F6 launches Google Chrome web browser. The idea is that the F6 is always associated with launching a browser. This keeps all the hotkeys consistent and easier to remember. My experience tells me that, if these functions are needed frequently (say, even just once per 10 min on average), then, single key hotkeys is much more important than consistency. (So, here it would be better to have F6, F7, F8, to launch each browser.)
The logical analysis of this experience seems to be that, some consistency in hotkey placement is important when learning the hotkey spot initially, but you need to actually press these days daily and repeatedly, for years. Once you learned, it's part of the muscle memory. Over all, it is more important that the repeated operation be convenient. This advantage is more important than the slight disadvantage in initial learning of key position.
There are many other examples of this. For example, i have a hotkey that allows me to switch next tabs in all different browsers. (by default, IE, Firefox, Opera, Chrome, do not all have the same hotkey for switching to next tab. It's either Ctrl+Tab or Ctrl+PageDown) So, suppose i decided i want Alt+l vs F8 for this function. Alt+l (that's lowercase L) has the slight advantage that it is under home row, but 2 keys. F8 is just a single key, but with slight disadvantage that user needs to move hand a bit to reach it. Before, my thought on this is that there is no significant advantage of one over the other in general. But now i think the single key choice is definitely better. How much better the single key choice is proportional to how frequently this hotkey needs to be pressed.
Problem with Combo Keys
More than 95% hotkeys in any app in Windows or Mac or Linux are all combo keys. This is because there are only a handful of single keys (e.g. F1, F12, Ins Del, Home, End, PageUp, PageDown, PrintScreen, ScrollLock, Pause, etc), when these are used up, you are forced to use a combo, involving modifiers {Alt, ❖ Window, Ctrl, Shift, ⌘ command}.
I've realized, that single key is much more advantageous.
The problem with combo keys is that, with so many apps that we need to use today, the combo keys quickly become confusing, and become hard to remember, and they are much less ergonomic.
My keyboard the Microsoft ergo 4000 has 18 extra special buttons. They are all used up by me, with custom functions, and is NOT ENOUGH.
I think a scientific study can confirm this. If you survey computer users, say college educated adults so we exclude dumb old grand parents, i think you'll find that most don't know or use or care about the vast majority of combo shortcuts, except maybe a few critical ones that are frequently used. (e.g. copy, paste, undo.)
If we were to redesign keyboard, it'd be a good design to have 10 more function keys. For example, besides 12 F keys, another 12 named G1 to G12 key, and another set H1 to H12. Common functions, such as Help, Undo, Redo, Copy, Cut, Paste, New, Open, Close, Save, Print, must all have a single dedicated key with proper labels on them. Also, several special pairs of keys for prev/next Window/Tab, and pre/next field. A dedicated key that toggles max/min window. (for such a design, see: Xah No Chord Keyboard )
Have you seen those Cash register machines at local store? They have several array of keys. I think the design of such machine makes the point. If the key needs to be used repeatedly, you want to have lots of dedicated keys, even if some keys may be used infrequently. You don't want key combos.
Another example that probably supports this idea is the design of airplane cockpit's controls. You see a whole lots of buttons and knobs and controls. Some may be rarely used. But you don't operate them by holding this knob and pushing that key. (unless it's designed to prevent accidental activation)
Add Dedicated Keys to Your Computer
Here is a list of programable keypads you can buy.
Using Numeric Keypad as Function Keys
If you have a full-sized keyboard, you can set your number pad keys as function keys.
See: How to Program Number Keypad as Function Keys
Keybinding and Input-System
- Why Alt Tab is Bad for Switching Windows
- 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)