Xah Lee, , …,
In Emacs, there's a command describe-bindings 【F1 b】. By default, there are a total of 1353 bindings. In this page, let's look at what they are. (you can get the list by calling describe-bindings in emacs, or see this file: gnu_emacs_keybinding.txt.)
Many of the bindings refer to keys on lisp machine keyboard. So, here's a photo of lisp keyboard for reference.
(For more photos of Lisp Machine keyboards, see: Space-cadet Keyboard and Other Lisp Keyboards.)
The result of describe-bindings has 137 bindings starting with the notation A-. Here's a sample:
A-/ Prefix Command A-1 Prefix Command A-3 Prefix Command A-< « A-= ¯ A-> » A-? ¿ A-C ©
Their purpose is to input non-ASCII characters.
Note that the A- does not refer to modern keyboard's Alt key. I think the A- binds may refer to lisp keyboard's key labeled Alt Mode, or perhaps the Alt Graph key, usually labeled AltGr. It doesn't exist on most keyboard, except on Sun Microsystem's “Type 6” Keyboard. (some PC keyboard made for Europe may have AltGr key, but i think that just send the same scancode as right Alt key. The Alt Graph functionality is mostly done completely in software today.)
As far as i know, these are relic bindings, and does not seem to serve any actual purpose in emacs today. If you want to insert Unicode symbols, see the 【Ctrl+x 8】 binding below.
(Sidenote: on the Mac, the ⌥ Opt key serve the same purpose as AltGr. (➲ Mac OS X Keyboard Viewer and Unicode) On Windows, the right Alt becomes AltGr if you set your keyboard layout to one of European layouts.)
There are 226 bindings with the notation of dead- in it. e.g.
<S-dead-acute> Prefix Command <dead-acute> Prefix Command <S-dead-tilde> A Ã <S-dead-asciitilde> A Ã <dead-tilde> A Ã <S-dead-grave> A À <dead-grave> A À <S-dead-circumflex> 1 ¹ <S-dead-circum> 1 ¹ <S-dead-asciicircum> 1 ¹ <dead-circumflex> 1 ¹ <dead-circum> 1 ¹ <dead-asciicircum> 1 ¹ <S-dead-acute> A Á <dead-acute> A Á <S-dead-diaeresis> A Ä <dead-diaeresis> A Ä
These are binding for Dead key for entering chars with Diacritic marks. A dead key is a modifier key similar in concept to Alt Graph key, except that it doesn't produce a char until another key is pressed.
I haven't seen any keyboard that actually have a physical Dead Key. Perhaps today it's mostly just a concept. For example, on the Mac, 【⌥ Opt+e】 is a dead key. It adds the acute mark to any letter typed after.
Here's example of letters with diacritic and their names.
Note that the S- is the notation for the Shift key. So, <S-dead-tilde> A would be something like 【Shift+dead+~ A】.
There's also 70 keys with the notation of mute-, similar to the “dead” above. Not sure what they are.
(Thanks to Frédéric Perrin and Jason Rummey for help.)
(For some notes about accent marks, see: Diacritics: Trema, Umlaut, Macron, Circumflex, and All That.)
There are about 1k bindings left after discounting the above.
There are 140 bindings for C-x 8.
Sample:
C-x 8 < « C-x 8 = ¯ C-x 8 > » C-x 8 ? ¿ C-x 8 C © C-x 8 L £ C-x 8 P ¶ C-x 8 R ® C-x 8 S § C-x 8 Y ¥ C-x 8 ^ Prefix Command
These are for inputting special symbols that we can actually use within emacs today — without using operating system's AltGr mechanism. (➲ Emacs and Unicode Tips)
There are 48 keys with <help> notation. Example:
<help> help-command C-h <help> help-for-help <f1> <help> help-for-help <help> C-a about-emacs <help> C-c describe-copying <help> C-d view-emacs-debugging <help> C-e view-external-packages <help> C-f view-emacs-FAQ … <help> i info <help> k describe-key <help> l view-lossage <help> m describe-mode
The Help is a key on lisp keyboard, but also on many other keyboards, including NeXT Machine, Sun Microsystem's Keyboard, and older Apple keyboard. See: Source www.pfu.fujitsu.com.
Then there are 48 keys with <f1> notation. Example:
<f1> help-command C-h <f1> help-for-help <f1> C-a about-emacs <f1> C-c describe-copying <f1> C-d view-emacs-debugging <f1> C-e view-external-packages <f1> C-f view-emacs-FAQ … <f1> i info <f1> k describe-key <f1> l view-lossage <f1> m describe-mode
There are also 48 keys with C-h notation.
C-h help-command <C-home> beginning-of-buffer C-h C-a about-emacs C-h C-c describe-copying C-h C-d view-emacs-debugging C-h C-e view-external-packages C-h C-f view-emacs-FAQ … C-h i info C-h k describe-key C-h l view-lossage C-h m describe-mode
All these are equivalent maps. (That is: F1 = Help = 【Ctrl+x】) It's interesting to note that these do not seem to be key translations. Instead, each binding is defined explicitly in each set.
Here's the file: gnu_emacs_keybinding_C-x.txt.
There are 204 with the C-x notation. Example:
C-x C-@ pop-global-mark C-x C-b list-buffers C-x C-c save-buffers-kill-terminal C-x C-d list-directory C-x C-e eval-last-sexp C-x C-f find-file C-x TAB indent-rigidly … C-x $ set-selective-display C-x ' expand-abbrev C-x ( kmacro-start-macro C-x ) kmacro-end-macro C-x * calc-dispatch C-x + balance-windows C-x - shrink-window-if-larger-than-buffer C-x . set-fill-prefix C-x 0 delete-window C-x 1 delete-other-windows C-x 2 split-window-vertically … C-x a Prefix Command C-x b switch-to-buffer C-x d dired C-x e kmacro-end-and-call-macro C-x f set-fill-column C-x h mark-whole-buffer … C-x <C-left> previous-buffer C-x <C-right> next-buffer C-x <left> previous-buffer C-x <right> next-buffer C-x C-k C-a kmacro-add-counter C-x C-k C-c kmacro-set-counter C-x C-k C-d kmacro-delete-ring-head C-x C-k C-e kmacro-edit-macro-repeat C-x C-k C-f kmacro-set-format …
These are Ctrl combo keys. We use these daily.
There are 38 keys for view-mode. They are almost all single symbol keys. Example:
0 .. 9 digit-argument < beginning-of-buffer = what-line > end-of-buffer ? describe-mode @ View-back-to-mark C View-kill-and-leave E View-exit-and-edit F View-revert-buffer-scroll-page-forward H describe-mode Q View-quit-all
There are 36 bindings with notation C-M-. Example:
<C-M-down> down-list <C-M-end> end-of-defun <C-M-home> beginning-of-defun <C-M-left> backward-sexp <C-M-right> forward-sexp <C-M-up> backward-up-list C-M-@ mark-sexp C-M-a beginning-of-defun C-M-b backward-sexp C-M-c exit-recursive-edit C-M-d down-list C-M-j indent-new-comment-line C-M-k kill-sexp
These are designed to navigate/edit lisp code. (➲ How to Edit Lisp Code with Emacs)
Note the M- is the syntax for Meta key. It is a key on Lisp keyboards. Today, by default, the Alt key on PC keyboards is interpreted as Meta.
There are 56 bindings for the keys on the numberical keypad. They have notation kp-. Example:
<C-S-kp-1> <C-S-end> <C-S-kp-2> <C-S-down> <C-S-kp-3> <C-S-next> … <M-kp-next> <M-next> <S-kp-down> <S-down> <S-kp-end> <S-end> <S-kp-home> <S-home> <S-kp-left> <S-left> <S-kp-next> <S-next> … <kp-0> 0 <kp-1> 1 <kp-2> 2 … <kp-add> + <kp-decimal> . <kp-delete> C-d <kp-divide> / <kp-down> <down> <kp-end> <end>
All these are key translations. They do not do anything special.
For example, keypad 0 is the same as the 0 key on the main typing area.
So, the code <kp-0> translates to 0.
When Num Lock is off, the 4 key on numpad is the ← key. So, the code <S-kp-left> (which means holding down Shift then pressing the ← on the numpad) simply translates to
<S-left>.
Now, there are 300+ bindings left.
98 of them are Meta keys with the notation M-.
105 of them are Ctrl keys with the notation C-.
20 of them are Esc keys with the notation ESC.
Some of the Ctrl definitions is Ctrl with mouse button.
Now, there about 100 bindings left.
Here's the file: gnu_emacs_keybinding_rest.txt.
Some keys interesting are these:
<again> repeat-complex-command <begin> beginning-of-buffer <compose-last-chars> compose-last-chars <copy> clipboard-kill-ring-save <cut> clipboard-kill-region <delete-frame> handle-delete-frame <deletechar> delete-char <deleteline> kill-line <escape> ESC <linefeed> C-j <execute> execute-extended-command <f16> clipboard-kill-ring-save <f18> clipboard-yank <f20> clipboard-kill-region <find> search-forward <header-line> Prefix Command <iconify-frame> ignore-event <insertchar> overwrite-mode <insertline> open-line <language-change> ignore <left-fringe> Prefix Command <lwindow> ignore <make-frame-visible> ignore-event <menu> execute-extended-command <mode-line> Prefix Command <select-window> handle-select-window <switch-frame> handle-switch-frame
I think most of these are actual physical keys that exist in some keyboards in the past. You can still see some of these keys on Sun Microsystem's keyboard. (alas, Sun just died a year ago.) For photo of Sun keyboard, see: Sun Microsystem's “Type 6” Keyboard.
Curiously, there's no definition for Super s- and Hyper H- keys. These are the other prominent keys on lisp keyboard other than Meta M-.
(➲ Emacs: How to define Super & Hyper Keys)