Initial git import
[sxemacs] / lisp / term / xterm.el
1 ;;; xterm.el --- define function key sequences for xterm
2
3 ;; Author: FSF
4 ;; Keywords: terminals
5
6 ;; Copyright (C) 1995 Free Software Foundation, Inc.
7
8 ;; This file is part of SXEmacs.
9
10 ;; SXEmacs is free software: you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation, either version 3 of the License, or
13 ;; (at your option) any later version.
14
15 ;; SXEmacs is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ;; GNU General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
23 ;;;; Code:
24
25 ;; Termcap or terminfo should set these next four.
26 (define-key function-key-map "\eOA" [up])
27 (define-key function-key-map "\eOB" [down])
28 (define-key function-key-map "\eOC" [right])
29 (define-key function-key-map "\eOD" [left])
30 ;; Termcap or terminfo should set these next four?
31 (define-key function-key-map "\e[A" [up])
32 (define-key function-key-map "\e[B" [down])
33 (define-key function-key-map "\e[C" [right])
34 (define-key function-key-map "\e[D" [left])
35
36 (define-key function-key-map "\e[1;2A" [(shift up)])
37 (define-key function-key-map "\e[1;2B" [(shift down)])
38 (define-key function-key-map "\e[1;2C" [(shift right)])
39 (define-key function-key-map "\e[1;2D" [(shift left)])
40 (define-key function-key-map "\eO2A" [(shift up)])
41 (define-key function-key-map "\eO2B" [(shift down)])
42 (define-key function-key-map "\eO2C" [(shift right)])
43 (define-key function-key-map "\eO2D" [(shift left)])
44
45 (define-key function-key-map "\e[1;5A" [(control up)])
46 (define-key function-key-map "\e[1;5B" [(control down)])
47 (define-key function-key-map "\e[1;5C" [(control right)])
48 (define-key function-key-map "\e[1;5D" [(control left)])
49 (define-key function-key-map "\eO5A" [(control up)])
50 (define-key function-key-map "\eO5B" [(control down)])
51 (define-key function-key-map "\eO5C" [(control right)])
52 (define-key function-key-map "\eO5D" [(control left)])
53
54 (define-key function-key-map "\e[1;6A" [(control shift up)])
55 (define-key function-key-map "\e[1;6B" [(control shift down)])
56 (define-key function-key-map "\e[1;6C" [(control shift right)])
57 (define-key function-key-map "\e[1;6D" [(control shift left)])
58
59 (define-key function-key-map "\eO\000" [home])
60 (define-key function-key-map "\eOe" [end])
61 (define-key function-key-map "\e[1~" [home])
62 (define-key function-key-map "\eOH" [home])
63 (define-key function-key-map "\eOF" [end])
64 (define-key function-key-map "\e[H" [home])
65 (define-key function-key-map "\e[F" [end])
66 (define-key function-key-map "\e[1;2H" [(shift home)])
67 (define-key function-key-map "\e[1;2F" [(shift end)])
68 (define-key function-key-map "\eO2F" [(shift end)])
69 (define-key function-key-map "\eO2H" [(shift home)])
70 (define-key function-key-map "\e[1;5H" [(control home)])
71 (define-key function-key-map "\e[1;5F" [(control end)])
72 (define-key function-key-map "\eO5F" [(control end)])
73 (define-key function-key-map "\eO5H" [(control home)])
74 (define-key function-key-map "\e[1;6H" [(control shift home)])
75 (define-key function-key-map "\e[1;6F" [(control shift end)])
76
77 (define-key function-key-map "\e[1~" [find])
78 (define-key function-key-map "\e[4~" [select])
79
80 (define-key function-key-map "\e[2~" [insert])
81 (define-key function-key-map "\e[3~" [delete])
82 (define-key function-key-map "\e[5~" [prior])
83 (define-key function-key-map "\e[6~" [next])
84 (define-key function-key-map "\e[2;2~" [(shift insert)])
85 (define-key function-key-map "\e[3;2~" [(shift delete)])
86 (define-key function-key-map "\e[5;2~" [(shift prior)])
87 (define-key function-key-map "\e[6;2~" [(shift next)])
88 (define-key function-key-map "\e[2;5~" [(control insert)])
89 (define-key function-key-map "\e[3;5~" [(control delete)])
90 (define-key function-key-map "\e[5;5~" [(control prior)])
91 (define-key function-key-map "\e[6;5~" [(control next)])
92 (define-key function-key-map "\e[2;6~" [(control shift insert)])
93 (define-key function-key-map "\e[3;6~" [(control shift delete)])
94 (define-key function-key-map "\e[5;6~" [(control shift prior)])
95 (define-key function-key-map "\e[6;6~" [(control shift next)])
96
97
98 (define-key function-key-map "\e[11~" [f1])
99 (define-key function-key-map "\e[12~" [f2])
100 (define-key function-key-map "\e[13~" [f3])
101 (define-key function-key-map "\e[14~" [f4])
102 (define-key function-key-map "\e[15~" [f5])
103 (define-key function-key-map "\e[17~" [f6])
104 (define-key function-key-map "\e[18~" [f7])
105 (define-key function-key-map "\e[19~" [f8])
106 (define-key function-key-map "\e[20~" [f9])
107 (define-key function-key-map "\e[21~" [f10])
108 (define-key function-key-map "\e[23~" [f11])
109 (define-key function-key-map "\e[24~" [f12])
110 (define-key function-key-map "\e[25~" [f13])
111 (define-key function-key-map "\e[26~" [f14])
112 (define-key function-key-map "\e[28~" [help])
113 (define-key function-key-map "\e[29~" [menu])
114 ; FSF's xterm.el defines this like this:
115 ; (I don't know which one is more correct)
116 ;(define-key function-key-map "\e[29~" [print])
117 (define-key function-key-map "\e[31~" [f17])
118 (define-key function-key-map "\e[32~" [f18])
119 (define-key function-key-map "\e[33~" [f19])
120 (define-key function-key-map "\e[34~" [f20])
121
122
123 (define-key function-key-map "\eOp" [kp-0])
124 (define-key function-key-map "\eOq" [kp-1])
125 (define-key function-key-map "\eOr" [kp-2])
126 (define-key function-key-map "\eOs" [kp-3])
127 (define-key function-key-map "\eOt" [kp-4])
128 (define-key function-key-map "\eOu" [kp-5])
129 (define-key function-key-map "\eOv" [kp-6])
130 (define-key function-key-map "\eOw" [kp-7])
131 (define-key function-key-map "\eOx" [kp-8])
132 (define-key function-key-map "\eOy" [kp-9])
133
134 (define-key function-key-map "\eOk" [kp-add])
135 (define-key function-key-map "\eOm" [kp-subtract])
136 (define-key function-key-map "\eOM" [kp-enter])
137 (define-key function-key-map "\eOj" [kp-multiply])
138 (define-key function-key-map "\eOo" [kp-divide])
139 (define-key function-key-map "\eOn" [kp-decimal])
140
141 ;; If you use the X resource -- XTerm*sunFunctionKeys: on -- you may
142 ;; need these.
143 (define-key function-key-map "\e[224z" [f1])
144 (define-key function-key-map "\e[225z" [f2])
145 (define-key function-key-map "\e[226z" [f3])
146 (define-key function-key-map "\e[227z" [f4])
147 (define-key function-key-map "\e[228z" [f5])
148 (define-key function-key-map "\e[229z" [f6])
149 (define-key function-key-map "\e[230z" [f7])
150 (define-key function-key-map "\e[231z" [f8])
151 (define-key function-key-map "\e[232z" [f9])
152 (define-key function-key-map "\e[233z" [f10])
153 (define-key function-key-map "\e[234z" [f11])
154 (define-key function-key-map "\e[235z" [f12])
155 (define-key function-key-map "\e[194z" [(shift f1)])
156 (define-key function-key-map "\e[195z" [(shift f2)])
157 (define-key function-key-map "\e[196z" [(shift f3)])
158 (define-key function-key-map "\e[197z" [(shift f4)])
159 (define-key function-key-map "\e[198z" [(shift f5)])
160 (define-key function-key-map "\e[199z" [(shift f6)])
161 (define-key function-key-map "\e[200z" [(shift f7)])
162 (define-key function-key-map "\e[201z" [(shift f8)])
163 (define-key function-key-map "\e[208z" [(shift f9)])
164 (define-key function-key-map "\e[209z" [(shift f10)])
165 (define-key function-key-map "\e[210z" [(shift f11)])
166 (define-key function-key-map "\e[211z" [(shift f12)])
167 (define-key function-key-map "\e[2z" [insert])
168 (define-key function-key-map "\e[5z" [prior])
169 (define-key function-key-map "\e[6z" [next])
170
171 (define-key function-key-map "\eOP" [f1])
172 (define-key function-key-map "\eOQ" [f2])
173 (define-key function-key-map "\eOR" [f3])
174 (define-key function-key-map "\eOS" [f4])
175 (define-key function-key-map "\e[15~" [f5])
176 (define-key function-key-map "\e[17~" [f6])
177 (define-key function-key-map "\e[18~" [f7])
178 (define-key function-key-map "\e[19~" [f8])
179 (define-key function-key-map "\e[20~" [f9])
180 (define-key function-key-map "\e[21~" [f10])
181 (define-key function-key-map "\e[23~" [f11])
182 (define-key function-key-map "\e[24~" [f12])
183
184 (define-key function-key-map "\eO2P" [(shift f1)])
185 (define-key function-key-map "\eO2Q" [(shift f2)])
186 (define-key function-key-map "\eO2R" [(shift f3)])
187 (define-key function-key-map "\eO2S" [(shift f4)])
188 (define-key function-key-map "\e[1;2P" [(shift f1)])
189 (define-key function-key-map "\e[1;2Q" [(shift f2)])
190 (define-key function-key-map "\e[1;2R" [(shift f3)])
191 (define-key function-key-map "\e[1;2S" [(shift f4)])
192 (define-key function-key-map "\e[15;2~" [(shift f5)])
193 (define-key function-key-map "\e[17;2~" [(shift f6)])
194 (define-key function-key-map "\e[18;2~" [(shift f7)])
195 (define-key function-key-map "\e[19;2~" [(shift f8)])
196 (define-key function-key-map "\e[20;2~" [(shift f9)])
197 (define-key function-key-map "\e[21;2~" [(shift f10)])
198 (define-key function-key-map "\e[23;2~" [(shift f11)])
199 (define-key function-key-map "\e[24;2~" [(shift f12)])
200
201 (define-key function-key-map "\eO5P" [(control f1)])
202 (define-key function-key-map "\eO5Q" [(control f2)])
203 (define-key function-key-map "\eO5R" [(control f3)])
204 (define-key function-key-map "\eO5S" [(control f4)])
205 (define-key function-key-map "\e[15;5~" [(control f5)])
206 (define-key function-key-map "\e[17;5~" [(control f6)])
207 (define-key function-key-map "\e[18;5~" [(control f7)])
208 (define-key function-key-map "\e[19;5~" [(control f8)])
209 (define-key function-key-map "\e[20;5~" [(control f9)])
210 (define-key function-key-map "\e[21;5~" [(control f10)])
211 (define-key function-key-map "\e[23;5~" [(control f11)])
212 (define-key function-key-map "\e[24;5~" [(control f12)])
213
214 (define-key function-key-map "\eO6P" [(control shift f1)])
215 (define-key function-key-map "\eO6Q" [(control shift f2)])
216 (define-key function-key-map "\eO6R" [(control shift f3)])
217 (define-key function-key-map "\eO6S" [(control shift f4)])
218 (define-key function-key-map "\e[15;6~" [(control shift f5)])
219 (define-key function-key-map "\e[17;6~" [(control shift f6)])
220 (define-key function-key-map "\e[18;6~" [(control shift f7)])
221 (define-key function-key-map "\e[19;6~" [(control shift f8)])
222 (define-key function-key-map "\e[20;6~" [(control shift f9)])
223 (define-key function-key-map "\e[21;6~" [(control shift f10)])
224 (define-key function-key-map "\e[23;6~" [(control shift f11)])
225 (define-key function-key-map "\e[24;6~" [(control shift f12)])
226
227 ;; These keys are available in xterm starting from version 216
228 ;; if the modifyOtherKeys resource is set to 1.
229 (define-key function-key-map "\e[27;5;9~"   [(control tab)])
230 (define-key function-key-map "\e[27;5;13~"  [(control return)])
231 (define-key function-key-map "\e[27;5;39~"  [(control \')])
232 (define-key function-key-map "\e[27;5;44~"  [(control \,)])
233 (define-key function-key-map "\e[27;5;45~"  [(control \-)])
234 (define-key function-key-map "\e[27;5;46~"  [(control \.)])
235 (define-key function-key-map "\e[27;5;47~"  [(control /)])
236 (define-key function-key-map "\e[27;5;48~"  [(control 0)])
237 (define-key function-key-map "\e[27;5;49~"  [(control 1)])
238 ;; Not all C-DIGIT keys have a distinct binding.
239 (define-key function-key-map "\e[27;5;57~"  [(control 9)])
240 (define-key function-key-map "\e[27;5;59~"  [(control \;)])
241 (define-key function-key-map "\e[27;5;61~"  [(control \=)])
242 (define-key function-key-map "\e[27;5;92~"  [(control \\ )])
243
244 (define-key function-key-map "\e[27;6;33~"  [(control \!)])
245 (define-key function-key-map "\e[27;6;34~"  [(control \")])
246 (define-key function-key-map "\e[27;6;35~"  [(control \#)])
247 (define-key function-key-map "\e[27;6;36~"  [(control \$)])
248 (define-key function-key-map "\e[27;6;37~"  [(control \%)])
249 (define-key function-key-map "\e[27;6;38~"  [(control \&)])
250 (define-key function-key-map "\e[27;6;40~"  [(control \()])
251 (define-key function-key-map "\e[27;6;41~"  [(control \))])
252 (define-key function-key-map "\e[27;6;42~"  [(control \*)])
253 (define-key function-key-map "\e[27;6;43~"  [(control \+)])
254 (define-key function-key-map "\e[27;6;58~"  [(control \:)])
255 (define-key function-key-map "\e[27;6;60~"  [(control \<)])
256 (define-key function-key-map "\e[27;6;62~"  [(control \>)])
257 (define-key function-key-map "\e[27;6;63~"  [(control \?)])
258
259 ;; These are the strings emitted for various C-M- combinations
260 ;; for keyboards that the Meta and Alt modifiers are on the same
261 ;; key (usually labeled "Alt").
262 (define-key function-key-map "\e[27;13;9~"  [(control meta tab)])
263 (define-key function-key-map "\e[27;13;13~" [(control meta return)])
264
265 (define-key function-key-map "\e[27;13;39~" [(control meta \')])
266 (define-key function-key-map "\e[27;13;44~" [(control meta ,)])
267 (define-key function-key-map "\e[27;13;45~" [(control meta -)])
268 (define-key function-key-map "\e[27;13;46~" [(control meta \.)])
269 (define-key function-key-map "\e[27;13;47~" [(control meta /)])
270 (define-key function-key-map "\e[27;13;48~" [(control meta 0)])
271 (define-key function-key-map "\e[27;13;49~" [(control meta 1)])
272 (define-key function-key-map "\e[27;13;50~" [(control meta 2)])
273 (define-key function-key-map "\e[27;13;51~" [(control meta 3)])
274 (define-key function-key-map "\e[27;13;52~" [(control meta 4)])
275 (define-key function-key-map "\e[27;13;53~" [(control meta 5)])
276 (define-key function-key-map "\e[27;13;54~" [(control meta 6)])
277 (define-key function-key-map "\e[27;13;55~" [(control meta 7)])
278 (define-key function-key-map "\e[27;13;56~" [(control meta 8)])
279 (define-key function-key-map "\e[27;13;57~" [(control meta 9)])
280 (define-key function-key-map "\e[27;13;59~" [(control meta \;)])
281 (define-key function-key-map "\e[27;13;61~" [(control meta =)])
282 (define-key function-key-map "\e[27;13;92~" [(control meta \\)])
283
284 (define-key function-key-map "\e[27;14;33~"  [(control meta !)])
285 (define-key function-key-map "\e[27;14;34~"  [(control meta \")])
286 (define-key function-key-map "\e[27;14;35~"  [(control meta \#)])
287 (define-key function-key-map "\e[27;14;36~"  [(control meta $)])
288 (define-key function-key-map "\e[27;14;37~"  [(control meta %)])
289 (define-key function-key-map "\e[27;14;38~"  [(control meta &)])
290 (define-key function-key-map "\e[27;14;40~"  [(control meta \()])
291 (define-key function-key-map "\e[27;14;41~"  [(control meta \))])
292 (define-key function-key-map "\e[27;14;42~"  [(control meta *)])
293 (define-key function-key-map "\e[27;14;43~"  [(control meta +)])
294 (define-key function-key-map "\e[27;14;58~"  [(control meta :)])
295 (define-key function-key-map "\e[27;14;60~"  [(control meta <)])
296 (define-key function-key-map "\e[27;14;62~"  [(control meta >)])
297 (define-key function-key-map "\e[27;14;63~"  [(control meta \?)])
298
299 (define-key function-key-map "\e[27;7;9~"  [(control meta tab)])
300 (define-key function-key-map "\e[27;7;13~" [(control meta return)])
301
302 (define-key function-key-map "\e[27;7;39~" [(control meta \')])
303 (define-key function-key-map "\e[27;7;44~" [(control meta ,)])
304 (define-key function-key-map "\e[27;7;45~" [(control meta -)])
305 (define-key function-key-map "\e[27;7;46~" [(control meta \.)])
306 (define-key function-key-map "\e[27;7;47~" [(control meta /)])
307 (define-key function-key-map "\e[27;7;48~" [(control meta 0)])
308 (define-key function-key-map "\e[27;7;49~" [(control meta 1)])
309 (define-key function-key-map "\e[27;7;50~" [(control meta 2)])
310 (define-key function-key-map "\e[27;7;51~" [(control meta 3)])
311 (define-key function-key-map "\e[27;7;52~" [(control meta 4)])
312 (define-key function-key-map "\e[27;7;53~" [(control meta 5)])
313 (define-key function-key-map "\e[27;7;54~" [(control meta 6)])
314 (define-key function-key-map "\e[27;7;55~" [(control meta 7)])
315 (define-key function-key-map "\e[27;7;56~" [(control meta 8)])
316 (define-key function-key-map "\e[27;7;57~" [(control meta 9)])
317 (define-key function-key-map "\e[27;7;59~" [(control meta \;)])
318 (define-key function-key-map "\e[27;7;61~" [(control meta =)])
319 (define-key function-key-map "\e[27;7;92~" [(control meta \\)])
320
321 (define-key function-key-map "\e[27;8;33~"  [(control meta !)])
322 (define-key function-key-map "\e[27;8;34~"  [(control meta \")])
323 (define-key function-key-map "\e[27;8;35~"  [(control meta \#)])
324 (define-key function-key-map "\e[27;8;36~"  [(control meta $)])
325 (define-key function-key-map "\e[27;8;37~"  [(control meta %)])
326 (define-key function-key-map "\e[27;8;38~"  [(control meta &)])
327 (define-key function-key-map "\e[27;8;40~"  [(control meta \()])
328 (define-key function-key-map "\e[27;8;41~"  [(control meta \))])
329 (define-key function-key-map "\e[27;8;42~"  [(control meta *)])
330 (define-key function-key-map "\e[27;8;43~"  [(control meta +)])
331 (define-key function-key-map "\e[27;8;58~"  [(control meta :)])
332 (define-key function-key-map "\e[27;8;60~"  [(control meta <)])
333 (define-key function-key-map "\e[27;8;62~"  [(control meta >)])
334 (define-key function-key-map "\e[27;8;63~"  [(control meta \?)])
335
336 (define-key function-key-map "\e[27;2;9~"   [(shift tab)])
337 (define-key function-key-map "\e[27;2;13~"  [(shift return)])
338
339 (define-key function-key-map "\e[27;6;9~"   [(control shift tab)])
340 (define-key function-key-map "\e[27;6;13~"  [(control shift return)])
341
342 ;;; xterm.el ends here