79718
|
1 Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
75933
|
2 Free Software Foundation, Inc.
|
|
3 See the end of the file for license conditions.
|
|
4
|
|
5
|
2251
|
6 This directory contains files of elisp that customize Emacs for certain
|
2269
|
7 terminal types.
|
|
8
|
|
9 When Emacs starts, it checks the TERM environment variable to see what type
|
|
10 of terminal the user is running on, checks for an elisp file named
|
|
11 "term/${TERM}.el", and if one exists, loads it. If that doesn't yield a file
|
|
12 that exists, the last hyphen and what follows it is stripped. If that doesn't
|
|
13 yield a file that exists, the previous hyphen is stripped, and so on until all
|
|
14 hyphens are gone. For example, if the terminal type is `aaa-48-foo', Emacs
|
|
15 will try first `term/aaa-48-foo.el', then `term/aaa-48.el' and finally
|
64651
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
16 `term/aaa.el'. Each terminal specific file should contain a function
|
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
17 named terminal-init-TERMINALNAME (eg terminal-init-aaa-48 for
|
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
18 term/aaa-48.el) that Emacs will call in order to initialize the
|
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
19 terminal. The terminal files should not contain any top level forms
|
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
20 that are executed when the file is loaded, all the initialization
|
af1c58687bdd
* term/apollo.el (terminal-init-apollo): New function containing
Dan Nicolaescu <dann@ics.uci.edu>
diff
changeset
|
21 actions are performed by the terminal-init-TERMINALNAME functions.
|
2251
|
22
|
|
23 When writing terminal packages, there are some things it is good to keep in
|
|
24 mind.
|
|
25
|
|
26 First, about keycap names. Your terminal package can create any keycap
|
|
27 cookies it likes, but there are good reasons to stick to the set recognized by
|
2269
|
28 the X-windows code whenever possible. The key symbols recognized by Emacs
|
2251
|
29 are listed in src/term.c; look for the string `keys' in that file.
|
|
30
|
|
31 For one thing, it means that you'll have the same Emacs key bindings on in
|
|
32 terminal mode as on an X console. If there are differences, you can bet
|
|
33 they'll frustrate you after you've forgotten about them.
|
|
34
|
|
35 For another, the X keysms provide a standard set of names that Emacs knows
|
|
36 about. It tries to bind many of them to useful things at startup, before your
|
|
37 .emacs is read (so you can override them). In some ways, the X keysym standard
|
|
38 is a admittedly poor one; it's incomplete, and not well matched to the set of
|
|
39 `virtual keys' that UNIX terminfo(3) provides. But, trust us, the alternatives
|
|
40 were worse.
|
|
41
|
|
42 This doesn't mean that if your terminal has a "Cokebottle" key you shouldn't
|
|
43 define a [cokebottle] keycap. But if you must define cookies that aren't in
|
|
44 that set, try to pattern them on the standard terminfo variable names for
|
|
45 clarity; also, for a fighting chance that your binding may be useful to someone
|
|
46 else someday.
|
|
47
|
|
48 For example, if your terminal has a `find' key, observe that terminfo
|
38417
|
49 supports a key_find capability and call your cookie [find].
|
2251
|
50
|
|
51 Here is a complete list, with corresponding X keysyms.
|
|
52
|
|
53 -----------------------------------------------------------------------------
|
|
54 Variable name cap X Keysym Description
|
|
55 -------------- --- ------------ -------------------------------------
|
|
56 key_down kd down Sent by terminal down arrow key
|
|
57 key_up ku up Sent by terminal up arrow key
|
|
58 key_left kl left Sent by terminal left arrow key
|
|
59 key_right kr right Sent by terminal right arrow key
|
|
60 key_home kh home Sent by home key.
|
|
61 key_backspace kb Sent by backspace key
|
|
62 key_dl kd deleteline Sent by delete line key.
|
|
63 key_il kA insertline Sent by insert line.
|
|
64 key_dc kD Sent by delete character key.
|
|
65 key_ic kI insertchar (1) Sent by ins char/enter ins mode key.
|
|
66 key_eic KM Sent by rmir or smir in insert mode.
|
|
67 key_clear kC Sent by clear screen or erase key.
|
|
68 key_eos kS Sent by clear-to-end-of-screen key.
|
|
69 key_eol kE Sent by clear-to-end-of-line key.
|
|
70 key_sf kF Sent by scroll-forward/down key
|
|
71 key_sr kR Sent by scroll-backward/up key
|
|
72 key_npage kN next (2) Sent by next-page key
|
|
73 key_ppage kP prior (2) Sent by previous-page key
|
|
74 key_stab kT Sent by set-tab key
|
|
75 key_ctab kt Sent by clear-tab key
|
|
76 key_catab ka Sent by clear-all-tabs key.
|
|
77 key_enter @8 kp-enter Enter/send (unreliable)
|
|
78 key_print %9 print print or copy
|
|
79 key_ll kH Sent by home-down key
|
|
80 key_a1 K1 kp-1 Upper left of keypad
|
|
81 key_a3 K3 kp-3 Upper right of keypad
|
|
82 key_b2 K2 kp-5 Center of keypad
|
|
83 key_c1 K4 kp-7 Lower left of keypad
|
|
84 key_c3 K5 kp-9 Lower right of keypad
|
|
85 key_btab kB backtab Back tab key
|
|
86 key_beg @1 begin beg(inning) key
|
|
87 key_cancel @2 cancel cancel key
|
|
88 key_close @3 close key
|
|
89 key_command @4 execute (3) cmd (command) key
|
|
90 key_copy @5 copy key
|
|
91 key_create @6 create key
|
|
92 key_end @7 end end key
|
|
93 key_exit @9 exit key
|
|
94 key_find @0 find key
|
|
95 key_help %1 help key
|
|
96 key_mark %2 mark key
|
|
97 key_message %3 message key
|
|
98 key_move %4 move key
|
|
99 key_next %5 next (2) next object key
|
|
100 key_open %6 open key
|
|
101 key_options %7 menu (3) options key
|
|
102 key_previous %8 previous (2) previous object key
|
|
103 key_redo %0 redo redo key
|
|
104 key_reference &1 ref(erence) key
|
|
105 key_refresh &2 refresh key
|
|
106 key_replace &3 replace key
|
|
107 key_restart &4 reset (3) restart key
|
|
108 key_resume &5 resume key
|
|
109 key_save &6 save key
|
|
110 key_sbeg &9 shifted beginning key
|
|
111 key_select *6 select select key
|
|
112 key_suspend &7 suspend key
|
|
113 key_undo &8 undo undo key
|
|
114
|
|
115 key_scancel &0 shifted cancel key
|
|
116 key_scommand *1 shifted command key
|
|
117 key_scopy *2 shifted copy key
|
|
118 key_screate *3 shifted create key
|
|
119 key_sdc *4 shifted delete char key
|
|
120 key_sdl *5 shifted delete line key
|
|
121 key_send *7 shifted end key
|
|
122 key_seol *8 shifted clear line key
|
|
123 key_sexit *9 shifted exit key
|
|
124 key_sf kF shifted find key
|
|
125 key_shelp #1 shifted help key
|
|
126 key_shome #2 shifted home key
|
|
127 key_sic #3 shifted input key
|
|
128 key_sleft #4 shifted left arrow key
|
|
129 key_smessage %a shifted message key
|
|
130 key_smove %b shifted move key
|
|
131 key_snext %c shifted next key
|
|
132 key_soptions %d shifted options key
|
|
133 key_sprevious %e shifted prev key
|
|
134 key_sprint %f shifted print key
|
|
135 key_sredo %g shifted redo key
|
|
136 key_sreplace %h shifted replace key
|
|
137 key_sright %i shifted right arrow
|
|
138 key_sresume %j shifted resume key
|
|
139 key_ssave !1 shifted save key
|
|
140 key_suspend !2 shifted suspend key
|
|
141 key_sundo !3 shifted undo key
|
|
142
|
|
143 key_f0 k0 f0 (4) function key 0
|
|
144 key_f1 k1 f1 function key 1
|
|
145 key_f2 k2 f2 function key 2
|
|
146 key_f3 k3 f3 function key 3
|
|
147 key_f4 k4 f4 function key 4
|
|
148 key_f5 k5 f5 function key 5
|
|
149 key_f6 k6 f6 function key 6
|
|
150 key_f7 k7 f7 function key 7
|
|
151 key_f8 k8 f8 function key 8
|
|
152 key_f9 k9 f9 function key 9
|
|
153 key_f10 k; f10 (4) function key 10
|
|
154 key_f11 F1 f11 function key 11
|
|
155 : : : :
|
|
156 key_f35 FP f35 function key 35
|
|
157 key_f36 FQ function key 36
|
|
158 : : : :
|
|
159 key_f64 k1 function key 64
|
|
160
|
|
161 (1) The terminfo documentation says this may be the 'insert character' or
|
|
162 `enter insert mode' key. Accordingly, key_ic is mapped to the `insertchar'
|
|
163 keysym if there is also a key_dc key; otherwise it's mapped to `insert'.
|
|
164 The presumption is that keyboards with `insert character' keys usually
|
|
165 have `delete character' keys paired with them.
|
|
166
|
|
167 (2) If there is no key_next key but there is a key_npage key, key_npage
|
|
168 will be bound to the `next' keysym. If there is no key_previous key but
|
|
169 there is a key_ppage key, key_ppage will be bound to the `previous' keysym.
|
|
170
|
|
171 (3) Sorry, these are not exact but they're the best we can do.
|
|
172
|
|
173 (4) The uses of the "k0" capability are inconsistent; sometimes it
|
|
174 describes F10, whereas othertimes it describes F0 and "k;" describes F10.
|
3591
|
175 Emacs attempts to politely accommodate both systems by testing for
|
2251
|
176 "k;", and if it is present, assuming that "k0" denotes F0, otherwise F10.
|
|
177 -----------------------------------------------------------------------------
|
|
178
|
|
179 The following X keysyms do *not* have terminfo equivalents. These are
|
|
180 the cookies your terminal package will have to set up itself, if you want them:
|
|
181
|
|
182 break
|
|
183 system
|
|
184 user
|
|
185 kp-backtab
|
|
186 kp-space
|
|
187 kp-tab
|
|
188 kp-f1
|
|
189 kp-f2
|
|
190 kp-f3
|
|
191 kp-f4
|
|
192 kp-multiply
|
|
193 kp-add
|
|
194 kp-separator
|
|
195 kp-subtract
|
|
196 kp-decimal
|
|
197 kp-divide
|
|
198 kp-0
|
|
199 kp-2
|
|
200 kp-4
|
|
201 kp-6
|
|
202 kp-8
|
|
203 kp-equal
|
|
204
|
|
205 In general, you should not bind any of the standard keysym names to
|
|
206 functions in a terminal package. There's code in loaddefs.el that does that;
|
|
207 the less people make exceptions to that, the more consistent an interface Emacs
|
|
208 will have across different keyboards. Those exceptions should go in your
|
|
209 .emacs file.
|
|
210
|
|
211 Finally, if you're using a USL UNIX or a Sun box or anything else with the
|
|
212 USL version of curses(3) on it, bear in mind that the original curses(3) had
|
|
213 (and still has) a very much smaller set of keycaps. In fact, the reliable
|
|
214 ones were just the arrow keys and the first ten function keys. If you care
|
|
215 about making your package portable to older Berkeley machines, don't count on
|
|
216 the setup code to bind anything else.
|
|
217
|
|
218 If your terminal's arrow key sequences are so funky that they conflict with
|
|
219 normal Emacs key bindings, the package should set up a function called
|
|
220 (enable-foo-arrow-keys), where `foo' becomes the terminal name, and leave
|
|
221 it up to the user's .emacs file whether to call it.
|
|
222
|
|
223 Before writing a terminal-support package, it's a good idea to read the
|
|
224 existing ones and learn the common conventions.
|
75933
|
225
|
|
226
|
|
227 This file is part of GNU Emacs.
|
|
228
|
|
229 GNU Emacs is free software; you can redistribute it and/or modify
|
|
230 it under the terms of the GNU General Public License as published by
|
78226
|
231 the Free Software Foundation; either version 3, or (at your option)
|
75933
|
232 any later version.
|
|
233
|
|
234 GNU Emacs is distributed in the hope that it will be useful,
|
|
235 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
236 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
237 GNU General Public License for more details.
|
|
238
|
|
239 You should have received a copy of the GNU General Public License
|
|
240 along with GNU Emacs; see the file COPYING. If not, write to the
|
|
241 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
242 Boston, MA 02110-1301, USA.
|