diff options
Diffstat (limited to 'lisp/term/vt200.el')
-rw-r--r-- | lisp/term/vt200.el | 90 |
1 files changed, 83 insertions, 7 deletions
diff --git a/lisp/term/vt200.el b/lisp/term/vt200.el index 162baecd7c1..a394de1cc3d 100644 --- a/lisp/term/vt200.el +++ b/lisp/term/vt200.el @@ -1,9 +1,85 @@ -(defun terminal-80-columns () - (interactive) - (send-string-to-terminal "\033[?3l") - (set-screen-width 80)) +;; vt200 series terminal stuff. +;; April 1985, Joe Kelsey + +(require 'keypad) -(defun terminal-132-columns () +(defvar CSI-map nil + "The CSI-map maps the CSI function keys on the VT200 keyboard. +The CSI keys are the dark function keys, and are only active in +VT200-mode, except for the arrow keys.") + +(defun enable-arrow-keys () + "Enable the use of the VT200 arrow keys and dark function keys. +Because of the nature of the VT200, this unavoidably breaks +the standard Emacs command ESC [; therefore, it is not done by default, +but only if you give this command." (interactive) - (send-string-to-terminal "\033[?3h") - (set-screen-width 132)) + (global-set-key "\e[" CSI-map)) + +;; I suggest that someone establish standard mappings for all of +;; the VT200 CSI function keys into the function-keymap. + +(if CSI-map + nil + (setq CSI-map (make-keymap)) ; <ESC>[ commands + (setup-terminal-keymap CSI-map + '(("A" . ?u) ; up arrow + ("B" . ?d) ; down-arrow + ("C" . ?r) ; right-arrow + ("D" . ?l) ; left-arrow + ("1~" . ?f) ; Find + ("2~" . ?I) ; Insert Here + ("3~" . ?k) ; Re-move + ("4~" . ?s) ; Select + ("5~" . ?P) ; Prev Screen + ("6~" . ?N) ; Next Screen + ("17~" . ?\C-f) ; F6 + ("18~" . ?\C-g) ; F7 + ("19~" . ?\C-h) ; F8 + ("20~" . ?\C-i) ; F9 + ("21~" . ?\C-j) ; F10 + ("23~" . ESC-prefix) ; F11 (ESC) + ("24~" . ?\C-l) ; F12 + ("25~" . ?\C-m) ; F13 + ("26~" . ?\C-n) ; F14 + ("31~" . ?\C-q) ; F17 + ("32~" . ?\C-r) ; F18 + ("33~" . ?\C-s) ; F19 + ("34~" . ?\C-t) ; F20 + ("28~" . ??) ; Help + ("29~" . ?x)))) ; Do + +(defvar SS3-map nil + "SS3-map maps the SS3 function keys on the VT200 keyboard. +The SS3 keys are the numeric keypad keys in keypad application mode +\(DECKPAM). SS3 is DEC's name for the sequence <ESC>O which is +the common prefix of what these keys transmit.") + +(if SS3-map + nil + (setq SS3-map (make-keymap)) ; <ESC>O commands + (setup-terminal-keymap SS3-map + '(("A" . ?u) ; up arrow + ("B" . ?d) ; down-arrow + ("C" . ?r) ; right-arrow + ("D" . ?l) ; left-arrow + ("M" . ?e) ; Enter + ("P" . ?\C-a) ; PF1 + ("Q" . ?\C-b) ; PF2 + ("R" . ?\C-c) ; PF3 + ("S" . ?\C-d) ; PF4 + ("l" . ?,) ; , + ("m" . ?-) ; - + ("n" . ?.) ; . + ("p" . ?0) ; 0 + ("q" . ?1) ; 1 + ("r" . ?2) ; 2 + ("s" . ?3) ; 3 + ("t" . ?4) ; 4 + ("u" . ?5) ; 5 + ("v" . ?6) ; 6 + ("w" . ?7) ; 7 + ("x" . ?8) ; 8 + ("y" . ?9))) ; 9 + + (define-key global-map "\eO" SS3-map)) |