annotate man/commands.texi @ 58195:c12b583f54b9

Fixed these problems: ** Clicking on partially visible lines fails From: David Kastrup <dak@gnu.org> Date: 27 Apr 2004 16:42:58 +0200 I had gnus display a mouse-highlighted line (a URL from browse-url) partially at the bottom of its window. If I click with middle mouse key on it, the window gets recentered while I hold the mouse key pressed. If I release it, the window returns into its old position (cursor in top row) and nothing happens, presumably because the click was not registered on the line itself, but on the magically recentered version. That is a nuisance. Recentering of even partially visible click targets should only happen if window-point moves there, but not at the time of the click. From the moment I hold down a key until it gets released, the displayed window portion should not change, with the sole exception of scrolling when dragging at the edge of the screen. (progn (setq line-spacing 4) (dotimes (i (window-height)) (insert "\n" (int-to-string i))) (forward-line -2) (recenter -1)) ** Can't drag modeline when mouse-autoselect-window is set From: Klaus Zeitler <kzeitler@lucent.com> Date: Mon, 11 Oct 2004 11:14:49 +0200 1. start emacs -q --no-site-file 2. set variable mouse-autoselect-window to t 3. split-window-vertically now I can drag the modeline only upwards but not downwards
author Kim F. Storm <storm@cua.dk>
date Sat, 13 Nov 2004 01:40:36 +0000
parents 24bffa640391
children 72a78ee72ab9 3219f94257bc
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.
Dave Love <fx@gnu.org>
parents:
diff changeset
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @chapter Characters, Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
6
Dave Love <fx@gnu.org>
parents:
diff changeset
7 This chapter explains the character sets used by Emacs for input
Dave Love <fx@gnu.org>
parents:
diff changeset
8 commands and for the contents of files, and also explains the concepts
Dave Love <fx@gnu.org>
parents:
diff changeset
9 of @dfn{keys} and @dfn{commands}, which are fundamental for understanding
Dave Love <fx@gnu.org>
parents:
diff changeset
10 how Emacs interprets your keyboard and mouse input.
Dave Love <fx@gnu.org>
parents:
diff changeset
11 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
12
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
13 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
14 @raisesections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
15 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
16
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
17 @node User Input, Keys, Screen, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
18 @section Kinds of User Input
Dave Love <fx@gnu.org>
parents:
diff changeset
19 @cindex input with the keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
20 @cindex keyboard input
Dave Love <fx@gnu.org>
parents:
diff changeset
21 @cindex character set (keyboard)
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
22 @cindex @acronym{ASCII}
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
23 @cindex C-
Dave Love <fx@gnu.org>
parents:
diff changeset
24 @cindex Control
Dave Love <fx@gnu.org>
parents:
diff changeset
25 @cindex control characters
Dave Love <fx@gnu.org>
parents:
diff changeset
26
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
27 GNU Emacs uses an extension of the @acronym{ASCII} character set for keyboard
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
28 input; it also accepts non-character input events including function
Dave Love <fx@gnu.org>
parents:
diff changeset
29 keys and mouse button actions.
Dave Love <fx@gnu.org>
parents:
diff changeset
30
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
31 @acronym{ASCII} consists of 128 character codes. Some of these codes are
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
32 assigned graphic symbols such as @samp{a} and @samp{=}; the rest are
Dave Love <fx@gnu.org>
parents:
diff changeset
33 control characters, such as @kbd{Control-a} (usually written @kbd{C-a}
Dave Love <fx@gnu.org>
parents:
diff changeset
34 for short). @kbd{C-a} gets its name from the fact that you type it by
Dave Love <fx@gnu.org>
parents:
diff changeset
35 holding down the @key{CTRL} key while pressing @kbd{a}.
Dave Love <fx@gnu.org>
parents:
diff changeset
36
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
37 Some @acronym{ASCII} control characters have special names, and most terminals
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
38 have special keys you can type them with: for example, @key{RET},
Dave Love <fx@gnu.org>
parents:
diff changeset
39 @key{TAB}, @key{DEL} and @key{ESC}. The space character is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
40 referred to below as @key{SPC}, even though strictly speaking it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
41 graphic character whose graphic happens to be blank. Some keyboards
Dave Love <fx@gnu.org>
parents:
diff changeset
42 have a key labeled ``linefeed'' which is an alias for @kbd{C-j}.
Dave Love <fx@gnu.org>
parents:
diff changeset
43
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
44 Emacs extends the @acronym{ASCII} character set with thousands more printing
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
45 characters (@pxref{International}), additional control characters, and a
Dave Love <fx@gnu.org>
parents:
diff changeset
46 few more modifiers that can be combined with any character.
Dave Love <fx@gnu.org>
parents:
diff changeset
47
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
48 On @acronym{ASCII} terminals, there are only 32 possible control characters.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
49 These are the control variants of letters and @samp{@@[]\^_}. In
Dave Love <fx@gnu.org>
parents:
diff changeset
50 addition, the shift key is meaningless with control characters:
Dave Love <fx@gnu.org>
parents:
diff changeset
51 @kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
Dave Love <fx@gnu.org>
parents:
diff changeset
52 distinguish them.
Dave Love <fx@gnu.org>
parents:
diff changeset
53
Dave Love <fx@gnu.org>
parents:
diff changeset
54 But the Emacs character set has room for control variants of all
Dave Love <fx@gnu.org>
parents:
diff changeset
55 printing characters, and for distinguishing between @kbd{C-a} and
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
56 @kbd{C-A}. The X Window System makes it possible to enter all these
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
57 characters. For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5}
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
58 are meaningful Emacs commands under X.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
59
Dave Love <fx@gnu.org>
parents:
diff changeset
60 Another Emacs character-set extension is additional modifier bits.
Dave Love <fx@gnu.org>
parents:
diff changeset
61 Only one modifier bit is commonly used; it is called Meta. Every
Dave Love <fx@gnu.org>
parents:
diff changeset
62 character has a Meta variant; examples include @kbd{Meta-a} (normally
Dave Love <fx@gnu.org>
parents:
diff changeset
63 written @kbd{M-a}, for short), @kbd{M-A} (not the same character as
Dave Love <fx@gnu.org>
parents:
diff changeset
64 @kbd{M-a}, but those two characters normally have the same meaning in
Dave Love <fx@gnu.org>
parents:
diff changeset
65 Emacs), @kbd{M-@key{RET}}, and @kbd{M-C-a}. For reasons of tradition,
Dave Love <fx@gnu.org>
parents:
diff changeset
66 we usually write @kbd{C-M-a} rather than @kbd{M-C-a}; logically
Dave Love <fx@gnu.org>
parents:
diff changeset
67 speaking, the order in which the modifier keys @key{CTRL} and @key{META}
Dave Love <fx@gnu.org>
parents:
diff changeset
68 are mentioned does not matter.
Dave Love <fx@gnu.org>
parents:
diff changeset
69
Dave Love <fx@gnu.org>
parents:
diff changeset
70 @cindex Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
71 @cindex M-
Dave Love <fx@gnu.org>
parents:
diff changeset
72 @cindex @key{ESC} replacing @key{META} key
Dave Love <fx@gnu.org>
parents:
diff changeset
73 Some terminals have a @key{META} key, and allow you to type Meta
Dave Love <fx@gnu.org>
parents:
diff changeset
74 characters by holding this key down. Thus, @kbd{Meta-a} is typed by
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
75 holding down @key{META} and pressing @kbd{a}. The @key{META} key
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
76 works much like the @key{SHIFT} key. Such a key is not always labeled
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
77 @key{META}, however, as this function is often a special option for a
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
78 key with some other primary purpose. Sometimes it is labeled
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
79 @key{ALT} or @key{EDIT}; on a Sun keyboard, it may have a diamond on
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
80 it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
81
Dave Love <fx@gnu.org>
parents:
diff changeset
82 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
83 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
84 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
85 @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
86 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
87 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
88 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
89 @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
90 you have formed a habit of using it.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
91
35188
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
92 The X Window System provides several other modifier keys that can be
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
93 applied to any input character. These are called @key{SUPER},
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
94 @key{HYPER} and @key{ALT}. We write @samp{s-}, @samp{H-} and @samp{A-}
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
95 to say that a character uses these modifiers. Thus, @kbd{s-H-C-x} is
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
96 short for @kbd{Super-Hyper-Control-x}. Not all X terminals actually
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
97 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
98 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
99 key bindings of Emacs do not include any characters with these
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
100 modifiers. But you can assign them meanings of your own by customizing
94d46968a93f Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents: 33523
diff changeset
101 Emacs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
102
45876
ed33a54a268c Document C-x @ feature.
Richard M. Stallman <rms@gnu.org>
parents: 38953
diff changeset
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
111 Keyboard input includes keyboard keys that are not characters at all:
Dave Love <fx@gnu.org>
parents:
diff changeset
112 for example function keys and arrow keys. Mouse buttons are also
Dave Love <fx@gnu.org>
parents:
diff changeset
113 outside the gamut of characters. You can modify these events with the
Dave Love <fx@gnu.org>
parents:
diff changeset
114 modifier keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and
Dave Love <fx@gnu.org>
parents:
diff changeset
115 @key{ALT}, just like keyboard characters.
Dave Love <fx@gnu.org>
parents:
diff changeset
116
Dave Love <fx@gnu.org>
parents:
diff changeset
117 @cindex input event
Dave Love <fx@gnu.org>
parents:
diff changeset
118 Input characters and non-character inputs are collectively called
Dave Love <fx@gnu.org>
parents:
diff changeset
119 @dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
120 Reference Manual}, for more information. If you are not doing Lisp
Dave Love <fx@gnu.org>
parents:
diff changeset
121 programming, but simply want to redefine the meaning of some characters
Dave Love <fx@gnu.org>
parents:
diff changeset
122 or non-character events, see @ref{Customization}.
Dave Love <fx@gnu.org>
parents:
diff changeset
123
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
124 @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
125 @acronym{ASCII} characters. These terminals use a sequence of characters to
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
126 represent each function key. But that is invisible to the Emacs user,
Dave Love <fx@gnu.org>
parents:
diff changeset
127 because the keyboard input routines recognize these special sequences
Dave Love <fx@gnu.org>
parents:
diff changeset
128 and convert them to function key events before any other part of Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
129 gets to see them.
Dave Love <fx@gnu.org>
parents:
diff changeset
130
Dave Love <fx@gnu.org>
parents:
diff changeset
131 @node Keys, Commands, User Input, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
132 @section Keys
Dave Love <fx@gnu.org>
parents:
diff changeset
133
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @cindex key sequence
Dave Love <fx@gnu.org>
parents:
diff changeset
135 @cindex key
Dave Love <fx@gnu.org>
parents:
diff changeset
136 A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
137 events that are meaningful as a unit---as ``a single command.'' Some
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
138 Emacs command sequences are just one character or one event; for
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
139 example, just @kbd{C-f} is enough to move forward one character in the
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
140 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
141 invoke.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
142
Dave Love <fx@gnu.org>
parents:
diff changeset
143 @cindex complete key
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @cindex prefix key
Dave Love <fx@gnu.org>
parents:
diff changeset
145 If a sequence of events is enough to invoke a command, it is a
Dave Love <fx@gnu.org>
parents:
diff changeset
146 @dfn{complete key}. Examples of complete keys include @kbd{C-a},
Dave Love <fx@gnu.org>
parents:
diff changeset
147 @kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow
Dave Love <fx@gnu.org>
parents:
diff changeset
148 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
149 complete, we call it a @dfn{prefix key}. The above examples show that
Dave Love <fx@gnu.org>
parents:
diff changeset
150 @kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either
Dave Love <fx@gnu.org>
parents:
diff changeset
151 a complete key or a prefix key.
Dave Love <fx@gnu.org>
parents:
diff changeset
152
Dave Love <fx@gnu.org>
parents:
diff changeset
153 Most single characters constitute complete keys in the standard Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
154 command bindings. A few of them are prefix keys. A prefix key combines
Dave Love <fx@gnu.org>
parents:
diff changeset
155 with the following input event to make a longer key sequence, which may
Dave Love <fx@gnu.org>
parents:
diff changeset
156 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
157 so @kbd{C-x} and the next input event combine to make a two-event
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
158 key sequence. Most of these key sequences are complete keys, including
Dave Love <fx@gnu.org>
parents:
diff changeset
159 @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
160 r}, are themselves prefix keys that lead to three-event key
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
161 sequences. There's no limit to the length of a key sequence, but in
Dave Love <fx@gnu.org>
parents:
diff changeset
162 practice people rarely use sequences longer than four events.
Dave Love <fx@gnu.org>
parents:
diff changeset
163
Dave Love <fx@gnu.org>
parents:
diff changeset
164 By contrast, you can't add more events onto a complete key. For
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
165 example, the two-event sequence @kbd{C-f C-k} is not a key, because
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
166 the @kbd{C-f} is a complete key in itself. It's impossible to give
Dave Love <fx@gnu.org>
parents:
diff changeset
167 @kbd{C-f C-k} an independent meaning as a command. @kbd{C-f C-k} is two
Dave Love <fx@gnu.org>
parents:
diff changeset
168 key sequences, not one.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
169
Dave Love <fx@gnu.org>
parents:
diff changeset
170 All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
Dave Love <fx@gnu.org>
parents:
diff changeset
171 @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x n}, @w{@kbd{C-x
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
172 r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, @key{ESC}, and
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
173 @kbd{M-g}. But this list is not cast in concrete; it is
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
174 just a matter of Emacs's standard key bindings. If you customize Emacs,
Dave Love <fx@gnu.org>
parents:
diff changeset
175 you can make new prefix keys, or eliminate these. @xref{Key Bindings}.
Dave Love <fx@gnu.org>
parents:
diff changeset
176
Dave Love <fx@gnu.org>
parents:
diff changeset
177 If you do make or eliminate prefix keys, that changes the set of
Dave Love <fx@gnu.org>
parents:
diff changeset
178 possible key sequences. For example, if you redefine @kbd{C-f} as a
Dave Love <fx@gnu.org>
parents:
diff changeset
179 prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless you
38953
41ebc22562e0 Minor clarification.
Richard M. Stallman <rms@gnu.org>
parents: 38172
diff changeset
180 define that too as a prefix). Conversely, if you remove the prefix
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
181 definition of @kbd{C-x 4}, then @kbd{C-x 4 f} (or @kbd{C-x 4
Dave Love <fx@gnu.org>
parents:
diff changeset
182 @var{anything}}) is no longer a key.
Dave Love <fx@gnu.org>
parents:
diff changeset
183
Dave Love <fx@gnu.org>
parents:
diff changeset
184 Typing the help character (@kbd{C-h} or @key{F1}) after a prefix
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
185 key displays a list of the commands starting with that prefix.
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
186 There are a few prefix keys for which @kbd{C-h} does not
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
187 work---for historical reasons, they have other meanings for @kbd{C-h}
Dave Love <fx@gnu.org>
parents:
diff changeset
188 which are not easy to change. But @key{F1} should work for all prefix
37483
fe7da308892e Explain how META may be labeled.
Richard M. Stallman <rms@gnu.org>
parents: 36263
diff changeset
189 keys.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48530
diff changeset
190
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
191 @node Commands, Text Characters, Keys, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
192 @section Keys and Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
193
Dave Love <fx@gnu.org>
parents:
diff changeset
194 @cindex binding
Dave Love <fx@gnu.org>
parents:
diff changeset
195 @cindex command
Dave Love <fx@gnu.org>
parents:
diff changeset
196 @cindex function definition
Dave Love <fx@gnu.org>
parents:
diff changeset
197 This manual is full of passages that tell you what particular keys
Dave Love <fx@gnu.org>
parents:
diff changeset
198 do. But Emacs does not assign meanings to keys directly. Instead,
Dave Love <fx@gnu.org>
parents:
diff changeset
199 Emacs assigns meanings to named @dfn{commands}, and then gives keys
Dave Love <fx@gnu.org>
parents:
diff changeset
200 their meanings by @dfn{binding} them to commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
201
Dave Love <fx@gnu.org>
parents:
diff changeset
202 Every command has a name chosen by a programmer. The name is usually
Dave Love <fx@gnu.org>
parents:
diff changeset
203 made of a few English words separated by dashes; for example,
Dave Love <fx@gnu.org>
parents:
diff changeset
204 @code{next-line} or @code{forward-word}. A command also has a
Dave Love <fx@gnu.org>
parents:
diff changeset
205 @dfn{function definition} which is a Lisp program; this is what makes
Dave Love <fx@gnu.org>
parents:
diff changeset
206 the command do what it does. In Emacs Lisp, a command is actually a
Dave Love <fx@gnu.org>
parents:
diff changeset
207 special kind of Lisp function; one which specifies how to read arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
208 for it and call it interactively. For more information on commands and
Dave Love <fx@gnu.org>
parents:
diff changeset
209 functions, see @ref{What Is a Function,, What Is a Function, elisp, The
Dave Love <fx@gnu.org>
parents:
diff changeset
210 Emacs Lisp Reference Manual}. (The definition we use in this manual is
Dave Love <fx@gnu.org>
parents:
diff changeset
211 simplified slightly.)
Dave Love <fx@gnu.org>
parents:
diff changeset
212
Dave Love <fx@gnu.org>
parents:
diff changeset
213 The bindings between keys and commands are recorded in various tables
Dave Love <fx@gnu.org>
parents:
diff changeset
214 called @dfn{keymaps}. @xref{Keymaps}.
Dave Love <fx@gnu.org>
parents:
diff changeset
215
Dave Love <fx@gnu.org>
parents:
diff changeset
216 When we say that ``@kbd{C-n} moves down vertically one line'' we are
Dave Love <fx@gnu.org>
parents:
diff changeset
217 glossing over a distinction that is irrelevant in ordinary use but is vital
Dave Love <fx@gnu.org>
parents:
diff changeset
218 in understanding how to customize Emacs. It is the command
Dave Love <fx@gnu.org>
parents:
diff changeset
219 @code{next-line} that is programmed to move down vertically. @kbd{C-n} has
Dave Love <fx@gnu.org>
parents:
diff changeset
220 this effect @emph{because} it is bound to that command. If you rebind
Dave Love <fx@gnu.org>
parents:
diff changeset
221 @kbd{C-n} to the command @code{forward-word} then @kbd{C-n} will move
Dave Love <fx@gnu.org>
parents:
diff changeset
222 forward by words instead. Rebinding keys is a common method of
Dave Love <fx@gnu.org>
parents:
diff changeset
223 customization.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
224
Dave Love <fx@gnu.org>
parents:
diff changeset
225 In the rest of this manual, we usually ignore this subtlety to keep
Dave Love <fx@gnu.org>
parents:
diff changeset
226 things simple. To give the information needed for customization, we
Dave Love <fx@gnu.org>
parents:
diff changeset
227 state the name of the command which really does the work in parentheses
Dave Love <fx@gnu.org>
parents:
diff changeset
228 after mentioning the key that runs it. For example, we will say that
Dave Love <fx@gnu.org>
parents:
diff changeset
229 ``The command @kbd{C-n} (@code{next-line}) moves point vertically
Dave Love <fx@gnu.org>
parents:
diff changeset
230 down,'' meaning that @code{next-line} is a command that moves vertically
38172
aad260e72f97 Minor change.
Richard M. Stallman <rms@gnu.org>
parents: 37483
diff changeset
231 down, and @kbd{C-n} is a key that is normally bound to it.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
232
Dave Love <fx@gnu.org>
parents:
diff changeset
233 While we are on the subject of information for customization only,
Dave Love <fx@gnu.org>
parents:
diff changeset
234 it's a good time to tell you about @dfn{variables}. Often the
Dave Love <fx@gnu.org>
parents:
diff changeset
235 description of a command will say, ``To change this, set the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
236 @code{mumble-foo}.'' A variable is a name used to remember a value.
Dave Love <fx@gnu.org>
parents:
diff changeset
237 Most of the variables documented in this manual exist just to facilitate
Dave Love <fx@gnu.org>
parents:
diff changeset
238 customization: some command or other part of Emacs examines the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
239 and behaves differently according to the value that you set. Until you
Dave Love <fx@gnu.org>
parents:
diff changeset
240 are interested in customizing, you can ignore the information about
Dave Love <fx@gnu.org>
parents:
diff changeset
241 variables. When you are ready to be interested, read the basic
Dave Love <fx@gnu.org>
parents:
diff changeset
242 information on variables, and then the information on individual
Dave Love <fx@gnu.org>
parents:
diff changeset
243 variables will make sense. @xref{Variables}.
Dave Love <fx@gnu.org>
parents:
diff changeset
244
Dave Love <fx@gnu.org>
parents:
diff changeset
245 @node Text Characters, Entering Emacs, Commands, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
246 @section Character Set for Text
Dave Love <fx@gnu.org>
parents:
diff changeset
247 @cindex characters (in text)
Dave Love <fx@gnu.org>
parents:
diff changeset
248
Dave Love <fx@gnu.org>
parents:
diff changeset
249 Text in Emacs buffers is a sequence of 8-bit bytes. Each byte can
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
250 hold a single @acronym{ASCII} character. Both @acronym{ASCII} control characters (octal
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
251 codes 000 through 037, and 0177) and @acronym{ASCII} printing characters (codes
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
252 040 through 0176) are allowed; however, non-@acronym{ASCII} control characters
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
253 cannot appear in a buffer. The other modifier flags used in keyboard
Dave Love <fx@gnu.org>
parents:
diff changeset
254 input, such as Meta, are not allowed in buffers either.
Dave Love <fx@gnu.org>
parents:
diff changeset
255
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
256 Some @acronym{ASCII} control characters serve special purposes in text, and have
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
257 special names. For example, the newline character (octal code 012) is
Dave Love <fx@gnu.org>
parents:
diff changeset
258 used in the buffer to end a line, and the tab character (octal code 011)
Dave Love <fx@gnu.org>
parents:
diff changeset
259 is used for indenting to the next tab stop column (normally every 8
Dave Love <fx@gnu.org>
parents:
diff changeset
260 columns). @xref{Text Display}.
Dave Love <fx@gnu.org>
parents:
diff changeset
261
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
262 Non-@acronym{ASCII} printing characters can also appear in buffers. When
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
263 multibyte characters are enabled, you can use any of the non-@acronym{ASCII}
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
264 printing characters that Emacs supports. They have character codes
Dave Love <fx@gnu.org>
parents:
diff changeset
265 starting at 256, octal 0400, and each one is represented as a sequence
36147
90084231ad3e Minor change in wording.
Richard M. Stallman <rms@gnu.org>
parents: 35188
diff changeset
266 of two or more bytes. @xref{International}. Single-byte characters
90084231ad3e Minor change in wording.
Richard M. Stallman <rms@gnu.org>
parents: 35188
diff changeset
267 with codes 128 through 255 can also appear in multibyte buffers.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
268
Dave Love <fx@gnu.org>
parents:
diff changeset
269 If you disable multibyte characters, then you can use only one
52979
3649390c0f91 Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents: 52401
diff changeset
270 alphabet of non-@acronym{ASCII} characters, but they all fit in one byte. They
27219
8cda50572ee2 Update xref.
Dave Love <fx@gnu.org>
parents: 25829
diff changeset
271 use codes 0200 through 0377. @xref{Single-Byte Character Support}.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
272
56810
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
273 @ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
274 @lowersections
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
275 @end ifnottex
24bffa640391 Adapt sectioning in Info to the node structure.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52979
diff changeset
276
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
277 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
278 arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
279 @end ignore