]> code.delx.au - gnu-emacs/blobdiff - lisp/term/xterm.el
Update copyright year to 2015
[gnu-emacs] / lisp / term / xterm.el
index 33eb61dac1ebccd47e14b7044f9117fc5809045b..519f691856582ee46fa567092fbf641f4607f871 100644 (file)
@@ -1,6 +1,6 @@
 ;;; xterm.el --- define function key sequences and standard colors for xterm  -*- lexical-binding: t -*-
 
-;; Copyright (C) 1995, 2001-2014 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2015 Free Software Foundation, Inc.
 
 ;; Author: FSF
 ;; Keywords: terminals
@@ -59,7 +59,12 @@ The relevant features are:
                         (while (not (search-backward
                                      xterm-paste-ending-sequence
                                      (- (point) end-marker-length) t))
-                          (let ((event (read-event)))
+                          (let ((event (read-event
+                                        nil nil
+                                        ;; Use finite timeout to avoid
+                                        ;; glomming the event onto
+                                        ;; this-command-keys.
+                                        most-positive-fixnum)))
                             (when (eql event ?\r)
                               (setf event ?\n))
                             (insert event)))
@@ -273,6 +278,70 @@ The relevant features are:
     (define-key map "\eOx" [kp-8])
     (define-key map "\eOy" [kp-9])
 
+    (define-key map "\eO2j" [S-kp-multiply])
+    (define-key map "\eO2k" [S-kp-add])
+    (define-key map "\eO2l" [S-kp-separator])
+    (define-key map "\eO2m" [S-kp-subtract])
+    (define-key map "\eO2o" [S-kp-divide])
+    (define-key map "\eO2p" [S-kp-0])
+    (define-key map "\eO2q" [S-kp-1])
+    (define-key map "\eO2r" [S-kp-2])
+    (define-key map "\eO2s" [S-kp-3])
+    (define-key map "\eO2t" [S-kp-4])
+    (define-key map "\eO2u" [S-kp-5])
+    (define-key map "\eO2v" [S-kp-6])
+    (define-key map "\eO2w" [S-kp-7])
+    (define-key map "\eO2x" [S-kp-8])
+    (define-key map "\eO2y" [S-kp-9])
+
+    (define-key map "\eO4j" [M-S-kp-multiply])
+    (define-key map "\eO4k" [M-S-kp-add])
+    (define-key map "\eO4l" [M-S-kp-separator])
+    (define-key map "\eO4m" [M-S-kp-subtract])
+    (define-key map "\eO4o" [M-S-kp-divide])
+    (define-key map "\eO4p" [M-S-kp-0])
+    (define-key map "\eO4q" [M-S-kp-1])
+    (define-key map "\eO4r" [M-S-kp-2])
+    (define-key map "\eO4s" [M-S-kp-3])
+    (define-key map "\eO4t" [M-S-kp-4])
+    (define-key map "\eO4u" [M-S-kp-5])
+    (define-key map "\eO4v" [M-S-kp-6])
+    (define-key map "\eO4w" [M-S-kp-7])
+    (define-key map "\eO4x" [M-S-kp-8])
+    (define-key map "\eO4y" [M-S-kp-9])
+
+    (define-key map "\eO6j" [C-S-kp-multiply])
+    (define-key map "\eO6k" [C-S-kp-add])
+    (define-key map "\eO6l" [C-S-kp-separator])
+    (define-key map "\eO6m" [C-S-kp-subtract])
+    (define-key map "\eO6o" [C-S-kp-divide])
+    (define-key map "\eO6p" [C-S-kp-0])
+    (define-key map "\eO6q" [C-S-kp-1])
+    (define-key map "\eO6r" [C-S-kp-2])
+    (define-key map "\eO6s" [C-S-kp-3])
+    (define-key map "\eO6t" [C-S-kp-4])
+    (define-key map "\eO6u" [C-S-kp-5])
+    (define-key map "\eO6v" [C-S-kp-6])
+    (define-key map "\eO6w" [C-S-kp-7])
+    (define-key map "\eO6x" [C-S-kp-8])
+    (define-key map "\eO6y" [C-S-kp-9])
+
+    (define-key map "\eO8j" [C-M-S-kp-multiply])
+    (define-key map "\eO8k" [C-M-S-kp-add])
+    (define-key map "\eO8l" [C-M-S-kp-separator])
+    (define-key map "\eO8m" [C-M-S-kp-subtract])
+    (define-key map "\eO8o" [C-M-S-kp-divide])
+    (define-key map "\eO8p" [C-M-S-kp-0])
+    (define-key map "\eO8q" [C-M-S-kp-1])
+    (define-key map "\eO8r" [C-M-S-kp-2])
+    (define-key map "\eO8s" [C-M-S-kp-3])
+    (define-key map "\eO8t" [C-M-S-kp-4])
+    (define-key map "\eO8u" [C-M-S-kp-5])
+    (define-key map "\eO8v" [C-M-S-kp-6])
+    (define-key map "\eO8w" [C-M-S-kp-7])
+    (define-key map "\eO8x" [C-M-S-kp-8])
+    (define-key map "\eO8y" [C-M-S-kp-9])
+
     ;; These keys are available in xterm starting from version 216
     ;; if the modifyOtherKeys resource is set to 1.
     (dolist (bind '((5 9   [C-tab])
@@ -530,6 +599,16 @@ The relevant features are:
     ;; Since xterm-280, the terminal type (NUMBER1) is now 41 instead of 0.
     (when (string-match "\\([0-9]+\\);\\([0-9]+\\);0" str)
       (let ((version (string-to-number (match-string 2 str))))
+        (when (and (> version 2000) (equal (match-string 1 str) "1"))
+          ;; Hack attack!  bug#16988: gnome-terminal reports "1;NNNN;0"
+          ;; with a large NNNN but is based on a rather old xterm code.
+          ;; Gnome terminal 3.6.1 reports 1;3406;0
+          ;; Gnome terminal 2.32.1 reports 1;2802;0
+          (setq version 200))
+        (when (equal (match-string 1 str) "83")
+          ;; `screen' (which returns 83;40003;0) seems to also lack support for
+          ;; some of these (bug#17607).
+          (setq version 240))
         ;; If version is 242 or higher, assume the xterm supports
         ;; reporting the background color (TODO: maybe earlier
         ;; versions do too...)