aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorStefan Monnier2013-03-10 17:44:31 -0400
committerStefan Monnier2013-03-10 17:44:31 -0400
commitd3e9f3a8431d8d3e132b19f9b5181e8afed2d1db (patch)
treee903be8c489e60a9a3aa1c5c12904fc76fd4a5e3 /lisp
parent17f323276b7dea5410d8f495015ebd170ef14091 (diff)
downloademacs-d3e9f3a8431d8d3e132b19f9b5181e8afed2d1db.tar.gz
emacs-d3e9f3a8431d8d3e132b19f9b5181e8afed2d1db.zip
* lisp/term/xterm.el (xterm-function-map): Support format used with
formatOtherKeys=1. Fixes: debbugs:13839
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/term/xterm.el232
2 files changed, 121 insertions, 114 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 75fa55da3eb..b609b219fc9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
12013-03-10 Stefan Monnier <monnier@iro.umontreal.ca> 12013-03-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * term/xterm.el (xterm-function-map): Support format used with
4 formatOtherKeys=1 (bug#13839).
5
3 * emacs-lisp/byte-run.el (dont-compile): Declare obsolete. 6 * emacs-lisp/byte-run.el (dont-compile): Declare obsolete.
4 (with-no-warnings): Use `declare'. 7 (with-no-warnings): Use `declare'.
5 8
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index c03d64a2f54..ecaff7fe3a4 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -251,120 +251,124 @@ The relevant features are:
251 251
252 ;; These keys are available in xterm starting from version 216 252 ;; These keys are available in xterm starting from version 216
253 ;; if the modifyOtherKeys resource is set to 1. 253 ;; if the modifyOtherKeys resource is set to 1.
254 254 (dolist (bind '((5 9 [C-tab])
255 (define-key map "\e[27;5;9~" [C-tab]) 255 (5 13 [C-return])
256 (define-key map "\e[27;5;13~" [C-return]) 256 (5 39 [?\C-\'])
257 (define-key map "\e[27;5;39~" [?\C-\']) 257 (5 44 [?\C-,])
258 (define-key map "\e[27;5;44~" [?\C-,]) 258 (5 45 [?\C--])
259 (define-key map "\e[27;5;45~" [?\C--]) 259 (5 46 [?\C-.])
260 (define-key map "\e[27;5;46~" [?\C-.]) 260 (5 47 [?\C-/])
261 (define-key map "\e[27;5;47~" [?\C-/]) 261 (5 48 [?\C-0])
262 (define-key map "\e[27;5;48~" [?\C-0]) 262 (5 49 [?\C-1])
263 (define-key map "\e[27;5;49~" [?\C-1]) 263 ;; Not all C-DIGIT keys have a distinct binding.
264 ;; Not all C-DIGIT keys have a distinct binding. 264 (5 57 [?\C-9])
265 (define-key map "\e[27;5;57~" [?\C-9]) 265 (5 59 [?\C-\;])
266 (define-key map "\e[27;5;59~" [?\C-\;]) 266 (5 61 [?\C-=])
267 (define-key map "\e[27;5;61~" [?\C-=]) 267 (5 92 [?\C-\\])
268 (define-key map "\e[27;5;92~" [?\C-\\]) 268
269 269 (6 33 [?\C-!])
270 (define-key map "\e[27;6;33~" [?\C-!]) 270 (6 34 [?\C-\"])
271 (define-key map "\e[27;6;34~" [?\C-\"]) 271 (6 35 [?\C-#])
272 (define-key map "\e[27;6;35~" [?\C-#]) 272 (6 36 [?\C-$])
273 (define-key map "\e[27;6;36~" [?\C-$]) 273 (6 37 [?\C-%])
274 (define-key map "\e[27;6;37~" [?\C-%]) 274 (6 38 [?\C-&])
275 (define-key map "\e[27;6;38~" [?\C-&]) 275 (6 40 [?\C-\(])
276 (define-key map "\e[27;6;40~" [?\C-(]) 276 (6 41 [?\C-\)])
277 (define-key map "\e[27;6;41~" [?\C-)]) 277 (6 42 [?\C-*])
278 (define-key map "\e[27;6;42~" [?\C-*]) 278 (6 43 [?\C-+])
279 (define-key map "\e[27;6;43~" [?\C-+]) 279 (6 58 [?\C-:])
280 (define-key map "\e[27;6;58~" [?\C-:]) 280 (6 60 [?\C-<])
281 (define-key map "\e[27;6;60~" [?\C-<]) 281 (6 62 [?\C->])
282 (define-key map "\e[27;6;62~" [?\C->]) 282 (6 63 [(control ??)])
283 (define-key map "\e[27;6;63~" [(control ??)]) 283
284 284 ;; These are the strings emitted for various C-M-
285 ;; These are the strings emitted for various C-M- combinations 285 ;; combinations for keyboards whose Meta and Alt
286 ;; for keyboards that the Meta and Alt modifiers are on the same 286 ;; modifiers are on the same key (usually labeled "Alt").
287 ;; key (usually labeled "Alt"). 287 (13 9 [C-M-tab])
288 (define-key map "\e[27;13;9~" [C-M-tab]) 288 (13 13 [C-M-return])
289 (define-key map "\e[27;13;13~" [C-M-return]) 289
290 290 (13 39 [?\C-\M-\'])
291 (define-key map "\e[27;13;39~" [?\C-\M-\']) 291 (13 44 [?\C-\M-,])
292 (define-key map "\e[27;13;44~" [?\C-\M-,]) 292 (13 45 [?\C-\M--])
293 (define-key map "\e[27;13;45~" [?\C-\M--]) 293 (13 46 [?\C-\M-.])
294 (define-key map "\e[27;13;46~" [?\C-\M-.]) 294 (13 47 [?\C-\M-/])
295 (define-key map "\e[27;13;47~" [?\C-\M-/]) 295 (13 48 [?\C-\M-0])
296 (define-key map "\e[27;13;48~" [?\C-\M-0]) 296 (13 49 [?\C-\M-1])
297 (define-key map "\e[27;13;49~" [?\C-\M-1]) 297 (13 50 [?\C-\M-2])
298 (define-key map "\e[27;13;50~" [?\C-\M-2]) 298 (13 51 [?\C-\M-3])
299 (define-key map "\e[27;13;51~" [?\C-\M-3]) 299 (13 52 [?\C-\M-4])
300 (define-key map "\e[27;13;52~" [?\C-\M-4]) 300 (13 53 [?\C-\M-5])
301 (define-key map "\e[27;13;53~" [?\C-\M-5]) 301 (13 54 [?\C-\M-6])
302 (define-key map "\e[27;13;54~" [?\C-\M-6]) 302 (13 55 [?\C-\M-7])
303 (define-key map "\e[27;13;55~" [?\C-\M-7]) 303 (13 56 [?\C-\M-8])
304 (define-key map "\e[27;13;56~" [?\C-\M-8]) 304 (13 57 [?\C-\M-9])
305 (define-key map "\e[27;13;57~" [?\C-\M-9]) 305 (13 59 [?\C-\M-\;])
306 (define-key map "\e[27;13;59~" [?\C-\M-\;]) 306 (13 61 [?\C-\M-=])
307 (define-key map "\e[27;13;61~" [?\C-\M-=]) 307 (13 92 [?\C-\M-\\])
308 (define-key map "\e[27;13;92~" [?\C-\M-\\]) 308
309 309 (14 33 [?\C-\M-!])
310 (define-key map "\e[27;14;33~" [?\C-\M-!]) 310 (14 34 [?\C-\M-\"])
311 (define-key map "\e[27;14;34~" [?\C-\M-\"]) 311 (14 35 [?\C-\M-#])
312 (define-key map "\e[27;14;35~" [?\C-\M-#]) 312 (14 36 [?\C-\M-$])
313 (define-key map "\e[27;14;36~" [?\C-\M-$]) 313 (14 37 [?\C-\M-%])
314 (define-key map "\e[27;14;37~" [?\C-\M-%]) 314 (14 38 [?\C-\M-&])
315 (define-key map "\e[27;14;38~" [?\C-\M-&]) 315 (14 40 [?\C-\M-\(])
316 (define-key map "\e[27;14;40~" [?\C-\M-\(]) 316 (14 41 [?\C-\M-\)])
317 (define-key map "\e[27;14;41~" [?\C-\M-\)]) 317 (14 42 [?\C-\M-*])
318 (define-key map "\e[27;14;42~" [?\C-\M-*]) 318 (14 43 [?\C-\M-+])
319 (define-key map "\e[27;14;43~" [?\C-\M-+]) 319 (14 58 [?\C-\M-:])
320 (define-key map "\e[27;14;58~" [?\C-\M-:]) 320 (14 60 [?\C-\M-<])
321 (define-key map "\e[27;14;60~" [?\C-\M-<]) 321 (14 62 [?\C-\M->])
322 (define-key map "\e[27;14;62~" [?\C-\M->]) 322 (14 63 [(control meta ??)])
323 (define-key map "\e[27;14;63~" [(control meta ??)]) 323
324 324 (7 9 [C-M-tab])
325 (define-key map "\e[27;7;9~" [C-M-tab]) 325 (7 13 [C-M-return])
326 (define-key map "\e[27;7;13~" [C-M-return]) 326
327 327 (7 32 [?\C-\M-\s])
328 (define-key map "\e[27;7;32~" [?\C-\M-\s]) 328 (7 39 [?\C-\M-\'])
329 (define-key map "\e[27;7;39~" [?\C-\M-\']) 329 (7 44 [?\C-\M-,])
330 (define-key map "\e[27;7;44~" [?\C-\M-,]) 330 (7 45 [?\C-\M--])
331 (define-key map "\e[27;7;45~" [?\C-\M--]) 331 (7 46 [?\C-\M-.])
332 (define-key map "\e[27;7;46~" [?\C-\M-.]) 332 (7 47 [?\C-\M-/])
333 (define-key map "\e[27;7;47~" [?\C-\M-/]) 333 (7 48 [?\C-\M-0])
334 (define-key map "\e[27;7;48~" [?\C-\M-0]) 334 (7 49 [?\C-\M-1])
335 (define-key map "\e[27;7;49~" [?\C-\M-1]) 335 (7 50 [?\C-\M-2])
336 (define-key map "\e[27;7;50~" [?\C-\M-2]) 336 (7 51 [?\C-\M-3])
337 (define-key map "\e[27;7;51~" [?\C-\M-3]) 337 (7 52 [?\C-\M-4])
338 (define-key map "\e[27;7;52~" [?\C-\M-4]) 338 (7 53 [?\C-\M-5])
339 (define-key map "\e[27;7;53~" [?\C-\M-5]) 339 (7 54 [?\C-\M-6])
340 (define-key map "\e[27;7;54~" [?\C-\M-6]) 340 (7 55 [?\C-\M-7])
341 (define-key map "\e[27;7;55~" [?\C-\M-7]) 341 (7 56 [?\C-\M-8])
342 (define-key map "\e[27;7;56~" [?\C-\M-8]) 342 (7 57 [?\C-\M-9])
343 (define-key map "\e[27;7;57~" [?\C-\M-9]) 343 (7 59 [?\C-\M-\;])
344 (define-key map "\e[27;7;59~" [?\C-\M-\;]) 344 (7 61 [?\C-\M-=])
345 (define-key map "\e[27;7;61~" [?\C-\M-=]) 345 (7 92 [?\C-\M-\\])
346 (define-key map "\e[27;7;92~" [?\C-\M-\\]) 346
347 347 (8 33 [?\C-\M-!])
348 (define-key map "\e[27;8;33~" [?\C-\M-!]) 348 (8 34 [?\C-\M-\"])
349 (define-key map "\e[27;8;34~" [?\C-\M-\"]) 349 (8 35 [?\C-\M-#])
350 (define-key map "\e[27;8;35~" [?\C-\M-#]) 350 (8 36 [?\C-\M-$])
351 (define-key map "\e[27;8;36~" [?\C-\M-$]) 351 (8 37 [?\C-\M-%])
352 (define-key map "\e[27;8;37~" [?\C-\M-%]) 352 (8 38 [?\C-\M-&])
353 (define-key map "\e[27;8;38~" [?\C-\M-&]) 353 (8 40 [?\C-\M-\(])
354 (define-key map "\e[27;8;40~" [?\C-\M-\(]) 354 (8 41 [?\C-\M-\)])
355 (define-key map "\e[27;8;41~" [?\C-\M-\)]) 355 (8 42 [?\C-\M-*])
356 (define-key map "\e[27;8;42~" [?\C-\M-*]) 356 (8 43 [?\C-\M-+])
357 (define-key map "\e[27;8;43~" [?\C-\M-+]) 357 (8 58 [?\C-\M-:])
358 (define-key map "\e[27;8;58~" [?\C-\M-:]) 358 (8 60 [?\C-\M-<])
359 (define-key map "\e[27;8;60~" [?\C-\M-<]) 359 (8 62 [?\C-\M->])
360 (define-key map "\e[27;8;62~" [?\C-\M->]) 360 (8 63 [(control meta ??)])
361 (define-key map "\e[27;8;63~" [(control meta ??)]) 361
362 362 (2 9 [S-tab])
363 (define-key map "\e[27;2;9~" [S-tab]) 363 (2 13 [S-return])
364 (define-key map "\e[27;2;13~" [S-return]) 364
365 365 (6 9 [C-S-tab])
366 (define-key map "\e[27;6;9~" [C-S-tab]) 366 (6 13 [C-S-return])))
367 (define-key map "\e[27;6;13~" [C-S-return]) 367 (define-key map
368 (format "\e[27;%d;%d~" (nth 0 bind) (nth 1 bind)) (nth 2 bind))
369 ;; For formatOtherKeys=1, the sequence is a bit shorter (bug#13839).
370 (define-key map
371 (format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind)))
368 372
369 ;; Other versions of xterm might emit these. 373 ;; Other versions of xterm might emit these.
370 (define-key map "\e[A" [up]) 374 (define-key map "\e[A" [up])