jbm@attunix.att.com (02/03/89)
I enclose some '.el' files to do the 'keypad'-mechanism virtual
bindings for some AT&T terminal-types: the 630MTG, the 'AT386' 386
console, and the 'xterm' X11 terminal emulator... these obviously go
in the <emacs-home>/lisp/term directory.
-Jeff Moore
(jbm@attunix.sf.att.com)
[and, of course, nobody is responsible for anything, etc.]
---------------------------------------------------------------------
#!/bin/sh
# To unbundle, sh this file
echo 630.el 1>&2
sed 's/.//' >630.el <<'Shar_Eof_630.el'
X;; 'keypad' interface for AT&T 630MTG terminal
X;; Jeff Moore (jbm@attunix.sf.att.com)
X;; 13 Jan 89
X;;
X;; Tested on: GNU Emacs 18.51.50 of Fri Aug 26 1988 on gronk (usg-unix-v)
X;;
X;; Can be installed linked to names '630.el', '630-24.el'
X;;
X
X(require 'keypad)
X
X(defvar att630-map-1 nil
X "630MTG keys generating <ESC>[ prefix (most keypad keys)")
X(defvar att630-map-2 nil
X "630MTG keys generating <ESC>N prefix (some function keys)")
X
X(defun enable-att630-keys ()
X "Enable the use of the AT&T 630MTG function keys. Because of the
Xnature of the 630 keyboard, this unavoidably breaks several standard Emacs
Xbindings; therefore, it is not done by default, but only if you give
Xthis command."
X (interactive)
X (global-set-key "\e[" att630-map-1)
X (global-set-key "\eN" att630-map-2))
X
X(if att630-map-1
X nil
X (setq att630-map-1 (make-keymap)) ; "<ESC>[" commands
X (setup-terminal-keymap att630-map-1
X '(("A" . ?u) ; Up Arrow (previous-line)
X ("B" . ?d) ; Down Arrow (next-line)
X ("C" . ?r) ; Right Arrow (forward-char)
X ("D" . ?l) ; Left Arrow (backward-char)
X ("H" . ?h) ; Home (opinions vary...)
X )))
X
X(if att630-map-2
X nil
X (setq att630-map-2 (make-keymap)) ; "<ESC>N" commands
X (setup-terminal-keymap att630-map-2
X '( ; F1 - F8 are "soft"
X ("o" . ?\C-i) ; F9
X ("p" . ?\C-j) ; F10
X ("q" . ?\C-k) ; F11
X ("r" . ?\C-l) ; F12 (out of range?)
X ("s" . ?\C-m) ; F13 (out of range?)
X ("t" . ?\C-n)))) ; F14 (out of range?)
Shar_Eof_630.el
echo at386.el 1>&2
sed 's/.//' >at386.el <<'Shar_Eof_at386.el'
X;; 'keypad' interface for the AT&T 386 console (sV/386r3.2)
X;; Jeff Moore (jbm@attunix.sf.att.com)
X;; 13 Jan 89
X;;
X;; Tested on: GNU Emacs 18.51.50 of Fri Aug 26 1988 on gronk (usg-unix-v)
X;;
X;; Can be installed linked to names at386.el, at386-m.el, AT386.el, AT386-M.el
X;; (unless there's a better mechanism for such aliasing)
X;;
X;; Additional 'AT386' family note: they insist on setting the terminfo 'xt'
X;; cap, and emacs takes that to mean the terminal's a Teleray. Unset 'xt'.
X;;
X;; Also works for some flavors of AT&T xterm; if true for you (check esp.
X;; arrow keys), link to xterm.el and xterms.el, as well.
X
X(require 'keypad)
X
X(defvar at386-map-1 nil
X "AT386 keys generating <ESC>[ prefix (most keypad keys)")
X(defvar at386-map-2 nil
X "AT386 keys generating <ESC>O prefix (function keys)")
X
X(defun enable-at386-keys ()
X "Enable the use of the AT&T AT386 function keys. Because of the
Xnature of the AT386 keyboard, this unavoidably breaks several standard Emacs
Xbindings; therefore, it is not done by default, but only if you give
Xthis command."
X (interactive)
X (global-set-key "\e[" at386-map-1)
X (global-set-key "\eO" at386-map-2)
X ;; Alt-key on 386 becomes Meta (Yah! Emacs the way God and RMS meant it!)
X (fset 'esc-prefix esc-map)
X (define-key esc-map "N" 'esc-prefix))
X
X;;; Set some new/different keypad defaults
X(keypad-default "I" 'overwrite-mode) ; Insert -> toggle insert mode
X(keypad-default "h" 'beginning-of-buffer) ; Home -> home to top
X;for some reason, the 'keypad.el' "h" redefinition won't take without
X;dynamite. Load order? Anyway, we'd be exceeding our charter here if we
X;chanced overwriting the user's own definition by directly calling define-key;
X;let's hope s/he's sensible enough to bind "h" to beginning-of-buffer...
X(keypad-default "H" 'end-of-buffer) ; End -> home to bottom
X
X(if at386-map-1
X nil
X (setq at386-map-1 (make-keymap)) ; "<ESC>[" commands
X (setup-terminal-keymap at386-map-1
X '(("A" . ?u) ; Up Arrow (previous-line)
X ("B" . ?d) ; Down Arrow (next-line)
X ("C" . ?r) ; Right Arrow (forward-char)
X ("D" . ?l) ; Left Arrow (backward-char)
X ("@" . ?I) ; Insert
X ("H" . ?h) ; Home (beginning-of-buffer)
X ("Y" . ?H) ; End (end-of-buffer)
X ("U" . ?N) ; Page Down (scroll-up)
X ("V" . ?P) ; Page Up (scroll-down)
X )))
X
X(if at386-map-2
X nil
X (setq at386-map-2 (make-keymap)) ; "<ESC>O" commands
X (setup-terminal-keymap at386-map-2
X '(("P" . ?\C-a) ; F1
X ("Q" . ?\C-b) ; F2
X ("R" . ?\C-c) ; F3
X ("S" . ?\C-d) ; F4
X ("T" . ?\C-e) ; F5
X ("U" . ?\C-f) ; F6
X ("V" . ?\C-g) ; F7
X ("W" . ?\C-h) ; F8
X ("X" . ?\C-i) ; F9
X ("Y" . ?\C-j) ; F10
X ("Z" . ?\C-k) ; F11
X ("A" . ?\C-l)))) ; F12 (out of range?)
Shar_Eof_at386.el
echo xterm.el 1>&2
sed 's/.//' >xterm.el <<'Shar_Eof_xterm.el'
X;; 'keypad' interface for AT&T version of 'xterm' (X11 terminal emulator)
X;; Jeff Moore (jbm@attunix.sf.att.com)
X;; 13 Jan 89
X;;
X;; Tested on: GNU Emacs 18.51.50 of Fri Aug 26 1988 on gronk (usg-unix-v)
X;;
X;; Can be installed linked to names 'xterm.el', 'xterms.el'
X;;
X;; Some 'xterm' flavors generate different arrow-key sequences; 'at386.el'
X;; should work for them.
X
X(require 'keypad)
X
X(defvar xterm-map-1 nil
X "xterm keys generating <ESC>[ prefix (some keypad keys)")
X(defvar xterm-map-2 nil
X "xterm keys generating <ESC>O prefix (some keypad keys, function keys)")
X
X(defun enable-xterm-keys ()
X "Enable the use of the AT&T xterm/386 function keys. Because of the
Xnature of the 386 console, this unavoidably breaks several standard Emacs
Xbindings; therefore, it is not done by default, but only if you give
Xthis command."
X (interactive)
X (global-set-key "\e[" xterm-map-1)
X (global-set-key "\eO" xterm-map-2)
X ;; Alt-key on 386 becomes Meta (Yah! Emacs the way God and RMS meant it!)
X (global-set-key "\eN" esc-map))
X
X;;; Set some new/different keypad defaults
X(keypad-default "I" 'overwrite-mode) ; Insert -> toggle insert mode
X(keypad-default "h" 'beginning-of-buffer) ; Home -> home to top
X;for some reason, the 'keypad.el' "h" redefinition won't take without
X;dynamite. Load order? Anyway, we'd be exceeding our charter here if we
X;chanced overwriting the user's own definition by directly calling define-key;
X;let's hope s/he's sensible enough to bind "h" to beginning-of-buffer...
X(keypad-default "H" 'end-of-buffer) ; End -> home to bottom
X
X(if xterm-map-1
X nil
X (setq xterm-map-1 (make-keymap)) ; "<ESC>[" commands
X (setup-terminal-keymap xterm-map-1
X '(("H" . ?h) ; Home (beginning-of-buffer)
X ("Y" . ?H) ; End (end-of-buffer)
X ("U" . ?N) ; Page Down (scroll-up)
X ("V" . ?P) ; Page Up (scroll-down)
X ("2~" . ?I) ; Insert
X )))
X
X(if xterm-map-2
X nil
X (setq xterm-map-2 (make-keymap)) ; "<ESC>O" commands
X (setup-terminal-keymap xterm-map-2
X '(("A" . ?u) ; Up Arrow (previous-line)
X ("B" . ?d) ; Down Arrow (next-line)
X ("C" . ?r) ; Right Arrow (forward-char)
X ("D" . ?l) ; Left Arrow (backward-char)
X ("P" . ?\C-a) ; F1
X ("Q" . ?\C-b) ; F2
X ("R" . ?\C-c) ; F3
X ("S" . ?\C-d) ; F4
X ("T" . ?\C-e) ; F5
X ("U" . ?\C-f) ; F6
X ("V" . ?\C-g) ; F7
X ("W" . ?\C-h) ; F8
X ("X" . ?\C-i) ; F9
X ("Y" . ?\C-j) ; F10
X ("Z" . ?\C-k) ; F11
X;collides w/Up Arrow(!) ("A" . ?\C-l) ; F12 (out of range?)
X )))
Shar_Eof_xterm.el