mirror of git://git.sv.gnu.org/emacs.git
235 lines
10 KiB
Plaintext
235 lines
10 KiB
Plaintext
@c This is part of the Emacs manual.
|
|
@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2024 Free Software
|
|
@c Foundation, Inc.
|
|
@c See file emacs.texi for copying conditions.
|
|
@iftex
|
|
@chapter Characters, Keys and Commands
|
|
|
|
This chapter explains the character sets used by Emacs for input
|
|
commands, and the fundamental concepts of @dfn{keys} and
|
|
@dfn{commands}, whereby Emacs interprets your keyboard and mouse
|
|
input.
|
|
@end iftex
|
|
|
|
@ifnottex
|
|
@raisesections
|
|
@end ifnottex
|
|
|
|
@node User Input
|
|
@section Kinds of User Input
|
|
@cindex input with the keyboard
|
|
@cindex keyboard input
|
|
@cindex character set (keyboard)
|
|
@cindex @acronym{ASCII}
|
|
|
|
GNU Emacs is primarily designed for use with the keyboard. While it
|
|
is possible to use the mouse to issue editing commands through the
|
|
menu bar and tool bar, that is usually not as efficient as using the
|
|
keyboard.
|
|
|
|
@cindex control character
|
|
Keyboard input into Emacs is based on a heavily-extended version of
|
|
@acronym{ASCII}. Simple characters, like @samp{a}, @samp{B},
|
|
@samp{3}, @samp{=}, and the space character (denoted as @key{SPC}),
|
|
are entered by typing the corresponding key. @dfn{Control
|
|
characters}, such as @key{RET}, @key{TAB}, @key{DEL}, @key{ESC},
|
|
@key{F1}, @key{Home}, and @key{LEFT}, are also entered this way, as
|
|
are certain characters found on non-English keyboards
|
|
(@pxref{International}).
|
|
|
|
@cindex modifier keys
|
|
@cindex Control
|
|
@cindex C-
|
|
@cindex META
|
|
@cindex M-
|
|
@cindex Alt key, serving as Meta
|
|
Emacs also recognizes control characters that are entered using
|
|
@dfn{modifier keys}. Two commonly-used modifier keys are
|
|
@key{Control} (usually labeled @key{Ctrl}), and @key{Meta} (usually
|
|
labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{Meta} for
|
|
historical reasons.}. For example, @kbd{Control-a} is entered by
|
|
holding down the @key{Ctrl} key while pressing @kbd{a}; we will refer
|
|
to this as @kbd{C-a} for short. Similarly, @kbd{@key{Meta}-a}, or @kbd{M-a}
|
|
for short, is entered by holding down the @key{Alt} key and pressing
|
|
@kbd{a}. Modifier keys can also be applied to non-alphanumerical
|
|
characters, e.g., @kbd{C-@key{F1}} or @kbd{M-@key{LEFT}}.
|
|
|
|
@cindex @key{ESC} replacing @key{Meta} key
|
|
You can also type Meta characters using two-character sequences
|
|
starting with @key{ESC}. Thus, you can enter @kbd{M-a} by typing
|
|
@kbd{@key{ESC} a}. You can enter @kbd{C-M-a} (holding down both
|
|
@key{Ctrl} and @key{Alt}, then pressing @kbd{a}) by typing
|
|
@kbd{@key{ESC} C-a}. Unlike @key{Meta}, @key{ESC} is entered as a
|
|
separate character. You don't hold down @key{ESC} while typing the
|
|
next character; instead, press @key{ESC} and release it, then enter
|
|
the next character. This feature is useful on certain text terminals
|
|
where the @key{Meta} key does not function reliably.
|
|
|
|
Emacs supports 3 additional modifier keys, see @ref{Modifier Keys}.
|
|
|
|
Emacs has extensive support for using mouse buttons, mouse wheels
|
|
and other pointing devices like touchpads and touch screens.
|
|
@xref{Mouse Input}, for details.
|
|
|
|
@cindex keys stolen by window manager
|
|
@cindex window manager, keys stolen by
|
|
On graphical displays, the window manager might block some keyboard
|
|
inputs, including @kbd{M-@key{TAB}}, @kbd{M-@key{SPC}}, @kbd{C-M-d}
|
|
and @kbd{C-M-l}. If you have this problem, you can either customize
|
|
your window manager to not block those keys, or rebind the
|
|
affected Emacs commands (@pxref{Customization}).
|
|
|
|
@cindex input event
|
|
Simple characters and control characters, as well as certain
|
|
non-keyboard inputs such as mouse clicks, are collectively referred to
|
|
as @dfn{input events}. For details about how Emacs internally handles
|
|
input events, see @ref{Input Events,,, elisp, The Emacs Lisp Reference
|
|
Manual}.
|
|
|
|
@node Keys
|
|
@section Keys
|
|
|
|
Some Emacs commands are invoked by just one input event; for
|
|
example, @kbd{C-f} moves forward one character in the buffer. Other
|
|
commands take two or more input events to invoke, such as @kbd{C-x
|
|
C-f} and @kbd{C-x 4 C-f}.
|
|
|
|
@cindex key
|
|
@cindex key sequence
|
|
@cindex complete key
|
|
@cindex prefix key
|
|
A @dfn{key sequence}, or @dfn{key} for short, is a sequence of one
|
|
or more input events that is meaningful as a unit. If a key sequence
|
|
invokes a command, we call it a @dfn{complete key}; for example,
|
|
@kbd{C-f}, @kbd{C-x C-f} and @kbd{C-x 4 C-f} are all complete keys.
|
|
If a key sequence isn't long enough to invoke a command, we call it a
|
|
@dfn{prefix key}; from the preceding example, we see that @kbd{C-x}
|
|
and @kbd{C-x 4} are prefix keys. Every key sequence is either a
|
|
complete key or a prefix key.
|
|
|
|
A prefix key combines with the following input event to make a
|
|
longer key sequence. For example, @kbd{C-x} is a prefix key, so
|
|
typing @kbd{C-x} alone does not invoke a command; instead, Emacs waits
|
|
for further input (if you pause for longer than a second, it echoes
|
|
the @kbd{C-x} key to prompt for that input; @pxref{Echo Area}).
|
|
@kbd{C-x} combines with the next input event to make a two-event key
|
|
sequence, which could itself be a prefix key (such as @kbd{C-x 4}), or
|
|
a complete key (such as @kbd{C-x C-f}). There is no limit to the
|
|
length of key sequences, but in practice they are seldom longer than
|
|
three or four input events.
|
|
|
|
You can't add input events onto a complete key. For example,
|
|
because @kbd{C-f} is a complete key, the two-event sequence @kbd{C-f
|
|
C-k} is two key sequences, not one.
|
|
|
|
By default, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
|
|
@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
|
|
n}, @kbd{C-x r}, @kbd{C-x t}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5},
|
|
@kbd{C-x 6}, @key{ESC}, and @kbd{M-g}. (@key{F1} and
|
|
@key{F2} are aliases for @kbd{C-h} and @kbd{C-x 6}.) This list is not
|
|
cast in stone; if you customize Emacs, you can make new prefix keys.
|
|
You could even eliminate some of the standard ones, though this is not
|
|
recommended for most users; for example, if you remove the prefix
|
|
definition of @kbd{C-x 4}, then @kbd{C-x 4 C-f} becomes an invalid key
|
|
sequence. @xref{Key Bindings}.
|
|
|
|
Typing the help character (@kbd{C-h} or @key{F1}) after a prefix key
|
|
displays a list of the commands starting with that prefix. The sole
|
|
exception to this rule is @key{ESC}: @kbd{@key{ESC} C-h} is equivalent
|
|
to @kbd{C-M-h}, which does something else entirely. You can, however,
|
|
use @key{F1} to display a list of commands starting with @key{ESC}.
|
|
|
|
@node Mouse Input
|
|
@section Mouse Input
|
|
@cindex mouse input
|
|
|
|
By default, Emacs supports all the normal mouse actions like setting
|
|
the cursor by clicking on the left mouse button, and selecting an area
|
|
by dragging the mouse pointer. All mouse actions can be used to bind
|
|
commands in the same way you bind them to keyboard events
|
|
(@pxref{Keys}). This section provides a general overview of using the
|
|
mouse in Emacs; @pxref{Mouse Commands}, and the sections that follow
|
|
it, for more details about mouse commands in Emacs.
|
|
|
|
When you click the left mouse button, Emacs receives a
|
|
@code{mouse-1} event. To see what command is bound to that event, you
|
|
can type @kbd{C-h c} and then press the left mouse button. Similarly,
|
|
the middle mouse button is @code{mouse-2} and the right mouse button is
|
|
@code{mouse-3}. If you have a mouse with a wheel, the wheel events
|
|
are commonly bound to either @code{wheel-down} or @code{wheel-up}, or
|
|
@code{mouse-4} and @code{mouse-5}, but that depends on the operating
|
|
system configuration.
|
|
|
|
In general, legacy X systems and terminals (@pxref{Text-Only Mouse})
|
|
will report @code{mouse-4} and @code{mouse-5}, while all other systems
|
|
will report @code{wheel-down} and @code{wheel-up}.
|
|
|
|
Some mice also have a horizontal scroll wheel, and touchpads usually
|
|
support scrolling horizontally as well. These events are reported as
|
|
@code{wheel-left} and @code{wheel-right} on all systems other than
|
|
terminals and legacy X systems, where they are @code{mouse-6} and
|
|
@code{mouse-7}.
|
|
|
|
You can also combine keyboard modifiers with mouse events, so you
|
|
can bind a special command that triggers when you, for instance, holds
|
|
down the Meta key and then uses the middle mouse button. In that
|
|
case, the event name will be @code{M-mouse-2}.
|
|
|
|
@cindex touchscreen events
|
|
On some systems, you can also bind commands for handling touch
|
|
screen events. In that case, the events are called
|
|
@code{touchscreen-update} and @code{touchscreen-end}.
|
|
|
|
@node Commands
|
|
@section Keys and Commands
|
|
|
|
@cindex binding
|
|
@cindex command
|
|
This manual is full of passages that tell you what particular keys
|
|
do. But Emacs does not assign meanings to keys directly. Instead,
|
|
Emacs assigns meanings to named @dfn{commands}, and then gives keys
|
|
their meanings by @dfn{binding} them to commands.
|
|
|
|
Every command has a name chosen by a programmer. The name is
|
|
usually made of a few English words separated by dashes; for example,
|
|
@code{next-line} or @code{forward-word}. Internally, each command is
|
|
a special type of Lisp @dfn{function}, and the actions associated with
|
|
the command are performed by running the function. @xref{What Is a
|
|
Function,, What Is a Function, elisp, The Emacs Lisp Reference
|
|
Manual}.
|
|
|
|
The bindings between keys and commands are recorded in tables called
|
|
@dfn{keymaps}. @xref{Keymaps}.
|
|
|
|
When we say that ``@kbd{C-n} moves down vertically one line'' we are
|
|
glossing over a subtle distinction that is irrelevant in ordinary use,
|
|
but vital for Emacs customization. The command @code{next-line} does
|
|
a vertical move downward. @kbd{C-n} has this effect @emph{because} it
|
|
is bound to @code{next-line}. If you rebind @kbd{C-n} to the command
|
|
@code{forward-word}, @kbd{C-n} will move forward one word instead.
|
|
|
|
In this manual, we will often speak of keys like @kbd{C-n} as
|
|
commands, even though strictly speaking the key is bound to a command.
|
|
Usually, we state the name of the command which really does the work
|
|
in parentheses after mentioning the key that runs it. For example, we
|
|
will say that ``The command @kbd{C-n} (@code{next-line}) moves point
|
|
vertically down'', meaning that the command @code{next-line} moves
|
|
vertically down, and the key @kbd{C-n} is normally bound to it.
|
|
|
|
Since we are discussing customization, we should tell you about
|
|
@dfn{variables}. Often the description of a command will say, ``To
|
|
change this, set the variable @code{mumble-foo}.'' A variable is a
|
|
name used to store a value. Most of the variables documented in this
|
|
manual are meant for customization: some command or other part of
|
|
Emacs examines the variable and behaves differently according to the
|
|
value that you set. You can ignore the information about variables
|
|
until you are interested in customizing them. Then read the basic
|
|
information on variables (@pxref{Variables}) and the information about
|
|
specific variables will make sense.
|
|
|
|
@include input.texi
|
|
|
|
@ifnottex
|
|
@lowersections
|
|
@end ifnottex
|