Article View: gnu.emacs.help
Article #189805Mapping function keys to buffers.
From: Paul Johnson
Date: Thu, 08 Nov 1990 11:03
Date: Thu, 08 Nov 1990 11:03
113 lines
5508 bytes
5508 bytes
Someone asked about using the top row of function keys on a Sun to
move between buffers. This might be of interest. The functions will
work for any key that calls sun-select-buffer-X, but the key bindings
below are for emacs X windows only (not xterms).
If you press a key that is not mapped to a buffer then emacs will
prompt for the name of an existing buffer (default is the current
one). After that pressing the key will take you to that buffer. The
only way to unmap a key is to kill the buffer it is mapped to (elisp
hackers who try working around this should note that keys 1-9 are
stored in elements 0-8 of the array).
If anyone can come up with a clean way of extracting the key number
from within the string of characters it sends, that would be useful.
The system could then be extended with prefix characters for things
like "other window" and "remap key".
Don't forget to cut off my .signature before loading this.
--------------------8<-------------------------8<----------------------
;; X Window Keybindings for Sun computers.
;;
;; By Paul Johnson.
;;
(defun sun-select-buffer-1 () "Select buffer by key." (interactive)
(sun-select-buffer 1))
(defun sun-select-buffer-2 () "Select buffer by key." (interactive)
(sun-select-buffer 2))
(defun sun-select-buffer-3 () "Select buffer by key." (interactive)
(sun-select-buffer 3))
(defun sun-select-buffer-4 () "Select buffer by key." (interactive)
(sun-select-buffer 4))
(defun sun-select-buffer-5 () "Select buffer by key." (interactive)
(sun-select-buffer 5))
(defun sun-select-buffer-6 () "Select buffer by key." (interactive)
(sun-select-buffer 6))
(defun sun-select-buffer-7 () "Select buffer by key." (interactive)
(sun-select-buffer 7))
(defun sun-select-buffer-8 () "Select buffer by key." (interactive)
(sun-select-buffer 8))
(defun sun-select-buffer-9 () "Select buffer by key." (interactive)
(sun-select-buffer 9))
(defvar sun-select-buffers nil
"Vector containing 9 buffer references.")
(if (not sun-select-buffers)
(progn
(setq sun-select-buffers (make-vector 9 nil))))
(defun sun-select-buffer (num)
"Select buffer NUM.
If no buffer has been bound to this key, prompt for buffer name."
(let (buffer)
(setq buffer (aref sun-select-buffers (1- num)))
(cond ((and buffer (buffer-name buffer))
(switch-to-buffer buffer))
(t
(setq buffer (get-buffer (read-buffer "Buffer for key? "
(current-buffer)
t)))
(aset sun-select-buffers (1- num) buffer)
(switch-to-buffer buffer)))))
(progn
(defvar sun-raw-map (make-sparse-keymap)
"*Keymap for ESC-[ encoded keyboard")
(define-key sun-raw-map "224z" 'sun-select-buffer-1)
(define-key sun-raw-map "225z" 'sun-select-buffer-2)
(define-key sun-raw-map "226z" 'sun-select-buffer-3)
(define-key sun-raw-map "227z" 'sun-select-buffer-4)
(define-key sun-raw-map "228z" 'sun-select-buffer-5)
(define-key sun-raw-map "229z" 'sun-select-buffer-6)
(define-key sun-raw-map "230z" 'sun-select-buffer-7)
(define-key sun-raw-map "231z" 'sun-select-buffer-8)
(define-key sun-raw-map "232z" 'sun-select-buffer-9)
(define-key sun-raw-map "192z" 'ignore-key) ; Stop
(define-key sun-raw-map "193z" 'redraw-display) ; Again
(define-key sun-raw-map "194z" 'list-buffers) ; Props
(define-key sun-raw-map "195z" 'undo) ; Undo
(define-key sun-raw-map "196z" 'ignore-key) ; Front
(define-key sun-raw-map "197z" 'ignore-key) ; Copy
(define-key sun-raw-map "198z" 'ignore-key) ; Open-down
(define-key sun-raw-map "199z" 'ignore-key) ; Get
(define-key sun-raw-map "200z" 'exchange-point-and-mark) ; Find
(define-key sun-raw-map "201z" 'kill-region-and-unmark) ; Delete
(define-key sun-raw-map "-1z" 'help-for-help)
(define-key sun-raw-map "208z" 'ignore-key) ; R1
(define-key sun-raw-map "209z" 'ignore-key) ; R2
(define-key sun-raw-map "210z" 'backward-page) ; R3
(define-key sun-raw-map "211z" 'ignore-key) ; R4
(define-key sun-raw-map "212z" 'ignore-key) ; R5
(define-key sun-raw-map "213z" 'forward-page) ; R6
(define-key sun-raw-map "214z" 'beginning-of-buffer) ; R7
(define-key sun-raw-map "216z" 'scroll-down) ; R9
(define-key sun-raw-map "218z" 'recenter) ; R11
(define-key sun-raw-map "220z" 'end-of-buffer) ; R13
(define-key sun-raw-map "222z" 'scroll-up) ; R15
(define-key esc-map "[" sun-raw-map) ; Install sun-raw-map
)
---------------------8<---------------8<----------------------------
Paul Johnson UUCP: <world>!mcvax!ukc!gec-mrc!paj
--------------------------------!-------------------------|-------------------
GEC-Marconi Research is not | Telex: 995016 GECRES G | Tel: +44 245 73331
responsible for my opinions. | Inet: paj@uk.co.gec-mrc | Fax: +44 245 75244
Technical Details
Message-ID:
<695@puck.mrcu>Path:
arc1-ca.pugleaf.net!gmdzi!unido!mcsun!ukc!pyrltd!root44!hrc63!mrcu!uk.co.gec-mrc!pajShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103b8b,2fb1485502903264,start X-Google-Attributes: gid103b8b,public X-Google-ArrivalTime: 1990-11-08 03:03:21 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!mcsun!ukc!pyrltd!root44!hrc63!mrcu!uk.co.gec-mrc!paj From: paj@uk.co.gec-mrc (Paul Johnson) Newsgroups: gnu.emacs.help Subject: Mapping function keys to buffers. Message-ID: <695@puck.mrcu> Date: 8 Nov 90 11:03:21 GMT Sender: paj@mrcu Reply-To: paj@uk.co.gec-mrc (Paul Johnson) Distribution: gnu Organization: GEC-Marconi Research Centre, Great Baddow, Essex Lines: 112 Posted: Thu Nov 8 12:03:21 1990