@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990--1993, 1999, 2001--2023 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Standard Keymaps
@appendix Standard Keymaps
@cindex keymaps, standard

In this section we list some of the more general keymaps.  Many of
these exist when Emacs is first started, but some are loaded only when
the respective feature is accessed.

There are many other, more specialized, maps than these; in particular
those associated with major and minor modes.  The minibuffer uses
several keymaps (@pxref{Completion Commands}).  For more details on
keymaps, @pxref{Keymaps}.

@c Don't list individual major mode keymaps here, only more general things.
@c Only add vindex for things not covered elsewhere in this manual.
@c Don't add xrefs to things covered in {Keymaps}.
@table @code
@item 2C-mode-map
A sparse keymap for subcommands of the prefix @kbd{C-x 6}.@*
@xref{Two-Column,, Two-Column Editing, emacs, The GNU Emacs Manual}.

@item abbrev-map
@vindex abbrev-map
A sparse keymap for subcommands of the prefix @kbd{C-x a}.@*
@xref{Defining Abbrevs,,, emacs, The GNU Emacs Manual}.

@item button-buffer-map
A sparse keymap useful for buffers containing buffers.@*
You may want to use this as a parent keymap.  @xref{Buttons}.

@item button-map
A sparse keymap used by buttons.

@item ctl-x-4-map
A sparse keymap for subcommands of the prefix @kbd{C-x 4}.

@item ctl-x-5-map
A sparse keymap for subcommands of the prefix @kbd{C-x 5}.

@item ctl-x-map
A full keymap for @kbd{C-x} commands.

@item ctl-x-r-map
@vindex ctl-x-r-map
A sparse keymap for subcommands of the prefix @kbd{C-x r}.@*
@xref{Registers,,, emacs, The GNU Emacs Manual}.

@item esc-map
A full keymap for @key{ESC} (or @key{Meta}) commands.

@item function-key-map
The parent keymap of all @code{local-function-key-map} (q.v.@:) instances.

@ignore
@c Doesn't exist.
@item fundamental-mode-map
@vindex fundamental-mode-map
The sparse keymap for Fundamental mode.@*
It is empty and should not be changed.
@end ignore

@item global-map
The full keymap containing default global key bindings.@*
Modes should not modify the Global map.

@item goto-map
A sparse keymap used for the @kbd{M-g} prefix key.

@item help-map
A sparse keymap for the keys following the help character @kbd{C-h}.@*
@xref{Help Functions}.

@item Helper-help-map
A full keymap used by the help utility package.@*
It has the same keymap in its value cell and in its function cell.

@item input-decode-map
The keymap for translating keypad and function keys.@*
If there are none, then it contains an empty sparse keymap.
@xref{Translation Keymaps}.

@item key-translation-map
A keymap for translating keys.  This one overrides ordinary key
bindings, unlike @code{local-function-key-map}.  @xref{Translation
Keymaps}.

@item kmacro-keymap
@vindex kmacro-keymap
A sparse keymap for keys that follows the @kbd{C-x C-k} prefix search.@*
@xref{Keyboard Macros,,, emacs, The GNU Emacs Manual}.

@item local-function-key-map
The keymap for translating key sequences to preferred alternatives.@*
If there are none, then it contains an empty sparse keymap.
@xref{Translation Keymaps}.

@item menu-bar-file-menu
@itemx menu-bar-edit-menu
@itemx menu-bar-options-menu
@itemx global-buffers-menu-map
@itemx menu-bar-tools-menu
@itemx menu-bar-help-menu
@cindex menu bar keymaps
@vindex menu-bar-file-menu
@vindex menu-bar-options-menu
@vindex global-buffers-menu-map
@vindex menu-bar-tools-menu
@vindex menu-bar-help-menu
These keymaps display the main, top-level menus in the menu bar.@*
Some of them contain sub-menus.  For example, the Edit menu contains
@code{menu-bar-search-menu}, etc.  @xref{Menu Bar}.
@ignore
TODO list all submenus?
There are probably too many, and it would not be useful to do so, e.g.:
The Edit menu includes @code{yank-menu}, @code{menu-bar-search-menu},
@code{menu-bar-replace-menu}, @code{menu-bar-goto-menu},
@code{menu-bar-bookmark-map}, and @code{facemenu-menu}.
There is also mule-menu-keymap, set-coding-system-map,
setup-language-environment-map, describe-language-environment-map,
menu-bar-epatch-menu, menu-bar-ediff-merge-menu, menu-bar-ediff-menu, etc.
@end ignore

@cindex minibuffer-inactive-mode-map
@item minibuffer-inactive-mode-map
A full keymap used in the minibuffer when it is not active.@*
@xref{Minibuffer Edit,, Editing in the Minibuffer, emacs, The GNU Emacs Manual}.

@item mode-line-coding-system-map
@itemx mode-line-input-method-map
@itemx mode-line-column-line-number-mode-map
@vindex mode-line-coding-system-map
@vindex mode-line-input-method-map
@vindex mode-line-column-line-number-mode-map
These keymaps control various areas of the mode line.@*
@xref{Mode Line Format}.

@item mode-specific-map
The keymap for characters following @kbd{C-c}.  Note, this is in the
global map.  This map is not actually mode-specific: its name was chosen
to be informative in @kbd{C-h b} (@code{display-bindings}),
where it describes the main use of the @kbd{C-c} prefix key.

@c FIXME - don't mention this one?
@item mouse-appearance-menu-map
@vindex mouse-appearance-menu-map
A sparse keymap used for the @kbd{S-mouse-1} key.

@item mule-keymap
The global keymap used for the @kbd{C-x @key{RET}} prefix key.

@item narrow-map
@vindex narrow-map
A sparse keymap for subcommands of the prefix @kbd{C-x n}.

@cindex prog-mode-map
@item prog-mode-map
The keymap used by Prog mode.@*
@xref{Basic Major Modes}.

@item query-replace-map
@itemx multi-query-replace-map
A sparse keymap used for responses in @code{query-replace} and related
commands; also for @code{y-or-n-p} and @code{map-y-or-n-p}.  The functions
that use this map do not support prefix keys; they look up one event at a
time.  @code{multi-query-replace-map} extends @code{query-replace-map}
for multi-buffer replacements.  @xref{Search and Replace, query-replace-map}.

@item search-map
A sparse keymap that provides global bindings for search-related commands.

@cindex special-mode-map
@item special-mode-map
The keymap used by Special mode.@*
@xref{Basic Major Modes}.

@item tab-prefix-map
The global keymap used for the @kbd{C-x t} prefix key for tab-bar related commands.@*
@xref{Tab Bars,,, emacs, The GNU Emacs Manual}.

@cindex tab-bar-map
@item tab-bar-map
The keymap defining the contents of the tab bar.@*
@xref{Tab Bars,,, emacs, The GNU Emacs Manual}.

@item tool-bar-map
The keymap defining the contents of the tool bar.@*
@xref{Tool Bar}.

@item universal-argument-map
@vindex universal-argument-map
A sparse keymap used while processing @kbd{C-u}.@*
@xref{Prefix Command Arguments}.

@item vc-prefix-map
The global keymap used for the @kbd{C-x v} prefix key.

@item x-alternatives-map
@vindex x-alternatives-map
@findex x-setup-function-keys
A sparse keymap used to map certain keys under graphical frames.@*
The function @code{x-setup-function-keys} uses this.

@end table
