Symbolics ADB Adapter Mapping

Symbolics manufactured an adapter box that allows connection of the Symbolics keyboard and a three-button Logitech mouse to the ADB bus of a MacIvory, in place of the Apple Extended keyboard and a one-button mouse.

The following table pertains when the KMAP resource 39 (decimal) is used with keyboard layout KCHR resource 0 “US + Symbolics.” Key identifications were made by inspecting the resources using KCAP 39. The “Mac Key” column indicates the key on the Apple Extended Keyboard II (US version) which produces the same virtual key code. (See Inside Macintosh:Text, Appendix C and Inside Macintosh:Toolbox Essentials, Chapter 2). The raw ADB keycodes are determined by inverting the mapping of the KCHR resource. The “scan code” is the clock pulse, counting from zero after the reset, for which the keyboard drives low for the key down. (It appears that the ADB raw code is derived by the same sequence but with “dead” pulses omitted.)

Because of the lack of multi-button mouse support in Mac System 7, I presume that the three-button mouse emulates the same “arrow-key plus mouse-click” gesture that is used with the Apple keyboard and single-button mouse under Genera. ADB provides an encoding for multiple mouse buttons, but a similar translation would have to be provided in the ADB driver code to make them apparent to Mac applications. (My ADB box is currently not working, so I can’t confirm this.)

Symbolics Scan code Raw Key Virtual Key Mac Key Comment
Key Label (hex) Code (hex) Code (hex) Equivalent  
A 39 29 00 A  
S 2E 21 01 S  
D 3A 2A 02 D  
F 2F 22 03 F  
H 30 23 04 H  
G 3B 2B 05 G  
Z 17 10 06 Z  
X 23 19 07 X  
C 18 11 08 C  
V 24 1A 09 V  
[none]     0A none would produce character $A4/$B1
B 19 12 0B B  
Q 4F 39 0C Q  
W 44 31 0D W  
E 50 3A 0E E  
R 45 32 0F R  
Y 46 33 10 Y  
T 51 3B 11 T  
1! 64 48 12 1!  
2@ 5A 41 13 2@  
3# 65 49 14 3#  
4$ 5B 42 15 4$  
6^ 5C 43 16 6^  
5% 66 4A 17 5%  
=+ 5F 46 18 =+  
9( 68 4C 19 9(  
7& 67 4B 1A 7&  
-_ 69 4D 1B -_  
8* 5D 44 1C 8*  
0) 5E 45 1D 0)  
[none]     1E ]}  
O 53 3D 1F O  
U 52 3C 20 U  
[none]     21 [{  
I 47 34 22 I  
P 48 35 23 P  
Return 33 26 24 Return  
L 3D 2D 25 L  
J 3C 2C 26 J  
‘” 3E 2E 27 ‘”  
K 31 24 28 K  
;: 32 25 29 ;:  
[none]     2A \|  
,< 26 1C 2B ,<  
/? 27 1D 2C /?  
N 25 1B 2D N  
M 1A 13 2E M  
.> 1B 14 2F .>  
Tab 4E 38 30 Tab  
Space 10 0C 31 Space  
`~ 6A 4E 32 `~  
Rubout 2D 20 33 Delete  
[none]     34    
Select 0C 08 35 Esc  
[none]     36    
Left Super 0E 0A 37 Left Command not sure
Left Shift 22 18 38 Left Shift  
Caps Lock 02 01 39 Caps Lock  
Left Meta 04 03 3A Left Option  
Left Control 0F 0B 3B Left Control  
Right Shift 1C 15 3C Right Shift  
Right Meta 11 0D 3D Right Option  
Right Control 05 04 3E Right Control  
[none]     3F [none]  
Right Super 06 05 40    
[none]     41 Keypad .  
[none]     42    
Abort 1E 17 43 Keypad *  
Right Hyper 12 0E 44    
[none]     45    
[none]     46    
Clear Input 74 55 47 Keypad Clear  
[none]     48    
Repeat 1D 16 49    
Right Symbol 28 1E 4A    
Resume 76 57 4B Keypad /  
Scroll 07 06 4C Keypad Enter  
[none]     4D    
[none]     4E Keypad –  
[none]     4F    
[none]     50    
Suspend 75 56 51 Keypad =  
[none]     52 Keypad 0  
[none]     53 Keypad 1  
[none]     54 Keypad 2  
[none]     55 Keypad 3  
[none]     56 Keypad 4  
[none]     57 Keypad 5  
[none]     58 Keypad 6  
[none]     59 Keypad 7  
[none]     5A    
[none]     5B Keypad 8  
[none]     5C Keypad 9  
[none]     5D    
: (in upper left) 59 40 5E    
Local 01 00 5F   Keyboard overlay uses F14, which would be virtual keycode $6B
[none]     60 F5  
Square 71 52 61 F6  
Circle 72 53 62 F7  
[none]     63 F3  
Triangle 73 54 64 F8  
Function 43 30 65 F9  
[none]   [66] 66   If raw key code $66 occured, it would translate to character $10
Network 38 28 67 F11  
\{ 60 47 68    
[none]     69 F13  
|} 6B 4F 6A    
[none]     6B F14 See Local, virtual key $5F
([ 54 3E 6C    
Escape 6F 50 6D F10  
)] 49 36 6E    
Refresh 70 51 6F F12  
[none]   [70] 70   if raw $70 occured, it would translate to virtual key $70, character $10
Mode Lock 08 07 71 F15  
Help 29 1F 72 Help  
Complete 34 27 73 Home  
Page 4A 37 74 Page Up  
Backspace 55 3F 75 Forward Delete  
[none]     76    
End 13 0F 77 End  
[none]     78 F2  
Line 3F 2F 79 Page Down  
[none]     7A F1  
Left Hyper 03 02 7B Left Arrow  
[none]     7C Right Arrow Used for mouse button?
[none]     7D Down Arrow Used for mouse button?
Left Symbol 0D 09 7E Up Arrow  
[none]   7F 7F (Power key gives 7F7F) Raw key code $7F would map to virtual key $7F

Leave a comment