home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-18.59-bin.lha / lib / emacs / 18.59 / lisp / term / unixpc.el < prev    next >
Lisp/Scheme  |  1987-08-30  |  5KB  |  149 lines

  1. ;;; AT&T UnixPC keyboard definitions
  2. ;;; Brant Cheikes (brant@linc.cis.upenn.edu, manta!brant)
  3. ;;; 4 August 1987
  4. ;;;
  5. ;;; Tested on: GNU Emacs 18.47.1 of Fri Jul 24 1987 on manta (usg-unix-v)
  6. ;;;
  7. ;;; The AT&T Unix PC (aka PC7300, 3B1) has a bizarre keyboard with
  8. ;;; lots of interestingly labeled function keys.  This file tries to
  9. ;;; assign useful actions to the function keys.  Note that the Shift
  10. ;;; and Ctrl keys have the same effect on function keys, so Shift-F1
  11. ;;; is the same as Ctrl-F1.
  12. ;;;
  13. ;;; Most of the information needed to create this file was taken from
  14. ;;; documentation found in lisp/keypad.el
  15. ;;;
  16. ;;; Bug: The "Beg" and "End" (unshifted) keys are not supported because
  17. ;;; they generate <esc>9 and <esc>0 respectively, and I know not how to
  18. ;;; deal with them.
  19.  
  20. (require 'keypad)
  21.  
  22. ;;; There seem to be three prefixes for AT&T UnixPC function keys:
  23. ;;; "<esc>O", "<esc>N", and "<esc>[".  There seem to be a couple
  24. ;;; keys that just generate "<esc><digit>".
  25. ;;;
  26. ;;; Note: for each mapping, I indicate the key on the Unix PC followed
  27. ;;; by the Emacs command it is bound to (if any).  Note that when I
  28. ;;; couldn't figure out anything useful to do with a key, I simply bound
  29. ;;; it to 'previous-line, arbitrarily.  My goal was to get keys to do
  30. ;;; "mnemonic" things.
  31.  
  32. (defvar ATT-map-1 nil
  33.   "The bulk of the function keys on the AT&T Unix PC.")
  34. (defvar ATT-map-2 nil
  35.   "A few other random function keys on the AT&T Unix PC.")
  36. (defvar ATT-map-3 nil
  37.   "Some really random function keys on the AT&T Unix PC.")
  38.  
  39. (defun enable-unixpc-keys ()
  40.   "Enable the use of the AT&T Unix PC function keys.  Because of the
  41. nature of the Unix PC, this unavoidably breaks several standard Emacs
  42. prefixes; therefore, it is not done by default, but only if you give
  43. this command."
  44.   (interactive)
  45.   (global-set-key "\eO" ATT-map-1)
  46.   (global-set-key "\eN" ATT-map-2)
  47.   (global-set-key "\e[" ATT-map-3))
  48.  
  49. ;;; Create a few new keypad defaults.  Here's what I think I'm doing here:
  50. ;;; I look through "keypad.el" to find any unused entries in function-keymap
  51. ;;; and then create my own bindings for them here.  Then I use the newly
  52. ;;; created ?x string in the setup-terminal-keymap.
  53.  
  54. (keypad-default "2" 'advertised-undo)
  55. (keypad-default "4" 'save-buffers-kill-emacs)
  56. (keypad-default "5" 'save-buffer)
  57. (keypad-default "6" 'beginning-of-buffer)
  58. (keypad-default "8" 'end-of-buffer)
  59. (keypad-default "w" 'kill-word)
  60. (keypad-default "p" 'fill-paragraph)
  61. (keypad-default "," 'copy-region-as-kill)
  62.  
  63. (if ATT-map-1
  64.     nil
  65.   (setq ATT-map-1 (make-keymap))   ; <ESC>O commands
  66.   (setup-terminal-keymap ATT-map-1
  67.              '(("a" . ?\^d)    ; Clear Line (kill-line)
  68.                ("A" . ?\^d)    ; Shift-Clear Line (kill-line)
  69.                ("b" . ?u)    ; Ref
  70.                ("B" . ?u)    ; Rstrt
  71.                ("c" . ?u)    ; F1
  72.                ("d" . ?u)    ; F2
  73.                ("e" . ?u)    ; F3
  74.                ("f" . ?u)    ; F4
  75.                ("g" . ?u)    ; F5
  76.                ("h" . ?u)    ; F6
  77.                ("i" . ?u)    ; F7
  78.                ("j" . ?u)    ; F8
  79.                ("k" . ?4)    ; Exit (save-buffers-kill-emacs)
  80.                ("K" . ?4)    ; Shift-Exit (save-buffers-kill-emacs)
  81.                ("m" . ??)    ; Help (help-command)
  82.                ("M" . ??)    ; Shift-Help (help-command)
  83.                ("n" . ?u)    ; Creat
  84.                ("N" . ?u)    ; Shift-Creat
  85.                ("o" . ?5)    ; Save (save-buffer)
  86.                ("O" . ?5)    ; Shift-Save (save-buffer)
  87.                ("r" . ?u)    ; Opts
  88.                ("R" . ?u)    ; Shift-Opts
  89.                ("s" . ?2)    ; Undo (advertised-undo)
  90.                ("S" . ?2)    ; Shift-Undo (advertised-undo)
  91.                ("t" . ?p)    ; Redo (fill-paragraph)
  92.                ("T" . ?p)    ; Shift-Redo (fill-paragraph)
  93.                ("u" . ?u)    ; Cmd
  94.                ("U" . ?u)    ; Shift-Cmd
  95.                ("v" . ?e)    ; Open (open-line)
  96.                ("V" . ?\^d)    ; Close (kill-line)
  97.                ("w" . ?u)    ; Cancl
  98.                ("W" . ?u)    ; Shift-Cancl
  99.                ("x" . ?\^c) ; Find (isearch-forward)
  100.                ("X" . ?f)    ; Shift-Find (re-search-forward)
  101.                ("y" . ?0)    ; Rplac (yank)
  102.                ("Y" . ?0)    ; Shift-Rplac (yank)
  103.                ("z" . ?u)    ; Print
  104.                )))
  105.  
  106. (if ATT-map-2
  107.     nil
  108.   (setq ATT-map-2 (make-keymap))   ; <ESC>N commands
  109.   (setup-terminal-keymap ATT-map-2
  110.              '(("a" . ?C)    ; Rfrsh (recenter)
  111.                ("B" . ?6)    ; Shift-Beg (beginning-of-buffer)
  112.                ("c" . ?0)    ; Move (yank)
  113.                ("C" . ?0)    ; Shift-Move (yank)
  114.                ("d" . ?,)    ; Copy (copy-region-as-kill)
  115.                ("D" . ?,)    ; Shift-Copy (copy-region-as-kill)
  116.                ("e" . ?k)   ; Dlete (kill-region)
  117.                ("E" . ?k)    ; Shift-Dlete (kill-region)
  118.                ("f" . ?.)   ; Dlete Char (delete-char)
  119.                ("F" . ?w)    ; Shift-Dlete Char (kill-word)
  120.                ("g" . ?P)    ; Prev (scroll-down)
  121.                ("G" . ?P)    ; Shift-Prev (scroll-down)
  122.                ("h" . ?N)    ; Next (scroll-up)
  123.                ("H" . ?N)    ; Shift-Next (scroll-up)
  124.                ("i" . ?s)    ; Mark (set-mark-command)
  125.                ("I" . ?s)    ; Slect (set-mark-command)
  126.                ("j" . ?u)    ; Input Mode
  127.                ("J" . ?u)    ; Shift-Input Mode
  128.                ("K" . ?1)    ; Shift-LeftArrow (backward-word)
  129.                ("L" . ?3)    ; Shift-RightArrow (forward-word)
  130.                ("M" . ?h)    ; Shift-Home (move-to-window-line)
  131.                ("N" . ?8)    ; Shift-End (end-of-buffer)
  132.                )))
  133.  
  134. (if ATT-map-3
  135.     nil
  136.   (setq ATT-map-3 (make-keymap))   ; <ESC>[ commands
  137.   (setup-terminal-keymap ATT-map-3
  138.              '(("A" . ?u)    ; Up Arrow (previous-line)
  139.                ("B" . ?d)    ; Down Arrow (next-line)
  140.                ("C" . ?r)    ; Right Arrow (forward-char)
  141.                ("D" . ?l)    ; Left Arrow (backward-char)
  142.                ("H" . ?h)    ; Home (move-to-window-line)
  143.                ("J" . ?C)    ; Clear (recenter)
  144.                ("S" . ?9)    ; Shift-DownArrow (forward-paragraph)
  145.                ("T" . ?7)    ; Shift-UpArrow (backward-paragraph)
  146.                ("U" . ?N)    ; Page (scroll-up)
  147.                ("V" . ?P)   ; Shift-Page (scroll-down)
  148.                )))
  149.