[comp.emacs] Need help with key definitions on a Silicon Graphics personal IRIS

kcantrel@digi.lonestar.org (Keith Cantrell) (09/12/90)

I am posting this for someone who does not have net access:

*** Begin Forwarded Message *****
I am trying to run emacs on a Silicon Graphics personal IRIS, but the
keybindings are screwed (i.e. all of the cursor keys are defined
incorrectly).
*** End Forwarded Message *****


I think what he needs is a keymap definition for a Silicon Graphics machine.
Does anybody have one?  Or does anybody know how to get emacs to work on a
Silicon Graphics machine?

Thanks

Keith Cantrell

-----------------------------------------------------------------------
Keith Cantrell                    Phones:  hm: 214-492-1088
Apollo Computer                            wk: 214-519-2399 @ DSC 
A Subsidiary of Hewlett-Packard
USMAIL:                          EMAIL:
2100 Sonata Ln                   kcantrel@digi.lonestar.org
Carrollton TX 75007                           or
                                  ...!uunet!digi!kcantrel
-----------------------------------------------------------------------

scotth@harlie.corp.sgi.com (Scott Henry) (09/13/90)

Here is the keymapping file that I was using (before I changed to epoch, anyway). It's basically a hacked-up version of "term/vt100.el". I named it "term/iris-ansi.el" with a hard link as "term/iris-ansi-net.el". You also need to put a line in your ~/.emacs like:

(if (eq window-system 'x)
     ()
     (setq term-setup-hook '(lambda nil (enable-arrow-keys))))

You can do similar things for other terminals not in the normal distribution. Just make the file name term/${TERM}.el and things should work just fine.

;;; term/iris-ansi.el
;; Map Iris 4D function key escape sequences from a wsh
;; into the standard slots in function-keymap.
;; This is just a hacked-up version of vt100.el so as to use the 4D
;; keyboard escape sequences (and some added keys).
;; Look at keypad.el for the meaning of the codes.
;; This software is in the public domain.
;; Hacker: Scott Henry

(require 'keypad)

(defvar Iris-CSI-map nil
  "The Iris-CSI-map maps the CSI function keys on the Iris 4D keyboard.
The CSI keys are the arrow keys.")

(if (not Iris-CSI-map)
    (progn
     (setq Iris-CSI-map (lookup-key global-map "\e["))
     (if (not (keymapp Iris-CSI-map))
	 (setq Iris-CSI-map (make-sparse-keymap)))  ;; <ESC>[ commands

     (setup-terminal-keymap Iris-CSI-map
	'(("A" . ?u)		; up arrow
	  ("B" . ?d)		; down-arrow
	  ("C" . ?r)		; right-arrow
	  ("D" . ?l)		; left-arrow
	  ("H" . ?h)			; home key
	  ("161q" . ?P)			; shift up arrow
	  ("164q" . ?N)			; shift down arrow
	  ("158q" . ?1)			; shift left arrow
	  ("167q" . ?3)			; shift right arrow
	  ("150q" . ?P)			; page up key
	  ("154q" . ?N)			; page down key
	  ("159q" . ?\C-a)		; control left arrow
	  ("168q" . ?\C-b)		; control right arrow
	  ("139q" . ?0)			; insert key
	  ("162q" . ?7)			; control up arrow
	  ("165q" . ?9)			; control down arrow
	  ("146q" . ?\C-c)		; end key
	  ("147q" . ?f)			; shift end key
	  ("P" . ?\C-d)			; shift delete
	  ("142q" . ?k)			; control delete
	  ("143q" . ?u)			; shift home
	  ("144q" . ?u)			; control home
			))))

(defun enable-arrow-keys ()
  "Enable the use of the VT100 arrow keys for cursor motion.
Because of the nature of the VT100, this unavoidably breaks
the standard Emacs command ESC [; therefore, it is not done by default,
but only if you give this command."
  (interactive)
  (global-set-key "\e[" Iris-CSI-map))


-- 
 Scott Henry <scotth@sgi.com> / Traveller on Dragon Wings
 Information Services,       / Help! My disclaimer is missing!
 Silicon Graphics, Inc      / 'Under-achiever and proud of it!' -- Bart Simpson