Keybinding Design, Fast-Repeat Commands
This page discuss one criterion on the design of keyboard shortcut system: Fast-repeat vs Non-fast-repeat Commands and Keys. This is for designing keybinding for any app that has a hundred commands, such as emacs, vi, 3D modeler, games.
Fast-repeat and Non-fast-repeat Commands
in my keyboarding research, there's a important discovery. Commands can be classified into 2 types:
- ① Fast-repeat commands. Commands that make sense to be repeated within a second. For example, moving cursor by {character, word}, delete by {char, word}, page {up, down}, switch to {prev, next} tab…. You can hold down a key or a key-chord to repeat the command many times.
- ② Non-repeat commands. This is vast majority. For example, open file, start search, list buffers, call a shell command, start shell, and more emacs commands:
describe-function
, abbrev expansion,list-matching-lines
,sort-lines
,kill-buffer
,switch-to-buffer
,dired
, ….
Fast-repeat and Non-fast-repeat Keys
Fast-repeat Commands must have keys that can be held down. Here are some examples of fast-repeat hotkeys: F8, t, PageDown, ↓, Ctrl+t, Ctrl+Alt+8.
Non-fast-repeat hotkeys are basically keys that involves a sequence: Ctrl+x 2, F8 F9.
So, when designing a keybinding system, one of the principle is for fast-repeat commands be on fast-repeat keys, else it's a waste. (because you only have a few precious easy-to-press key spots, yet you have hundreds commands.)
In GNU Emacs's default keybinding, there are many such wastes. For example, all Ctrl+number and Alt+number are bound to digit-argument
. The digit-argument
is a non-repeat command, yet it sits on 20 EASY repeatable keys. (further, digit-argument isn't a frequently needed command, with respect to all commands and the relatively few easy-key-spots.)
Another bad example is forward-page
【Ctrl+x ]】. forward-page
is a fast-repeat command, but it doesn't have a repeating key. Imagine, if every time you need to PageDown that you have to press Ctrl+x first. You couldn't just hold it down. Another example is next-buffer
with key Ctrl+x →.
But remember, this “Fast-repeat and Non-fast-repeat key” is only a supporting criterion in keybinding design. It is not the most important criterion. The single most important criterion in designing a keybinding system is that most frequently used commands be mapped to the most easy-to-press keys. See: Keyboard Shortcut vs Launch Buttons .
See also: Emacs: Xah Fly Keys
back to Keybinding Design ⌨
Keybinding and Input-System
- Why Alt Tab is No Good
- How Many Shortcuts Are There
- Emacs vs vim, Keybinding Efficiency
- vim HJKL vs IJKL
- Design of vim Mode Activation Key
- History of emacs/vi Keys
- 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 APL/Math Layout- Linux Mac Windows, Which is Best for Keybinding?
- Problem of Dual-Purpose Keys (home row mods)
- Xah Shorthand System