annotate man/xemacs/keystrokes.texi @ 5853:1044acf60048

Revert part of Jerry's December 2014 that broke gnuclient on some OS X. lib-src/ChangeLog addition: 2015-03-08 Aidan Kehoe <kehoea@parhasard.net> * gnuserv.c (echo_request): No longer close the file handle unconditionally, leave this to the individual socket types. * gnuserv.c (handle_internet_request): Close the file handle here. * gnuserv.c (handle_unix_request): Don't close the file handle here, document why (it broke gnuclient under OS X). It should actually be OK, but my suspicion is that the issues is that the Unix (local) domain sockets are still underdocumented compared to the internet sockets.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 08 Mar 2015 20:59:25 +0000
parents 9db20cbbe4c7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @node Keystrokes, Pull-down Menus, Frame, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @chapter Keystrokes, Key Sequences, and Key Bindings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 @iftex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 This chapter discusses the character set Emacs uses for input commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 and inside files. You have already learned that the more frequently
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 used Emacs commands are bound to keys. For example, @kbd{Control-f} is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 bound to @code{forward-char}. The following issues are covered:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 How keystrokes can be represented
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 How you can create key sequences from keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 How you can add to the available modifier keys by customizing your
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 keyboard: for example, you could have the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 @key{Capslock} key be understood as the @key{Super} key by Emacs. A
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 @key{Super} key is used like @key{Control} or @key{Meta} in that you hold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 it while typing another key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 You will also learn how to customize existing key bindings and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 create new ones.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 @end iftex
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 * Intro to Keystrokes:: Keystrokes as building blocks of key sequences.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 * Representing Keystrokes:: Using lists of modifiers and keysyms to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 represent keystrokes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 * Key Sequences:: Combine key strokes into key sequences you can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 bind to commands.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 * String Key Sequences:: Available for upward compatibility.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 * Meta Key:: Using @key{ESC} to represent @key{Meta}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 * Super and Hyper Keys:: Adding modifier keys on certain keyboards.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 * Character Representation:: How characters appear in Emacs buffers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 * Commands:: How commands are bound to key sequences.
3171
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
39 * Non-Latin keyboards:: Commands on keyboards where one can't type Latin.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 @node Intro to Keystrokes, Representing Keystrokes, Keystrokes, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 @section Keystrokes as Building Blocks of Key Sequences
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 @cindex character set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 @cindex ASCII
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 @cindex keystroke
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 Earlier versions of Emacs used only the ASCII character set,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 which defines 128 different character codes. Some of these codes are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 assigned graphic symbols like @samp{a} and @samp{=}; the rest are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 control characters, such as @kbd{Control-a} (also called @kbd{C-a}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 @kbd{C-a} means you hold down the @key{CTRL} key and then press
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 @kbd{a}.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 Keybindings in XEmacs are not restricted to the set of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 keystrokes that can be represented in ASCII. XEmacs can tell the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 difference between, for example, @kbd{Control-h}, @kbd{Control-Shift-h},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 and @kbd{Backspace}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 @cindex modifier key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 @cindex keysym
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 @kindex meta key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 @kindex control key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 @kindex hyper key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 @kindex super key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 @kindex shift key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 @kindex button1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @kindex button2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 @kindex button3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 @kindex button1up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 @kindex button2up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 @kindex button3up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 A keystroke is like a piano chord: you get it by simultaneously
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 striking several keys. To be more precise, a keystroke consists
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 of a possibly empty set of modifiers followed by a single
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 @dfn{keysym}. The set of modifiers is small; it consists of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 @kbd{Control}, @kbd{Meta}, @kbd{Super}, @kbd{Hyper}, and @kbd{Shift}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 The rest of the keys on your keyboard, along with the mouse buttons,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 make up the set of keysyms. A keysym is usually what is printed on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 keys on your keyboard. Here is a table of some of the symbolic names
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 for keysyms:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 @item a,b,c...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 alphabetic keys
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 @item f1,f2...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 function keys
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 @item button1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 left mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @item button2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 middle mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 @item button3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 right mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 @item button1up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 upstroke on the left mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 @item button2up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 upstroke on the middle mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 @item button3up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 upstroke on the right mouse button
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 @item return
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 Return key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 @vindex keyboard-translate-table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 Use the variable @code{keyboard-translate-table} only if you are on a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 dumb tty, as it cannot handle input that cannot be represented as ASCII.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 The value of this variable is a string used as a translate table for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 keyboard input or @code{nil}. Each character is looked up in this
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 string and the contents used instead. If the string is of length
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 @code{n}, character codes @code{N} and up are untranslated. If you are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 running Emacs under X, you should do the translations with the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 @code{xmodmap} program instead.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 @node Representing Keystrokes, Key Sequences, Intro to Keystrokes, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @subsection Representing Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 @kindex hyper key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 @kindex super key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @findex read-key-sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 XEmacs represents keystrokes as lists. Each list consists of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 an arbitrary combination of modifiers followed by a single keysym at the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 end of the list. If the keysym corresponds to an ASCII character, you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 can use its character code. (A keystroke may also be represented by an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 event object, as returned by the @code{read-key-sequence} function;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 non-programmers need not worry about this.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 The following table gives some examples of how to list representations
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 for keystrokes. Each list consists of sets of modifiers followed by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 keysyms:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 @item (control a)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 Pressing @key{CTRL} and @kbd{a} simultaneously.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 @item (control ?a)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 Another way of writing the keystroke @kbd{C-a}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 @item (control 65)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 Yet another way of writing the keystroke @kbd{C-a}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 @item (break)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 Pressing the @key{BREAK} key.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 @item (control meta button2up)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 Release the middle mouse button, while pressing @key{CTRL} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 @key{META}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 @end table
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
147 @cindex shift modifier
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 Note: As you define keystrokes, you can use the @kbd{shift} key only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 as a modifier with characters that do not have a second keysym on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 same key, such as @kbd{backspace} and @kbd{tab}. It is an error to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 define a keystroke using the @key{shift} modifier with keysyms such as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 @kbd{a} and @kbd{=}. The correct forms are @kbd{A} and @kbd{+}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 @node Key Sequences, String Key Sequences, Representing Keystrokes, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 @subsection Representing Key Sequences
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 A @dfn{complete key sequence} is a sequence of keystrokes that Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 understands as a unit. Key sequences are significant because you can
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 bind them to commands. Note that not all sequences of keystrokes are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 possible key sequences. In particular, the initial keystrokes in a key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 sequence must make up a @dfn{prefix key sequence}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 Emacs represents a key sequence as a vector of keystrokes. Thus, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 schematic representation of a complete key sequence is as follows:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @example
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
167 [(modifier .. modifier keysym) ... (modifier .. modifier keysym)]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 Here are some examples of complete key sequences:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 @table @kbd
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
173 @item [(control c) (control a)]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 Typing @kbd{C-c} followed by @kbd{C-a}
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
175 @item [(control c) (control 65)]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 Typing @kbd{C-c} followed by @kbd{C-a}. (Using the ASCII code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 for the character `a')@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 @item [(control c) (break)]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 Typing @kbd{C-c} followed by the @kbd{break} character.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 @kindex C-c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 @kindex C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 @kindex C-h
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 @kindex ESC
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 @cindex prefix key sequence
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 A @dfn{prefix key sequence} is the beginning of a series of longer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 sequences that are valid key sequences; adding any single keystroke to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 the end of a prefix results in a valid key sequence. For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 @kbd{control-x} is standardly defined as a prefix. Thus there is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 two-character key sequence starting with @kbd{C-x} for each valid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 keystroke, giving numerous possibilities. Here are some samples:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 @kbd{[(control x) (c)]}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 @kbd{[(control x) (control c)]}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 Adding one character to a prefix key does not have to form a complete
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 key. It could make another, longer prefix. For example, @kbd{[(control
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 x) (\4)]} is itself a prefix that leads to any number of different
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 three-character keys, including @kbd{[(control x) (\4) (f)]},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 @kbd{[(control x) (\4) (b)]} and so on. It would be possible to define
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 one of those three-character sequences as a prefix, creating a series of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 four-character keys, but we did not define any of them this way.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 By contrast, the two-character sequence @kbd{[(control f) (control
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 k)]} is not a key, because the @kbd{(control f)} is a complete key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 sequence in itself. You cannot give @kbd{[(control f (control k)]} an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 independent meaning as a command while @kbd{(control f)} is a complete
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 sequence, because Emacs would understand @key{C-f C-k} as two
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 commands.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 The predefined prefix key sequences in Emacs are @kbd{(control c)},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 @kbd{(control x)}, @kbd{(control h)}, @kbd{[(control x) (\4)]}, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 @kbd{escape}. You can customize Emacs and could make new prefix keys or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 eliminate the default key sequences. @xref{Key Bindings}. For example,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 if you redefine @kbd{(control f)} as a prefix, @kbd{[(control f)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 (control k)]} automatically becomes a valid key sequence (complete,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 unless you define it as a prefix as well). Conversely, if you remove
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 the prefix definition of @kbd{[(control x) (\4)]}, @kbd{[(control x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 (\4) (f)]} (or @kbd{[(control x) (\4) @var{anything}]}) is no longer a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 valid key sequence.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 Note that the above paragraphs uses \4 instead of simply 4, because \4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 is the symbol whose name is "4", and plain 4 is the integer 4, which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 would have been interpreted as the ASCII value. Another way of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 representing the symbol whose name is "4" is to write ?4, which would be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 interpreted as the number 52, which is the ASCII code for the character
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 "4". We could therefore actually have written 52 directly, but that is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 far less clear.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 @node String Key Sequences, Meta Key, Key Sequences, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 @subsection String Key Sequences
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 For backward compatibility, you may also represent a key sequence using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 strings. For example, we have the following equivalent representations:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @item "\C-c\C-c"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 @code{[(control c) (control c)]}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 @item "\e\C-c"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 @code{[(meta control c)]}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 @kindex LFD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 @kindex TAB
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 @node Meta Key, Super and Hyper Keys, String Key Sequences, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @subsection Assignment of the @key{META} Key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 @kindex META
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 @kindex ESC
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 Not all terminals have the complete set of modifiers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 Terminals that have a @key{Meta} key allow you to type Meta characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 by just holding that key down. To type @kbd{Meta-a}, hold down
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 @key{META} and press @kbd{a}. On those terminals, the @key{META} key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 works like the @key{SHIFT} key. Such a key is not always labeled
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 @key{META}, however, as this function is often a special option for a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 key with some other primary purpose.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 If there is no @key{META} key, you can still type Meta characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 using two-character sequences starting with @key{ESC}. To enter
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 @kbd{M-a}, you could type @kbd{@key{ESC} a}. To enter @kbd{C-M-a}, you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 would type @kbd{ESC C-a}. @key{ESC} is allowed on terminals with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 Meta keys, too, in case you have formed a habit of using it.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 If you are running under X and do not have a @key{META} key, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 is possible to reconfigure some other key to be a @key{META}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 key. @xref{Super and Hyper Keys}. @refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 @vindex meta-flag
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 Emacs believes the terminal has a @key{META} key if the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 @code{meta-flag} is non-@code{nil}. Normally this is set automatically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 according to the termcap entry for your terminal type. However, sometimes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 the termcap entry is wrong, and then it is useful to set this variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 yourself. @xref{Variables}, for how to do this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 Note: If you are running under the X window system, the setting of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 the @code{meta-flag} variable is irrelevant.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 @node Super and Hyper Keys, Character Representation, Meta Key, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 @subsection Assignment of the @key{SUPER} and @key{HYPER} Keys
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 @kindex hyper key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 @kindex super key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 Most keyboards do not, by default, have @key{SUPER} or @key{HYPER}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 modifier keys. Under X, you can simulate the @key{SUPER} or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 @key{HYPER} key if you want to bind keys to sequences using @kbd{super}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 and @kbd{hyper}. You can use the @code{xmodmap} program to do this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 For example, to turn your @key{CAPS-LOCK} key into a @key{SUPER} key,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 do the following:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 Create a file called @code{~/.xmodmap}. In this file, place the lines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 @example
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
303 remove Lock = Caps_Lock
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
304 keysym Caps_Lock = Super_L
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
305 add Mod2 = Super_L
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 The first line says that the key that is currently called @code{Caps_Lock}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 should no longer behave as a ``lock'' key. The second line says that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 this should now be called @code{Super_L} instead. The third line says that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 the key called @code{Super_L} should be a modifier key, which produces the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 @code{Mod2} modifier.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 To create a @key{META} or @key{HYPER} key instead of a @key{SUPER} key,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 replace the word @code{Super} above with @code{Meta} or @code{Hyper}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 Just after you start up X, execute the command @code{xmodmap /.xmodmap}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 You can add this command to the appropriate initialization file to have
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 the command executed automatically.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 If you have problems, see the documentation for the @code{xmodmap}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 program. The X keyboard model is quite complicated, and explaining
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 it is beyond the scope of this manual. However, we reprint the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 following description from the X Protocol document for your convenience:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 @cindex keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 @cindex keycode
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 A list of keysyms is associated with each keycode. If that list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 (ignoring trailing @code{NoSymbol} entries) is a single keysym @samp{K},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 then the list is treated as if it were the list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 @code{``K NoSymbol K NoSymbol''}. If the list (ignoring trailing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 @code{NoSymbol} entries) is a pair of keysyms @samp{K1 K2}, then the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 list is treated as if it were the list @code{``K1 K2 K1 K2''}. If the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 list (ignoring trailing @code{NoSymbol} entries) is a triple of keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 @samp{K1 K2 K3}, then the list is treated as if it were the list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 @code{``K1 K2 K3 NoSymbol''}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 The first four elements of the list are split into two groups of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 keysyms. Group 1 contains the first and second keysyms; Group 2 contains
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 third and fourth keysyms. Within each group, if the second element of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 the group is NoSymbol, then the group should be treated as if the second
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 element were the same as the first element, except when the first
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 element is an alphabetic keysym @samp{K} for which both lowercase and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 uppercase forms are defined. In that case, the group should be treated
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 as if the first element were the lowercase form of @samp{K} and the second
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 element were the uppercase form of @samp{K}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 The standard rules for obtaining a keysym from a KeyPress event make use of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 only the Group 1 and Group 2 keysyms; no interpretation of other keysyms in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 the list is given here. (That is, the last four keysyms are unused.)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 Which group to use is determined by modifier state. Switching between
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 groups is controlled by the keysym named @code{Mode_switch}. Attach that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 keysym to some keycode and attach that keycode to any one of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 modifiers Mod1 through Mod5. This modifier is called the @dfn{group
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 modifier}. For any keycode, Group 1 is used when the group modifier is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 off, and Group 2 is used when the group modifier is on.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 Within a group, which keysym to use is also determined by modifier
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 state. The first keysym is used when the @code{Shift} and @code{Lock}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 modifiers are off. The second keysym is used when the @code{Shift}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 modifier is on, or when the @code{Lock} modifier is on and the second
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 keysym is uppercase alphabetic, or when the @code{Lock} modifier is on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 and is interpreted as @code{ShiftLock}. Otherwise, when the @code{Lock}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 modifier is on and is interpreted as @code{CapsLock}, the state of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 @code{Shift} modifier is applied first to select a keysym,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 but if that keysym is lower-case alphabetic, then the corresponding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 upper-case keysym is used instead.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 In addition to the above information on keysyms, we also provide the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 following description of modifier mapping from the InterClient
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 Communications Conventions Manual:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 @cindex modifier mapping
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 X11 supports 8 modifier bits, of which 3 are pre-assigned to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 @code{Shift}, @code{Lock}, and @code{Control}. Each modifier bit is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 controlled by the state of a set of keys, and these sets are specified
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 in a table accessed by @code{GetModifierMapping()} and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 @code{SetModifierMapping()}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 A client needing to use one of the pre-assigned modifiers should assume
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 that the modifier table has been set up correctly to control these
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 modifiers. The @code{Lock} modifier should be interpreted as @code{Caps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 Lock} or @code{Shift Lock} according to whether the keycodes in its
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 controlling set include @code{XK_Caps_Lock} or @code{XK_Shift_Lock}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 Clients should determine the meaning of a modifier bit from the keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 being used to control it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 A client needing to use an extra modifier, for example @code{Meta}, should:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 Scan the existing modifier mappings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 If it finds a modifier that contains a keycode whose set of keysyms
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 includes @code{XK_Meta_L} or @code{XK_Meta_R}, it should use that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 modifier bit.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 If there is no existing modifier controlled by @code{XK_Meta_L} or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 @code{XK_Meta_R}, it should select an unused modifier bit (one with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 an empty controlling set) and:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 If there is a keycode with @code{XL_Meta_L} in its set of keysyms,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 add that keycode to the set for the chosen modifier, and then:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 If there is a keycode with @code{XL_Meta_R} in its set of keysyms,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 add that keycode to the set for the chosen modifier, and then:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 If the controlling set is still empty, interact with the user to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 select one or more keys to be @code{Meta}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 If there are no unused modifier bits, ask the user to take corrective action.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 This means that the @code{Mod1} modifier does not necessarily mean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 @code{Meta}, although some applications (such as twm and emacs 18)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 assume that. Any of the five unassigned modifier bits could mean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 @code{Meta}; what matters is that a modifier bit is generated by a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 keycode which is bound to the keysym @code{Meta_L} or @code{Meta_R}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 Therefore, if you want to make a @key{META} key, the right way
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 is to make the keycode in question generate both a @code{Meta} keysym
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 and some previously-unassigned modifier bit.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 @node Character Representation, Commands, Super and Hyper Keys, Keystrokes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 @section Representation of Characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 This section briefly discusses how characters are represented in Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 buffers. @xref{Key Sequences}, for information on representing key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 sequences to create key bindings.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446
4264
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
447 Printable characters (letters, numbers, punctuation and so on) in
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
448 XEmacs buffers are displayed as such. @key{LFD} (line feed, character
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
449 code @samp{\012} (octal)) is the same as a newline character; it is
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
450 displayed by starting a new line. @key{TAB} is displayed by moving to
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
451 the next tab stop column (usually every 8 spaces). Other control
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
452 characters below #x20 (hexadecimal) are displayed as a caret (@samp{^})
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
453 followed by the non-control version of the character; thus, @kbd{C-a} is
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
454 displayed as @samp{^A}. Characters between (hexadecimal) #x80 and #xA0
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
455 are displayed with octal escape sequences; thus, character code 243
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
456 (octal), also called @kbd{M-#} when used as an input character, is
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
457 displayed as @samp{\243}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 The variable @code{ctl-arrow} may be used to alter this behavior.
4264
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
460 @xref{Display Vars}. As a rule, its value limits octal display to those
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
461 characters in the range just mentioned, and otherwise characters are
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
462 treated as printable, and will be displayed as themselves when the
9db20cbbe4c7 [xemacs-hg @ 2007-11-14 18:06:47 by aidan]
aidan
parents: 3171
diff changeset
463 relevant fonts are available.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464
3171
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
465 @node Commands, Non-Latin keyboards, Character Representation, Keystrokes
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 @section Keys and Commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 @cindex binding
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 @cindex customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 @cindex keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 @cindex function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 @cindex command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 This manual is full of passages that tell you what particular keys do.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 But Emacs does not assign meanings to keys directly. Instead, Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 assigns meanings to @dfn{functions}, and then gives keys their meanings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 by @dfn{binding} them to functions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 A function is a Lisp object that can be executed as a program. Usually
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 it is a Lisp symbol that has been given a function definition; every
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 symbol has a name, usually made of a few English words separated by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 dashes, such as @code{next-line} or @code{forward-word}. It also has a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 @dfn{definition}, which is a Lisp program. Only some functions can be the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 bindings of keys; these are functions whose definitions use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 @code{interactive} to specify how to call them interactively. Such
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 functions are called @dfn{commands}, and their names are @dfn{command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 names}. More information on this subject will appear in the @i{XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 Lisp Reference Manual}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 The bindings between keys and functions are recorded in various tables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 called @dfn{keymaps}. @xref{Key Bindings}, for more information on key
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 sequences you can bind commands to. @xref{Keymaps}, for information on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 creating keymaps.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 When we say ``@kbd{C-n} moves down vertically one line'' we are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 glossing over a distinction that is irrelevant in ordinary use but is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 vital in understanding how to customize Emacs. The function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 @code{next-line} is programmed to move down vertically. @kbd{C-n}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 has this effect @i{because} it is bound to that function. If you rebind
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 @kbd{C-n} to the function @code{forward-word} then @kbd{C-n} will move
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500 forward by words instead. Rebinding keys is a common method of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 customization.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 The rest of this manual usually ignores this subtlety to keep
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504 things simple. To give the customizer the information needed, we often
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 state the name of the command that really does the work in parentheses
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 after mentioning the key that runs it. For example, we will say that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 ``The command @kbd{C-n} (@code{next-line}) moves point vertically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 down,'' meaning that @code{next-line} is a command that moves vertically
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
509 down and @kbd{C-n} is a key that is standardly bound to it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
510
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511 @cindex variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 While we are on the subject of information for customization only,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 it's a good time to tell you about @dfn{variables}. Often the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 description of a command will say, ``To change this, set the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 @code{mumble-foo}.'' A variable is a name used to remember a value.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 Most of the variables documented in this manual exist just to facilitate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 customization: some command or other part of Emacs uses the variable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 and behaves differently depending on its setting. Until you are interested in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 customizing, you can ignore the information about variables. When you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 are ready to be interested, read the basic information on variables, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 then the information on individual variables will make sense.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 @xref{Variables}.
3171
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
523
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
524 @node Non-Latin keyboards, ,Commands, Keystrokes
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
525
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
526 @cindex russian
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
527 @cindex greek
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
528 @cindex ``russian c-x''
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
529 @cindex try-alternate-layouts-for-commands
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
530
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
531 If your computer has a keyboard designed for a language like Russian or
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
532 Greek, where you have to go to some trouble to type Roman-alphabet
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
533 characters, then typing @kbd{C-f} to call @code{forward-character} is
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
534 very inconvenient.
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
535
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
536 To address this, XEmacs allows you to pretend that your keyboard has a
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
537 US layout for such commands. That is, you can type @kbd{C-Cyrillic_che
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
538 C-Cyrillic_a} and XEmacs will work out that it should call the command
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
539 that @kbd{C-x C-f} is bound to@footnote{You can, of course, override
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
540 this with an explicit binding for @kbd{C-Cyrillic_che C-Cyrillic_a} to
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
541 something else.}. Function keys, like @key{F1},
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
542 @key{Shift} or @key{Control} are not handled by this, just alphanumeric
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
543 characters and punctuation.
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
544
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
545 The main user variable associated with this functionality is
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
546 @code{try-alternate-layouts-for-commands}. Setting this to @code{nil}
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
547 inhibits this translation, which would be appropriate if your keyboard
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
548 can handle the Roman alphabet but doesn't have the US layout, and you
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
549 want to avoid the possible confusion.
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
550
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
551 If @code{try-alternate-layouts-for-commands} is @code{t} but this
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
552 functionality doesn't work for you under X11, check the value of the
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
553 variable @code{x-us-keymap-description}. This is a hardware-specific
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
554 map from key codes to the US layout, and can be initialized from the
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
555 output of @code{xmodmap -pke}; see the documentation for that variable
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
556 and for @code{x-us-keymap-first-keycode}.
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 442
diff changeset
557