aw@B.CS.CMU.EDU (Andy Witkin) (03/08/89)
HOW TO INSTALL A META KEY IN IRIX 3.1 1. If you use gnu emacs, put (setq meta-flag 1) into your .emacs file. You need do nothing special for unipress emacs. 2. Copy /usr/NeWS/lib/NeWS/UI.ps to ~/NeWS/UI.ps 3. Edit your private copy of UI.ps: Find this portion: /deliver_keyboard_to_focus { % event => - dup dup begin % ev ev sgi_translatekey % ev (string) /ClientData exch def % ev and add code before and after as follows: /MetaDown false def % true when either alt key is down { createevent dup begin % gobble alt key /Name [28560 28559] def /Priority 4 def /Exclusivity true def end expressinterest { awaitevent dup /Action get /DownTransition eq {/MetaDown true store} % downtrans -> set flag {/MetaDown false store} % uptrans -> clear flag ifelse } loop } fork /deliver_keyboard_to_focus { % EXISTING CODE dup dup begin % EXISTING CODE sgi_translatekey % EXISTING CODE dup dup type /stringtype eq % if there's a string exch length 0 ne and % of nonzero length MetaDown and % and meta is down Action /DownTransition eq and % and ev is a keypress {dup dup 0 get 128 or % then ior 128 into 0 exch put % the 1st char in the string } if /ClientData exch def % EXISTING CODE 4. Log out and log back in. Alt is now a meta key. (If you get in trouble, log in as someone else, rename ~/NeWS/UI.ps to something else, and figure out what you did wrong.) (This hack does two things: We fork a process that gobbles alt key presses and maintains our /MetaDown flag. And we add some code to deliver_keyboard_to_focus, a routine that runs whenever a key is pressed. deliver_keyboard_to_focus calls sgi_translatekey, sgi's routine that takes an event and stuffs a translation string on the stack. When the meta key is down, our added code checks to see if sgi_translatekey left a non-empty string on top of the stack, and if so, sets the high bit in the string's first character. The hacked string is then salted away in the /ClientData field of the event for god-knows-who to look at later.) --