In this guide, you'll see how to adapt a Tandy 1000 keyboard for use on modern computers using CircuitPython and an Adafruit QT Py RP2040 microcontroller board.
The techniques in this guide may also be helpful in converting other classic keyboards that use a clocked serial protocol. The RP2040's "pio" peripheral is perfect for this kind of low level I/O task, and even provides a buffer for up to 8 key events so no keypresses get lost.
I received this keyboard with no documentation. Happily, computers of this era were pretty well documented. The technical reference manual is on archive.org and I was quickly able to discover that the keyboard outputs a clock signal and a data signal, and each event is exactly 8 bits long.
Thanks to Tandy perservationists, I also found a list of the scan codes which are needed to convert the keycodes into USB HID codes, and pinout of the keyboard's DIN-8 connector. I also found a really cool video that showed the process of restoring one of these machines. In the Part II video you can see the wild keyswitch mechanism up close.
That's enough information to get started wiring an adapter and writing code!
With almost every key from a standard "104-key keyboard", you really could use this as an everyday input device, especially if you have fond memories of a Tandy computer.
- The keys have a nice feel, with a pleasant clack when the keyswitches bottom out
- Neat design of keyboard feet lets you select a tilted or flat keyboard angle
- The build is solid, while not as thoroughly over-built as early IBM keyboards
- Almost a full set of keys compared to a 101-key keyboard
- The keyboard's own controller has good anti-ghosting built in and supports SOME but not all 4KRO combinations. All of W+A+S+D+shift+control+alt can be pressed simultaneously
- Unusual location of some keys, especially alt
- Caps Lock & Num Lock keys cannot be used as general keys
- Missing windows/menu keys (suggest making "hold" the windows key)
- Doesn't support full NKRO
- Rare & expensive with fragile and unique keyswitches