Keybinding Design: Dedicated keys, Special Buttons, Extra Keys

, , …,

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 (⁖ a b c, 1 2 3, ! @ # etc.), special function keys (⁖ {F1, F2, ⇞ Page △, ⇟ Page ▽, …}), specialized buttons (such as those buttons and knobs of multimedia keyboards). Then, there's also several key software systems, those from OS (⁖ 【❖ Win+e】, 【❖ Win+l】, …), 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's few thoughts from my experience i learned in recent months.

Button-Styled Keys Are a Pain

app keys2
Special Buttons on Microsoft Wireless Natural Multimedia keyboard

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:

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:

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 (⁖ home row keys are easier than F keys; 【Alt+a】 is easier than 【Ctrl+a】), as well key physical type (⁖ 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:

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 【⌘ Cmd+z】 for undo and 【⌘ Cmd+⇧ 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 【❖ Win+‹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. 〔☛ Keyboard Hardware Design Flaws〕 The PC 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. 〔☛ Keyboard Hardware's Influence on Keybinding Design (How Emacs & vi keys came to be)

I find that, given today's PC 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+⇟ Page ▽】) 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's 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's 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 (⁖ F1, F12, Ins Del, ↖ Home, ↘ End, ⇞ Page △, ⇟ Page ▽, PrtScn, ScrLk, Pause, …), when these are used up, you are forced to use a combo, involving modifiers {Alt, ❖ Win, Ctrl, ⇧ Shift, ⌘ Cmd}.

I've realized, that singe 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. (⁖ 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: Ultimate Xah Keyboard Layout)

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'd want to have lots of dedicated keys, even if some keys may be used infrequently. You don't want key combos.

Sharp cash register er a510
Cash Register machine. All single-keys for functions. img src

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's a list of keypads and keystrips you can buy. Add Extra Function Keys to Your Keyboard

Using Numeric Keypad as Function Keys

See: Computer Keyboard: Using Numeric Keypad as Function Keys

blog comments powered by Disqus