1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-18 18:05:07 +00:00

* 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
** `dont-compile' is declared obsolete.
** Support for filesystem notifications.
Emacs now supports notifications of filesystem changes, such as
creation, modification, and deletion of files. This requires the

View File

@ -1,5 +1,8 @@
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.
(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
;; if the modifyOtherKeys resource is set to 1.
(dolist (bind '((5 9 [C-tab])
(5 13 [C-return])
(5 39 [?\C-\'])
(5 44 [?\C-,])
(5 45 [?\C--])
(5 46 [?\C-.])
(5 47 [?\C-/])
(5 48 [?\C-0])
(5 49 [?\C-1])
;; Not all C-DIGIT keys have a distinct binding.
(5 57 [?\C-9])
(5 59 [?\C-\;])
(5 61 [?\C-=])
(5 92 [?\C-\\])
(define-key map "\e[27;5;9~" [C-tab])
(define-key map "\e[27;5;13~" [C-return])
(define-key map "\e[27;5;39~" [?\C-\'])
(define-key map "\e[27;5;44~" [?\C-,])
(define-key map "\e[27;5;45~" [?\C--])
(define-key map "\e[27;5;46~" [?\C-.])
(define-key map "\e[27;5;47~" [?\C-/])
(define-key map "\e[27;5;48~" [?\C-0])
(define-key map "\e[27;5;49~" [?\C-1])
;; Not all C-DIGIT keys have a distinct binding.
(define-key map "\e[27;5;57~" [?\C-9])
(define-key map "\e[27;5;59~" [?\C-\;])
(define-key map "\e[27;5;61~" [?\C-=])
(define-key map "\e[27;5;92~" [?\C-\\])
(6 33 [?\C-!])
(6 34 [?\C-\"])
(6 35 [?\C-#])
(6 36 [?\C-$])
(6 37 [?\C-%])
(6 38 [?\C-&])
(6 40 [?\C-\(])
(6 41 [?\C-\)])
(6 42 [?\C-*])
(6 43 [?\C-+])
(6 58 [?\C-:])
(6 60 [?\C-<])
(6 62 [?\C->])
(6 63 [(control ??)])
(define-key map "\e[27;6;33~" [?\C-!])
(define-key map "\e[27;6;34~" [?\C-\"])
(define-key map "\e[27;6;35~" [?\C-#])
(define-key map "\e[27;6;36~" [?\C-$])
(define-key map "\e[27;6;37~" [?\C-%])
(define-key map "\e[27;6;38~" [?\C-&])
(define-key map "\e[27;6;40~" [?\C-(])
(define-key map "\e[27;6;41~" [?\C-)])
(define-key map "\e[27;6;42~" [?\C-*])
(define-key map "\e[27;6;43~" [?\C-+])
(define-key map "\e[27;6;58~" [?\C-:])
(define-key map "\e[27;6;60~" [?\C-<])
(define-key map "\e[27;6;62~" [?\C->])
(define-key map "\e[27;6;63~" [(control ??)])
;; These are the strings emitted for various C-M-
;; combinations for keyboards whose Meta and Alt
;; modifiers are on the same key (usually labeled "Alt").
(13 9 [C-M-tab])
(13 13 [C-M-return])
;; These are the strings emitted for various C-M- combinations
;; for keyboards that the Meta and Alt modifiers are on the same
;; key (usually labeled "Alt").
(define-key map "\e[27;13;9~" [C-M-tab])
(define-key map "\e[27;13;13~" [C-M-return])
(13 39 [?\C-\M-\'])
(13 44 [?\C-\M-,])
(13 45 [?\C-\M--])
(13 46 [?\C-\M-.])
(13 47 [?\C-\M-/])
(13 48 [?\C-\M-0])
(13 49 [?\C-\M-1])
(13 50 [?\C-\M-2])
(13 51 [?\C-\M-3])
(13 52 [?\C-\M-4])
(13 53 [?\C-\M-5])
(13 54 [?\C-\M-6])
(13 55 [?\C-\M-7])
(13 56 [?\C-\M-8])
(13 57 [?\C-\M-9])
(13 59 [?\C-\M-\;])
(13 61 [?\C-\M-=])
(13 92 [?\C-\M-\\])
(define-key map "\e[27;13;39~" [?\C-\M-\'])
(define-key map "\e[27;13;44~" [?\C-\M-,])
(define-key map "\e[27;13;45~" [?\C-\M--])
(define-key map "\e[27;13;46~" [?\C-\M-.])
(define-key map "\e[27;13;47~" [?\C-\M-/])
(define-key map "\e[27;13;48~" [?\C-\M-0])
(define-key map "\e[27;13;49~" [?\C-\M-1])
(define-key map "\e[27;13;50~" [?\C-\M-2])
(define-key map "\e[27;13;51~" [?\C-\M-3])
(define-key map "\e[27;13;52~" [?\C-\M-4])
(define-key map "\e[27;13;53~" [?\C-\M-5])
(define-key map "\e[27;13;54~" [?\C-\M-6])
(define-key map "\e[27;13;55~" [?\C-\M-7])
(define-key map "\e[27;13;56~" [?\C-\M-8])
(define-key map "\e[27;13;57~" [?\C-\M-9])
(define-key map "\e[27;13;59~" [?\C-\M-\;])
(define-key map "\e[27;13;61~" [?\C-\M-=])
(define-key map "\e[27;13;92~" [?\C-\M-\\])
(14 33 [?\C-\M-!])
(14 34 [?\C-\M-\"])
(14 35 [?\C-\M-#])
(14 36 [?\C-\M-$])
(14 37 [?\C-\M-%])
(14 38 [?\C-\M-&])
(14 40 [?\C-\M-\(])
(14 41 [?\C-\M-\)])
(14 42 [?\C-\M-*])
(14 43 [?\C-\M-+])
(14 58 [?\C-\M-:])
(14 60 [?\C-\M-<])
(14 62 [?\C-\M->])
(14 63 [(control meta ??)])
(define-key map "\e[27;14;33~" [?\C-\M-!])
(define-key map "\e[27;14;34~" [?\C-\M-\"])
(define-key map "\e[27;14;35~" [?\C-\M-#])
(define-key map "\e[27;14;36~" [?\C-\M-$])
(define-key map "\e[27;14;37~" [?\C-\M-%])
(define-key map "\e[27;14;38~" [?\C-\M-&])
(define-key map "\e[27;14;40~" [?\C-\M-\(])
(define-key map "\e[27;14;41~" [?\C-\M-\)])
(define-key map "\e[27;14;42~" [?\C-\M-*])
(define-key map "\e[27;14;43~" [?\C-\M-+])
(define-key map "\e[27;14;58~" [?\C-\M-:])
(define-key map "\e[27;14;60~" [?\C-\M-<])
(define-key map "\e[27;14;62~" [?\C-\M->])
(define-key map "\e[27;14;63~" [(control meta ??)])
(7 9 [C-M-tab])
(7 13 [C-M-return])
(define-key map "\e[27;7;9~" [C-M-tab])
(define-key map "\e[27;7;13~" [C-M-return])
(7 32 [?\C-\M-\s])
(7 39 [?\C-\M-\'])
(7 44 [?\C-\M-,])
(7 45 [?\C-\M--])
(7 46 [?\C-\M-.])
(7 47 [?\C-\M-/])
(7 48 [?\C-\M-0])
(7 49 [?\C-\M-1])
(7 50 [?\C-\M-2])
(7 51 [?\C-\M-3])
(7 52 [?\C-\M-4])
(7 53 [?\C-\M-5])
(7 54 [?\C-\M-6])
(7 55 [?\C-\M-7])
(7 56 [?\C-\M-8])
(7 57 [?\C-\M-9])
(7 59 [?\C-\M-\;])
(7 61 [?\C-\M-=])
(7 92 [?\C-\M-\\])
(define-key map "\e[27;7;32~" [?\C-\M-\s])
(define-key map "\e[27;7;39~" [?\C-\M-\'])
(define-key map "\e[27;7;44~" [?\C-\M-,])
(define-key map "\e[27;7;45~" [?\C-\M--])
(define-key map "\e[27;7;46~" [?\C-\M-.])
(define-key map "\e[27;7;47~" [?\C-\M-/])
(define-key map "\e[27;7;48~" [?\C-\M-0])
(define-key map "\e[27;7;49~" [?\C-\M-1])
(define-key map "\e[27;7;50~" [?\C-\M-2])
(define-key map "\e[27;7;51~" [?\C-\M-3])
(define-key map "\e[27;7;52~" [?\C-\M-4])
(define-key map "\e[27;7;53~" [?\C-\M-5])
(define-key map "\e[27;7;54~" [?\C-\M-6])
(define-key map "\e[27;7;55~" [?\C-\M-7])
(define-key map "\e[27;7;56~" [?\C-\M-8])
(define-key map "\e[27;7;57~" [?\C-\M-9])
(define-key map "\e[27;7;59~" [?\C-\M-\;])
(define-key map "\e[27;7;61~" [?\C-\M-=])
(define-key map "\e[27;7;92~" [?\C-\M-\\])
(8 33 [?\C-\M-!])
(8 34 [?\C-\M-\"])
(8 35 [?\C-\M-#])
(8 36 [?\C-\M-$])
(8 37 [?\C-\M-%])
(8 38 [?\C-\M-&])
(8 40 [?\C-\M-\(])
(8 41 [?\C-\M-\)])
(8 42 [?\C-\M-*])
(8 43 [?\C-\M-+])
(8 58 [?\C-\M-:])
(8 60 [?\C-\M-<])
(8 62 [?\C-\M->])
(8 63 [(control meta ??)])
(define-key map "\e[27;8;33~" [?\C-\M-!])
(define-key map "\e[27;8;34~" [?\C-\M-\"])
(define-key map "\e[27;8;35~" [?\C-\M-#])
(define-key map "\e[27;8;36~" [?\C-\M-$])
(define-key map "\e[27;8;37~" [?\C-\M-%])
(define-key map "\e[27;8;38~" [?\C-\M-&])
(define-key map "\e[27;8;40~" [?\C-\M-\(])
(define-key map "\e[27;8;41~" [?\C-\M-\)])
(define-key map "\e[27;8;42~" [?\C-\M-*])
(define-key map "\e[27;8;43~" [?\C-\M-+])
(define-key map "\e[27;8;58~" [?\C-\M-:])
(define-key map "\e[27;8;60~" [?\C-\M-<])
(define-key map "\e[27;8;62~" [?\C-\M->])
(define-key map "\e[27;8;63~" [(control meta ??)])
(2 9 [S-tab])
(2 13 [S-return])
(define-key map "\e[27;2;9~" [S-tab])
(define-key map "\e[27;2;13~" [S-return])
(define-key map "\e[27;6;9~" [C-S-tab])
(define-key map "\e[27;6;13~" [C-S-return])
(6 9 [C-S-tab])
(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.
(define-key map "\e[A" [up])