A prefix key is a key sequence whose binding is a keymap. The keymap defines what to do with key sequences that extend the prefix key. For example,
C-x is a prefix key, and it uses a keymap that is also stored in the variable
ctl-x-map. This keymap defines bindings for key sequences starting with
Some of the standard Emacs prefix keys use keymaps that are also found in Lisp variables:
esc-mapis the global keymap for the
ESCprefix key. Thus, the global definitions of all meta characters are actually found here. This map is also the function definition of
help-mapis the global keymap for the
mode-specific-mapis the global keymap for the prefix key
C-c. This map is actually global, not mode-specific, but its name provides useful information about
C-cin the output of
display-bindings), since the main use of this prefix key is for mode-specific bindings.
ctl-x-mapis the global keymap used for the
C-xprefix key. This map is found via the function cell of the symbol
mule-keymapis the global keymap used for the
C-x RETprefix key.
ctl-x-4-mapis the global keymap used for the
C-x 4prefix key.
ctl-x-5-mapis the global keymap used for the
C-x 5prefix key.
2C-mode-mapis the global keymap used for the
C-x 6prefix key.
tab-prefix-mapis the global keymap used for the
C-x tprefix key.
vc-prefix-mapis the global keymap used for the
C-x vprefix key.
goto-mapis the global keymap used for the
search-mapis the global keymap used for the
facemenu-keymapis the global keymap used for the
- The other Emacs prefix keys are
C-x a i,
ESC ESC. They use keymaps that have no special names.
The keymap binding of a prefix key is used for looking up the event that follows the prefix key. (It may instead be a symbol whose function definition is a keymap. The effect is the same, but the symbol serves as a name for the prefix key.) Thus, the binding of
C-x is the symbol
Control-X-prefix, whose function cell holds the keymap for
C-x commands. (The same keymap is also the value of
Prefix key definitions can appear in any active keymap. The definitions of
ESC as prefix keys appear in the global map, so these prefix keys are always available. Major and minor modes can redefine a key as a prefix by putting a prefix key definition for it in the local map or the minor mode’s map. See Active Keymaps.
If a key is defined as a prefix in more than one active map, then its various definitions are in effect merged: the commands defined in the minor mode keymaps come first, followed by those in the local map’s prefix definition, and then by those from the global map.
In the following example, we make
C-p a prefix key in the local keymap, in such a way that
C-p is identical to
C-x. Then the binding for
C-p C-f is the function
find-file, just like
C-x C-f. The key sequence
C-p 6 is not found in any active keymap.
(local-set-key "\C-p" ctl-x-map)
function define-prefix-command symbol \&optional mapvar prompt
This function prepares
symbol for use as a prefix key’s binding: it creates a sparse keymap and stores it as
symbol’s function definition. Subsequently binding a key sequence to
symbol will make that key sequence into a prefix key. The return value is
This function also sets
symbol as a variable, with the keymap as its value. But if
mapvar is non-
nil, it sets
mapvar as a variable instead.
prompt is non-
nil, that becomes the overall prompt string for the keymap. The prompt string should be given for menu keymaps (see Defining Menus).