Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!apple!usc!venera.isi.edu!raveling From: raveling@venera.isi.edu (Paul Raveling) Newsgroups: gnu.emacs Subject: Input remapping, Part 7 of 8: default_keymap.el Message-ID: <8724@venera.isi.edu> Date: 22 Jun 89 20:19:39 GMT Reply-To: raveling@venera.isi.edu (Paul Raveling) Distribution: gnu Organization: USC-Information Sciences Institute Lines: 283 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)