aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2006-07-31 18:41:58 +0000
committerRichard M. Stallman2006-07-31 18:41:58 +0000
commit160ab7f94edfc632d89cea3cf149bdefb0adb825 (patch)
treec1c02dc42bb7530dd717aaba617fd3168f7c0cf2
parent1352a2031978d9358d7ca2d87ca298fb445323d0 (diff)
downloademacs-160ab7f94edfc632d89cea3cf149bdefb0adb825.tar.gz
emacs-160ab7f94edfc632d89cea3cf149bdefb0adb825.zip
Update xrefs.
(Event Mod): New node, cut out from old Translating Input.
-rw-r--r--lispref/commands.texi89
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
1087latter as the symbol @code{tab}. 1087latter as the symbol @code{tab}.
1088 1088
1089Most of the time, it's not useful to distinguish the two. So normally 1089Most 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
1092character @kbd{C-i}) also applies to @code{tab}. Likewise for the other 1092character @kbd{C-i}) also applies to @code{tab}. Likewise for the other
1093symbols in this group. The function @code{read-char} likewise converts 1093symbols 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.
2051See also @code{momentary-string-display} in @ref{Temporary Displays}, 2051See also @code{momentary-string-display} in @ref{Temporary Displays},
2052and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for 2052and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for
2053functions and variables for controlling terminal input modes and 2053functions and variables for controlling terminal input modes and
2054debugging terminal input. @xref{Translating Input}, for features you 2054debugging terminal input.
2055can 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
2088vector are the events in the key sequence. 2088vector are the events in the key sequence.
2089 2089
2090Reading a key sequence includes translating the events in various 2090Reading a key sequence includes translating the events in various
2091ways. @xref{Translating Input}. 2091ways. @xref{Translation Keymaps}.
2092 2092
2093The argument @var{prompt} is either a string to be displayed in the 2093The argument @var{prompt} is either a string to be displayed in the
2094echo area as a prompt, or @code{nil}, meaning not to display a prompt. 2094echo 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
2290from the terminal---not counting those generated by keyboard macros. 2290from 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
2299from @code{read-event}.
2300
2301@c Emacs 19 feature
2302@defvar extra-keyboard-modifiers
2303This variable lets Lisp programs ``press'' the modifier keys on the
2304keyboard. The value is a character. Only the modifiers of the
2305character matter. Each time the user types a keyboard key, it is
2306altered as if those modifier keys were held down. For instance, if
2307you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all
2308keyboard input characters typed during the scope of the binding will
2309have the control and meta modifiers applied to them. The character
2310@code{?\C-@@}, equivalent to the integer 0, does not count as a control
2311character for this purpose, but as a character with no modifiers.
2312Thus, setting @code{extra-keyboard-modifiers} to zero cancels any
2313modification.
2314
2315When using a window system, the program can ``press'' any of the
2316modifier keys in this way. Otherwise, only the @key{CTL} and @key{META}
2317keys can be virtually pressed.
2318
2319Note that this variable applies only to events that really come from
2320the keyboard, and has no effect on mouse events or any other events.
2321@end defvar
2322
2323@defvar keyboard-translate-table
2324This variable is the translate table for keyboard characters. It lets
2325you reshuffle the keys on the keyboard without changing any command
2326bindings. 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
2329If @code{keyboard-translate-table} is a char-table
2330(@pxref{Char-Tables}), then each character read from the keyboard is
2331looked up in this char-table. If the value found there is
2332non-@code{nil}, then it is used instead of the actual input character.
2333
2334Note that this translation is the first thing that happens to a
2335character after it is read from the terminal. Record-keeping features
2336such as @code{recent-keys} and dribble files record the characters after
2337translation.
2338
2339Note also that this translation is done before the characters are
2340supplied to input methods (@pxref{Input Methods}). Use
2341@code{translation-table-for-input} (@pxref{Translation of Characters}),
2342if you want to translate characters after input methods operate.
2343@end defvar
2344
2345@defun keyboard-translate from to
2346This function modifies @code{keyboard-translate-table} to translate
2347character code @var{from} into character code @var{to}. It creates
2348the keyboard translate table if necessary.
2349@end defun
2350
2351 Here's an example of using the @code{keyboard-translate-table} to
2352make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
2353operations:
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
2365On a graphical terminal that supports extended @acronym{ASCII} input,
2366you can still get the standard Emacs meanings of one of those
2367characters by typing it with the shift key. That makes it a different
2368character as far as keyboard translation is concerned, but it has the
2369same usual meaning.
2370
2371 @xref{Translation Keymaps}, for mechanisms that translate event sequences
2372at 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