Trailing whitespace deleted.
[bpt/emacs.git] / lisp / term / tvi970.el
CommitLineData
a97beda4
ER
1;;; tvi970.el --- terminal support for the Televideo 970
2
3;; Author: Jim Blandy <jimb@occs.cs.oberlin.edu>, January 1992
4;; Keywords: terminals
5
6;; Copyright (C) 1992 Free Software Foundation, Inc.
7
8;; This file is part of GNU Emacs.
9
10;; GNU Emacs is free software; you can redistribute it and/or modify
11;; it under the terms of the GNU General Public License as published by
12;; the Free Software Foundation; either version 2, or (at your option)
13;; any later version.
14
15;; GNU Emacs is distributed in the hope that it will be useful,
16;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;; GNU General Public License for more details.
19
20;; You should have received a copy of the GNU General Public License
2fe590dc
EN
21;; along with GNU Emacs; see the file COPYING. If not, write to the
22;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23;; Boston, MA 02111-1307, USA.
a97beda4
ER
24
25;;; Commentary:
26
2fe590dc 27;; Uses the Emacs 19 terminal initialization features --- won't work with 18.
a97beda4
ER
28
29;;; Code:
8f3e0167 30
8f3e0167
JB
31(or (lookup-key function-key-map "\e[")
32 (define-key function-key-map "\e[" (make-keymap)))
a97beda4
ER
33;; (or (lookup-key function-key-map "\eO")
34;; (define-key function-key-map "\eO" (make-keymap)))
8f3e0167
JB
35
36;; Miscellaneous keys
37(mapcar (function (lambda (key-binding)
38 (define-key function-key-map
39 (car key-binding) (nth 1 key-binding))))
a97beda4
ER
40 '(
41 ;; These are set up by termcap or terminfo
42 ;; ("\eOP" [kp-f1])
43 ;; ("\eOQ" [kp-f2])
44 ;; ("\eOR" [kp-f3])
45 ;; ("\eOS" [kp-f4])
46
420cdb18 47 ;; These might br set by terminfo
a97beda4
ER
48 ("\e[H" [home])
49 ("\e[Z" [backtab])
50 ("\e[i" [print])
51 ("\e[@" [insert])
52 ("\e[L" [insertline])
53 ("\e[M" [deleteline])
420cdb18 54 ("\e[U" [next]) ;; actually the `page' key
a97beda4
ER
55
56 ;; These won't be set up by either
57 ("\eOm" [kp-subtract])
58 ("\eOl" [kp-separator])
59 ("\eOn" [kp-decimal])
60 ("\eOM" [kp-enter])
61
62 ;; These won't be set up by either either
420cdb18
ER
63 ("\e[K" [key_eol]) ;; Not an X keysym
64 ("\e[J" [key_eos]) ;; Not an X keysym
65 ("\e[2J" [key_clear]) ;; Not an X keysym
66 ("\e[P" [key_dc]) ;; Not an X keysym
a97beda4
ER
67 ("\e[g" [S-tab]) ;; Not an X keysym
68 ("\e[2N" [clearentry]) ;; Not an X keysym
69 ("\e[2K" [S-clearentry]) ;; Not an X keysym
70 ("\e[E" [?\C-j]) ;; Not an X keysym
71 ("\e[g" [S-backtab]) ;; Not an X keysym
420cdb18
ER
72 ("\e[?1i" [key_sprint]) ;; Not an X keysym
73 ("\e[4h" [key_sic]) ;; Not an X keysym
a97beda4
ER
74 ("\e[4l" [S-delete]) ;; Not an X keysym
75 ("\e[Q" [S-insertline]) ;; Not an X keysym
420cdb18
ER
76 ("\e[1Q" [key_sdl]) ;; Not an X keysym
77 ("\e[19l" [key_seol]) ;; Not an X keysym
a97beda4
ER
78 ("\e[19h" [S-erasepage]) ;; Not an X keysym
79 ("\e[V" [S-page]) ;; Not an X keysym
80 ("\eS" [send]) ;; Not an X keysym
81 ("\e5" [S-send]) ;; Not an X keysym
82 ))
83
8f3e0167
JB
84;; The numeric keypad keys.
85(let ((i 0))
86 (while (< i 10)
87 (define-key function-key-map
88 (format "\eO%c" (+ i ?p))
89 (vector (intern (format "kp-%d" i))))
90 (setq i (1+ i))))
91;; The numbered function keys.
92(let ((i 0))
93 (while (< i 16)
94 (define-key function-key-map
95 (format "\e?%c" (+ i ?a))
96 (vector (intern (format "f%d" (1+ i)))))
97 (define-key function-key-map
98 (format "\e?%c" (+ i ?A))
99 (vector (intern (format "S-f%d" (1+ i)))))
100 (setq i (1+ i))))
101
102\f
103;;; Should keypad numbers send ordinary digits or distinct escape sequences?
104(defvar tvi970-keypad-numeric nil
105 "The terminal should be in numeric keypad mode iff this variable is non-nil.
106Do not set this variable! Call the function ``tvi970-set-keypad-mode''.")
107
108(defun tvi970-set-keypad-mode (&optional arg)
109 "Set the current mode of the TVI 970 numeric keypad.
110In ``numeric keypad mode'', the number keys on the keypad act as
111ordinary digits. In ``alternate keypad mode'', the keys send distinct
112escape sequences, meaning that they can have their own bindings,
113independent of the normal number keys.
114With no argument, toggle between the two possible modes.
115With a positive argument, select alternate keypad mode.
116With a negative argument, select numeric keypad mode."
117 (interactive "P")
db95369b 118 (setq tvi970-keypad-numeric
8f3e0167
JB
119 (if (null arg)
120 (not tvi970-keypad-numeric)
121 (> (prefix-numeric-value arg) 0)))
122 (send-string-to-terminal (if tvi970-keypad-numeric "\e=" "\e>")))
123
124(tvi970-set-keypad-mode 1)
a97beda4 125
e8af40ee 126;;; tvi970.el ends here