summaryrefslogtreecommitdiff
path: root/lisp/term/vt200.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/term/vt200.el')
-rw-r--r--lisp/term/vt200.el90
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))