🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.emacs.help
Article #189805

Mapping function keys to buffers.

#189805
From: Paul Johnson
Date: Thu, 08 Nov 1990 11:03
113 lines
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!paj

Show 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