Friday, 22 August 2014

ZX Spectrum Plus Replacement Keyboard

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

Ben Heck has recently been building a Spectrum portable computer (that's, a ZED X Spectrum by the way). In that, he used a matrix of tact switches for the keyboard. I remember trying something similar a while ago, for the Spectrum+. I took some photos, but didn't bother writing it up. I thought I may as well do that now.
Using the Spectrum + for USB keyboards is a bit annoying, as the extra keys can't really be used to full advantage, being wired as multiple keypresses on the original Spectrum 5x8 matrix, rather than extra keys. That means you get a right arrow key, but when you press it, it actually sends shift + 8 to the PC. Not really ideal. I do trap the shift keys and translate that to an arrow key, but it's still limiting.
The Spectrum+ has a an arrangement of separate key plungers, and beneath that, a rubber mat
Beneath that a membrane.
And finally, a backplate, sometimes plastic, sometimes metal with a paper insulating sheet.
For some reason the Spectrum plus membranes tend to be even more fragile that the original Spectrum ones, and have often failed. Whilst modern replacements are available, they have the same issue for USB keyboard use. A while ago, I looked at the option of getting a new membrane made with a different matrix, to allow the keys to be used separately for USB keyboards, but that worked out too expensive.
An alternative I tried was to make a PCB with tactile switches on, arranged in an arbitrary matrix to drive the USB keyboard controller. To test this, I made a prototype with veroboard. I placed the board behind a spare Spectrum + faceplate and marked the location of all the switches.
I installed the 58 tact switches as close as I could to the positions of the 58 holes.
These were wired as a 5x13 matrix and connected to one of my USB keyboard controllers.
The key caps and rubber mat were then installed as normal, with the board sitting below in place of the membrane and backplate.
The idea being that pressing the button presses the keyswitch. The end result? Well, I think it could be considered a partial success. It worked, was reasonably nice to type on, and had an expensive clicky sound. There was only one problem, a mechanical one.
The case wouldn't close. I plan to try a surface mount tactile switch version, with the USB controller built in. That should work, it's just going to be expensive to produce such a large PCB. Maybe one day I'll get around to it.
Update: I did design the PCB, but it wasn't practical. I have instead designed a replacement membrane.