* lisp/term/xterm.el (xterm-function-map): Support format used with

formatOtherKeys=1.

Fixes: debbugs:13839
This commit is contained in:
Stefan Monnier 2013-03-10 17:44:31 -04:00
parent 17f323276b
commit d3e9f3a843
3 changed files with 114 additions and 105 deletions

View file

@ -264,6 +264,8 @@ file using `set-file-extended-attributes'.
* Lisp Changes in Emacs 24.4 * Lisp Changes in Emacs 24.4
** `dont-compile' is declared obsolete.
** Support for filesystem notifications. ** Support for filesystem notifications.
Emacs now supports notifications of filesystem changes, such as Emacs now supports notifications of filesystem changes, such as
creation, modification, and deletion of files. This requires the creation, modification, and deletion of files. This requires the

View file

@ -1,5 +1,8 @@
2013-03-10 Stefan Monnier <monnier@iro.umontreal.ca> 2013-03-10 Stefan Monnier <monnier@iro.umontreal.ca>
* term/xterm.el (xterm-function-map): Support format used with
formatOtherKeys=1 (bug#13839).
* emacs-lisp/byte-run.el (dont-compile): Declare obsolete. * emacs-lisp/byte-run.el (dont-compile): Declare obsolete.
(with-no-warnings): Use `declare'. (with-no-warnings): Use `declare'.

View file

@ -251,120 +251,124 @@ The relevant features are:
;; These keys are available in xterm starting from version 216 ;; These keys are available in xterm starting from version 216
;; if the modifyOtherKeys resource is set to 1. ;; if the modifyOtherKeys resource is set to 1.
(dolist (bind '((5 9 [C-tab])
(define-key map "\e[27;5;9~" [C-tab]) (5 13 [C-return])
(define-key map "\e[27;5;13~" [C-return]) (5 39 [?\C-\'])
(define-key map "\e[27;5;39~" [?\C-\']) (5 44 [?\C-,])
(define-key map "\e[27;5;44~" [?\C-,]) (5 45 [?\C--])
(define-key map "\e[27;5;45~" [?\C--]) (5 46 [?\C-.])
(define-key map "\e[27;5;46~" [?\C-.]) (5 47 [?\C-/])
(define-key map "\e[27;5;47~" [?\C-/]) (5 48 [?\C-0])
(define-key map "\e[27;5;48~" [?\C-0]) (5 49 [?\C-1])
(define-key map "\e[27;5;49~" [?\C-1])
;; Not all C-DIGIT keys have a distinct binding. ;; Not all C-DIGIT keys have a distinct binding.
(define-key map "\e[27;5;57~" [?\C-9]) (5 57 [?\C-9])
(define-key map "\e[27;5;59~" [?\C-\;]) (5 59 [?\C-\;])
(define-key map "\e[27;5;61~" [?\C-=]) (5 61 [?\C-=])
(define-key map "\e[27;5;92~" [?\C-\\]) (5 92 [?\C-\\])
(define-key map "\e[27;6;33~" [?\C-!]) (6 33 [?\C-!])
(define-key map "\e[27;6;34~" [?\C-\"]) (6 34 [?\C-\"])
(define-key map "\e[27;6;35~" [?\C-#]) (6 35 [?\C-#])
(define-key map "\e[27;6;36~" [?\C-$]) (6 36 [?\C-$])
(define-key map "\e[27;6;37~" [?\C-%]) (6 37 [?\C-%])
(define-key map "\e[27;6;38~" [?\C-&]) (6 38 [?\C-&])
(define-key map "\e[27;6;40~" [?\C-(]) (6 40 [?\C-\(])
(define-key map "\e[27;6;41~" [?\C-)]) (6 41 [?\C-\)])
(define-key map "\e[27;6;42~" [?\C-*]) (6 42 [?\C-*])
(define-key map "\e[27;6;43~" [?\C-+]) (6 43 [?\C-+])
(define-key map "\e[27;6;58~" [?\C-:]) (6 58 [?\C-:])
(define-key map "\e[27;6;60~" [?\C-<]) (6 60 [?\C-<])
(define-key map "\e[27;6;62~" [?\C->]) (6 62 [?\C->])
(define-key map "\e[27;6;63~" [(control ??)]) (6 63 [(control ??)])
;; These are the strings emitted for various C-M- combinations ;; These are the strings emitted for various C-M-
;; for keyboards that the Meta and Alt modifiers are on the same ;; combinations for keyboards whose Meta and Alt
;; key (usually labeled "Alt"). ;; modifiers are on the same key (usually labeled "Alt").
(define-key map "\e[27;13;9~" [C-M-tab]) (13 9 [C-M-tab])
(define-key map "\e[27;13;13~" [C-M-return]) (13 13 [C-M-return])
(define-key map "\e[27;13;39~" [?\C-\M-\']) (13 39 [?\C-\M-\'])
(define-key map "\e[27;13;44~" [?\C-\M-,]) (13 44 [?\C-\M-,])
(define-key map "\e[27;13;45~" [?\C-\M--]) (13 45 [?\C-\M--])
(define-key map "\e[27;13;46~" [?\C-\M-.]) (13 46 [?\C-\M-.])
(define-key map "\e[27;13;47~" [?\C-\M-/]) (13 47 [?\C-\M-/])
(define-key map "\e[27;13;48~" [?\C-\M-0]) (13 48 [?\C-\M-0])
(define-key map "\e[27;13;49~" [?\C-\M-1]) (13 49 [?\C-\M-1])
(define-key map "\e[27;13;50~" [?\C-\M-2]) (13 50 [?\C-\M-2])
(define-key map "\e[27;13;51~" [?\C-\M-3]) (13 51 [?\C-\M-3])
(define-key map "\e[27;13;52~" [?\C-\M-4]) (13 52 [?\C-\M-4])
(define-key map "\e[27;13;53~" [?\C-\M-5]) (13 53 [?\C-\M-5])
(define-key map "\e[27;13;54~" [?\C-\M-6]) (13 54 [?\C-\M-6])
(define-key map "\e[27;13;55~" [?\C-\M-7]) (13 55 [?\C-\M-7])
(define-key map "\e[27;13;56~" [?\C-\M-8]) (13 56 [?\C-\M-8])
(define-key map "\e[27;13;57~" [?\C-\M-9]) (13 57 [?\C-\M-9])
(define-key map "\e[27;13;59~" [?\C-\M-\;]) (13 59 [?\C-\M-\;])
(define-key map "\e[27;13;61~" [?\C-\M-=]) (13 61 [?\C-\M-=])
(define-key map "\e[27;13;92~" [?\C-\M-\\]) (13 92 [?\C-\M-\\])
(define-key map "\e[27;14;33~" [?\C-\M-!]) (14 33 [?\C-\M-!])
(define-key map "\e[27;14;34~" [?\C-\M-\"]) (14 34 [?\C-\M-\"])
(define-key map "\e[27;14;35~" [?\C-\M-#]) (14 35 [?\C-\M-#])
(define-key map "\e[27;14;36~" [?\C-\M-$]) (14 36 [?\C-\M-$])
(define-key map "\e[27;14;37~" [?\C-\M-%]) (14 37 [?\C-\M-%])
(define-key map "\e[27;14;38~" [?\C-\M-&]) (14 38 [?\C-\M-&])
(define-key map "\e[27;14;40~" [?\C-\M-\(]) (14 40 [?\C-\M-\(])
(define-key map "\e[27;14;41~" [?\C-\M-\)]) (14 41 [?\C-\M-\)])
(define-key map "\e[27;14;42~" [?\C-\M-*]) (14 42 [?\C-\M-*])
(define-key map "\e[27;14;43~" [?\C-\M-+]) (14 43 [?\C-\M-+])
(define-key map "\e[27;14;58~" [?\C-\M-:]) (14 58 [?\C-\M-:])
(define-key map "\e[27;14;60~" [?\C-\M-<]) (14 60 [?\C-\M-<])
(define-key map "\e[27;14;62~" [?\C-\M->]) (14 62 [?\C-\M->])
(define-key map "\e[27;14;63~" [(control meta ??)]) (14 63 [(control meta ??)])
(define-key map "\e[27;7;9~" [C-M-tab]) (7 9 [C-M-tab])
(define-key map "\e[27;7;13~" [C-M-return]) (7 13 [C-M-return])
(define-key map "\e[27;7;32~" [?\C-\M-\s]) (7 32 [?\C-\M-\s])
(define-key map "\e[27;7;39~" [?\C-\M-\']) (7 39 [?\C-\M-\'])
(define-key map "\e[27;7;44~" [?\C-\M-,]) (7 44 [?\C-\M-,])
(define-key map "\e[27;7;45~" [?\C-\M--]) (7 45 [?\C-\M--])
(define-key map "\e[27;7;46~" [?\C-\M-.]) (7 46 [?\C-\M-.])
(define-key map "\e[27;7;47~" [?\C-\M-/]) (7 47 [?\C-\M-/])
(define-key map "\e[27;7;48~" [?\C-\M-0]) (7 48 [?\C-\M-0])
(define-key map "\e[27;7;49~" [?\C-\M-1]) (7 49 [?\C-\M-1])
(define-key map "\e[27;7;50~" [?\C-\M-2]) (7 50 [?\C-\M-2])
(define-key map "\e[27;7;51~" [?\C-\M-3]) (7 51 [?\C-\M-3])
(define-key map "\e[27;7;52~" [?\C-\M-4]) (7 52 [?\C-\M-4])
(define-key map "\e[27;7;53~" [?\C-\M-5]) (7 53 [?\C-\M-5])
(define-key map "\e[27;7;54~" [?\C-\M-6]) (7 54 [?\C-\M-6])
(define-key map "\e[27;7;55~" [?\C-\M-7]) (7 55 [?\C-\M-7])
(define-key map "\e[27;7;56~" [?\C-\M-8]) (7 56 [?\C-\M-8])
(define-key map "\e[27;7;57~" [?\C-\M-9]) (7 57 [?\C-\M-9])
(define-key map "\e[27;7;59~" [?\C-\M-\;]) (7 59 [?\C-\M-\;])
(define-key map "\e[27;7;61~" [?\C-\M-=]) (7 61 [?\C-\M-=])
(define-key map "\e[27;7;92~" [?\C-\M-\\]) (7 92 [?\C-\M-\\])
(define-key map "\e[27;8;33~" [?\C-\M-!]) (8 33 [?\C-\M-!])
(define-key map "\e[27;8;34~" [?\C-\M-\"]) (8 34 [?\C-\M-\"])
(define-key map "\e[27;8;35~" [?\C-\M-#]) (8 35 [?\C-\M-#])
(define-key map "\e[27;8;36~" [?\C-\M-$]) (8 36 [?\C-\M-$])
(define-key map "\e[27;8;37~" [?\C-\M-%]) (8 37 [?\C-\M-%])
(define-key map "\e[27;8;38~" [?\C-\M-&]) (8 38 [?\C-\M-&])
(define-key map "\e[27;8;40~" [?\C-\M-\(]) (8 40 [?\C-\M-\(])
(define-key map "\e[27;8;41~" [?\C-\M-\)]) (8 41 [?\C-\M-\)])
(define-key map "\e[27;8;42~" [?\C-\M-*]) (8 42 [?\C-\M-*])
(define-key map "\e[27;8;43~" [?\C-\M-+]) (8 43 [?\C-\M-+])
(define-key map "\e[27;8;58~" [?\C-\M-:]) (8 58 [?\C-\M-:])
(define-key map "\e[27;8;60~" [?\C-\M-<]) (8 60 [?\C-\M-<])
(define-key map "\e[27;8;62~" [?\C-\M->]) (8 62 [?\C-\M->])
(define-key map "\e[27;8;63~" [(control meta ??)]) (8 63 [(control meta ??)])
(define-key map "\e[27;2;9~" [S-tab]) (2 9 [S-tab])
(define-key map "\e[27;2;13~" [S-return]) (2 13 [S-return])
(define-key map "\e[27;6;9~" [C-S-tab]) (6 9 [C-S-tab])
(define-key map "\e[27;6;13~" [C-S-return]) (6 13 [C-S-return])))
(define-key map
(format "\e[27;%d;%d~" (nth 0 bind) (nth 1 bind)) (nth 2 bind))
;; For formatOtherKeys=1, the sequence is a bit shorter (bug#13839).
(define-key map
(format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind)))
;; Other versions of xterm might emit these. ;; Other versions of xterm might emit these.
(define-key map "\e[A" [up]) (define-key map "\e[A" [up])