ErgoEmacs Keybinding: a Ergonomics Based Keyboard Shortcut System
ergoemacs-mode's home page is moved to https://ergoemacs.github.io/, now lead by Matthew L Fidler 〔https://github.com/mattfidler〕. The page you are reading here is kept for history.
Emacs's default keybindings are very ergonomically painful, for several reasons. (For detail, see: Why Emacs's Keyboard Shortcuts are Painful.) This page shows a emacs package that makes your emacs use a new shortcut set. This shortcut set is designed based on ergonomic principles, based on emacs's command call statistics, similar to how Dvorak Layout is designed.
IMPORTANT: Note: in the dev version, the isearch is moved from 【Alt+;】 to 【Alt+y】. Cancel command is moved from 【Alt+n】 to 【Esc】.
||←||→|||beginning/ending of line|
|⌫w||⌦w||delete prev/next word|
||⌫||⌦|||delete to beginning/end of line|
||◀||▶|||beginning/end of file|
Layout image with Dvorak key labels: ErgoEmacs Keybinding Dvorak.
• Dev version from MELPA, using emacs 24 package system. Just call
list-packages to install. 〔➤ Emacs: How to Install Packages Using ELPA, MELPA〕. (Thanks to Steve Purcell)
- ergoemacs-keybindings-5.3.9.zip (Released on , tested with emacs 23.2.1.)
- ergoemacs-keybindings-5.3.7.zip (Released on , tested with emacs 23.2.1.)
These older versions are provided for whatever reasons people might want them. You shouldn't use it unless you have good reasons.
- The 4.3.x versions are simple settings of global keymap, not a minor mode.
- The 5.3.x or later is a minor mode.
- Version since has a complete new key engine.
for documentation, see https://ergoemacs.github.io/.
the best place to ask questions is at https://groups.google.com/group/ergoemacs
If you sure think there's a bug, report it at https://code.google.com/p/ergoemacs/issues/list
Here's the outline of how this design is arrived.
Statistics of emacs commands are compiled from emacs users, and are listed by frequency of use. The top about 30 ones, are given a keyboard shortcut.
To assign the key position, the following rules are used. The rules are listed roughly in order of priority:
- Home row keys are the best.
- 2nd and 3rd fingers (pointing finger and index finger) are better than 4th (ring finger) and 5th finger (pinky).
- The row above home row is considered better than the row below home row for 2nd and 3rd fingers. (for 5th finger the row below is considered better.)
- Right hand's keys are considered better than left hand's keys. (because most people are right handed)
- Alt is considered better than Ctrl. (Alt is a natural thumb curl, Ctrl is stretched pinky. Thumb is most powerful finger, pinkie the weakest)
- In general, cursor moving commands are placed all for the right hand, while text changing commands are all placed for the left hand. (grouping advantage)
- Similar commands should be grouped together to avoid scattering. For example, cursor moving by single char is together (I J K L). Undo, Cut, Copy, Paste are together (Z X C V). Delete char/word left/right are together (E R D F).
- Commands with logical reversal or extension are done with ⇧ Shift key, after other priorities are considered. Examples: Undo/Redo, move cursor to previous/next pane, find replace by string/regex, isearch forward/backward, move cursor by beginning/ending of line. Delete line to the right/left.
The design is based on finger positions, not on first letter of command names. The shortcut set is the same for QWERTY and Dvorak. The ease of remembering what commands are on what keys are based on grouping and positioning. For example, cursor movings are all right hand, text changing are all left hand, moving or deleting to the left/right have keys that are place left and right together, and similar for up/down (by screen or to beginning/end of file). Undo, Cut, Copy, Paste are the familiar row Z X C V.
In this design, only the 【Alt+‹key›】 space is used. Some Alt+⇧ Shift is used too. 【Ctrl+‹key›】 space is not used except 7 standard keybindings (Open, Close, Save, Save As, Print, Select All). The operation and consistency of emacs is not affected.
ErgoEmacs Keybinding Features
Testimonial for ErgoEmacs Keybinding
System-wide ErgoEmacs Keybinding for Windows, Mac, Bash
David Capello rewrote this package into a full-featured minor-mode starting with version 5.0.0. ().
Matthew L Fidler did complete rewrite of the key engine, starting with version 5.6.1 (). Huge number of features are added. Matthew is the current maintainer.
Thanks to many people who helped in code snippets or suggestions, including providing versions for different keyboard layouts (⁖ UK, Italian, Swedish, Danish, …). Please see the package's header for a full list.
- Emacs's Default Keyboard Shortcut Layout
- Why Emacs's Keyboard Shortcuts are Painful
- Emacs Commands Frequency
- Emacs: How to Define Keys
- Dvorak Keyboard Layout
- Modifier key, Table of keyboard shortcuts
- (info "(elisp) Keymaps")
- (info "(elisp) Character Type")
- (info "(elisp) Keyboard Events")
- (info "(elisp) Function Keys")