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