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 are often repeatedly called within a second. For example, moving cursor by character/word, delete by character/word, page up/down, switch to prev/next tab or window, undo, redo, increase/decrease font size, zoom in/out, close tab. Typically you hold down a key to repeat the command many times.
- Non-repeat commands
-
Commands that don't make sense to repeat.
Vast majority of commands are this type.
For example, copy, cut, open file, start find text,
show help,
open folder, launch browser, launch any app, start terminal, turn on bluetooth, start playing video, pause video, next song, etc.
Emacs examples:
describe-function
,list-matching-lines
,sort-lines
,kill-buffer
,switch-to-buffer
,dired
, etc.
Fast-Repeat Need Repeatable Key Shortcuts
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 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)