[comp.sys.sgi] looking for NeWS capslock->ctrl hack

dunwoody@r2d2.sgi.com (Craig Dunwoody) (11/17/90)

A while back someone posted some PostScript that turns your capslock key
into a control key.  I really liked this hack, but due to various disasters
I've lost the code.  If anyone out there has it, I'd greatly appreciate
it if you could send me a copy.

Craig Dunwoody
dunwoody@sgi.com
--
Craig Dunwoody
dunwoody@r2d2.sgi.com
(415) 962-3635

butler@BRL.MIL ("Lee A. Butler") (11/19/90)

Here is the relevant section of code.

Lee A. Butler
SLCBR-VL-V					Internet: butler@brl.mil
Ballistic Research Laboratory			   Phone: (301) 278-9200
Aberdeen Proving Grounds, MD 21005-5066

----------------------------------------------------------------------

% Define a procedure to allow remapping of keys -- contributed by
%	Eric Pettersen <socrates.ucsf.edu!pett@cgl.ucsf.edu> from
%	UCSF Computer Graphics Lab
/replacekeys { % origkeyvals_array changedkeyvals_array -> -
	{
		/changedvals exch def
		/origvals exch def
		/keysdict origvals length dict def
		keysdict begin
			0 1 origvals length 1 sub {
				dup origvals exch get changedvals
				3 2 roll get def
			} for
		end
		createevent dup begin
			/Name origvals def
			/Priority 2 def
			/Exclusivity true def
		end
		expressinterest
		{
			awaitevent dup dup begin
			/Name get keysdict exch get /Name exch def
			end
			redistributeevent
		} loop
	} fork pop pop pop
} def

% We re-map the keyboard so that the caps-lock key and the Left Control keys
% are swapped, and the Right Control key is mapped as "~/`" and the key
% labeled "~/`" becomes an escape key.
% We take special care to make sure we only re-map the keyboard once.
/KeyboardRemapped where
	{ pop }
	{% cap-l Ctrl-l  Ctrl-r ~/`   Esc     Ctrl-l  Cap-L ~/`   Esc   Ctrl-r
	  [28420 28419   28561  28471 28423 ] [28419  28420 28471 28423 28561]
	  replacekeys
	  /KeyboardRemapped true def
	} ifelse

% These are the default key codes
% 28423	Escape
% 28562	F1
% 28563	F2
% 28564	F3
% 28565	F4
% 28566	F5
% 28567	F6
% 28568	F7
% 28569	F8
% 28570	F9
% 28571	F10
% 28572	F11
% 28573	F12
% 28574	Print Screen
% 28575	Scroll Lock
% 28576	Pause
% 28471	` and ~
% 28424	1 and !
% 28430	2 and @
% 28431	3 and #
% 28438	4 and $
% 28439	5 and %
% 28446	6 and ^
% 28447	7 and &
% 28454	8 and *
% 28455	9 and (
% 28462	0 and )
% 28463	- and _
% 28470	= and +
% 28477	Backspace
% 28577	Insert
% 28578	Home
% 28579	Page Up
% 28582	Keypad Num Lock
% 28583	Keypad /
% 28584	Keypad *
% 28492	Keypad -
% 28425	Tab and Backtab
% 28426	q
% 28432	w
% 28433	e
% 28440	r
% 28441	t
% 28448	y
% 28449	u
% 28456	i
% 28457	o
% 28464	p
% 28465	[ and {
% 28472	] and }
% 28473	\ and |
% 28478	Delete
% 28580	End
% 28581	Page Down
% 28483	Keypad 7
% 28484	Keypad 8
% 28491	Keypad 9
% 28585	Keypad +
% 28420	Caps Lock
% 28427	a
% 28428	s
% 28434	d
% 28435	f
% 28442	g
% 28443	h
% 28450	j
% 28451	k
% 28458	l
% 28459	; and :
% 28466	' and "
% 28467	Enter
% 28479	Keypad 4
% 28485	Keypad 5
% 28486	Keypad 6
% 28422	Shift (left side)
% 28436	z
% 28437	x
% 28444	c
% 28445	v
% 28452	b
% 28453	n
% 28460	m
% 28461	, and <
% 28468	. and >
% 28469	/ and ?
% 28421	Shift (right side)
% 28497	uparrow
% 28474	Keypad 1
% 28480	Keypad 2
% 28481	Keypad 3
% 28498	Keypad Enter
% 28419	Ctrl (left side)
% 28559	Alt (left side)
% 28499	Spacebar
% 28560	Alt (right side)
% 28561	Ctrl (right side)
% 28489	leftarrow
% 28490	downarrow
% 28496	rightarrow
% 28475	Keypad 0
% 28482	Keypad .