Emacs terminal initialization for UNIX-pc

Steven A. Conrad sac at conrad.UUCP
Sat Sep 10 07:41:18 AEST 1988


Enclosed is a copy of a terminal-specific Emacs initialization file
for the UNIX-pc.  The UNIX-pc has a number of function keys (about 75
or so key sequences!) which can be bound to perform most of the common
Emacs functions with single key (or shifted key) sequences.

----------- CUT HERE -----------
;;; unixpc.el: AT&T Unix PC keyboard definitions
;;; Brant Cheikes
;;; University of Pennsylvania
;;; Department of Computer and Information Science
;;; Internet: brant at manta.pha.pa.us, UUCP: {bpa,drexel}!manta!brant
;;; 29 August 1987
;;;
;;; Modified by Steven A. Conrad (sac at conrad.UUCP)
;;; 24 April 1988
;;;
;;; Works on GNU Emacs 18.50 on conrad
;;;
;;; The AT&T Unix PC (aka PC7300, 3B1) has a bizarre keyboard with
;;; lots of interestingly labeled function keys.  This file tries to
;;; assign useful actions to the function keys.  Note that the Shift
;;; and Ctrl keys have the same effect on function keys, so Shift-F1
;;; is the same as Ctrl-F1.

(require 'keypad)

;;; There seem to be three prefixes for AT&T UnixPC function keys:
;;; "<esc>O", "<esc>N", and "<esc>[".  There seem to be a couple
;;; keys that just generate "<esc><digit>".
;;;
;;; Note: for each mapping, I indicate the key on the Unix PC followed
;;; by the Emacs command it is bound to (if any).

(defvar UNIXPC-map-1 nil
  "The bulk of the function keys on the AT&T Unix PC.")
(defvar UNIXPC-map-2 nil
  "A few other random function keys on the AT&T Unix PC.")
(defvar UNIXPC-map-3 nil
  "Some really random function keys on the AT&T Unix PC.")

;;; Use built-in mappings first (as defined in keypad.el)
;;; Lines commented out are mapped later.

(if (not UNIXPC-map-3)
    (progn
      (setq UNIXPC-map-3 (lookup-key global-map "\e["))
      (if (not (keymapp UNIXPC-map-3))
	  (setq UNIXPC-map-3 (make-sparse-keymap)))  ;; <ESC>[ commands
      (setup-terminal-keymap UNIXPC-map-3
		       '(("A" . ?u)	; Up Arrow (previous-line)
			 ("B" . ?d)	; Down Arrow (next-line)
			 ("C" . ?r)	; Right Arrow (forward-char)
			 ("D" . ?l)	; Left Arrow (backward-char)
			 ("H" . ?h)	; Home (move-to-window-line)
;;;			 ("J" . ??)	; Clear (delete-other-windows)
			 ("S" . ?9)	; Shift-DownArrow (forward-paragraph)
			 ("T" . ?7)	; Shift-UpArrow (backward-paragraph)
			 ("U" . ?N)	; Page (scroll-up)
			 ("V" . ?P)     ; Shift-Page (scroll-down)
			 ))))

;;; Personalized mappings.

(define-key UNIXPC-map-3 "J" 'delete-other-windows)

(defun enable-arrow-keys ()
  "Enable the use of the Unix PC arrow keys.  This breaks the <esc>[
command, so it is not done by default;  you must explicitly call this
function."
  (interactive)
  (global-set-key "\e[" UNIXPC-map-3))

(if (not UNIXPC-map-1)
    (progn
     (setq UNIXPC-map-1 (lookup-key global-map "\eN"))
     (if (not (keymapp UNIXPC-map-1))
	 (setq UNIXPC-map-1 (make-sparse-keymap)))  ;; <ESC>N commands
     (setup-terminal-keymap UNIXPC-map-1
			 '(("a" . ?C)	; Rfrsh (recenter)
;;;			   ("B" . ??)	; Shift-Beg (beginning-of-buffer)
			   ("c" . ?0)	; Move (yank)
;;;			   ("C" . ??)	; Shift-Move (insert-register)
;;;			   ("d" . ??)	; Copy (copy-region-as-kill)
;;;			   ("D" . ??)	; Shift-Copy (copy-to-register)
			   ("e" . ?k)   ; Dlete (kill-region)
;;;			   ("E" . ??)	; Shift-Dlete (append-to-buffer)
			   ("f" . ?.)   ; Dlete Char (delete-char)
;;;			   ("F" . ??)	; Shift-Dlete Char (kill-word)
			   ("g" . ?1)	; Prev (backward-word)
;;;			   ("G" . ??)	; Shift-Prev (backward-sentence)
			   ("h" . ?3)	; Next (forward-word)
;;;			   ("H" . ??)	; Shift-Next (forward-sentence)
			   ("i" . ?s)	; Mark (set-mark-command)
;;;			   ("I" . ??)	; Slect (other-window)
;;;			   ("j" . ??)	; Input Mode (universal-argument)
;;;			   ("J" . ??)	; Shift-Input Mode (add-global-abbrev)
;;;			   ("K" . ??)	; Shift-LeftArrow (backward-sexp)
;;;			   ("L" . ??)	; Shift-RightArrow (forward-sexp)
			   ("M" . ?h)	; Shift-Home (move-to-window-line)
;;;			   ("N" . ??)	; Shift-End (end-of-buffer)
			   ))

     (define-key global-map "\eN" UNIXPC-map-1)))

;;; More personal mappings.

(define-key UNIXPC-map-1 "B" 'beginning-of-buffer)
(define-key UNIXPC-map-1 "C" 'insert-register)
(define-key UNIXPC-map-1 "d" 'copy-region-as-kill)
(define-key UNIXPC-map-1 "D" 'copy-to-register)
(define-key UNIXPC-map-1 "E" 'append-to-buffer)
(define-key UNIXPC-map-1 "F" 'kill-word)
(define-key UNIXPC-map-1 "G" 'backward-sentence)
(define-key UNIXPC-map-1 "H" 'forward-sentence)
(define-key UNIXPC-map-1 "I" 'other-window)
(define-key UNIXPC-map-1 "j" 'universal-argument)
(define-key UNIXPC-map-1 "J" 'add-global-abbrev)
(define-key UNIXPC-map-1 "K" 'backward-sexp)
(define-key UNIXPC-map-1 "L" 'forward-sexp)
(define-key UNIXPC-map-1 "N" 'end-of-buffer)

(if (not UNIXPC-map-2)
    (progn

     (setq UNIXPC-map-2 (lookup-key global-map "\eO"))
     (if (not (keymapp UNIXPC-map-2))
	 (setq UNIXPC-map-2 (make-sparse-keymap)))  ;; <ESC>O commands
     (setup-terminal-keymap UNIXPC-map-2
		    '(
;;;		      ("a" . ??)     ; Clear Line (kill-line)
;;;		      ("A" . ??)     ; Shift-Clear Line (kill-sentence)
;;;		      ("b" . ??)     ; Ref (spell-word)
;;;		      ("B" . ??)     ; Rstrt (spell-region)
;;;		      ("c" . ??)     ; F1 (start-kbd-macro)
;;;		      ("d" . ??)     ; F2 (end-kbd-macro)
;;;		      ("e" . ??)     ; F3 (call-last-kbd-macro)
;;;		      ("f" . ??)     ; F4 (top-level)
;;;		      ("g" . ??)     ; F5 (kill-compilation)
;;;		      ("h" . ??)     ; F6 (add-mode-abbrev)
;;;		      ("i" . ??)     ; F7 (inverse-add-mode-abbrev)
;;;		      ("j" . ??)     ; F8 (abbrev-mode)
;;;		      ("k" . ??)     ; Exit (suspend-emacs)
;;;		      ("K" . ??)     ; Shift-Exit (save-buffers-kill-emacs)
		      ("m" . ??)     ; Help (help-command)
;;;		      ("M" . ??)     ; Shift-Help (what-line)
;;;		      ("n" . ??)     ; Creat (split-window-vertically)
;;;		      ("N" . ??)     ; Shift-Creat (split-window-horizontally)
;;;		      ("o" . ??)     ; Save (save-buffer)
;;;		      ("O" . ??)     ; Shift-Save (write-file)
;;;		      ("r" . ??)     ; Opts (buffer-menu)
;;;		      ("R" . ??)     ; Shift-Opts (dired)
;;;		      ("s" . ??)     ; Undo (advertised-undo)
;;;		      ("S" . ??)     ; Shift-Undo (advertised-undo)
;;;		      ("t" . ??)     ; Redo (fill-paragraph)
;;;		      ("T" . ??)     ; Shift-Redo (fill-region)
;;;		      ("u" . ??)     ; Cmd (execute-extended-command)
;;;		      ("U" . ??)     ; Shift-Cmd (compile)
;;;		      ("v" . ??)     ; Open (find-file)
;;;		      ("V" . ??)     ; Close (kill-buffer)
;;;		      ("w" . ??)     ; Cancl (keyboard-quit)
;;;		      ("W" . ??)     ; Shift-Cancl (delete-window)
;;;		      ("x" . ??)     ; Find (isearch-forward)
		      ("X" . ?f)     ; Shift-Find (isearch-forward-regexp)
;		      ("y" . ??)     ; Rplac (query-replace-regexp)
;		      ("Y" . ??)     ; Shift-Rplac (regexp-replace)
;		      ("z" . ??)     ; Print (print-buffer)
		      ))

     (define-key global-map "\eO" UNIXPC-map-2)))

;;; Last batch of personalized mappings.
;;; The "Begin" and "End" keys generate odd sequences, so they get
;;; treated specially.

(define-key esc-map "9" 'beginning-of-line)		; Begin
(define-key esc-map "0" 'end-of-line)			; End

(define-key UNIXPC-map-2 "a" 'kill-line)
(define-key UNIXPC-map-2 "A" 'kill-sentence)
(define-key UNIXPC-map-2 "b" 'spell-word)
(define-key UNIXPC-map-2 "B" 'spell-region)
(define-key UNIXPC-map-2 "c" 'start-kbd-macro)
(define-key UNIXPC-map-2 "d" 'end-kbd-macro)
(define-key UNIXPC-map-2 "e" 'call-last-kbd-macro)
(define-key UNIXPC-map-2 "f" 'top-level)
(define-key UNIXPC-map-2 "g" 'kill-compilation)
(define-key UNIXPC-map-2 "h" 'add-mode-abbrev)
(define-key UNIXPC-map-2 "i" 'inverse-add-mode-abbrev)
(define-key UNIXPC-map-2 "j" 'abbrev-mode)
(define-key UNIXPC-map-2 "k" 'suspend-emacs)
(define-key UNIXPC-map-2 "K" 'save-buffers-kill-emacs)
(define-key UNIXPC-map-2 "M" 'what-line)
(define-key UNIXPC-map-2 "n" 'split-window-vertically)
(define-key UNIXPC-map-2 "N" 'split-window-horizontally)
(define-key UNIXPC-map-2 "o" 'save-buffer)
(define-key UNIXPC-map-2 "O" 'write-file)
(define-key UNIXPC-map-2 "r" 'buffer-menu)
(define-key UNIXPC-map-2 "R" 'dired)
(define-key UNIXPC-map-2 "s" 'advertised-undo)
(define-key UNIXPC-map-2 "S" 'advertised-undo)
(define-key UNIXPC-map-2 "t" 'fill-paragraph)
(define-key UNIXPC-map-2 "T" 'fill-region)
(define-key UNIXPC-map-2 "u" 'execute-extended-command)
(define-key UNIXPC-map-2 "U" 'compile)
(define-key UNIXPC-map-2 "v" 'find-file)
(define-key UNIXPC-map-2 "V" 'kill-buffer)
(define-key UNIXPC-map-2 "w" 'keyboard-quit)
(define-key UNIXPC-map-2 "W" 'delete-window)
(define-key UNIXPC-map-2 "x" 'isearch-forward)
(define-key UNIXPC-map-2 "y" 'query-replace-regexp)
(define-key UNIXPC-map-2 "Y" 'replace-regexp)
(define-key UNIXPC-map-2 "z" 'print-buffer)
--------- END CUT --------------

-- 
Steven A. Conrad,  Department of Medicine (Critical Care)
Louisiana State University Medical Center, Shreveport, LA
UUCP: sac at conrad.UUCP,   Internet: conrad at manta.pha.pa.us



More information about the Unix-pc.sources mailing list