annotate lisp/term/README @ 5618:cc1ec4c93a67

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