AT&T Unix PC Keyboard
Posted: 20 May 2021, 02:58
I had the chance to mess with a board that I believe was originally for the AT&T 3B1 Unix PC. It features ITW magnetic valve switches and some nice dye sub keycaps. I mustered my inner MMcM and figured out a basic USB converter for it.
In short, the protocol is 1200 baud, 7N1, inverted serial and sends 'frames' for every key event (press or release). Each frame contains a list of all keys currently pressed. All keys result in a frame being sent. All keys have a unique code in the frames. No codes change as a result of modifiers. In the event that all keys are released, a frame containing '@' is sent.
The firmware reads in a frame, compares it to the last one to see what changed, maps it with a massive switch statement, and sends the necessary codes through the keyboard library. The majority of the keycodes are just the character that the key corresponds to. Right now it's a rough proof of concept using the basic Arduino libraries but it seems to work great with no major quirks. Hopefully someone can build on it and port it to TMK/QMK but I didn't have it in me to figure out the registers and whatnot to enable serial.
Code, pinout, printable mount, and some more protocol info can be found here: https://github.com/jsheradin/ATT_3B1_KB_USB
Edit: I don't have the keyboard anymore to test but I believe it should be compatible with https://github.com/MMcM/qmk_firmware/tr ... convergent or a slightly modified version of it at least.
Spoiler:
The firmware reads in a frame, compares it to the last one to see what changed, maps it with a massive switch statement, and sends the necessary codes through the keyboard library. The majority of the keycodes are just the character that the key corresponds to. Right now it's a rough proof of concept using the basic Arduino libraries but it seems to work great with no major quirks. Hopefully someone can build on it and port it to TMK/QMK but I didn't have it in me to figure out the registers and whatnot to enable serial.
Code, pinout, printable mount, and some more protocol info can be found here: https://github.com/jsheradin/ATT_3B1_KB_USB
Edit: I don't have the keyboard anymore to test but I believe it should be compatible with https://github.com/MMcM/qmk_firmware/tr ... convergent or a slightly modified version of it at least.