[comp.sys.sgi] Help with GNU Emacs for SGI

usenet@nlm-mcs.arpa (usenet news poster) (02/15/90)

I've managed to compile GNU emacs 18.55 for the SGI (I have a personal Iris),
but to make this reasonable, I need a /emacs/lisp/term file for the iris-ansi
terminal type.  Does anybody have one?  I called SG and they told me to
buy their version of emacs; Stallman wouldn't like that, I'm sure....

I need advice on making it recognize mouse clicks and selections.  It
would also be nice not to have to cons up the entire set of key definitions 
from scratch.  Surely someone must have done this, right?

Help is much appreciated: mail to hunter@nlm.nih.gov

Thanks!

Larry Hunter
National Library of Medicine
(301) 496-9300
hunter@nlm.nih.gov

jim@baroque.Stanford.EDU (James Helman) (02/15/90)

If you really want to make GNU emacs slick and useful, compile it with
the X11 support.  You'll need to order the X developer's kit, because
SGI (unfortunately) unbundled the X include files and libraries from
IRIX.  Or try using the X11R4 libraries and clients.  (I have not
tried these with GNU emacs, but it should work.)  Don't be discouraged
by the extra effort.  Having mouse bindings and meta-keys is well
worth the hassle of ordering the kit.

I also understand that a similar package is available for GNU emacs
which allows it to directly use NeWS, but I know next to nothing about
it.

As for your real question.  I don't know enough about wsh's terminal
emulation to comment, but I suspect getting mouse events is next to
impossible.  However, if the function keys generate escape codes, it
shouldn't be too hard to hack up an existing "term" file to produce
some useful binding.

Jim Helman
Department of Applied Physics			P.O. Box 10494
Stanford University				Stanford, CA 94309
(jim@thrush.stanford.edu) 			(415) 723-4940	

scotth@corp.sgi.com (Scott Henry) (02/15/90)

LH> I've managed to compile GNU emacs 18.55 for the SGI (I have a personal
LH> Iris), but to make this reasonable, I need a /emacs/lisp/term file for
LH> the iris-ansi terminal type.  Does anybody have one?  I called SG and
LH> they told me to buy their version of emacs; Stallman wouldn't like
LH> that, I'm sure....

LH> I need advice on making it recognize mouse clicks and selections.  It
LH> would also be nice not to have to cons up the entire set of key definitions 
LH> from scratch.  Surely someone must have done this, right?

LH> Help is much appreciated: mail to hunter@nlm.nih.gov

LH> Thanks!

Shortly after I got GNU Emacs up on my 4D, I hacked up term/vt100.el to
work within a wsh window using wsh as a terminal emulator.  It doesn't
support mouse-stuff except that which a wsh supports. Place the following
in lisp/term as iris-ansi.el, and make a hard link as iris-ansi-net.el.

I did try porting NeWS-mode, but 4Sight is sufficiently different from
Sun's NeWS (and I am definitely NOT a NeWS hacker) that I coudn't get it
ported in the time I had available.  The X11 interface works fine (if you
add the recently posted patch to reduce the (*&^(*&^) beep volume, but I
miss the extra arrow-key bindings.

;; term/iris-ansi.el
;; term/iris-ansi-net.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).
;; This software is in the public domain.
;; It is not supported by Silicon Graphics, Inc.
;; 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>	| These are my	| Tardis Express -- when it
  Information Services,		| Opinions only!| absolutely, positively
  Silicon Graphics, Inc		| Whose else?	| has to be there -- yesterday.