diff options
| author | Richard M. Stallman | 2006-07-31 18:41:58 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2006-07-31 18:41:58 +0000 |
| commit | 160ab7f94edfc632d89cea3cf149bdefb0adb825 (patch) | |
| tree | c1c02dc42bb7530dd717aaba617fd3168f7c0cf2 | |
| parent | 1352a2031978d9358d7ca2d87ca298fb445323d0 (diff) | |
| download | emacs-160ab7f94edfc632d89cea3cf149bdefb0adb825.tar.gz emacs-160ab7f94edfc632d89cea3cf149bdefb0adb825.zip | |
Update xrefs.
(Event Mod): New node, cut out from old Translating Input.
| -rw-r--r-- | lispref/commands.texi | 89 |
1 files changed, 85 insertions, 4 deletions
diff --git a/lispref/commands.texi b/lispref/commands.texi index 10cd97400f8..8e34fe360bf 100644 --- a/lispref/commands.texi +++ b/lispref/commands.texi | |||
| @@ -1087,7 +1087,7 @@ Lisp programs by representing the former as the integer 9, and the | |||
| 1087 | latter as the symbol @code{tab}. | 1087 | latter as the symbol @code{tab}. |
| 1088 | 1088 | ||
| 1089 | Most of the time, it's not useful to distinguish the two. So normally | 1089 | Most of the time, it's not useful to distinguish the two. So normally |
| 1090 | @code{function-key-map} (@pxref{Translating Input}) is set up to map | 1090 | @code{function-key-map} (@pxref{Translation Keymaps}) is set up to map |
| 1091 | @code{tab} into 9. Thus, a key binding for character code 9 (the | 1091 | @code{tab} into 9. Thus, a key binding for character code 9 (the |
| 1092 | character @kbd{C-i}) also applies to @code{tab}. Likewise for the other | 1092 | character @kbd{C-i}) also applies to @code{tab}. Likewise for the other |
| 1093 | symbols in this group. The function @code{read-char} likewise converts | 1093 | symbols in this group. The function @code{read-char} likewise converts |
| @@ -2051,14 +2051,14 @@ functions for event input are also available for use in Lisp programs. | |||
| 2051 | See also @code{momentary-string-display} in @ref{Temporary Displays}, | 2051 | See also @code{momentary-string-display} in @ref{Temporary Displays}, |
| 2052 | and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for | 2052 | and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for |
| 2053 | functions and variables for controlling terminal input modes and | 2053 | functions and variables for controlling terminal input modes and |
| 2054 | debugging terminal input. @xref{Translating Input}, for features you | 2054 | debugging terminal input. |
| 2055 | can use for translating or modifying input events while reading them. | ||
| 2056 | 2055 | ||
| 2057 | For higher-level input facilities, see @ref{Minibuffers}. | 2056 | For higher-level input facilities, see @ref{Minibuffers}. |
| 2058 | 2057 | ||
| 2059 | @menu | 2058 | @menu |
| 2060 | * Key Sequence Input:: How to read one key sequence. | 2059 | * Key Sequence Input:: How to read one key sequence. |
| 2061 | * Reading One Event:: How to read just one event. | 2060 | * Reading One Event:: How to read just one event. |
| 2061 | * Event Mod:: How Emacs modifies events as they are read. | ||
| 2062 | * Invoking the Input Method:: How reading an event uses the input method. | 2062 | * Invoking the Input Method:: How reading an event uses the input method. |
| 2063 | * Quoted Character Input:: Asking the user to specify a character. | 2063 | * Quoted Character Input:: Asking the user to specify a character. |
| 2064 | * Event Input Misc:: How to reread or throw away input events. | 2064 | * Event Input Misc:: How to reread or throw away input events. |
| @@ -2088,7 +2088,7 @@ events---characters, symbols, and lists. The elements of the string or | |||
| 2088 | vector are the events in the key sequence. | 2088 | vector are the events in the key sequence. |
| 2089 | 2089 | ||
| 2090 | Reading a key sequence includes translating the events in various | 2090 | Reading a key sequence includes translating the events in various |
| 2091 | ways. @xref{Translating Input}. | 2091 | ways. @xref{Translation Keymaps}. |
| 2092 | 2092 | ||
| 2093 | The argument @var{prompt} is either a string to be displayed in the | 2093 | The argument @var{prompt} is either a string to be displayed in the |
| 2094 | echo area as a prompt, or @code{nil}, meaning not to display a prompt. | 2094 | echo area as a prompt, or @code{nil}, meaning not to display a prompt. |
| @@ -2290,6 +2290,87 @@ This variable holds the total number of input events received so far | |||
| 2290 | from the terminal---not counting those generated by keyboard macros. | 2290 | from the terminal---not counting those generated by keyboard macros. |
| 2291 | @end defvar | 2291 | @end defvar |
| 2292 | 2292 | ||
| 2293 | @node Event Mod | ||
| 2294 | @subsection Modifying and Translating Input Events | ||
| 2295 | |||
| 2296 | Emacs modifies every event it reads according to | ||
| 2297 | @code{extra-keyboard-modifiers}, then translates it through | ||
| 2298 | @code{keyboard-translate-table} (if applicable), before returning it | ||
| 2299 | from @code{read-event}. | ||
| 2300 | |||
| 2301 | @c Emacs 19 feature | ||
| 2302 | @defvar extra-keyboard-modifiers | ||
| 2303 | This variable lets Lisp programs ``press'' the modifier keys on the | ||
| 2304 | keyboard. The value is a character. Only the modifiers of the | ||
| 2305 | character matter. Each time the user types a keyboard key, it is | ||
| 2306 | altered as if those modifier keys were held down. For instance, if | ||
| 2307 | you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all | ||
| 2308 | keyboard input characters typed during the scope of the binding will | ||
| 2309 | have the control and meta modifiers applied to them. The character | ||
| 2310 | @code{?\C-@@}, equivalent to the integer 0, does not count as a control | ||
| 2311 | character for this purpose, but as a character with no modifiers. | ||
| 2312 | Thus, setting @code{extra-keyboard-modifiers} to zero cancels any | ||
| 2313 | modification. | ||
| 2314 | |||
| 2315 | When using a window system, the program can ``press'' any of the | ||
| 2316 | modifier keys in this way. Otherwise, only the @key{CTL} and @key{META} | ||
| 2317 | keys can be virtually pressed. | ||
| 2318 | |||
| 2319 | Note that this variable applies only to events that really come from | ||
| 2320 | the keyboard, and has no effect on mouse events or any other events. | ||
| 2321 | @end defvar | ||
| 2322 | |||
| 2323 | @defvar keyboard-translate-table | ||
| 2324 | This variable is the translate table for keyboard characters. It lets | ||
| 2325 | you reshuffle the keys on the keyboard without changing any command | ||
| 2326 | bindings. Its value is normally a char-table, or else @code{nil}. | ||
| 2327 | (It can also be a string or vector, but this is considered obsolete.) | ||
| 2328 | |||
| 2329 | If @code{keyboard-translate-table} is a char-table | ||
| 2330 | (@pxref{Char-Tables}), then each character read from the keyboard is | ||
| 2331 | looked up in this char-table. If the value found there is | ||
| 2332 | non-@code{nil}, then it is used instead of the actual input character. | ||
| 2333 | |||
| 2334 | Note that this translation is the first thing that happens to a | ||
| 2335 | character after it is read from the terminal. Record-keeping features | ||
| 2336 | such as @code{recent-keys} and dribble files record the characters after | ||
| 2337 | translation. | ||
| 2338 | |||
| 2339 | Note also that this translation is done before the characters are | ||
| 2340 | supplied to input methods (@pxref{Input Methods}). Use | ||
| 2341 | @code{translation-table-for-input} (@pxref{Translation of Characters}), | ||
| 2342 | if you want to translate characters after input methods operate. | ||
| 2343 | @end defvar | ||
| 2344 | |||
| 2345 | @defun keyboard-translate from to | ||
| 2346 | This function modifies @code{keyboard-translate-table} to translate | ||
| 2347 | character code @var{from} into character code @var{to}. It creates | ||
| 2348 | the keyboard translate table if necessary. | ||
| 2349 | @end defun | ||
| 2350 | |||
| 2351 | Here's an example of using the @code{keyboard-translate-table} to | ||
| 2352 | make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste | ||
| 2353 | operations: | ||
| 2354 | |||
| 2355 | @example | ||
| 2356 | (keyboard-translate ?\C-x 'control-x) | ||
| 2357 | (keyboard-translate ?\C-c 'control-c) | ||
| 2358 | (keyboard-translate ?\C-v 'control-v) | ||
| 2359 | (global-set-key [control-x] 'kill-region) | ||
| 2360 | (global-set-key [control-c] 'kill-ring-save) | ||
| 2361 | (global-set-key [control-v] 'yank) | ||
| 2362 | @end example | ||
| 2363 | |||
| 2364 | @noindent | ||
| 2365 | On a graphical terminal that supports extended @acronym{ASCII} input, | ||
| 2366 | you can still get the standard Emacs meanings of one of those | ||
| 2367 | characters by typing it with the shift key. That makes it a different | ||
| 2368 | character as far as keyboard translation is concerned, but it has the | ||
| 2369 | same usual meaning. | ||
| 2370 | |||
| 2371 | @xref{Translation Keymaps}, for mechanisms that translate event sequences | ||
| 2372 | at the level of @code{read-key-sequence}. | ||
| 2373 | |||
| 2293 | @node Invoking the Input Method | 2374 | @node Invoking the Input Method |
| 2294 | @subsection Invoking the Input Method | 2375 | @subsection Invoking the Input Method |
| 2295 | 2376 | ||