pett@socrates.ucsf.edu (Eric Pettersen%CGL) (01/27/89)
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@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 .