Next: Format of Keymaps Up: Keymaps
A "keymap" is a table mapping event types to definitions (which can
be any Lisp objects, though only certain types are meaningful for
execution by the command loop). Given an event (or an event type) and a
keymap, Emacs can get the event's definition. Events mapped in keymaps
include keypresses, button presses, and button releases (Note: Input
A sequence of input events that form a unit is called a "key
sequence", or "key" for short. A sequence of one event is always a key
sequence, and so are some multi-event sequences.
A keymap determines a binding or definition for any key sequence. If
the key sequence is a single event, its binding is the definition of the
event in the keymap. The binding of a key sequence of more than one
event is found by an iterative process: the binding of the first event
is found, and must be a keymap; then the second event's binding is found
in that keymap, and so on until all the events in the key sequence are
If the binding of a key sequence is a keymap, we call the key
sequence a "prefix key". Otherwise, we call it a "complete key"
(because no more characters can be added to it). If the binding is
`nil', we call the key "undefined". Examples of prefix keys are `C-c',
`C-x', and `C-x 4'. Examples of defined complete keys are `X', RET,
and `C-x 4 C-f'. Examples of undefined complete keys are `C-x C-g',
and `C-c 3'. Note: Prefix Keys, for more details.
The rule for finding the binding of a key sequence assumes that the
intermediate bindings (found for the events before the last) are all
keymaps; if this is not so, the sequence of events does not form a
unit--it is not really a key sequence. In other words, removing one or
more events from the end of any valid key must always yield a prefix
key. For example, `C-f C-f' is not a key; `C-f' is not a prefix key,
so a longer sequence starting with `C-f' cannot be a key.
Note that the set of possible multi-event key sequences depends on
the bindings for prefix keys; therefore, it can be different for
different keymaps, and can change when bindings are changed. However,
a one-event sequence is always a key sequence, because it does not
depend on any prefix keys for its well-formedness.
At any time, several primary keymaps are "active"--that is, in use
for finding key bindings. These are the "global map", which is shared
by all buffers; the "local keymap", which is usually associated with a
specific major mode; and zero or more "minor mode keymaps" which belong
to currently enabled minor modes. (Not all minor modes have keymaps.)
The local keymap bindings shadow (i.e., take precedence over) the
corresponding global bindings. The minor mode keymaps shadow both
local and global keymaps. Note: Active Keymaps, for details.
automatically generated by info2www