Mercurial > hg > xemacs-beta
comparison man/lispref/keymaps.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 169c0442b401 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 @c -*-texinfo-*- | |
2 @c This is part of the XEmacs Lisp Reference Manual. | |
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. | |
4 @c Copyright (C) 1996 Ben Wing. | |
5 @c See the file lispref.texi for copying conditions. | |
6 @setfilename ../../info/keymaps.info | |
7 @node Keymaps, Menus, Command Loop, Top | |
8 @chapter Keymaps | |
9 @cindex keymap | |
10 | |
11 @c This section is largely different from the one in FSF Emacs. | |
12 | |
13 The bindings between input events and commands are recorded in data | |
14 structures called @dfn{keymaps}. Each binding in a keymap associates | |
15 (or @dfn{binds}) an individual event type either with another keymap or | |
16 with a command. When an event is bound to a keymap, that keymap is | |
17 used to look up the next input event; this continues until a command | |
18 is found. The whole process is called @dfn{key lookup}. | |
19 | |
20 @menu | |
21 * Keymap Terminology:: Definitions of terms pertaining to keymaps. | |
22 * Format of Keymaps:: What a keymap looks like as a Lisp object. | |
23 * Creating Keymaps:: Functions to create and copy keymaps. | |
24 * Inheritance and Keymaps:: How one keymap can inherit the bindings | |
25 of another keymap. | |
26 * Key Sequences:: How to specify key sequences. | |
27 * Prefix Keys:: Defining a key with a keymap as its definition. | |
28 * Active Keymaps:: Each buffer has a local keymap | |
29 to override the standard (global) bindings. | |
30 A minor mode can also override them. | |
31 * Key Lookup:: How extracting elements from keymaps works. | |
32 * Functions for Key Lookup:: How to request key lookup. | |
33 * Changing Key Bindings:: Redefining a key in a keymap. | |
34 * Key Binding Commands:: Interactive interfaces for redefining keys. | |
35 * Scanning Keymaps:: Looking through all keymaps, for printing help. | |
36 * Other Keymap Functions:: Miscellaneous keymap functions. | |
37 @end menu | |
38 | |
39 @node Keymap Terminology | |
40 @section Keymap Terminology | |
41 @cindex key | |
42 @cindex keystroke | |
43 @cindex key binding | |
44 @cindex binding of a key | |
45 @cindex complete key | |
46 @cindex undefined key | |
47 | |
48 A @dfn{keymap} is a table mapping event types to definitions (which | |
49 can be any Lisp objects, though only certain types are meaningful for | |
50 execution by the command loop). Given an event (or an event type) and a | |
51 keymap, XEmacs can get the event's definition. Events mapped in keymaps | |
52 include keypresses, button presses, and button releases | |
53 (@pxref{Events}). | |
54 | |
55 A sequence of input events that form a unit is called a | |
56 @dfn{key sequence}, or @dfn{key} for short. A sequence of one event | |
57 is always a key sequence, and so are some multi-event sequences. | |
58 | |
59 A keymap determines a binding or definition for any key sequence. If | |
60 the key sequence is a single event, its binding is the definition of the | |
61 event in the keymap. The binding of a key sequence of more than one | |
62 event is found by an iterative process: the binding of the first event | |
63 is found, and must be a keymap; then the second event's binding is found | |
64 in that keymap, and so on until all the events in the key sequence are | |
65 used up. | |
66 | |
67 If the binding of a key sequence is a keymap, we call the key sequence | |
68 a @dfn{prefix key}. Otherwise, we call it a @dfn{complete key} (because | |
69 no more events can be added to it). If the binding is @code{nil}, | |
70 we call the key @dfn{undefined}. Examples of prefix keys are @kbd{C-c}, | |
71 @kbd{C-x}, and @kbd{C-x 4}. Examples of defined complete keys are | |
72 @kbd{X}, @key{RET}, and @kbd{C-x 4 C-f}. Examples of undefined complete | |
73 keys are @kbd{C-x C-g}, and @kbd{C-c 3}. @xref{Prefix Keys}, for more | |
74 details. | |
75 | |
76 The rule for finding the binding of a key sequence assumes that the | |
77 intermediate bindings (found for the events before the last) are all | |
78 keymaps; if this is not so, the sequence of events does not form a | |
79 unit---it is not really a key sequence. In other words, removing one or | |
80 more events from the end of any valid key must always yield a prefix | |
81 key. For example, @kbd{C-f C-n} is not a key; @kbd{C-f} is not a prefix | |
82 key, so a longer sequence starting with @kbd{C-f} cannot be a key. | |
83 | |
84 Note that the set of possible multi-event key sequences depends on the | |
85 bindings for prefix keys; therefore, it can be different for different | |
86 keymaps, and can change when bindings are changed. However, a one-event | |
87 sequence is always a key sequence, because it does not depend on any | |
88 prefix keys for its well-formedness. | |
89 | |
90 At any time, several primary keymaps are @dfn{active}---that is, in | |
91 use for finding key bindings. These are the @dfn{global map}, which is | |
92 shared by all buffers; the @dfn{local keymap}, which is usually | |
93 associated with a specific major mode; and zero or more @dfn{minor mode | |
94 keymaps}, which belong to currently enabled minor modes. (Not all minor | |
95 modes have keymaps.) The local keymap bindings shadow (i.e., take | |
96 precedence over) the corresponding global bindings. The minor mode | |
97 keymaps shadow both local and global keymaps. @xref{Active Keymaps}, | |
98 for details. | |
99 | |
100 @node Format of Keymaps | |
101 @section Format of Keymaps | |
102 @cindex format of keymaps | |
103 @cindex keymap format | |
104 | |
105 A keymap is a primitive type that associates events with their | |
106 bindings. Note that this is different from Emacs 18 and FSF Emacs, | |
107 where keymaps are lists. | |
108 | |
109 @defun keymapp object | |
110 This function returns @code{t} if @var{object} is a keymap, @code{nil} | |
111 otherwise. | |
112 @end defun | |
113 | |
114 @node Creating Keymaps | |
115 @section Creating Keymaps | |
116 @cindex creating keymaps | |
117 | |
118 Here we describe the functions for creating keymaps. | |
119 | |
120 @defun make-keymap &optional name | |
121 This function constructs and returns a new keymap object. All entries | |
122 in it are @code{nil}, meaning ``command undefined''. | |
123 | |
124 Optional argument @var{name} specifies a name to assign to the keymap, | |
125 as in @code{set-keymap-name}. This name is only a debugging | |
126 convenience; it is not used except when printing the keymap. | |
127 @end defun | |
128 | |
129 @defun make-sparse-keymap &optional name | |
130 This function constructs and returns a new keymap object. All entries | |
131 in it are @code{nil}, meaning ``command undefined''. The only | |
132 difference between this function and @code{make-keymap} is that this | |
133 function returns a ``smaller'' keymap (one that is expected to contain | |
134 fewer entries). As keymaps dynamically resize, the distinction is not | |
135 great. | |
136 | |
137 Optional argument @var{name} specifies a name to assign to the keymap, | |
138 as in @code{set-keymap-name}. This name is only a debugging | |
139 convenience; it is not used except when printing the keymap. | |
140 @end defun | |
141 | |
142 @defun set-keymap-name keymap new-name | |
143 This function assigns a ``name'' to a keymap. The name is only a | |
144 debugging convenience; it is not used except when printing the keymap. | |
145 @end defun | |
146 | |
147 @defun keymap-name keymap | |
148 This function returns the ``name'' of a keymap, as assigned using | |
149 @code{set-keymap-name}. | |
150 @end defun | |
151 | |
152 @defun copy-keymap keymap | |
153 This function returns a copy of @var{keymap}. Any keymaps that | |
154 appear directly as bindings in @var{keymap} are also copied recursively, | |
155 and so on to any number of levels. However, recursive copying does not | |
156 take place when the definition of a character is a symbol whose function | |
157 definition is a keymap; the same symbol appears in the new copy. | |
158 | |
159 @example | |
160 @group | |
161 (setq map (copy-keymap (current-local-map))) | |
162 @result{} #<keymap 3 entries 0x21f80> | |
163 @end group | |
164 | |
165 @group | |
166 (eq map (current-local-map)) | |
167 @result{} nil | |
168 @end group | |
169 @ignore @c Doesn't work! | |
170 @group | |
171 (equal map (current-local-map)) | |
172 @result{} t | |
173 @end group | |
174 @end ignore | |
175 @end example | |
176 @end defun | |
177 | |
178 @node Inheritance and Keymaps | |
179 @section Inheritance and Keymaps | |
180 @cindex keymap inheritance | |
181 @cindex inheriting a keymap's bindings | |
182 @cindex keymap parent | |
183 @cindex parent of a keymap | |
184 | |
185 A keymap can inherit the bindings of other keymaps. The other | |
186 keymaps are called the keymap's @dfn{parents}, and are set with | |
187 @code{set-keymap-parents}. When searching for a binding for a key | |
188 sequence in a particular keymap, that keymap itself will first be | |
189 searched; then, if no binding was found in the map and it has parents, | |
190 the first parent keymap will be searched; then that keymap's parent will | |
191 be searched, and so on, until either a binding for the key sequence is | |
192 found, or a keymap without a parent is encountered. At this point, | |
193 the search will continue with the next parent of the most recently | |
194 encountered keymap that has another parent, etc. Essentially, a | |
195 depth-first search of all the ancestors of the keymap is conducted. | |
196 | |
197 @code{(current-global-map)} is the default parent of all keymaps. | |
198 | |
199 @defun set-keymap-parents keymap parents | |
200 This function sets the parent keymaps of @var{keymap} to the list | |
201 @var{parents}. | |
202 | |
203 If you change the bindings in one of the keymaps in @var{parents} using | |
204 @code{define-key} or other key-binding functions, these changes are | |
205 visible in @var{keymap} unless shadowed by bindings in that map or in | |
206 earlier-searched ancestors. The converse is not true: if you use | |
207 @code{define-key} to change @var{keymap}, that affects the bindings in | |
208 that map, but has no effect on any of the keymaps in @var{parents}. | |
209 @end defun | |
210 | |
211 @defun keymap-parents keymap | |
212 This function returns the list of parent keymaps of @var{keymap}, or | |
213 @code{nil} if @var{keymap} has no parents. | |
214 @end defun | |
215 | |
216 As an alternative to specifying a parent, you can also specify a | |
217 @dfn{default binding} that is used whenever a key is not otherwise bound | |
218 in the keymap. This is useful for terminal emulators, for example, | |
219 which may want to trap all keystrokes and pass them on in some modified | |
220 format. Note that if you specify a default binding for a keymap, | |
221 neither the keymap's parents nor the current global map are searched for | |
222 key bindings. | |
223 | |
224 @defun set-keymap-default-binding keymap command | |
225 This function sets the default binding of @var{keymap} to @var{command}, | |
226 or @code{nil} if no default is desired. | |
227 @end defun | |
228 | |
229 @defun keymap-default-binding keymap | |
230 This function returns the default binding of @var{keymap}, or @code{nil} | |
231 if it has none. | |
232 @end defun | |
233 | |
234 @node Key Sequences | |
235 @section Key Sequences | |
236 @cindex key sequences | |
237 | |
238 Contrary to popular belief, the world is not @sc{ASCII}. When running | |
239 under a window manager, XEmacs can tell the difference between, for | |
240 example, the keystrokes @kbd{control-h}, @kbd{control-shift-h}, and | |
241 @kbd{backspace}. You can, in fact, bind different commands to each of | |
242 these. | |
243 | |
244 A @dfn{key sequence} is a set of keystrokes. A @dfn{keystroke} is a | |
245 keysym and some set of modifiers (such as @key{CONTROL} and @key{META}). | |
246 A @dfn{keysym} is what is printed on the keys on your keyboard. | |
247 | |
248 A keysym may be represented by a symbol, or (if and only if it is | |
249 equivalent to an @sc{ASCII} character in the range 32 - 255) by a | |
250 character or its equivalent @sc{ASCII} code. The @kbd{A} key may be | |
251 represented by the symbol @code{A}, the character @code{?A}, or by the | |
252 number 65. The @kbd{break} key may be represented only by the symbol | |
253 @code{break}. | |
254 | |
255 A keystroke may be represented by a list: the last element of the list | |
256 is the key (a symbol, character, or number, as above) and the preceding | |
257 elements are the symbolic names of modifier keys (@key{CONTROL}, | |
258 @key{META}, @key{SUPER}, @key{HYPER}, @key{ALT}, and @key{SHIFT}). | |
259 Thus, the sequence @kbd{control-b} is represented by the forms | |
260 @code{(control b)}, @code{(control ?b)}, and @code{(control 98)}. A | |
261 keystroke may also be represented by an event object, as returned by the | |
262 @code{next-command-event} and @code{read-key-sequence} functions. | |
263 | |
264 Note that in this context, the keystroke @kbd{control-b} is @emph{not} | |
265 represented by the number 2 (the @sc{ASCII} code for @samp{^B}) or the | |
266 character @code{?\^B}. See below. | |
267 | |
268 The @key{SHIFT} modifier is somewhat of a special case. You should | |
269 not (and cannot) use @code{(meta shift a)} to mean @code{(meta A)}, | |
270 since for characters that have @sc{ASCII} equivalents, the state of the | |
271 shift key is implicit in the keysym (@samp{a} vs. @samp{A}). You also | |
272 cannot say @code{(shift =)} to mean @code{+}, as that sort of thing | |
273 varies from keyboard to keyboard. The @key{SHIFT} modifier is for use | |
274 only with characters that do not have a second keysym on the same key, | |
275 such as @code{backspace} and @code{tab}. | |
276 | |
277 A key sequence is a vector of keystrokes. As a degenerate case, | |
278 elements of this vector may also be keysyms if they have no modifiers. | |
279 That is, the @kbd{A} keystroke is represented by all of these forms: | |
280 | |
281 @example | |
282 A ?A 65 (A) (?A) (65) | |
283 [A] [?A] [65] [(A)] [(?A)] [(65)] | |
284 @end example | |
285 | |
286 the @kbd{control-a} keystroke is represented by these forms: | |
287 | |
288 @example | |
289 (control A) (control ?A) (control 65) | |
290 [(control A)] [(control ?A)] [(control 65)] | |
291 @end example | |
292 | |
293 the key sequence @kbd{control-c control-a} is represented by these | |
294 forms: | |
295 | |
296 @example | |
297 [(control c) (control a)] [(control ?c) (control ?a)] | |
298 [(control 99) (control 65)] etc. | |
299 @end example | |
300 | |
301 Mouse button clicks work just like keypresses: @code{(control | |
302 button1)} means pressing the left mouse button while holding down the | |
303 control key. @code{[(control c) (shift button3)]} means | |
304 @kbd{control-c}, hold @key{SHIFT}, click right. | |
305 | |
306 Commands may be bound to the mouse-button up-stroke rather than the | |
307 down-stroke as well. @code{button1} means the down-stroke, and | |
308 @code{button1up} means the up-stroke. Different commands may be bound | |
309 to the up and down strokes, though that is probably not what you want, | |
310 so be careful. | |
311 | |
312 For backward compatibility, a key sequence may also be represented by | |
313 a string. In this case, it represents the key sequence(s) that would | |
314 produce that sequence of @sc{ASCII} characters in a purely @sc{ASCII} | |
315 world. For example, a string containing the @sc{ASCII} backspace | |
316 character, @code{"\^H"}, would represent two key sequences: | |
317 @code{(control h)} and @code{backspace}. Binding a command to this will | |
318 actually bind both of those key sequences. Likewise for the following | |
319 pairs: | |
320 | |
321 @example | |
322 control h backspace | |
323 control i tab | |
324 control m return | |
325 control j linefeed | |
326 control [ escape | |
327 control @@ control space | |
328 @end example | |
329 | |
330 After binding a command to two key sequences with a form like | |
331 | |
332 @example | |
333 (define-key global-map "\^X\^I" 'command-1) | |
334 @end example | |
335 | |
336 @noindent | |
337 it is possible to redefine only one of those sequences like so: | |
338 | |
339 @example | |
340 (define-key global-map [(control x) (control i)] 'command-2) | |
341 (define-key global-map [(control x) tab] 'command-3) | |
342 @end example | |
343 | |
344 Of course, all of this applies only when running under a window | |
345 system. If you're talking to XEmacs through a @sc{TTY} connection, you | |
346 don't get any of these features. | |
347 | |
348 @defun event-matches-key-specifier-p event key-specifier | |
349 This function returns non-@code{nil} if @var{event} matches | |
350 @var{key-specifier}, which can be any valid form representing a key | |
351 sequence. This can be useful, e.g., to determine if the user pressed | |
352 @code{help-char} or @code{quit-char}. | |
353 @end defun | |
354 | |
355 @node Prefix Keys | |
356 @section Prefix Keys | |
357 @cindex prefix key | |
358 | |
359 A @dfn{prefix key} has an associated keymap that defines what to do | |
360 with key sequences that start with the prefix key. For example, | |
361 @kbd{C-x} is a prefix key, and it uses a keymap that is also stored in | |
362 the variable @code{ctl-x-map}. Here is a list of the standard prefix | |
363 keys of XEmacs and their keymaps: | |
364 | |
365 @itemize @bullet | |
366 @item | |
367 @cindex @kbd{C-h} | |
368 @code{help-map} is used for events that follow @kbd{C-h}. | |
369 | |
370 @item | |
371 @cindex @kbd{C-c} | |
372 @vindex mode-specific-map | |
373 @code{mode-specific-map} is for events that follow @kbd{C-c}. This | |
374 map is not actually mode specific; its name was chosen to be informative | |
375 for the user in @kbd{C-h b} (@code{display-bindings}), where it | |
376 describes the main use of the @kbd{C-c} prefix key. | |
377 | |
378 @item | |
379 @cindex @kbd{C-x} | |
380 @vindex ctl-x-map | |
381 @findex Control-X-prefix | |
382 @code{ctl-x-map} is the map used for events that follow @kbd{C-x}. This | |
383 map is also the function definition of @code{Control-X-prefix}. | |
384 | |
385 @item | |
386 @cindex @kbd{C-x 4} | |
387 @vindex ctl-x-4-map | |
388 @code{ctl-x-4-map} is used for events that follow @kbd{C-x 4}. | |
389 | |
390 @c Emacs 19 feature | |
391 @item | |
392 @cindex @kbd{C-x 5} | |
393 @vindex ctl-x-5-map | |
394 @code{ctl-x-5-map} is used for events that follow @kbd{C-x 5}. | |
395 | |
396 @c Emacs 19 feature | |
397 @item | |
398 @cindex @kbd{C-x n} | |
399 @cindex @kbd{C-x r} | |
400 @cindex @kbd{C-x a} | |
401 The prefix keys @kbd{C-x n}, @kbd{C-x r} and @kbd{C-x a} use keymaps | |
402 that have no special name. | |
403 | |
404 @item | |
405 @vindex esc-map | |
406 @findex ESC-prefix | |
407 @code{esc-map} is an evil hack that is present for compatibility | |
408 purposes with Emacs 18. Defining a key in @code{esc-map} is equivalent | |
409 to defining the same key in @code{global-map} but with the @key{META} | |
410 prefix added. You should @emph{not} use this in your code. (This map is | |
411 also the function definition of @code{ESC-prefix}.) | |
412 @end itemize | |
413 | |
414 The binding of a prefix key is the keymap to use for looking up the | |
415 events that follow the prefix key. (It may instead be a symbol whose | |
416 function definition is a keymap. The effect is the same, but the symbol | |
417 serves as a name for the prefix key.) Thus, the binding of @kbd{C-x} is | |
418 the symbol @code{Control-X-prefix}, whose function definition is the | |
419 keymap for @kbd{C-x} commands. (The same keymap is also the value of | |
420 @code{ctl-x-map}.) | |
421 | |
422 Prefix key definitions can appear in any active keymap. The | |
423 definitions of @kbd{C-c}, @kbd{C-x}, @kbd{C-h} and @key{ESC} as prefix | |
424 keys appear in the global map, so these prefix keys are always | |
425 available. Major and minor modes can redefine a key as a prefix by | |
426 putting a prefix key definition for it in the local map or the minor | |
427 mode's map. @xref{Active Keymaps}. | |
428 | |
429 If a key is defined as a prefix in more than one active map, then its | |
430 various definitions are in effect merged: the commands defined in the | |
431 minor mode keymaps come first, followed by those in the local map's | |
432 prefix definition, and then by those from the global map. | |
433 | |
434 In the following example, we make @kbd{C-p} a prefix key in the local | |
435 keymap, in such a way that @kbd{C-p} is identical to @kbd{C-x}. Then | |
436 the binding for @kbd{C-p C-f} is the function @code{find-file}, just | |
437 like @kbd{C-x C-f}. The key sequence @kbd{C-p 6} is not found in any | |
438 active keymap. | |
439 | |
440 @example | |
441 @group | |
442 (use-local-map (make-sparse-keymap)) | |
443 @result{} nil | |
444 @end group | |
445 @group | |
446 (local-set-key "\C-p" ctl-x-map) | |
447 @result{} nil | |
448 @end group | |
449 @group | |
450 (key-binding "\C-p\C-f") | |
451 @result{} find-file | |
452 @end group | |
453 | |
454 @group | |
455 (key-binding "\C-p6") | |
456 @result{} nil | |
457 @end group | |
458 @end example | |
459 | |
460 @defun define-prefix-command symbol &optional mapvar | |
461 @cindex prefix command | |
462 This function defines @var{symbol} as a prefix command: it creates a | |
463 keymap and stores it as @var{symbol}'s function definition. | |
464 Storing the symbol as the binding of a key makes the key a prefix key | |
465 that has a name. If optional argument @var{mapvar} is not specified, | |
466 it also sets @var{symbol} as a variable, to have the keymap as its | |
467 value. (If @var{mapvar} is given and is not @code{t}, its value is | |
468 stored as the value of @var{symbol}.) The function returns @var{symbol}. | |
469 | |
470 In Emacs version 18, only the function definition of @var{symbol} was | |
471 set, not the value as a variable. | |
472 @end defun | |
473 | |
474 @node Active Keymaps | |
475 @section Active Keymaps | |
476 @cindex active keymap | |
477 @cindex global keymap | |
478 @cindex local keymap | |
479 | |
480 XEmacs normally contains many keymaps; at any given time, just a few of | |
481 them are @dfn{active} in that they participate in the interpretation | |
482 of user input. These are the global keymap, the current buffer's | |
483 local keymap, and the keymaps of any enabled minor modes. | |
484 | |
485 The @dfn{global keymap} holds the bindings of keys that are defined | |
486 regardless of the current buffer, such as @kbd{C-f}. The variable | |
487 @code{global-map} holds this keymap, which is always active. | |
488 | |
489 Each buffer may have another keymap, its @dfn{local keymap}, which may | |
490 contain new or overriding definitions for keys. The current buffer's | |
491 local keymap is always active except when @code{overriding-local-map} or | |
492 @code{overriding-terminal-local-map} overrides it. Extents and text | |
493 properties can specify an alternative local map for certain parts of the | |
494 buffer; see @ref{Extents and Events}. | |
495 | |
496 Each minor mode may have a keymap; if it does, the keymap is active | |
497 when the minor mode is enabled. | |
498 | |
499 The variable @code{overriding-local-map} and | |
500 @code{overriding-terminal-local-map}, if non-@code{nil}, specify other | |
501 local keymaps that override the buffer's local map and all the minor | |
502 mode keymaps. | |
503 | |
504 All the active keymaps are used together to determine what command to | |
505 execute when a key is entered. XEmacs searches these maps one by one, in | |
506 order of decreasing precedence, until it finds a binding in one of the maps. | |
507 | |
508 More specifically: | |
509 | |
510 For key-presses, the order of keymaps searched is: | |
511 | |
512 @itemize @bullet | |
513 @item | |
514 the @code{keymap} property of any extent(s) or text properties at point; | |
515 @item | |
516 any applicable minor-mode maps; | |
517 @item | |
518 the current local map of the current buffer; | |
519 @item | |
520 the current global map. | |
521 @end itemize | |
522 | |
523 For mouse-clicks, the order of keymaps searched is: | |
524 | |
525 @itemize @bullet | |
526 @item | |
527 the current local map of the @code{mouse-grabbed-buffer} if any; | |
528 @item | |
529 the @code{keymap} property of any extent(s) at the position of the click | |
530 (this includes modeline extents); | |
531 @item | |
532 the @code{modeline-map} of the buffer corresponding to the modeline | |
533 under the mouse (if the click happened over a modeline); | |
534 @item | |
535 the value of @code{toolbar-map} in the current buffer (if the click | |
536 happened over a toolbar); | |
537 @item | |
538 the current local map of the buffer under the mouse (does not | |
539 apply to toolbar clicks); | |
540 @item | |
541 any applicable minor-mode maps; | |
542 @item | |
543 the current global map. | |
544 @end itemize | |
545 | |
546 Note that if @code{overriding-local-map} or | |
547 @code{overriding-terminal-local-map} is non-@code{nil}, @emph{only} | |
548 those two maps and the current global map are searched. | |
549 | |
550 The procedure for searching a single keymap is called | |
551 @dfn{key lookup}; see @ref{Key Lookup}. | |
552 | |
553 @cindex major mode keymap | |
554 Since every buffer that uses the same major mode normally uses the | |
555 same local keymap, you can think of the keymap as local to the mode. A | |
556 change to the local keymap of a buffer (using @code{local-set-key}, for | |
557 example) is seen also in the other buffers that share that keymap. | |
558 | |
559 The local keymaps that are used for Lisp mode, C mode, and several | |
560 other major modes exist even if they have not yet been used. These | |
561 local maps are the values of the variables @code{lisp-mode-map}, | |
562 @code{c-mode-map}, and so on. For most other modes, which are less | |
563 frequently used, the local keymap is constructed only when the mode is | |
564 used for the first time in a session. | |
565 | |
566 The minibuffer has local keymaps, too; they contain various completion | |
567 and exit commands. @xref{Intro to Minibuffers}. | |
568 | |
569 @xref{Standard Keymaps}, for a list of standard keymaps. | |
570 | |
571 @defun current-keymaps &optional event-or-keys | |
572 This function returns a list of the current keymaps that will be | |
573 searched for bindings. This lists keymaps such as the current local map | |
574 and the minor-mode maps, but does not list the parents of those keymaps. | |
575 @var{event-or-keys} controls which keymaps will be listed. If | |
576 @var{event-or-keys} is a mouse event (or a vector whose last element is | |
577 a mouse event), the keymaps for that mouse event will be listed. | |
578 Otherwise, the keymaps for key presses will be listed. | |
579 @end defun | |
580 | |
581 @defvar global-map | |
582 This variable contains the default global keymap that maps XEmacs | |
583 keyboard input to commands. The global keymap is normally this keymap. | |
584 The default global keymap is a full keymap that binds | |
585 @code{self-insert-command} to all of the printing characters. | |
586 | |
587 It is normal practice to change the bindings in the global map, but you | |
588 should not assign this variable any value other than the keymap it starts | |
589 out with. | |
590 @end defvar | |
591 | |
592 @defun current-global-map | |
593 This function returns the current global keymap. This is the | |
594 same as the value of @code{global-map} unless you change one or the | |
595 other. | |
596 | |
597 @example | |
598 @group | |
599 (current-global-map) | |
600 @result{} #<keymap global-map 639 entries 0x221> | |
601 @end group | |
602 @end example | |
603 @end defun | |
604 | |
605 @defun current-local-map | |
606 This function returns the current buffer's local keymap, or @code{nil} | |
607 if it has none. In the following example, the keymap for the | |
608 @samp{*scratch*} buffer (using Lisp Interaction mode) has a number | |
609 of entries, including one prefix key, @kbd{C-x}. | |
610 | |
611 @example | |
612 @group | |
613 (current-local-map) | |
614 @result{} #<keymap lisp-interaction-mode-map 5 entries 0x558> | |
615 (describe-bindings-internal (current-local-map)) | |
616 @result{} ; @r{Inserted into the buffer:} | |
617 backspace backward-delete-char-untabify | |
618 linefeed eval-print-last-sexp | |
619 delete delete-char | |
620 C-j eval-print-last-sexp | |
621 C-x << Prefix Command >> | |
622 M-tab lisp-complete-symbol | |
623 M-; lisp-indent-for-comment | |
624 M-C-i lisp-complete-symbol | |
625 M-C-q indent-sexp | |
626 M-C-x eval-defun | |
627 Alt-backspace backward-kill-sexp | |
628 Alt-delete kill-sexp | |
629 @end group | |
630 | |
631 @group | |
632 C-x x edebug-defun | |
633 @end group | |
634 @end example | |
635 @end defun | |
636 | |
637 @defun current-minor-mode-maps | |
638 This function returns a list of the keymaps of currently enabled minor modes. | |
639 @end defun | |
640 | |
641 @defun use-global-map keymap | |
642 This function makes @var{keymap} the new current global keymap. It | |
643 returns @code{nil}. | |
644 | |
645 It is very unusual to change the global keymap. | |
646 @end defun | |
647 | |
648 @defun use-local-map keymap &optional buffer | |
649 This function makes @var{keymap} the new local keymap of @var{buffer}. | |
650 @var{buffer} defaults to the current buffer. If @var{keymap} is | |
651 @code{nil}, then the buffer has no local keymap. @code{use-local-map} | |
652 returns @code{nil}. Most major mode commands use this function. | |
653 @end defun | |
654 | |
655 @c Emacs 19 feature | |
656 @defvar minor-mode-map-alist | |
657 This variable is an alist describing keymaps that may or may not be | |
658 active according to the values of certain variables. Its elements look | |
659 like this: | |
660 | |
661 @example | |
662 (@var{variable} . @var{keymap}) | |
663 @end example | |
664 | |
665 The keymap @var{keymap} is active whenever @var{variable} has a | |
666 non-@code{nil} value. Typically @var{variable} is the variable that | |
667 enables or disables a minor mode. @xref{Keymaps and Minor Modes}. | |
668 | |
669 Note that elements of @code{minor-mode-map-alist} do not have the same | |
670 structure as elements of @code{minor-mode-alist}. The map must be the | |
671 @sc{cdr} of the element; a list with the map as the second element will | |
672 not do. | |
673 | |
674 What's more, the keymap itself must appear in the @sc{cdr}. It does not | |
675 work to store a variable in the @sc{cdr} and make the map the value of | |
676 that variable. | |
677 | |
678 When more than one minor mode keymap is active, their order of priority | |
679 is the order of @code{minor-mode-map-alist}. But you should design | |
680 minor modes so that they don't interfere with each other. If you do | |
681 this properly, the order will not matter. | |
682 | |
683 See also @code{minor-mode-key-binding}, above. See @ref{Keymaps and | |
684 Minor Modes}, for more information about minor modes. | |
685 @end defvar | |
686 | |
687 @defvar modeline-map | |
688 This variable holds the keymap consulted for mouse-clicks on the | |
689 modeline of a window. This variable may be buffer-local; its value will | |
690 be looked up in the buffer of the window whose modeline was clicked | |
691 upon. | |
692 @end defvar | |
693 | |
694 @defvar toolbar-map | |
695 This variable holds the keymap consulted for mouse-clicks over a | |
696 toolbar. | |
697 @end defvar | |
698 | |
699 @defvar mouse-grabbed-buffer | |
700 If non-@code{nil}, a buffer which should be consulted first for all | |
701 mouse activity. When a mouse-click is processed, it will first be | |
702 looked up in the local-map of this buffer, and then through the normal | |
703 mechanism if there is no binding for that click. This buffer's value of | |
704 @code{mode-motion-hook} will be consulted instead of the | |
705 @code{mode-motion-hook} of the buffer of the window under the mouse. | |
706 You should @emph{bind} this, not set it. | |
707 @end defvar | |
708 | |
709 @defvar overriding-local-map | |
710 If non-@code{nil}, this variable holds a keymap to use instead of the | |
711 buffer's local keymap and instead of all the minor mode keymaps. This | |
712 keymap, if any, overrides all other maps that would have been active, | |
713 except for the current global map. | |
714 @end defvar | |
715 | |
716 @defvar overriding-terminal-local-map | |
717 If non-@code{nil}, this variable holds a keymap to use instead of the | |
718 buffer's local keymap and instead of all the minor mode keymaps, but for | |
719 the selected console only. (In other words, this variable is always | |
720 console-local; putting a keymap here only applies to keystrokes coming | |
721 from the selected console. @xref{Consoles and Devices}.) This keymap, | |
722 if any, overrides all other maps that would have been active, except for | |
723 the current global map. | |
724 @end defvar | |
725 | |
726 @node Key Lookup | |
727 @section Key Lookup | |
728 @cindex key lookup | |
729 @cindex keymap entry | |
730 | |
731 @dfn{Key lookup} is the process of finding the binding of a key | |
732 sequence from a given keymap. Actual execution of the binding is not | |
733 part of key lookup. | |
734 | |
735 Key lookup uses just the event type of each event in the key | |
736 sequence; the rest of the event is ignored. In fact, a key sequence | |
737 used for key lookup may designate mouse events with just their types | |
738 (symbols) instead of with entire mouse events (lists). @xref{Events}. | |
739 Such a pseudo-key-sequence is insufficient for @code{command-execute}, | |
740 but it is sufficient for looking up or rebinding a key. | |
741 | |
742 When the key sequence consists of multiple events, key lookup | |
743 processes the events sequentially: the binding of the first event is | |
744 found, and must be a keymap; then the second event's binding is found in | |
745 that keymap, and so on until all the events in the key sequence are used | |
746 up. (The binding thus found for the last event may or may not be a | |
747 keymap.) Thus, the process of key lookup is defined in terms of a | |
748 simpler process for looking up a single event in a keymap. How that is | |
749 done depends on the type of object associated with the event in that | |
750 keymap. | |
751 | |
752 Let's use the term @dfn{keymap entry} to describe the value found by | |
753 looking up an event type in a keymap. (This doesn't include the item | |
754 string and other extra elements in menu key bindings because | |
755 @code{lookup-key} and other key lookup functions don't include them in | |
756 the returned value.) While any Lisp object may be stored in a keymap as | |
757 a keymap entry, not all make sense for key lookup. Here is a list of | |
758 the meaningful kinds of keymap entries: | |
759 | |
760 @table @asis | |
761 @item @code{nil} | |
762 @cindex @code{nil} in keymap | |
763 @code{nil} means that the events used so far in the lookup form an | |
764 undefined key. When a keymap fails to mention an event type at all, and | |
765 has no default binding, that is equivalent to a binding of @code{nil} | |
766 for that event type. | |
767 | |
768 @item @var{keymap} | |
769 @cindex keymap in keymap | |
770 The events used so far in the lookup form a prefix key. The next | |
771 event of the key sequence is looked up in @var{keymap}. | |
772 | |
773 @item @var{command} | |
774 @cindex command in keymap | |
775 The events used so far in the lookup form a complete key, | |
776 and @var{command} is its binding. @xref{What Is a Function}. | |
777 | |
778 @item @var{array} | |
779 @cindex string in keymap | |
780 The array (either a string or a vector) is a keyboard macro. The events | |
781 used so far in the lookup form a complete key, and the array is its | |
782 binding. See @ref{Keyboard Macros}, for more information. (Note that | |
783 you cannot use a shortened form of a key sequence here, such as | |
784 @code{(control y)}; you must use the full form @code{[(control y)]}. | |
785 @xref{Key Sequences}.) | |
786 | |
787 @item @var{list} | |
788 @cindex list in keymap | |
789 The meaning of a list depends on the types of the elements of the list. | |
790 | |
791 @itemize @bullet | |
792 @item | |
793 @cindex @code{lambda} in keymap | |
794 If the @sc{car} of @var{list} is @code{lambda}, then the list is a | |
795 lambda expression. This is presumed to be a command, and is treated as | |
796 such (see above). | |
797 | |
798 @item | |
799 If the @sc{car} of @var{list} is a keymap and the @sc{cdr} is an event | |
800 type, then this is an @dfn{indirect entry}: | |
801 | |
802 @example | |
803 (@var{othermap} . @var{othertype}) | |
804 @end example | |
805 | |
806 When key lookup encounters an indirect entry, it looks up instead the | |
807 binding of @var{othertype} in @var{othermap} and uses that. | |
808 | |
809 This feature permits you to define one key as an alias for another key. | |
810 For example, an entry whose @sc{car} is the keymap called @code{esc-map} | |
811 and whose @sc{cdr} is 32 (the code for @key{SPC}) means, ``Use the global | |
812 binding of @kbd{Meta-@key{SPC}}, whatever that may be.'' | |
813 @end itemize | |
814 | |
815 @item @var{symbol} | |
816 @cindex symbol in keymap | |
817 The function definition of @var{symbol} is used in place of | |
818 @var{symbol}. If that too is a symbol, then this process is repeated, | |
819 any number of times. Ultimately this should lead to an object that is | |
820 a keymap, a command or a keyboard macro. A list is allowed if it is a | |
821 keymap or a command, but indirect entries are not understood when found | |
822 via symbols. | |
823 | |
824 Note that keymaps and keyboard macros (strings and vectors) are not | |
825 valid functions, so a symbol with a keymap, string, or vector as its | |
826 function definition is invalid as a function. It is, however, valid as | |
827 a key binding. If the definition is a keyboard macro, then the symbol | |
828 is also valid as an argument to @code{command-execute} | |
829 (@pxref{Interactive Call}). | |
830 | |
831 @cindex @code{undefined} in keymap | |
832 The symbol @code{undefined} is worth special mention: it means to treat | |
833 the key as undefined. Strictly speaking, the key is defined, and its | |
834 binding is the command @code{undefined}; but that command does the same | |
835 thing that is done automatically for an undefined key: it rings the bell | |
836 (by calling @code{ding}) but does not signal an error. | |
837 | |
838 @cindex preventing prefix key | |
839 @code{undefined} is used in local keymaps to override a global key | |
840 binding and make the key ``undefined'' locally. A local binding of | |
841 @code{nil} would fail to do this because it would not override the | |
842 global binding. | |
843 | |
844 @item @var{anything else} | |
845 If any other type of object is found, the events used so far in the | |
846 lookup form a complete key, and the object is its binding, but the | |
847 binding is not executable as a command. | |
848 @end table | |
849 | |
850 In short, a keymap entry may be a keymap, a command, a keyboard macro, | |
851 a symbol that leads to one of them, or an indirection or @code{nil}. | |
852 | |
853 @node Functions for Key Lookup | |
854 @section Functions for Key Lookup | |
855 | |
856 Here are the functions and variables pertaining to key lookup. | |
857 | |
858 @defun lookup-key keymap key &optional accept-defaults | |
859 This function returns the definition of @var{key} in @var{keymap}. If | |
860 the string or vector @var{key} is not a valid key sequence according to | |
861 the prefix keys specified in @var{keymap} (which means it is ``too | |
862 long'' and has extra events at the end), then the value is a number, the | |
863 number of events at the front of @var{key} that compose a complete key. | |
864 | |
865 @c Emacs 19 feature | |
866 If @var{accept-defaults} is non-@code{nil}, then @code{lookup-key} | |
867 considers default bindings as well as bindings for the specific events | |
868 in @var{key}. Otherwise, @code{lookup-key} reports only bindings for | |
869 the specific sequence @var{key}, ignoring default bindings except when | |
870 you explicitly ask about them. | |
871 | |
872 All the other functions described in this chapter that look up keys use | |
873 @code{lookup-key}. | |
874 | |
875 @example | |
876 @group | |
877 (lookup-key (current-global-map) "\C-x\C-f") | |
878 @result{} find-file | |
879 @end group | |
880 @group | |
881 (lookup-key (current-global-map) "\C-x\C-f12345") | |
882 @result{} 2 | |
883 @end group | |
884 @end example | |
885 | |
886 If @var{key} begins with the character whose value is contained in | |
887 @code{meta-prefix-char}, that character is implicitly removed and the | |
888 @key{META} modifier added to the key. Thus, the first example below is | |
889 handled by conversion into the second example. | |
890 | |
891 @example | |
892 @group | |
893 (lookup-key (current-global-map) "\ef") | |
894 @result{} forward-word | |
895 @end group | |
896 @group | |
897 (lookup-key (current-global-map) "\M-f") | |
898 @result{} forward-word | |
899 @end group | |
900 @end example | |
901 | |
902 Unlike @code{read-key-sequence}, this function does not modify the | |
903 specified events in ways that discard information (@pxref{Key Sequence | |
904 Input}). In particular, it does not convert letters to lower case. | |
905 @end defun | |
906 | |
907 @deffn Command undefined | |
908 Used in keymaps to undefine keys. If a key sequence is defined to this, | |
909 invoking this key sequence causes a ``key undefined'' error, just as if | |
910 the key sequence had no binding. | |
911 @end deffn | |
912 | |
913 @defun key-binding key &optional accept-defaults | |
914 This function returns the binding for @var{key} in the current | |
915 keymaps, trying all the active keymaps. The result is @code{nil} if | |
916 @var{key} is undefined in the keymaps. | |
917 | |
918 @c Emacs 19 feature | |
919 The argument @var{accept-defaults} controls checking for default | |
920 bindings, as in @code{lookup-key} (above). | |
921 | |
922 @example | |
923 @group | |
924 (key-binding "\C-x\C-f") | |
925 @result{} find-file | |
926 (key-binding '(control home)) | |
927 @result{} beginning-of-buffer | |
928 (key-binding [escape escape escape]) | |
929 @result{} keyboard-escape-quit | |
930 @end group | |
931 @end example | |
932 @end defun | |
933 | |
934 @defun local-key-binding key &optional accept-defaults | |
935 This function returns the binding for @var{key} in the current | |
936 local keymap, or @code{nil} if it is undefined there. | |
937 | |
938 @c Emacs 19 feature | |
939 The argument @var{accept-defaults} controls checking for default bindings, | |
940 as in @code{lookup-key} (above). | |
941 @end defun | |
942 | |
943 @defun global-key-binding key &optional accept-defaults | |
944 This function returns the binding for command @var{key} in the | |
945 current global keymap, or @code{nil} if it is undefined there. | |
946 | |
947 @c Emacs 19 feature | |
948 The argument @var{accept-defaults} controls checking for default bindings, | |
949 as in @code{lookup-key} (above). | |
950 @end defun | |
951 | |
952 @c Emacs 19 feature | |
953 @defun minor-mode-key-binding key &optional accept-defaults | |
954 This function returns a list of all the active minor mode bindings of | |
955 @var{key}. More precisely, it returns an alist of pairs | |
956 @code{(@var{modename} . @var{binding})}, where @var{modename} is the | |
957 variable that enables the minor mode, and @var{binding} is @var{key}'s | |
958 binding in that mode. If @var{key} has no minor-mode bindings, the | |
959 value is @code{nil}. | |
960 | |
961 If the first binding is not a prefix command, all subsequent bindings | |
962 from other minor modes are omitted, since they would be completely | |
963 shadowed. Similarly, the list omits non-prefix bindings that follow | |
964 prefix bindings. | |
965 | |
966 The argument @var{accept-defaults} controls checking for default | |
967 bindings, as in @code{lookup-key} (above). | |
968 @end defun | |
969 | |
970 @defvar meta-prefix-char | |
971 @cindex @key{ESC} | |
972 This variable is the meta-prefix character code. It is used when | |
973 translating a two-character sequence to a meta character so it can be | |
974 looked up in a keymap. For useful results, the value should be a prefix | |
975 event (@pxref{Prefix Keys}). The default value is @code{?\^[} (integer | |
976 27), which is the @sc{ASCII} character usually produced by the @key{ESC} | |
977 key. | |
978 | |
979 As long as the value of @code{meta-prefix-char} remains @code{?\^[}, | |
980 key lookup translates @kbd{@key{ESC} b} into @kbd{M-b}, which is | |
981 normally defined as the @code{backward-word} command. However, if you | |
982 set @code{meta-prefix-char} to @code{?\^X} (i.e. the keystroke | |
983 @kbd{C-x}) or its equivalent @sc{ASCII} code @code{24}, then XEmacs will | |
984 translate @kbd{C-x b} (whose standard binding is the | |
985 @code{switch-to-buffer} command) into @kbd{M-b}. | |
986 | |
987 @smallexample | |
988 @group | |
989 meta-prefix-char ; @r{The default value.} | |
990 @result{} ?\^[ ; @r{Under XEmacs 20.} | |
991 @result{} 27 ; @r{Under XEmacs 19.} | |
992 @end group | |
993 @group | |
994 (key-binding "\eb") | |
995 @result{} backward-word | |
996 @end group | |
997 @group | |
998 ?\C-x ; @r{The print representation} | |
999 ; @r{of a character.} | |
1000 @result{} ?\^X ; @r{Under XEmacs 20.} | |
1001 @result{} 24 ; @r{Under XEmacs 19.} | |
1002 @end group | |
1003 @group | |
1004 (setq meta-prefix-char 24) | |
1005 @result{} 24 | |
1006 @end group | |
1007 @group | |
1008 (key-binding "\C-xb") | |
1009 @result{} backward-word ; @r{Now, typing @kbd{C-x b} is} | |
1010 ; @r{like typing @kbd{M-b}.} | |
1011 | |
1012 (setq meta-prefix-char ?\e) ; @r{Avoid confusion!} | |
1013 ; @r{Restore the default value!} | |
1014 @result{} ?\^[ ; @r{Under XEmacs 20.} | |
1015 @result{} 27 ; @r{Under XEmacs 19.} | |
1016 @end group | |
1017 @end smallexample | |
1018 @end defvar | |
1019 | |
1020 @node Changing Key Bindings | |
1021 @section Changing Key Bindings | |
1022 @cindex changing key bindings | |
1023 @cindex rebinding | |
1024 | |
1025 The way to rebind a key is to change its entry in a keymap. If you | |
1026 change a binding in the global keymap, the change is effective in all | |
1027 buffers (though it has no direct effect in buffers that shadow the | |
1028 global binding with a local one). If you change the current buffer's | |
1029 local map, that usually affects all buffers using the same major mode. | |
1030 The @code{global-set-key} and @code{local-set-key} functions are | |
1031 convenient interfaces for these operations (@pxref{Key Binding | |
1032 Commands}). You can also use @code{define-key}, a more general | |
1033 function; then you must specify explicitly the map to change. | |
1034 | |
1035 The way to specify the key sequence that you want to rebind is | |
1036 described above (@pxref{Key Sequences}). | |
1037 | |
1038 For the functions below, an error is signaled if @var{keymap} is not a | |
1039 keymap or if @var{key} is not a string or vector representing a key | |
1040 sequence. You can use event types (symbols) as shorthand for events | |
1041 that are lists. | |
1042 | |
1043 @defun define-key keymap key binding | |
1044 This function sets the binding for @var{key} in @var{keymap}. (If | |
1045 @var{key} is more than one event long, the change is actually made | |
1046 in another keymap reached from @var{keymap}.) The argument | |
1047 @var{binding} can be any Lisp object, but only certain types are | |
1048 meaningful. (For a list of meaningful types, see @ref{Key Lookup}.) | |
1049 The value returned by @code{define-key} is @var{binding}. | |
1050 | |
1051 @cindex invalid prefix key error | |
1052 @cindex key sequence error | |
1053 Every prefix of @var{key} must be a prefix key (i.e., bound to a | |
1054 keymap) or undefined; otherwise an error is signaled. | |
1055 | |
1056 If some prefix of @var{key} is undefined, then @code{define-key} defines | |
1057 it as a prefix key so that the rest of @var{key} may be defined as | |
1058 specified. | |
1059 @end defun | |
1060 | |
1061 Here is an example that creates a sparse keymap and makes a number of | |
1062 bindings in it: | |
1063 | |
1064 @smallexample | |
1065 @group | |
1066 (setq map (make-sparse-keymap)) | |
1067 @result{} #<keymap 0 entries 0xbee> | |
1068 @end group | |
1069 @group | |
1070 (define-key map "\C-f" 'forward-char) | |
1071 @result{} forward-char | |
1072 @end group | |
1073 @group | |
1074 map | |
1075 @result{} #<keymap 1 entry 0xbee> | |
1076 (describe-bindings-internal map) | |
1077 @result{} ; @r{(Inserted in buffer)} | |
1078 C-f forward-char | |
1079 @end group | |
1080 | |
1081 @group | |
1082 ;; @r{Build sparse submap for @kbd{C-x} and bind @kbd{f} in that.} | |
1083 (define-key map "\C-xf" 'forward-word) | |
1084 @result{} forward-word | |
1085 @end group | |
1086 @group | |
1087 map | |
1088 @result{} #<keymap 2 entries 0xbee> | |
1089 (describe-bindings-internal map) | |
1090 @result{} ; @r{(Inserted in buffer)} | |
1091 C-f forward-char | |
1092 C-x << Prefix Command >> | |
1093 | |
1094 C-x f forward-word | |
1095 @end group | |
1096 | |
1097 @group | |
1098 ;; @r{Bind @kbd{C-p} to the @code{ctl-x-map}.} | |
1099 (define-key map "\C-p" ctl-x-map) | |
1100 ;; @code{ctl-x-map} | |
1101 @result{} #<keymap Control-X-prefix 77 entries 0x3bf> | |
1102 @end group | |
1103 | |
1104 @group | |
1105 ;; @r{Bind @kbd{C-f} to @code{foo} in the @code{ctl-x-map}.} | |
1106 (define-key map "\C-p\C-f" 'foo) | |
1107 @result{} foo | |
1108 @end group | |
1109 @group | |
1110 map | |
1111 @result{} #<keymap 3 entries 0xbee> | |
1112 (describe-bindings-internal map) | |
1113 @result{} ; @r{(Inserted in buffer)} | |
1114 C-f forward-char | |
1115 C-p << Prefix command Control-X-prefix >> | |
1116 C-x << Prefix Command >> | |
1117 | |
1118 C-p tab indent-rigidly | |
1119 C-p $ set-selective-display | |
1120 C-p ' expand-abbrev | |
1121 C-p ( start-kbd-macro | |
1122 C-p ) end-kbd-macro | |
1123 @dots{} | |
1124 C-p C-x exchange-point-and-mark | |
1125 C-p C-z suspend-or-iconify-emacs | |
1126 C-p M-escape repeat-complex-command | |
1127 C-p M-C-[ repeat-complex-command | |
1128 | |
1129 C-x f forward-word | |
1130 | |
1131 C-p 4 . find-tag-other-window | |
1132 @dots{} | |
1133 C-p 4 C-o display-buffer | |
1134 | |
1135 C-p 5 0 delete-frame | |
1136 @dots{} | |
1137 C-p 5 C-f find-file-other-frame | |
1138 | |
1139 @dots{} | |
1140 | |
1141 C-p a i g inverse-add-global-abbrev | |
1142 C-p a i l inverse-add-mode-abbrev | |
1143 @end group | |
1144 @end smallexample | |
1145 | |
1146 @noindent | |
1147 Note that storing a new binding for @kbd{C-p C-f} actually works by | |
1148 changing an entry in @code{ctl-x-map}, and this has the effect of | |
1149 changing the bindings of both @kbd{C-p C-f} and @kbd{C-x C-f} in the | |
1150 default global map. | |
1151 | |
1152 @defun substitute-key-definition olddef newdef keymap &optional oldmap | |
1153 @cindex replace bindings | |
1154 This function replaces @var{olddef} with @var{newdef} for any keys in | |
1155 @var{keymap} that were bound to @var{olddef}. In other words, | |
1156 @var{olddef} is replaced with @var{newdef} wherever it appears. The | |
1157 function returns @code{nil}. | |
1158 | |
1159 For example, this redefines @kbd{C-x C-f}, if you do it in an XEmacs with | |
1160 standard bindings: | |
1161 | |
1162 @smallexample | |
1163 @group | |
1164 (substitute-key-definition | |
1165 'find-file 'find-file-read-only (current-global-map)) | |
1166 @end group | |
1167 @end smallexample | |
1168 | |
1169 @c Emacs 19 feature | |
1170 If @var{oldmap} is non-@code{nil}, then its bindings determine which | |
1171 keys to rebind. The rebindings still happen in @var{newmap}, not in | |
1172 @var{oldmap}. Thus, you can change one map under the control of the | |
1173 bindings in another. For example, | |
1174 | |
1175 @smallexample | |
1176 (substitute-key-definition | |
1177 'delete-backward-char 'my-funny-delete | |
1178 my-map global-map) | |
1179 @end smallexample | |
1180 | |
1181 @noindent | |
1182 puts the special deletion command in @code{my-map} for whichever keys | |
1183 are globally bound to the standard deletion command. | |
1184 | |
1185 @ignore | |
1186 @c Emacs 18 only | |
1187 Prefix keymaps that appear within @var{keymap} are not checked | |
1188 recursively for keys bound to @var{olddef}; they are not changed at all. | |
1189 Perhaps it would be better to check nested keymaps recursively. | |
1190 @end ignore | |
1191 | |
1192 @ignore @c #### fix this up. | |
1193 Here is an example showing a keymap before and after substitution: | |
1194 | |
1195 @smallexample | |
1196 @group | |
1197 (setq map '(keymap | |
1198 (?1 . olddef-1) | |
1199 (?2 . olddef-2) | |
1200 (?3 . olddef-1))) | |
1201 @result{} (keymap (49 . olddef-1) (50 . olddef-2) (51 . olddef-1)) | |
1202 @end group | |
1203 | |
1204 @group | |
1205 (substitute-key-definition 'olddef-1 'newdef map) | |
1206 @result{} nil | |
1207 @end group | |
1208 @group | |
1209 map | |
1210 @result{} (keymap (49 . newdef) (50 . olddef-2) (51 . newdef)) | |
1211 @end group | |
1212 @end smallexample | |
1213 @end ignore | |
1214 @end defun | |
1215 | |
1216 @defun suppress-keymap keymap &optional nodigits | |
1217 @cindex @code{self-insert-command} override | |
1218 This function changes the contents of the full keymap @var{keymap} by | |
1219 making all the printing characters undefined. More precisely, it binds | |
1220 them to the command @code{undefined}. This makes ordinary insertion of | |
1221 text impossible. @code{suppress-keymap} returns @code{nil}. | |
1222 | |
1223 If @var{nodigits} is @code{nil}, then @code{suppress-keymap} defines | |
1224 digits to run @code{digit-argument}, and @kbd{-} to run | |
1225 @code{negative-argument}. Otherwise it makes them undefined like the | |
1226 rest of the printing characters. | |
1227 | |
1228 @cindex yank suppression | |
1229 @cindex @code{quoted-insert} suppression | |
1230 The @code{suppress-keymap} function does not make it impossible to | |
1231 modify a buffer, as it does not suppress commands such as @code{yank} | |
1232 and @code{quoted-insert}. To prevent any modification of a buffer, make | |
1233 it read-only (@pxref{Read Only Buffers}). | |
1234 | |
1235 Since this function modifies @var{keymap}, you would normally use it | |
1236 on a newly created keymap. Operating on an existing keymap | |
1237 that is used for some other purpose is likely to cause trouble; for | |
1238 example, suppressing @code{global-map} would make it impossible to use | |
1239 most of XEmacs. | |
1240 | |
1241 Most often, @code{suppress-keymap} is used to initialize local | |
1242 keymaps of modes such as Rmail and Dired where insertion of text is not | |
1243 desirable and the buffer is read-only. Here is an example taken from | |
1244 the file @file{emacs/lisp/dired.el}, showing how the local keymap for | |
1245 Dired mode is set up: | |
1246 | |
1247 @smallexample | |
1248 @group | |
1249 @dots{} | |
1250 (setq dired-mode-map (make-keymap)) | |
1251 (suppress-keymap dired-mode-map) | |
1252 (define-key dired-mode-map "r" 'dired-rename-file) | |
1253 (define-key dired-mode-map "\C-d" 'dired-flag-file-deleted) | |
1254 (define-key dired-mode-map "d" 'dired-flag-file-deleted) | |
1255 (define-key dired-mode-map "v" 'dired-view-file) | |
1256 (define-key dired-mode-map "e" 'dired-find-file) | |
1257 (define-key dired-mode-map "f" 'dired-find-file) | |
1258 @dots{} | |
1259 @end group | |
1260 @end smallexample | |
1261 @end defun | |
1262 | |
1263 @node Key Binding Commands | |
1264 @section Commands for Binding Keys | |
1265 | |
1266 This section describes some convenient interactive interfaces for | |
1267 changing key bindings. They work by calling @code{define-key}. | |
1268 | |
1269 People often use @code{global-set-key} in their @file{.emacs} file for | |
1270 simple customization. For example, | |
1271 | |
1272 @smallexample | |
1273 (global-set-key "\C-x\C-\\" 'next-line) | |
1274 @end smallexample | |
1275 | |
1276 @noindent | |
1277 or | |
1278 | |
1279 @smallexample | |
1280 (global-set-key [(control ?x) (control ?\\)] 'next-line) | |
1281 @end smallexample | |
1282 | |
1283 @noindent | |
1284 or | |
1285 | |
1286 @smallexample | |
1287 (global-set-key [?\C-x ?\C-\\] 'next-line) | |
1288 @end smallexample | |
1289 | |
1290 @noindent | |
1291 redefines @kbd{C-x C-\} to move down a line. | |
1292 | |
1293 @smallexample | |
1294 (global-set-key [(meta button1)] 'mouse-set-point) | |
1295 @end smallexample | |
1296 | |
1297 @noindent | |
1298 redefines the first (leftmost) mouse button, typed with the Meta key, to | |
1299 set point where you click. | |
1300 | |
1301 @deffn Command global-set-key key definition | |
1302 This function sets the binding of @var{key} in the current global map | |
1303 to @var{definition}. | |
1304 | |
1305 @smallexample | |
1306 @group | |
1307 (global-set-key @var{key} @var{definition}) | |
1308 @equiv{} | |
1309 (define-key (current-global-map) @var{key} @var{definition}) | |
1310 @end group | |
1311 @end smallexample | |
1312 @end deffn | |
1313 | |
1314 @deffn Command global-unset-key key | |
1315 @cindex unbinding keys | |
1316 This function removes the binding of @var{key} from the current | |
1317 global map. | |
1318 | |
1319 One use of this function is in preparation for defining a longer key | |
1320 that uses @var{key} as a prefix---which would not be allowed if | |
1321 @var{key} has a non-prefix binding. For example: | |
1322 | |
1323 @smallexample | |
1324 @group | |
1325 (global-unset-key "\C-l") | |
1326 @result{} nil | |
1327 @end group | |
1328 @group | |
1329 (global-set-key "\C-l\C-l" 'redraw-display) | |
1330 @result{} nil | |
1331 @end group | |
1332 @end smallexample | |
1333 | |
1334 This function is implemented simply using @code{define-key}: | |
1335 | |
1336 @smallexample | |
1337 @group | |
1338 (global-unset-key @var{key}) | |
1339 @equiv{} | |
1340 (define-key (current-global-map) @var{key} nil) | |
1341 @end group | |
1342 @end smallexample | |
1343 @end deffn | |
1344 | |
1345 @deffn Command local-set-key key definition | |
1346 This function sets the binding of @var{key} in the current local | |
1347 keymap to @var{definition}. | |
1348 | |
1349 @smallexample | |
1350 @group | |
1351 (local-set-key @var{key} @var{definition}) | |
1352 @equiv{} | |
1353 (define-key (current-local-map) @var{key} @var{definition}) | |
1354 @end group | |
1355 @end smallexample | |
1356 @end deffn | |
1357 | |
1358 @deffn Command local-unset-key key | |
1359 This function removes the binding of @var{key} from the current | |
1360 local map. | |
1361 | |
1362 @smallexample | |
1363 @group | |
1364 (local-unset-key @var{key}) | |
1365 @equiv{} | |
1366 (define-key (current-local-map) @var{key} nil) | |
1367 @end group | |
1368 @end smallexample | |
1369 @end deffn | |
1370 | |
1371 @node Scanning Keymaps | |
1372 @section Scanning Keymaps | |
1373 | |
1374 This section describes functions used to scan all the current keymaps, | |
1375 or all keys within a keymap, for the sake of printing help information. | |
1376 | |
1377 @defun accessible-keymaps keymap &optional prefix | |
1378 This function returns a list of all the keymaps that can be accessed | |
1379 (via prefix keys) from @var{keymap}. The value is an association list | |
1380 with elements of the form @code{(@var{key} .@: @var{map})}, where | |
1381 @var{key} is a prefix key whose definition in @var{keymap} is | |
1382 @var{map}. | |
1383 | |
1384 The elements of the alist are ordered so that the @var{key} increases | |
1385 in length. The first element is always @code{([] .@: @var{keymap})}, | |
1386 because the specified keymap is accessible from itself with a prefix of | |
1387 no events. | |
1388 | |
1389 If @var{prefix} is given, it should be a prefix key sequence; then | |
1390 @code{accessible-keymaps} includes only the submaps whose prefixes start | |
1391 with @var{prefix}. These elements look just as they do in the value of | |
1392 @code{(accessible-keymaps)}; the only difference is that some elements | |
1393 are omitted. | |
1394 | |
1395 In the example below, the returned alist indicates that the key | |
1396 @kbd{C-x}, which is displayed as @samp{[(control x)]}, is a prefix key | |
1397 whose definition is the keymap @code{#<keymap ((control x) #<keymap | |
1398 emacs-lisp-mode-map 8 entries 0x546>) 1 entry 0x8a2>}. (The strange | |
1399 notation for the keymap's name indicates that this is an internal submap | |
1400 of @code{emacs-lisp-mode-map}. This is because | |
1401 @code{lisp-interaction-mode-map} has set up @code{emacs-lisp-mode-map} | |
1402 as its parent, and @code{lisp-interaction-mode-map} defines no key | |
1403 sequences beginning with @kbd{C-x}.) | |
1404 | |
1405 @smallexample | |
1406 @group | |
1407 (current-local-map) | |
1408 @result{} #<keymap lisp-interaction-mode-map 5 entries 0x558> | |
1409 (accessible-keymaps (current-local-map)) | |
1410 @result{}(([] . #<keymap lisp-interaction-mode-map 5 entries 0x558>) | |
1411 ([(control x)] . | |
1412 #<keymap ((control x) #<keymap emacs-lisp-mode-map 8 entries 0x546>) | |
1413 1 entry 0x8a2>)) | |
1414 @end group | |
1415 @end smallexample | |
1416 | |
1417 The following example shows the results of calling | |
1418 @code{accessible-keymaps} on a large, complex keymap. Notice how | |
1419 some keymaps were given explicit names using @code{set-keymap-name}; | |
1420 those submaps without explicit names are given descriptive names | |
1421 indicating their relationship to their enclosing keymap. | |
1422 | |
1423 @smallexample | |
1424 @group | |
1425 (accessible-keymaps (current-global-map)) | |
1426 @result{} (([] . #<keymap global-map 639 entries 0x221>) | |
1427 ([(control c)] . #<keymap mode-specific-command-prefix 1 entry 0x3cb>) | |
1428 ([(control h)] . #<keymap help-map 33 entries 0x4ec>) | |
1429 ([(control x)] . #<keymap Control-X-prefix 77 entries 0x3bf>) | |
1430 ([(meta escape)] . | |
1431 #<keymap ((meta escape) #<keymap global-map 639 entries 0x221>) | |
1432 3 entries 0x3e0>) | |
1433 ([(meta control \[)] . | |
1434 #<keymap ((meta escape) #<keymap global-map 639 entries 0x221>) | |
1435 3 entries 0x3e0>) | |
1436 ([f1] . #<keymap help-map 33 entries 0x4ec>) | |
1437 ([(control x) \4] . #<keymap ctl-x-4-prefix 9 entries 0x3c5>) | |
1438 ([(control x) \5] . #<keymap ctl-x-5-prefix 8 entries 0x3c8>) | |
1439 ([(control x) \6] . #<keymap 13 entries 0x4d2>) | |
1440 ([(control x) a] . | |
1441 #<keymap (a #<keymap Control-X-prefix 77 entries 0x3bf>) | |
1442 8 entries 0x3ef>) | |
1443 ([(control x) n] . #<keymap narrowing-prefix 3 entries 0x3dd>) | |
1444 ([(control x) r] . #<keymap rectangle-prefix 18 entries 0x3e9>) | |
1445 ([(control x) v] . #<keymap vc-prefix-map 13 entries 0x60e>) | |
1446 ([(control x) a i] . | |
1447 #<keymap (i #<keymap (a #<keymap Control-X-prefix 77 entries 0x3bf>) | |
1448 8 entries 0x3ef>) | |
1449 2 entries 0x3f5>)) | |
1450 @end group | |
1451 @end smallexample | |
1452 @end defun | |
1453 | |
1454 @defun map-keymap function keymap &optional sort-first | |
1455 This function applies @var{function} to each element of @code{KEYMAP}. | |
1456 @var{function} will be called with two arguments: a key-description | |
1457 list, and the binding. The order in which the elements of the keymap | |
1458 are passed to the function is unspecified. If the function inserts new | |
1459 elements into the keymap, it may or may not be called with them later. | |
1460 No element of the keymap will ever be passed to the function more than | |
1461 once. | |
1462 | |
1463 The function will not be called on elements of this keymap's parents | |
1464 (@pxref{Inheritance and Keymaps}) or upon keymaps which are contained | |
1465 within this keymap (multi-character definitions). It will be called on | |
1466 @key{META} characters since they are not really two-character sequences. | |
1467 | |
1468 If the optional third argument @var{sort-first} is non-@code{nil}, then | |
1469 the elements of the keymap will be passed to the mapper function in a | |
1470 canonical order. Otherwise, they will be passed in hash (that is, | |
1471 random) order, which is faster. | |
1472 @end defun | |
1473 | |
1474 @defun keymap-fullness keymap | |
1475 This function returns the number of bindings in the keymap. | |
1476 @end defun | |
1477 | |
1478 @defun where-is-internal definition &optional keymaps firstonly noindirect event-or-keys | |
1479 This function returns a list of key sequences (of any length) that are | |
1480 bound to @var{definition} in a set of keymaps. | |
1481 | |
1482 The argument @var{definition} can be any object; it is compared with all | |
1483 keymap entries using @code{eq}. | |
1484 | |
1485 KEYMAPS can be either a keymap (meaning search in that keymap and the | |
1486 current global keymap) or a list of keymaps (meaning search in exactly | |
1487 those keymaps and no others). If KEYMAPS is nil, search in the currently | |
1488 applicable maps for EVENT-OR-KEYS. | |
1489 | |
1490 If @var{keymap} is a keymap, then the maps searched are @var{keymap} and | |
1491 the global keymap. If @var{keymap} is a list of keymaps, then the maps | |
1492 searched are exactly those keymaps, and no others. If @var{keymap} is | |
1493 @code{nil}, then the maps used are the current active keymaps for | |
1494 @var{event-or-keys} (this is equivalent to specifying | |
1495 @code{(current-keymaps @var{event-or-keys})} as the argument to | |
1496 @var{keymaps}). | |
1497 | |
1498 If @var{firstonly} is non-@code{nil}, then the value is a single | |
1499 vector representing the first key sequence found, rather than a list of | |
1500 all possible key sequences. | |
1501 @ignore @c #### Should fix where-is to be more like FSF | |
1502 If @var{firstonly} is @code{non-ascii}, then the value is a single | |
1503 string representing the first key sequence found, rather than a list of | |
1504 all possible key sequences. If @var{firstonly} is @code{t}, then the | |
1505 value is the first key sequence, except that key sequences consisting | |
1506 entirely of @sc{ASCII} characters (or meta variants of @sc{ASCII} | |
1507 characters) are preferred to all other key sequences. | |
1508 @end ignore | |
1509 | |
1510 If @var{noindirect} is non-@code{nil}, @code{where-is-internal} doesn't | |
1511 follow indirect keymap bindings. This makes it possible to search for | |
1512 an indirect definition itself. | |
1513 | |
1514 This function is used by @code{where-is} (@pxref{Help, , Help, emacs, | |
1515 The XEmacs Reference Manual}). | |
1516 | |
1517 @smallexample | |
1518 @group | |
1519 (where-is-internal 'describe-function) | |
1520 @result{} ([(control h) d] [(control h) f] [f1 d] [f1 f]) | |
1521 @end group | |
1522 @end smallexample | |
1523 @end defun | |
1524 | |
1525 @defun describe-bindings-internal map &optional all shadow prefix mouse-only-p | |
1526 This function inserts (into the current buffer) a list of all defined | |
1527 keys and their definitions in @var{map}. Optional second argument | |
1528 @var{all} says whether to include even ``uninteresting'' definitions, | |
1529 i.e. symbols with a non-@code{nil} @code{suppress-keymap} property. | |
1530 Third argument @var{shadow} is a list of keymaps whose bindings shadow | |
1531 those of map; if a binding is present in any shadowing map, it is not | |
1532 printed. Fourth argument @var{prefix}, if non-@code{nil}, should be a | |
1533 key sequence; only bindings which start with that key sequence will be | |
1534 printed. Fifth argument @var{mouse-only-p} says to only print bindings | |
1535 for mouse clicks. | |
1536 @end defun | |
1537 | |
1538 @code{describe-bindings-internal} is used to implement the | |
1539 help command @code{describe-bindings}. | |
1540 | |
1541 @deffn Command describe-bindings prefix mouse-only-p | |
1542 This function creates a listing of all defined keys and their | |
1543 definitions. It writes the listing in a buffer named @samp{*Help*} and | |
1544 displays it in a window. | |
1545 | |
1546 If @var{prefix} is non-@code{nil}, it should be a prefix key; then the | |
1547 listing includes only keys that start with @var{prefix}. | |
1548 | |
1549 When several characters with consecutive @sc{ASCII} codes have the | |
1550 same definition, they are shown together, as | |
1551 @samp{@var{firstchar}..@var{lastchar}}. In this instance, you need to | |
1552 know the @sc{ASCII} codes to understand which characters this means. | |
1553 For example, in the default global map, the characters @samp{@key{SPC} | |
1554 ..@: ~} are described by a single line. @key{SPC} is @sc{ASCII} 32, | |
1555 @kbd{~} is @sc{ASCII} 126, and the characters between them include all | |
1556 the normal printing characters, (e.g., letters, digits, punctuation, | |
1557 etc.@:); all these characters are bound to @code{self-insert-command}. | |
1558 | |
1559 If the second argument (prefix arg, interactively) is non-@code{nil} | |
1560 then only the mouse bindings are displayed. | |
1561 @end deffn | |
1562 | |
1563 @node Other Keymap Functions | |
1564 @section Other Keymap Functions | |
1565 | |
1566 @defun set-keymap-prompt keymap new-prompt | |
1567 This function sets the ``prompt'' of @var{keymap} to string | |
1568 @var{new-prompt}, or @code{nil} if no prompt is desired. The prompt is | |
1569 shown in the echo-area when reading a key-sequence to be looked-up in | |
1570 this keymap. | |
1571 @end defun | |
1572 | |
1573 @defun keymap-prompt keymap &optional use-inherited | |
1574 This function returns the ``prompt'' of the given keymap. | |
1575 If @var{use-inherited} is non-@code{nil}, any parent keymaps | |
1576 will also be searched for a prompt. | |
1577 @end defun |