Keyboard Project: Beyond the Matrix

The Devlin Q-Series key caps from UKKeycaps arrived, and I now have a keyboard that looks like a keyboard.

I can type on it and nothing happens because, alas! Keyboard X-1 has no brain.

There are three main next steps:

Write the firmware for its micro-controller brain.

Wire the controller board in to the column and row rails.

Design and cut the remaining pieces for the case.

Keybrain firmware

The Teensy LC comes with instructions for modifying the Arduino IDE to
work with this board. Using the IDE to write a program to blink the LED on the
board at different rates is easy enough but the keyboard controller is going
to involve enough complexity that I would like to be able to use my familiar
programming tools—unit testing, Sublime Edit, Makefiles, and so on. The
Arduino site is annoyingly coy about the fact that it is in fact programmed in
standard C++ using the GNU tool-chain. Which should mean I can write my code
with all the facilities of C++11.

After a bit of experimentation I have come up with what I hope will be a
productive approach involving writing components with unit tests in Sublime
Edit using Google Test (chosen more or less at random from the
alternatives). The tests—and the mock hardware API they run against—can use the
full C++ library, so long as the components themselves limit their use of
facilities not available in the library on the board.

I have written code to scan the matrix and make a list of closed switches. The
remaining jobs are to test this on hardware (rather than just unit tests) and
to convert lists of closed switches in to key combinations and assemble USB
status packets va the USB keyboard library.

Wiring in the brain

The excitement here is that if I get the soldering wrong I could easily wreck
a component that will cost £13.50 to replace. I have been sketching out a
wiring diagram to try to get each row and column to the controller as neatly
as possible.

After a few iterations the second of these seems like a good approach. My aim
is to squeeze the controller in to the keyless gap to the left if the space-bar row
(indicated by the yellow rectangle in the above diagrams).

Next step: soldering wires to the controller, and then testing whether I have fried it in the process!