annotate man/commands.texi @ 82512:1394a4fd4724

*** empty log message ***
author Glenn Morris <rgm@gnu.org>
date Wed, 22 Aug 2007 03:37:21 +0000
parents 4ad431d8e164
children 02b9a9aa5b0c 95d0cdf160ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
75249
4ad431d8e164 Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 75011
diff changeset
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
4ad431d8e164 Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 75011
diff changeset
3 @c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
6 @chapter Characters, Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
7
Dave Love <fx@gnu.org>
parents:
diff changeset
8 This chapter explains the character sets used by Emacs for input
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
9 commands and for the contents of files, and the fundamental concepts of
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
10 @dfn{keys} and @dfn{commands}, whereby Emacs interprets your keyboard
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
11 and mouse input.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
12 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
13
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
14 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
15 @raisesections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
16 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
17
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
18 @node User Input, Keys, Screen, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
19 @section Kinds of User Input
Dave Love <fx@gnu.org>
parents:
diff changeset
20 @cindex input with the keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
21 @cindex keyboard input
Dave Love <fx@gnu.org>
parents:
diff changeset
22 @cindex character set (keyboard)
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
23 @cindex @acronym{ASCII}
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
24 @cindex C-
Dave Love <fx@gnu.org>
parents:
diff changeset
25 @cindex Control
Dave Love <fx@gnu.org>
parents:
diff changeset
26 @cindex control characters
Dave Love <fx@gnu.org>
parents:
diff changeset
27
72099
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
28 GNU Emacs is designed for use with keyboard commands because that is
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
29 the most efficient way to edit. You can do editing with the mouse, as
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
30 in other editors, and you can give commands with the menu bar and tool
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
31 bar, and scroll with the scroll bar. But if you keep on editing that
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
32 way, you won't get the benefits of Emacs. Therefore, this manual
72100
aba5975bd656 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 72099
diff changeset
33 documents primarily how to edit with the keyboard. You can force
aba5975bd656 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 72099
diff changeset
34 yourself to practice using the keyboard by using the shell command
aba5975bd656 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 72099
diff changeset
35 @samp{emacs -nw} to start Emacs, so that the mouse won't work.
72099
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
36
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
37 Emacs uses an extension of the @acronym{ASCII} character set for
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
38 keyboard input; it also accepts non-character input events including
9083234155ee (User Input): Explain why we teach keyboard cmds.
Richard M. Stallman <rms@gnu.org>
parents: 70356
diff changeset
39 function keys and mouse button actions.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
40
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
41 @acronym{ASCII} consists of 128 character codes. Some of these codes are
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
42 assigned graphic symbols such as @samp{a} and @samp{=}; the rest are
Dave Love <fx@gnu.org>
parents:
diff changeset
43 control characters, such as @kbd{Control-a} (usually written @kbd{C-a}
Dave Love <fx@gnu.org>
parents:
diff changeset
44 for short). @kbd{C-a} gets its name from the fact that you type it by
Dave Love <fx@gnu.org>
parents:
diff changeset
45 holding down the @key{CTRL} key while pressing @kbd{a}.
Dave Love <fx@gnu.org>
parents:
diff changeset
46
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
47 Some @acronym{ASCII} control characters have special names, and most
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
48 terminals have special keys you can type them with: for example,
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
49 @key{RET}, @key{TAB}, @key{DEL} and @key{ESC}. The space character is
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
50 usually known as @key{SPC}, even though strictly speaking it is a
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
51 graphic character that is blank.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
52
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
53 Emacs extends the @acronym{ASCII} character set with thousands more printing
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
54 characters (@pxref{International}), additional control characters, and a
Dave Love <fx@gnu.org>
parents:
diff changeset
55 few more modifiers that can be combined with any character.
Dave Love <fx@gnu.org>
parents:
diff changeset
56
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
57 On @acronym{ASCII} terminals, there are only 32 possible control characters.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
58 These are the control variants of letters and @samp{@@[]\^_}. In
Dave Love <fx@gnu.org>
parents:
diff changeset
59 addition, the shift key is meaningless with control characters:
Dave Love <fx@gnu.org>
parents:
diff changeset
60 @kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
Dave Love <fx@gnu.org>
parents:
diff changeset
61 distinguish them.
Dave Love <fx@gnu.org>
parents:
diff changeset
62
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
63 The Emacs character set has room for control variants of all
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
64 printing characters, and distinguishes @kbd{C-A} from @kbd{C-a}.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
65 Graphical terminals make it possible to enter all these characters.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
66 For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5} are
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
67 meaningful Emacs commands on a graphical terminal.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
68
Dave Love <fx@gnu.org>
parents:
diff changeset
69 Another Emacs character-set extension is additional modifier bits.
Dave Love <fx@gnu.org>
parents:
diff changeset
70 Only one modifier bit is commonly used; it is called Meta. Every
Dave Love <fx@gnu.org>
parents:
diff changeset
71 character has a Meta variant; examples include @kbd{Meta-a} (normally
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
72 written @kbd{M-a}, for short), @kbd{M-A} (different from @kbd{M-a},
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
73 but they are normally equivalent in Emacs), @kbd{M-@key{RET}}, and
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
74 @kbd{M-C-a}. That last means @kbd{a} with both the @key{CTRL} and
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
75 @key{META} modifiers. We usually write it as @kbd{C-M-a} rather than
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
76 @kbd{M-C-a}, for reasons of tradition.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
77
Dave Love <fx@gnu.org>
parents:
diff changeset
78 @cindex Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
79 @cindex M-
Dave Love <fx@gnu.org>
parents:
diff changeset
80 @cindex @key{ESC} replacing @key{META} key
Dave Love <fx@gnu.org>
parents:
diff changeset
81 Some terminals have a @key{META} key, and allow you to type Meta
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
82 characters by holding this key down. Thus, you can type @kbd{Meta-a}
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
83 by holding down @key{META} and pressing @kbd{a}. The @key{META} key
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
84 works much like the @key{SHIFT} key. In fact, this key is more often
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
85 labeled @key{ALT} or @key{EDIT}, instead of @key{META}; on a Sun
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
86 keyboard, it may have a diamond on it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
87
Dave Love <fx@gnu.org>
parents:
diff changeset
88 If there is no @key{META} key, you can still type Meta characters
48530
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
89 using two-character sequences starting with @key{ESC}. Thus, you can
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
90 enter @kbd{M-a} by typing @kbd{@key{ESC} a}. You can enter
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
91 @kbd{C-M-a} by typing @kbd{@key{ESC} C-a}. Unlike @key{META}, which
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
92 modifies other characters, @key{ESC} is a separate character. You
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
93 don't hold down @key{ESC} while typing the next character; instead,
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
94 you press it and release it, then you enter the next character.
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
95 @key{ESC} is allowed on terminals with @key{META} keys, too, in case
4ccb542f41ef Explain how ESC is different from META.
Richard M. Stallman <rms@gnu.org>
parents: 45876
diff changeset
96 you have formed a habit of using it.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
97
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
98 Emacs defines several other modifier keys that can be applied to any
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
99 input character. These are called @key{SUPER}, @key{HYPER} and
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
100 @key{ALT}. We write @samp{s-}, @samp{H-} and @samp{A-} to say that a
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
101 character uses these modifiers. Thus, @kbd{s-H-C-x} is short for
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
102 @kbd{Super-Hyper-Control-x}. Not all graphical terminals actually
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
103 provide keys for these modifier flags---in fact, many terminals have a
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
104 key labeled @key{ALT} which is really a @key{META} key. The standard
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
105 key bindings of Emacs do not include any characters with these
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
106 modifiers. But you can assign them meanings of your own by
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
107 customizing Emacs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
108
45876
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
109 If your keyboard lacks one of these modifier keys, you can enter it
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
110 using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to the next
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
111 character, @kbd{C-x @@ s} adds the ``super'' flag, and @kbd{C-x @@ a}
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
112 adds the ``alt'' flag. For instance, @kbd{C-x @@ h C-a} is a way to
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
113 enter @kbd{Hyper-Control-a}. (Unfortunately there is no way to add
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
114 two modifiers by using @kbd{C-x @@} twice for the same character,
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
115 because the first one goes to work on the @kbd{C-x}.)
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
116
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
117 Keyboard input includes keyboard keys that are not characters at
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
118 all, such as function keys and arrow keys. Mouse buttons are also not
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
119 characters. However, you can modify these events with the modifier
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
120 keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and @key{ALT},
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
121 just like keyboard characters.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
122
Dave Love <fx@gnu.org>
parents:
diff changeset
123 @cindex input event
Dave Love <fx@gnu.org>
parents:
diff changeset
124 Input characters and non-character inputs are collectively called
Dave Love <fx@gnu.org>
parents:
diff changeset
125 @dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
126 Reference Manual}, for the full Lisp-level details. If you are not
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
127 doing Lisp programming, but simply want to redefine the meaning of
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
128 some characters or non-character events, see @ref{Customization}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
129
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
130 @acronym{ASCII} terminals cannot really send anything to the computer except
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
131 @acronym{ASCII} characters. These terminals use a sequence of characters to
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
132 represent each function key. But that is invisible to the Emacs user,
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
133 because the keyboard input routines catch these special sequences
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
134 and convert them to function key events before any other part of Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
135 gets to see them.
Dave Love <fx@gnu.org>
parents:
diff changeset
136
75011
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
137 @cindex keys stolen by window manager
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
138 @cindex window manager, keys stolen by
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
139 On graphical displays, the window manager is likely to block the
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
140 character @kbd{Meta-@key{TAB}} before Emacs can see it. It may also
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
141 block @kbd{Meta-@key{SPC}}, @kbd{C-M-d} and @kbd{C-M-l}. If you have
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
142 these problems, we recommend that you customize your window manager to
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
143 turn off those commands, or put them on key combinations that Emacs
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
144 does not use.
c918cd93c615 (User Input): Document keys stolen by window mangers.
Richard M. Stallman <rms@gnu.org>
parents: 72100
diff changeset
145
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
146 @node Keys, Commands, User Input, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
147 @section Keys
Dave Love <fx@gnu.org>
parents:
diff changeset
148
Dave Love <fx@gnu.org>
parents:
diff changeset
149 @cindex key sequence
Dave Love <fx@gnu.org>
parents:
diff changeset
150 @cindex key
Dave Love <fx@gnu.org>
parents:
diff changeset
151 A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
152 events that is meaningful as a unit---a ``single command.'' Some
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
153 Emacs command sequences are invoked by just one character or one
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
154 event; for example, just @kbd{C-f} moves forward one character in the
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
155 buffer. But Emacs also has commands that take two or more events to
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
156 invoke.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
157
Dave Love <fx@gnu.org>
parents:
diff changeset
158 @cindex complete key
Dave Love <fx@gnu.org>
parents:
diff changeset
159 @cindex prefix key
Dave Love <fx@gnu.org>
parents:
diff changeset
160 If a sequence of events is enough to invoke a command, it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
161 @dfn{complete key}. Examples of complete keys include @kbd{C-a},
Dave Love <fx@gnu.org>
parents:
diff changeset
162 @kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow
Dave Love <fx@gnu.org>
parents:
diff changeset
163 key), @kbd{C-x C-f}, and @kbd{C-x 4 C-f}. If it isn't long enough to be
Dave Love <fx@gnu.org>
parents:
diff changeset
164 complete, we call it a @dfn{prefix key}. The above examples show that
Dave Love <fx@gnu.org>
parents:
diff changeset
165 @kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either
Dave Love <fx@gnu.org>
parents:
diff changeset
166 a complete key or a prefix key.
Dave Love <fx@gnu.org>
parents:
diff changeset
167
Dave Love <fx@gnu.org>
parents:
diff changeset
168 Most single characters constitute complete keys in the standard Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
169 command bindings. A few of them are prefix keys. A prefix key combines
Dave Love <fx@gnu.org>
parents:
diff changeset
170 with the following input event to make a longer key sequence, which may
Dave Love <fx@gnu.org>
parents:
diff changeset
171 itself be complete or a prefix. For example, @kbd{C-x} is a prefix key,
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
172 so @kbd{C-x} and the next input event combine to make a two-event
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
173 key sequence. Most of these key sequences are complete keys, including
Dave Love <fx@gnu.org>
parents:
diff changeset
174 @kbd{C-x C-f} and @kbd{C-x b}. A few, such as @kbd{C-x 4} and @kbd{C-x
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
175 r}, are themselves prefix keys that lead to three-event key
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
176 sequences. There's no limit to the length of a key sequence, but in
Dave Love <fx@gnu.org>
parents:
diff changeset
177 practice people rarely use sequences longer than four events.
Dave Love <fx@gnu.org>
parents:
diff changeset
178
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
179 You can't add input events onto a complete key. For example, the
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
180 two-event sequence @kbd{C-f C-k} is not a key, because the @kbd{C-f}
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
181 is a complete key in itself. It's impossible to give @kbd{C-f C-k} an
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
182 independent meaning as a command. @kbd{C-f C-k} is two key sequences,
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
183 not one.@refill
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
184
Dave Love <fx@gnu.org>
parents:
diff changeset
185 All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
60422
95f4549c0b71 (Keys): Mention F1 and F2 in list of prefixes.
Richard M. Stallman <rms@gnu.org>
parents: 59523
diff changeset
186 @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
187 n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
188 6}, @key{ESC}, @kbd{M-g}, and @kbd{M-o}. (@key{F1} and @key{F2} are
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
189 aliases for @kbd{C-h} and @kbd{C-x 6}.) This list is not cast in stone;
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
190 it describes the standard key bindings. If you customize Emacs, you can make
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
191 new prefix keys, or eliminate some of the standard ones (not
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
192 recommended for most users). @xref{Key Bindings}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
193
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
194 If you make or eliminate prefix keys, that changes the set of
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
195 possible key sequences. For example, if you redefine @kbd{C-f} as a
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
196 prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
197 you define that too as a prefix). Conversely, if you remove the
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
198 prefix definition of @kbd{C-x 4}, then @kbd{C-x 4 f} and @kbd{C-x 4
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
199 @var{anything}} are no longer keys.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
200
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
201 Typing the help character (@kbd{C-h} or @key{F1}) after a prefix key
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
202 displays a list of the commands starting with that prefix. There are
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
203 a few prefix keys after which @kbd{C-h} does not work---for historical
68454
132c4fb111bc Minor cleanups. Refer to "graphical" terminals, rather than X.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
204 reasons, they define other meanings for @kbd{C-h} which are painful to
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
205 change. @key{F1} works after all prefix keys.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
206
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
207 @node Commands, Text Characters, Keys, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
208 @section Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
209
Dave Love <fx@gnu.org>
parents:
diff changeset
210 @cindex binding
Dave Love <fx@gnu.org>
parents:
diff changeset
211 @cindex command
Dave Love <fx@gnu.org>
parents:
diff changeset
212 @cindex function definition
Dave Love <fx@gnu.org>
parents:
diff changeset
213 This manual is full of passages that tell you what particular keys
Dave Love <fx@gnu.org>
parents:
diff changeset
214 do. But Emacs does not assign meanings to keys directly. Instead,
Dave Love <fx@gnu.org>
parents:
diff changeset
215 Emacs assigns meanings to named @dfn{commands}, and then gives keys
Dave Love <fx@gnu.org>
parents:
diff changeset
216 their meanings by @dfn{binding} them to commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
217
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
218 Every command has a name chosen by a programmer. The name is
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
219 usually made of a few English words separated by dashes; for example,
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
220 @code{next-line} or @code{forward-word}. A command also has a
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
221 @dfn{function definition} which is a Lisp program; this is how the
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
222 command does its work. In Emacs Lisp, a command is a Lisp function with
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
223 special options to read arguments and for interactive use. For more
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
224 information on commands and functions, see @ref{What Is a Function,,
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
225 What Is a Function, elisp, The Emacs Lisp Reference Manual}. (The
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
226 definition here is simplified slightly.)
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
227
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
228 The bindings between keys and commands are recorded in tables called
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
229 @dfn{keymaps}. @xref{Keymaps}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
230
Dave Love <fx@gnu.org>
parents:
diff changeset
231 When we say that ``@kbd{C-n} moves down vertically one line'' we are
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
232 glossing over a subtle distinction that is irrelevant in ordinary use,
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
233 but vital for Emacs customization. The command @code{next-line} does
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
234 a vertical move downward. @kbd{C-n} has this effect @emph{because} it
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
235 is bound to @code{next-line}. If you rebind @kbd{C-n} to the command
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
236 @code{forward-word}, @kbd{C-n} will move forward one word instead.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
237 Rebinding keys is an important method of customization.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
238
59523
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
239 In the rest of this manual, we usually ignore this distinction to
72a78ee72ab9 (Commands): Clarification.
Richard M. Stallman <rms@gnu.org>
parents: 56810
diff changeset
240 keep things simple. We will often speak of keys like @kbd{C-n} as
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
241 commands, even though strictly speaking the key is bound to a command.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
242 Usually we state the name of the command which really does the work in
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
243 parentheses after mentioning the key that runs it. For example, we
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
244 will say that ``The command @kbd{C-n} (@code{next-line}) moves point
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
245 vertically down,'' meaning that the command @code{next-line} moves
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
246 vertically down, and the key @kbd{C-n} is normally bound to it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
247
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
248 Since we are discussing customization, we should tell you about
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
249 @dfn{variables}. Often the description of a command will say, ``To
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
250 change this, set the variable @code{mumble-foo}.'' A variable is a
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
251 name used to store a value. Most of the variables documented in this
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
252 manual are meant for customization: some command or other part of
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
253 Emacs examines the variable and behaves differently according to the
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
254 value that you set. You can ignore the information about variables
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
255 until you are interested in customizing them. Then read the basic
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
256 information on variables (@pxref{Variables}) and the information about
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
257 specific variables will make sense.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
258
Dave Love <fx@gnu.org>
parents:
diff changeset
259 @node Text Characters, Entering Emacs, Commands, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
260 @section Character Set for Text
Dave Love <fx@gnu.org>
parents:
diff changeset
261 @cindex characters (in text)
Dave Love <fx@gnu.org>
parents:
diff changeset
262
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
263 Text in Emacs buffers is a sequence of characters. In the simplest
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
264 case, these are @acronym{ASCII} characters, each stored in one 8-bit
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
265 byte. Both @acronym{ASCII} control characters (octal codes 000
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
266 through 037, and 0177) and @acronym{ASCII} printing characters (codes
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
267 040 through 0176) are allowed. The other modifier flags used in
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
268 keyboard input, such as Meta, are not allowed in buffers.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
269
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
270 Non-@acronym{ASCII} printing characters can also appear in buffers,
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
271 when multibyte characters are enabled. They have character codes
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
272 starting at 256, octal 0400, and each one is represented as a sequence
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
273 of two or more bytes. @xref{International}. Single-byte characters
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
274 with codes 128 through 255 can also appear in multibyte buffers.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
275 However, non-@acronym{ASCII} control characters cannot appear in a
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
276 buffer.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
277
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
278 Some @acronym{ASCII} control characters serve special purposes in text, and have
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
279 special names. For example, the newline character (octal code 012) is
Dave Love <fx@gnu.org>
parents:
diff changeset
280 used in the buffer to end a line, and the tab character (octal code 011)
Dave Love <fx@gnu.org>
parents:
diff changeset
281 is used for indenting to the next tab stop column (normally every 8
Dave Love <fx@gnu.org>
parents:
diff changeset
282 columns). @xref{Text Display}.
Dave Love <fx@gnu.org>
parents:
diff changeset
283
Dave Love <fx@gnu.org>
parents:
diff changeset
284 If you disable multibyte characters, then you can use only one
70356
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
285 alphabet of non-@acronym{ASCII} characters, which all fit in one byte.
87188a1dd1d1 Many simplifications.
Richard M. Stallman <rms@gnu.org>
parents: 68713
diff changeset
286 They use octal codes 0200 through 0377. @xref{Unibyte Mode}.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
287
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
288 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
289 @lowersections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
290 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
291
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
292 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
293 arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
294 @end ignore