more flexible key remapping
Eric Pettersen%CGL
pett at socrates.ucsf.edu
Fri Jan 27 05:09:24 AEST 1989
Earlier, I posted some code to swap the functionality of the Caps Lock
and left-hand Ctrl key. I have now written some code to make key remapping
more flexible. This code is also better because Caps Lock was still Caps Lock
for an instant in the old code. It not does function as Caps Lock at all in
this code. If you put the following in your user.ps (and take out the stuff I
sent out before, if you have it), you can make any IRIS key behave as any
other. This will only work under 3.1 however, so if you haven't upgraded, you
may want to keep the old code until you do upgrade.
-----
/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
-----
Then, somewhere after this code in user.ps, you want to invoke it with
the appropiate arguments to have the keys you want changed. For example, in
my user.ps I have:
[ 28420 28471 28562 ] [ 28419 28423 28471 ] replacekeys
This causes key number 28420 behave as 28419, key number 28471 to behave as key
number 28423, and key number 28562 to behave as key number 28471. [Caps Lock as
Ctrl, ~/` as Escape, and F1 as ~/`].
In general
[ a1 b1 c1 ... ] [ a2 b2 c2 ... ] replacekeys
makes key a1 behave as key a2, b1 as b2, c1 as c2, etc.
I also have code that allows remapping *parts* of keys (i.e. swap ~ and Escape,
leaving backquote where it is), but that code is less elegant. Mail me if
you want that functionality.
Eric Pettersen
pett at cgl.ucsf.edu
...!ucbvax!ucsfcgl!pett
Here are the keys and their corresponding numbers (from left to right and
top to bottom on keyboard):
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 .
More information about the Comp.sys.sgi
mailing list