raveling@venera.isi.edu (Paul Raveling) (06/23/89)
HP/ISI input remapping files: Part 7 of 8
This is a complete copy of lisp/term/default_keymap.el, the
default HP-specific keyboard setup. It contains four parts:
1. A copy of bobcat.el's logic to swap contro-H and ascii del.
It's an artifact of history -- at one time I was expecting
to replace bobcat.el with this.
2. A run of x-rebind-keysym invocations to bind a string of the
form "^X^Ykeyname" to each "non-ascii" keysym. "keyname"
is normally the string that X11 associates with each keysym.
The exceptions marked by '****' comments prevent emacs from
interpreting one keysym as a prefix for another.
3. A few functions are defined for use in the last part.
4. A run of global-set-key functions defines what each key does.
It's also possible to just use x-rebind-keysym to map to
"standard" emacs commands. However, there are a few pitfalls
involving shift keys (as noted in connection with x11term.c),
and using this technique on the first go-around produced a
VERY cryptic elisp file that proved hard to maintain before
its prototype was finished!
------------------------------ Cut Here --------------------------------
;;
;; HP function key rebindings for X11
;; 4-25-89 Paul Raveling
;;
;; The next section, which swaps control-H and ascii del, is
;; a verbatim copy of the original term/bobcat.el. All other
;; definitions and logic is
;;; HP terminals usually encourage using ^H as the rubout character
(let ((the-table (make-string 128 0)))
(let ((i 0))
(while (< i 128)
(aset the-table i i)
(setq i (1+ i))))
;; Swap ^H and DEL
(aset the-table ?\177 ?\^h)
(aset the-table ?\^h ?\177)
(setq keyboard-translate-table the-table))
;;;; Bind keysyms to escape sequences consistent with
;;;; the distributed version of emacs
(x-rebind-keysym "Left" nil "Left")
(x-rebind-keysym "Right" nil "Right") ; Arrow
(x-rebind-keysym "Up" nil "Up") ; Keys
(x-rebind-keysym "Down" nil "Down")
(x-rebind-keysym "F1" nil "F1")
(x-rebind-keysym "F2" nil "F2")
(x-rebind-keysym "F3" nil "F3")
(x-rebind-keysym "F4" nil "F4")
(x-rebind-keysym "F5" nil "F5")
(x-rebind-keysym "F6" nil "F6")
(x-rebind-keysym "F7" nil "F7")
(x-rebind-keysym "F8" nil "F8")
(x-rebind-keysym "F9" nil "F9")
(x-rebind-keysym "F10" nil "F10")
(x-rebind-keysym "F11" nil "F11")
(x-rebind-keysym "F12" nil "F12")
(x-rebind-keysym "F13" nil "F13")
(x-rebind-keysym "F14" nil "F14")
(x-rebind-keysym "F15" nil "F15")
(x-rebind-keysym "Help" nil "Help")
(x-rebind-keysym "F16" nil "F16")
(x-rebind-keysym "Menu" nil "Menu")
(x-rebind-keysym "F17" nil "F17")
(x-rebind-keysym "F18" nil "F18")
(x-rebind-keysym "F19" nil "F19")
(x-rebind-keysym "F20" nil "F20")
(x-rebind-keysym "Find" nil "Find")
(x-rebind-keysym "Insert" nil "Insert")
;;(x-rebind-keysym "Delete" nil "Delete_DEL")
(x-rebind-keysym "Select" nil "Select")
(x-rebind-keysym "Prior" nil "Prior")
(x-rebind-keysym "Next" nil "Next")
;;;; Bind keysyms unused by distributed version of emacs
;;;; but used on HP keyboards to escape sequences
(x-rebind-keysym "Tab" nil "Tab")
(x-rebind-keysym "Tab_backward" nil "backward_Tab") ; ****
(x-rebind-keysym "Execute" nil "Enter") ; Actually, enter
(x-rebind-keysym "Print" nil "Print")
(x-rebind-keysym "Break" nil "Break")
(x-rebind-keysym "Reset" nil "Reset")
(x-rebind-keysym "Cancel" nil "Cancel")
(x-rebind-keysym "System" nil "System")
(x-rebind-keysym "User" nil "User")
(x-rebind-keysym "Clear_line" nil "Clear_line")
(x-rebind-keysym "Clear" nil "Clear_display") ; ****
(x-rebind-keysym "Insert_line" nil "Insert_line")
(x-rebind-keysym "Delete_line" nil "Delete_line")
(x-rebind-keysym "Insert_char" nil "Insert_char")
(x-rebind-keysym "Delete_char" nil "Delete_char")
(x-rebind-keysym "Home" "none" "Home")
(x-rebind-keysym "Home" "shift" "Shift_Home")
(x-rebind-keysym "KP_F1" nil "KP_F1")
(x-rebind-keysym "KP_F2" nil "KP_F2")
(x-rebind-keysym "KP_F3" nil "KP_F3")
(x-rebind-keysym "KP_F4" nil "KP_F4")
(x-rebind-keysym "KP_Multiply" nil "KP_Multiply")
(x-rebind-keysym "KP_Divide" nil "KP_Divide")
(x-rebind-keysym "KP_Add" nil "KP_Add")
(x-rebind-keysym "KP_Subtract" nil "KP_Subtract")
(x-rebind-keysym "KP_7" nil "KP_7")
(x-rebind-keysym "KP_8" nil "KP_8")
(x-rebind-keysym "KP_9" nil "KP_9")
(x-rebind-keysym "KP_Enter" nil "KP_Enter")
(x-rebind-keysym "KP_4" nil "KP_4")
(x-rebind-keysym "KP_5" nil "KP_5")
(x-rebind-keysym "KP_6" nil "KP_6")
(x-rebind-keysym "KP_Separator" nil "KP_Separator")
(x-rebind-keysym "KP_1" nil "KP_1")
(x-rebind-keysym "KP_2" nil "KP_2")
(x-rebind-keysym "KP_3" nil "KP_3")
(x-rebind-keysym "KP_Tab" "none" "KP_Tab")
(x-rebind-keysym "KP_Tab_backward" "shift" "KP_backward_Tab") ; ****
(x-rebind-keysym "KP_0" nil "KP_0")
(x-rebind-keysym "KP_Decimal" nil "KP_Decimal")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Simple non-standard functions to support key bindings ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun delete-this-line ()
"Delete current line, save as kill"
(interactive)
(let (curcol dot1)
(setq curcol (current-column))
(forward-line 0)
(setq dot1 (dot))
(forward-line 1)
(kill-region dot1 (dot))
(move-to-column curcol)))
(defun clear-this-line ()
"Delete contents of current line, save as kill"
(interactive)
(forward-line 0)
(kill-line))
(defun clear-entire-buffer ()
"Delete contents of entire buffer, save as kill"
(interactive)
(mark-whole-buffer)
(kill-region 1 (region-end)))
(defun switch-to-prev-buffer ()
"Switch to previous buffer: Like switch-to-buffer, but without interaction"
(interactive)
(switch-to-buffer (other-buffer (current-buffer))))
(defun start-end-kbd-macro ()
"Start/stop capturing keystrokes for keyboard macro"
(interactive)
(if defining-kbd-macro
(end-kbd-macro)
(start-kbd-macro nil)))
(defun keys ()
"Describe default HP key functions"
(interactive)
(view-file "/usr/local/gemacs-18.54/etc/HP_keys.text"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Map specific escape sequences ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(global-unset-key "\e[") ; Unmap escape-left-bracket
; Function key row along top of main cluster
(global-set-key "Break" 'save-buffer) ; Break: Save buffer
(global-set-key "Reset" 'revert-buffer) ; Reset: Revert buffer
(global-set-key "Cancel" 'save-buffers-kill-emacs) ; Stop: Exit gracefully
(global-set-key "F1" 'call-last-kbd-macro) ; f1: Execute macro
(global-set-key "F2" 'start-end-kbd-macro) ; f2: Start/end macro def
(global-set-key "F3" 'bury-buffer) ; f3: Switch to next buffer
(global-set-key "F4" 'switch-to-prev-buffer); f4: Switch to prev buffer
(global-set-key "Menu" 'list-buffers) ; Menu: Buffer menu
(global-set-key "System" 'dired) ; System: 'Edit' directory
(global-set-key "User" 'rmail) ; User: 'Edit' mail
(global-set-key "F5" 'delete-other-windows) ; f5: Edit just 1 buffer
(global-set-key "F6" 'replace-string) ; f6: Replace string
;; If not for searches recognizing ^s & ^r when parsing pattern:
;(global-set-key "F7" 'isearch-backward) ; f7: Search backward
;(global-set-key "F8" 'isearch-forward) ; f8: Search forward
;; But instead:
(x-rebind-keysym "F7" nil "") ; f7: Search backward
(x-rebind-keysym "F8" nil "") ; f8: Search forward
(global-set-key "Clear_line" 'clear-this-line) ; Clear line: Clear line
(global-set-key "Clear_display" 'clear-entire-buffer); Clear display: Clear buffer
; Special purpose keys in main key cluster
;;;(global-set-key "Tab" 'backward-kill-word) ; Tab: Delete word backward
;;;(global-set-key "backward_Tab" 'kill-word) ; Shift-Tab: Del word forward
(global-set-key "Tab" 'tab-to-tab-stop) ; Tab: Tab forward
(global-set-key "backward_Tab" 'tab-to-tab-stop) ; Shift-Tab: Same
;;(global-set-key "Delete_DEL" 'keyboard-quit); DEL: Abort command
(global-set-key "Enter" 'find-file) ; Enter: Find file
(global-set-key "Print" 'insert-file) ; Print: Insert file
(global-set-key "Insert_line" 'open-line) ; Insert line: Split line
(global-set-key "Delete_line" 'delete-this-line) ; Delete line: Del line
(global-set-key "Insert_char" 'overwrite-mode); Insert char: Toggle ovrwrt
(global-set-key "Delete_char" 'delete-char) ; Delete char: Delete char
(global-set-key "Home" 'beginning-of-buffer); Home: Go to start of buffer
(global-set-key "Shift_Home" 'end-of-buffer); Shift Home: Go to end of buf
(global-set-key "Select" 'exchange-point-and-mark) ; Select: Retreat!
(global-set-key "Prior" 'scroll-down) ; Prev: Scroll back 1 page
(global-set-key "Next" 'scroll-up) ; Next: Scroll fwd 1 page
(global-set-key "Left" 'backward-char) ; Left arrow: Move left
(global-set-key "Right" 'forward-char) ; Left arrow: Move left
(global-set-key "Up" 'previous-line) ; Left arrow: Move left
(global-set-key "Down" 'next-line) ; Left arrow: Move left
; Keypad cluster
; Unmarked function keys on top row:
(global-set-key "KP_F1" 'apropos) ; Keypad F1: Apropos
(global-set-key "KP_F2" 'describe-key) ; Keypad F2: Describe key
(global-set-key "KP_F3" 'describe-bindings) ; Keypad F3: Describe keys
(global-set-key "KP_F4" 'describe-function) ; Keypad F4: Describe function
; Big keys:
(global-set-key "KP_Tab" 'goto-line) ; Keypad Tab: Go to line [#]
(global-set-key "KP_backward_Tab" 'what-line); Shift KP Tab: Report line #
(global-set-key "KP_0" 'undo) ; Keypad 0: Undo
; Little keys: Mode settings
(global-set-key "KP_Multiply" 'text-mode)
(global-set-key "KP_Divide" 'indented-text-mode)
(global-set-key "KP_Add" 'outline-mode)
(global-set-key "KP_Subtract" 'fundamental-mode)
(global-set-key "KP_7" 'c-mode)
(global-set-key "KP_8" 'lisp-mode)
(global-set-key "KP_9" 'emacs-lisp-mode)
(global-set-key "KP_Enter" 'lisp-interaction-mode)
(global-set-key "KP_4" 'latex-mode)
(global-set-key "KP_5" 'plain-tex-mode)
(global-set-key "KP_6" 'scribe-mode)
(global-set-key "KP_Separator" 'nroff-mode)
(global-set-key "KP_1" 'copy-region-as-kill)
(global-set-key "KP_2" 'kill-region)
(global-set-key "KP_3" 'yank)
(global-set-key "KP_Decimal" 'set-mark-command)