Commit | Line | Data |
---|---|---|
6bf7aab6 DL |
1 | @c This is part of the Emacs manual. |
2 | @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc. | |
3 | @c See file emacs.texi for copying conditions. | |
4 | @iftex | |
5 | @chapter Characters, Keys and Commands | |
6 | ||
7 | This chapter explains the character sets used by Emacs for input | |
8 | commands and for the contents of files, and also explains the concepts | |
9 | of @dfn{keys} and @dfn{commands}, which are fundamental for understanding | |
10 | how Emacs interprets your keyboard and mouse input. | |
11 | @end iftex | |
12 | ||
6cca5de0 LT |
13 | @ifnottex |
14 | @raisesections | |
15 | @end ifnottex | |
16 | ||
6bf7aab6 DL |
17 | @node User Input, Keys, Screen, Top |
18 | @section Kinds of User Input | |
19 | @cindex input with the keyboard | |
20 | @cindex keyboard input | |
21 | @cindex character set (keyboard) | |
76dd3692 | 22 | @cindex @acronym{ASCII} |
6bf7aab6 DL |
23 | @cindex C- |
24 | @cindex Control | |
25 | @cindex control characters | |
26 | ||
76dd3692 | 27 | GNU Emacs uses an extension of the @acronym{ASCII} character set for keyboard |
6bf7aab6 DL |
28 | input; it also accepts non-character input events including function |
29 | keys and mouse button actions. | |
30 | ||
76dd3692 | 31 | @acronym{ASCII} consists of 128 character codes. Some of these codes are |
6bf7aab6 DL |
32 | assigned graphic symbols such as @samp{a} and @samp{=}; the rest are |
33 | control characters, such as @kbd{Control-a} (usually written @kbd{C-a} | |
34 | for short). @kbd{C-a} gets its name from the fact that you type it by | |
35 | holding down the @key{CTRL} key while pressing @kbd{a}. | |
36 | ||
76dd3692 | 37 | Some @acronym{ASCII} control characters have special names, and most terminals |
6bf7aab6 DL |
38 | have special keys you can type them with: for example, @key{RET}, |
39 | @key{TAB}, @key{DEL} and @key{ESC}. The space character is usually | |
40 | referred to below as @key{SPC}, even though strictly speaking it is a | |
41 | graphic character whose graphic happens to be blank. Some keyboards | |
42 | have a key labeled ``linefeed'' which is an alias for @kbd{C-j}. | |
43 | ||
76dd3692 | 44 | Emacs extends the @acronym{ASCII} character set with thousands more printing |
6bf7aab6 DL |
45 | characters (@pxref{International}), additional control characters, and a |
46 | few more modifiers that can be combined with any character. | |
47 | ||
76dd3692 | 48 | On @acronym{ASCII} terminals, there are only 32 possible control characters. |
6bf7aab6 DL |
49 | These are the control variants of letters and @samp{@@[]\^_}. In |
50 | addition, the shift key is meaningless with control characters: | |
51 | @kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot | |
52 | distinguish them. | |
53 | ||
54 | But the Emacs character set has room for control variants of all | |
55 | printing characters, and for distinguishing between @kbd{C-a} and | |
97878c08 EZ |
56 | @kbd{C-A}. The X Window System makes it possible to enter all these |
57 | characters. For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5} | |
58 | are meaningful Emacs commands under X. | |
6bf7aab6 DL |
59 | |
60 | Another Emacs character-set extension is additional modifier bits. | |
61 | Only one modifier bit is commonly used; it is called Meta. Every | |
62 | character has a Meta variant; examples include @kbd{Meta-a} (normally | |
63 | written @kbd{M-a}, for short), @kbd{M-A} (not the same character as | |
64 | @kbd{M-a}, but those two characters normally have the same meaning in | |
65 | Emacs), @kbd{M-@key{RET}}, and @kbd{M-C-a}. For reasons of tradition, | |
66 | we usually write @kbd{C-M-a} rather than @kbd{M-C-a}; logically | |
67 | speaking, the order in which the modifier keys @key{CTRL} and @key{META} | |
68 | are mentioned does not matter. | |
69 | ||
70 | @cindex Meta | |
71 | @cindex M- | |
72 | @cindex @key{ESC} replacing @key{META} key | |
73 | Some terminals have a @key{META} key, and allow you to type Meta | |
74 | characters by holding this key down. Thus, @kbd{Meta-a} is typed by | |
8e7692a9 RS |
75 | holding down @key{META} and pressing @kbd{a}. The @key{META} key |
76 | works much like the @key{SHIFT} key. Such a key is not always labeled | |
77 | @key{META}, however, as this function is often a special option for a | |
78 | key with some other primary purpose. Sometimes it is labeled | |
79 | @key{ALT} or @key{EDIT}; on a Sun keyboard, it may have a diamond on | |
80 | it. | |
6bf7aab6 DL |
81 | |
82 | If there is no @key{META} key, you can still type Meta characters | |
8398176a RS |
83 | using two-character sequences starting with @key{ESC}. Thus, you can |
84 | enter @kbd{M-a} by typing @kbd{@key{ESC} a}. You can enter | |
85 | @kbd{C-M-a} by typing @kbd{@key{ESC} C-a}. Unlike @key{META}, which | |
86 | modifies other characters, @key{ESC} is a separate character. You | |
87 | don't hold down @key{ESC} while typing the next character; instead, | |
88 | you press it and release it, then you enter the next character. | |
89 | @key{ESC} is allowed on terminals with @key{META} keys, too, in case | |
90 | you have formed a habit of using it. | |
177c0ea7 | 91 | |
97878c08 EZ |
92 | The X Window System provides several other modifier keys that can be |
93 | applied to any input character. These are called @key{SUPER}, | |
94 | @key{HYPER} and @key{ALT}. We write @samp{s-}, @samp{H-} and @samp{A-} | |
95 | to say that a character uses these modifiers. Thus, @kbd{s-H-C-x} is | |
96 | short for @kbd{Super-Hyper-Control-x}. Not all X terminals actually | |
97 | provide keys for these modifier flags---in fact, many terminals have a | |
98 | key labeled @key{ALT} which is really a @key{META} key. The standard | |
99 | key bindings of Emacs do not include any characters with these | |
100 | modifiers. But you can assign them meanings of your own by customizing | |
101 | Emacs. | |
6bf7aab6 | 102 | |
e92ecd42 RS |
103 | If your keyboard lacks one of these modifier keys, you can enter it |
104 | using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to the next | |
105 | character, @kbd{C-x @@ s} adds the ``super'' flag, and @kbd{C-x @@ a} | |
106 | adds the ``alt'' flag. For instance, @kbd{C-x @@ h C-a} is a way to | |
107 | enter @kbd{Hyper-Control-a}. (Unfortunately there is no way to add | |
108 | two modifiers by using @kbd{C-x @@} twice for the same character, | |
109 | because the first one goes to work on the @kbd{C-x}.) | |
110 | ||
6bf7aab6 DL |
111 | Keyboard input includes keyboard keys that are not characters at all: |
112 | for example function keys and arrow keys. Mouse buttons are also | |
113 | outside the gamut of characters. You can modify these events with the | |
114 | modifier keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and | |
115 | @key{ALT}, just like keyboard characters. | |
116 | ||
117 | @cindex input event | |
118 | Input characters and non-character inputs are collectively called | |
119 | @dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp | |
120 | Reference Manual}, for more information. If you are not doing Lisp | |
121 | programming, but simply want to redefine the meaning of some characters | |
122 | or non-character events, see @ref{Customization}. | |
123 | ||
76dd3692 EZ |
124 | @acronym{ASCII} terminals cannot really send anything to the computer except |
125 | @acronym{ASCII} characters. These terminals use a sequence of characters to | |
6bf7aab6 DL |
126 | represent each function key. But that is invisible to the Emacs user, |
127 | because the keyboard input routines recognize these special sequences | |
128 | and convert them to function key events before any other part of Emacs | |
129 | gets to see them. | |
130 | ||
131 | @node Keys, Commands, User Input, Top | |
132 | @section Keys | |
133 | ||
134 | @cindex key sequence | |
135 | @cindex key | |
136 | A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input | |
8e7692a9 RS |
137 | events that are meaningful as a unit---as ``a single command.'' Some |
138 | Emacs command sequences are just one character or one event; for | |
139 | example, just @kbd{C-f} is enough to move forward one character in the | |
140 | buffer. But Emacs also has commands that take two or more events to | |
141 | invoke. | |
6bf7aab6 DL |
142 | |
143 | @cindex complete key | |
144 | @cindex prefix key | |
145 | If a sequence of events is enough to invoke a command, it is a | |
146 | @dfn{complete key}. Examples of complete keys include @kbd{C-a}, | |
147 | @kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow | |
148 | key), @kbd{C-x C-f}, and @kbd{C-x 4 C-f}. If it isn't long enough to be | |
149 | complete, we call it a @dfn{prefix key}. The above examples show that | |
150 | @kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either | |
151 | a complete key or a prefix key. | |
152 | ||
153 | Most single characters constitute complete keys in the standard Emacs | |
154 | command bindings. A few of them are prefix keys. A prefix key combines | |
155 | with the following input event to make a longer key sequence, which may | |
156 | itself be complete or a prefix. For example, @kbd{C-x} is a prefix key, | |
8e7692a9 | 157 | so @kbd{C-x} and the next input event combine to make a two-event |
6bf7aab6 DL |
158 | key sequence. Most of these key sequences are complete keys, including |
159 | @kbd{C-x C-f} and @kbd{C-x b}. A few, such as @kbd{C-x 4} and @kbd{C-x | |
8e7692a9 | 160 | r}, are themselves prefix keys that lead to three-event key |
6bf7aab6 DL |
161 | sequences. There's no limit to the length of a key sequence, but in |
162 | practice people rarely use sequences longer than four events. | |
163 | ||
164 | By contrast, you can't add more events onto a complete key. For | |
8e7692a9 | 165 | example, the two-event sequence @kbd{C-f C-k} is not a key, because |
6bf7aab6 DL |
166 | the @kbd{C-f} is a complete key in itself. It's impossible to give |
167 | @kbd{C-f C-k} an independent meaning as a command. @kbd{C-f C-k} is two | |
168 | key sequences, not one.@refill | |
169 | ||
170 | All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h}, | |
35ea7c7c | 171 | @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x |
3fb57290 LT |
172 | n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, |
173 | @key{ESC}, @kbd{M-o} and @kbd{M-g}. (@key{F1} and @key{F2} are aliases for | |
35ea7c7c RS |
174 | @kbd{C-h} and @kbd{C-x 6}.) But this list is not cast in concrete; it |
175 | is just a matter of Emacs's standard key bindings. If you customize | |
176 | Emacs, you can make new prefix keys, or eliminate these. @xref{Key | |
177 | Bindings}. | |
6bf7aab6 DL |
178 | |
179 | If you do make or eliminate prefix keys, that changes the set of | |
180 | possible key sequences. For example, if you redefine @kbd{C-f} as a | |
181 | prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless you | |
cd30a00e | 182 | define that too as a prefix). Conversely, if you remove the prefix |
6bf7aab6 DL |
183 | definition of @kbd{C-x 4}, then @kbd{C-x 4 f} (or @kbd{C-x 4 |
184 | @var{anything}}) is no longer a key. | |
185 | ||
186 | Typing the help character (@kbd{C-h} or @key{F1}) after a prefix | |
8e7692a9 RS |
187 | key displays a list of the commands starting with that prefix. |
188 | There are a few prefix keys for which @kbd{C-h} does not | |
6bf7aab6 DL |
189 | work---for historical reasons, they have other meanings for @kbd{C-h} |
190 | which are not easy to change. But @key{F1} should work for all prefix | |
8e7692a9 | 191 | keys. |
177c0ea7 | 192 | |
6bf7aab6 DL |
193 | @node Commands, Text Characters, Keys, Top |
194 | @section Keys and Commands | |
195 | ||
196 | @cindex binding | |
6bf7aab6 DL |
197 | @cindex command |
198 | @cindex function definition | |
199 | This manual is full of passages that tell you what particular keys | |
200 | do. But Emacs does not assign meanings to keys directly. Instead, | |
201 | Emacs assigns meanings to named @dfn{commands}, and then gives keys | |
202 | their meanings by @dfn{binding} them to commands. | |
203 | ||
204 | Every command has a name chosen by a programmer. The name is usually | |
205 | made of a few English words separated by dashes; for example, | |
206 | @code{next-line} or @code{forward-word}. A command also has a | |
207 | @dfn{function definition} which is a Lisp program; this is what makes | |
208 | the command do what it does. In Emacs Lisp, a command is actually a | |
209 | special kind of Lisp function; one which specifies how to read arguments | |
210 | for it and call it interactively. For more information on commands and | |
211 | functions, see @ref{What Is a Function,, What Is a Function, elisp, The | |
212 | Emacs Lisp Reference Manual}. (The definition we use in this manual is | |
213 | simplified slightly.) | |
214 | ||
215 | The bindings between keys and commands are recorded in various tables | |
216 | called @dfn{keymaps}. @xref{Keymaps}. | |
217 | ||
218 | When we say that ``@kbd{C-n} moves down vertically one line'' we are | |
219 | glossing over a distinction that is irrelevant in ordinary use but is vital | |
220 | in understanding how to customize Emacs. It is the command | |
221 | @code{next-line} that is programmed to move down vertically. @kbd{C-n} has | |
222 | this effect @emph{because} it is bound to that command. If you rebind | |
223 | @kbd{C-n} to the command @code{forward-word} then @kbd{C-n} will move | |
224 | forward by words instead. Rebinding keys is a common method of | |
225 | customization.@refill | |
226 | ||
d43f4539 RS |
227 | In the rest of this manual, we usually ignore this distinction to |
228 | keep things simple. We will often speak of keys like @kbd{C-n} as | |
229 | commands, even though strictly speaking a key is bound to some | |
230 | command. To give the information needed for customization, we state | |
231 | the name of the command which really does the work in parentheses | |
6bf7aab6 DL |
232 | after mentioning the key that runs it. For example, we will say that |
233 | ``The command @kbd{C-n} (@code{next-line}) moves point vertically | |
d43f4539 RS |
234 | down,'' meaning that @code{next-line} is a command that moves |
235 | vertically down, and @kbd{C-n} is a key that is normally bound to it. | |
6bf7aab6 DL |
236 | |
237 | While we are on the subject of information for customization only, | |
238 | it's a good time to tell you about @dfn{variables}. Often the | |
239 | description of a command will say, ``To change this, set the variable | |
240 | @code{mumble-foo}.'' A variable is a name used to remember a value. | |
241 | Most of the variables documented in this manual exist just to facilitate | |
242 | customization: some command or other part of Emacs examines the variable | |
243 | and behaves differently according to the value that you set. Until you | |
244 | are interested in customizing, you can ignore the information about | |
245 | variables. When you are ready to be interested, read the basic | |
246 | information on variables, and then the information on individual | |
247 | variables will make sense. @xref{Variables}. | |
248 | ||
249 | @node Text Characters, Entering Emacs, Commands, Top | |
250 | @section Character Set for Text | |
251 | @cindex characters (in text) | |
252 | ||
253 | Text in Emacs buffers is a sequence of 8-bit bytes. Each byte can | |
76dd3692 EZ |
254 | hold a single @acronym{ASCII} character. Both @acronym{ASCII} control characters (octal |
255 | codes 000 through 037, and 0177) and @acronym{ASCII} printing characters (codes | |
256 | 040 through 0176) are allowed; however, non-@acronym{ASCII} control characters | |
6bf7aab6 DL |
257 | cannot appear in a buffer. The other modifier flags used in keyboard |
258 | input, such as Meta, are not allowed in buffers either. | |
259 | ||
76dd3692 | 260 | Some @acronym{ASCII} control characters serve special purposes in text, and have |
6bf7aab6 DL |
261 | special names. For example, the newline character (octal code 012) is |
262 | used in the buffer to end a line, and the tab character (octal code 011) | |
263 | is used for indenting to the next tab stop column (normally every 8 | |
264 | columns). @xref{Text Display}. | |
265 | ||
76dd3692 EZ |
266 | Non-@acronym{ASCII} printing characters can also appear in buffers. When |
267 | multibyte characters are enabled, you can use any of the non-@acronym{ASCII} | |
6bf7aab6 DL |
268 | printing characters that Emacs supports. They have character codes |
269 | starting at 256, octal 0400, and each one is represented as a sequence | |
1bf1d9f5 RS |
270 | of two or more bytes. @xref{International}. Single-byte characters |
271 | with codes 128 through 255 can also appear in multibyte buffers. | |
6bf7aab6 DL |
272 | |
273 | If you disable multibyte characters, then you can use only one | |
76dd3692 | 274 | alphabet of non-@acronym{ASCII} characters, but they all fit in one byte. They |
a3ddb43a | 275 | use codes 0200 through 0377. @xref{Single-Byte Character Support}. |
ab5796a9 | 276 | |
6cca5de0 LT |
277 | @ifnottex |
278 | @lowersections | |
279 | @end ifnottex | |
280 | ||
ab5796a9 MB |
281 | @ignore |
282 | arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45 | |
283 | @end ignore |