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.

Homework

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!

Jeff's Verdict

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.

Pros:

  • 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

Cons:

  • 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

Parts

Video of hand holding a QT Py PCB in their hand. An LED glows rainbow colors.
What a cutie pie! Or is it... a QT Py? This diminutive dev board comes with one of our new favorite chip, the RP2040. It's been made famous in the new
$9.95
In Stock
Angled shot of a pink/purple woven USB cable plugged into a laptop port and a small dev board.
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers and more. 
Out of Stock
USB C to USB C cable. USB 3.1 gen 4 with E-Mark. 1 meter long
As technology changes and adapts, so does Adafruit! Rather than the regular USB A, this cable has USB C to USB C plugs!USB C is the latest...
$9.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG Black
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$4.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG Red
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$4.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG Blue
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$4.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG Yellow
Silicone-sheathing wire is super-flexible and...
$4.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG Green
Silicone-sheathing wire is super-flexible and...
$4.95
In Stock
Silicone Cover Stranded-Core Wire - 50ft 30AWG White
Silicone-sheathing wire is super-flexible and...
$4.95
In Stock
1 x SD-80LS
Female 8-pin DIN connector, solder eyelets, panel mount

This guide was first published on Sep 27, 2022. It was last updated on Sep 27, 2022.

This page (Overview) was last updated on Sep 23, 2022.

Text editor powered by tinymce.