Keys
====
A "key sequence" ("key", for short) is a sequence of input events
that are meaningful as a unit--as "a single command." Some Emacs
command sequences are just one character or one event; for example,
just `C-f' is enough to move forward one character in the buffer. But
Emacs also has commands that take two or more events to invoke.
If a sequence of events is enough to invoke a command, it is a
"complete key". Examples of complete keys include `C-a', `X', <RET>,
<NEXT> (a function key), <DOWN> (an arrow key), `C-x C-f', and `C-x 4
C-f'. If it isn't long enough to be complete, we call it a "prefix
key". The above examples show that `C-x' and `C-x 4' are prefix keys.
Every key sequence is either a complete key or a prefix key.
Most single characters constitute complete keys in the standard Emacs
command bindings. A few of them are prefix keys. A prefix key combines
with the following input event to make a longer key sequence, which may
itself be complete or a prefix. For example, `C-x' is a prefix key, so
`C-x' and the next input event combine to make a two-event key
sequence. Most of these key sequences are complete keys, including
`C-x C-f' and `C-x b'. A few, such as `C-x 4' and `C-x r', are
themselves prefix keys that lead to three-event key sequences. There's
no limit to the length of a key sequence, but in practice people rarely
use sequences longer than four events.
By contrast, you can't add more events onto a complete key. For
example, the two-event sequence `C-f C-k' is not a key, because the
`C-f' is a complete key in itself. It's impossible to give `C-f C-k'
an independent meaning as a command. `C-f C-k' is two key sequences,
not one.
All told, the prefix keys in Emacs are `C-c', `C-h', `C-x', `C-x
<RET>', `C-x @', `C-x a', `C-x n', `C-x r', `C-x v', `C-x 4', `C-x 5',
`C-x 6', <ESC>, and `M-g'. But this list is not cast in concrete; it is
just a matter of Emacs's standard key bindings. If you customize Emacs,
you can make new prefix keys, or eliminate these. Note:Key Bindings.
If you do make or eliminate prefix keys, that changes the set of
possible key sequences. For example, if you redefine `C-f' as a
prefix, `C-f C-k' automatically becomes a key (complete, unless you
define that too as a prefix). Conversely, if you remove the prefix
definition of `C-x 4', then `C-x 4 f' (or `C-x 4 ANYTHING') is no
longer a key.
Typing the help character (`C-h' or <F1>) after a prefix key
displays a list of the commands starting with that prefix. There are a
few prefix keys for which `C-h' does not work--for historical reasons,
they have other meanings for `C-h' which are not easy to change. But
<F1> should work for all prefix keys.