Building a Chording Keyboard - Part 2
In part 1, I had a first attempt at writing some code to run on a Teensy 2.0 to make a chording keyboard.
I have now built a working keyboard with a limited set of characters which I will be expanding now that I have a proof of concept working. This post details how I built it.
I've uploaded all required files to Github - feel free to use them!
Step 1 Design the keyboard layout.
As I still have my AgendA, I decided to base the key spacings on that device. Since I am using standard keyboard keycaps, I had to change a few of the spacings to get them to fit. I measeured the centre-to-centre spacing of the keys on the Agenda. This diagram shows the spacings with mx-style switches and keycaps. The two red dimensions are the measurements form the AgendA that I had to change.
Step 2 Design and 3d print the case.
I modelled the case in Sketchup and exported as an STL file ready for slicing and printing.
After previously printing a case for the steno keyboard, I decided to try making teh holes for the mx-style switches slightly larger. 14x14mm worked out perfectly.
Step 3 Install the switches and keycaps.
I sanded the letters off of the keycaps while the case was printing. I will get some finer sandpaper and tidy them up later.
Step 4 Solder the Teensy to the switches.
I stripped the insulation off of the ground wire and then, after soldering the first connection, slid an approprate length of insulation onto the wire. This was much easier than trying to cut out small sections of insulation.
I was able to squeeze the USB cable through the small gap I left in the print by squeezing it with some pliers.
Step 5 Plug it in and test it!
I connected the keyboard to my laptop and tried some single buttons, this was successful and I could also type alphabetic characters using chords. The shift button (thumb 2) capitalises as expected.
As the thumb 3 button is not configured to do anything yet, I opened the serial monitor in Arduino and checked that the thumb button outputs the correct decimal number (64)
I'll now look at improving the code to add the missing keys from a standard keyboard.
More updates will follow in part 3.