The bindings between key sequences and command functions are recorded in data structures called keymaps. Emacs has many of these, each used on particular occasions.
Recall that a key sequence (key, for short) is a sequence of input events that have a meaning as a unit. Input events include characters, function keys and mouse buttons---all the inputs that you can send to the computer with your terminal. A key sequence gets its meaning from its binding, which says what command it runs. The function of keymaps is to record these bindings.
The global keymap is the most important keymap because it is always in effect. The global keymap defines keys for Fundamental mode; most of these definitions are common to most or all major modes. Each major or minor mode can have its own keymap which overrides the global definitions of some keys.
For example, a self-inserting character such as g is
self-inserting because the global keymap binds it to the command
self-insert-command
. The standard Emacs editing characters such
as C-a also get their standard meanings from the global keymap.
Commands to rebind keys, such as M-x global-set-key, actually work
by storing the new binding in the proper place in the global map.
See Rebinding.
Meta characters work differently; Emacs translates each Meta
character into a pair of characters starting with ESC
. When you
type the character M-a in a key sequence, Emacs replaces it with
ESC
a. A meta key comes in as a single input event, but
becomes two events for purposes of key bindings. The reason for this is
historical, and we might change it someday.
Most modern keyboards have function keys as well as character keys. Function keys send input events just as character keys do, and keymaps can have bindings for them.
On many terminals, typing a function key actually sends the computer a
sequence of characters; the precise details of the sequence depends on
which function key and on the model of terminal you are using. (Often
the sequence starts with ESC
[.) If Emacs understands your
terminal type properly, it recognizes the character sequences forming
function keys wherever they occur in a key sequence (not just at the
beginning). Thus, for most purposes, you can pretend the function keys
reach Emacs directly and ignore their encoding as character sequences.
Mouse buttons also produce input events. These events come with other data---the window and position where you pressed or released the button, and a time stamp. But only the choice of button matters for key bindings; the other data matters only if a command looks at it. (Commands designed for mouse invocation usually do look at the other data.)
A keymap records definitions for single events. Interpreting a key sequence of multiple events involves a chain of keymaps. The first keymap gives a definition for the first event; this definition is another keymap, which is used to look up the second event in the sequence, and so on.
Key sequences can mix function keys and characters. For example,
C-x SELECT
is meaningful. If you make SELECT
a prefix
key, then SELECT
C-n makes sense. You can even mix mouse
events with keyboard events, but we recommend against it, because such
sequences are inconvenient to type in.
As a user, you can redefine any key; but it might be best to stick to
key sequences that consist of C-c followed by a letter. These
keys are ``reserved for users,'' so they won't conflict with any
properly designed Emacs extension. The function keys F5
through
F9
are also reserved for users. If you redefine some other key,
your definition may be overridden by certain extensions or major modes
which redefine the same key.