# Symbolics keyboard USB interface

## Symbolics keyboard to USB interface

If you want to connect your Symbolics Lisp machine's keyboard to your more modern recent system, you need to convert it to USB. The interface is quite simple: it looks like a 128-bit shift register with one bit per key on the keyboard. There does not appear to be any ghosting, which means N-key roll over is not an issue!

## Special keys and modifiers

The Symbolics keyboard has six modifiers per side -- Shift, Control, Meta, Super, Hyper, and Symbol. Unfortunately the USB spec only allows four per side (Shift, Control, Alt, OS), so some of these are not mapped. I'm not sure how to send the math symbols or greek characters using the normal USB HID protocol.

There are two sets of parenthesis -- the normal ones above the 9 and 0, as well as unshifted versions. These are correctly mapped. The pipe and curly braces are mapped oddly, so there is some special code to remap them as well.

One "Easter Egg" is that on the 36xx series LispM devices, Hyper-Control-Function would cause a reboot / jump to the FEP. This is mapped to Ctrl-Alt-Delete to allow login to Windows.

## Wiring

There is a 10 pin ribbon cable that goes to a six position RJ-25. The three I/O lines (clock, clear and data) can be connected to the teensy. Pin 1 on the header appears to be marked as the bottom left on the PCB (when viewed from the angle shown in the image).

Header Function Teensy pin
1 Clk D4
2 +5V Vcc
3 Data D5
4 NC (also +5V)
5 Clear C7
6 ? NC
7 GND GND
8 NC (also GND)
9 NC (Shield)
10 NC (?)

## Source

github.com/osresearch/symbolics. The teensy has a table to translate the "scan codes" to USB key codes. The more exotic modes like "Symbol" are not supported and it seems that only four modifiers times two sides are supported, so you must choose which of Hyper, Super, Meta, Symbol, Control and Shift you want to retain.

Last update: November 8, 2020