This is my KordBoard. It is a seven key chording keyboard built with an Arduino Pro Micro. With just seven keys and one hand, I am able to type anything that doesn’t require special characters and perform many tasks on my computer. In fact, I am typing this using the KordBoard right now. Sure, my typing speed on it is a pitiful 9 WPM, but I’m sure that will improve with practice.
This is the most successful part of an attempt to build a wearable computer. I’m sure I’ll write about the rest of it at some point, but for now it’s just the keyboard.
My obsession with wearable technology began in the 90’s with a documentary about Thad Starner and the MIT Wearable Computing Project. From the time I saw that, I wanted to make my own wearable computer, and finally Arduino and Raspberry Pi are making it a real possibility. One of the first problems you face in a project like this is user input. Starner solved it with a HandyKey Twiddler (now made by TekGear), a 16-key single-handed chording keyboard. The chording method (where key combinations change the output key) solves the issue by allowing a user access to a full keyboard in one hand without needing to look (as you do with a touch-screen), but these aren’t cheap, and I am, so I decided to make my own.
I found Brian McEvoy’s (24 Hour Engineer http://www.24hourengineer.com) instructions and code to turn certain Arduino boards into a chording keyboard and gave it a shot. I ordered an Arduino Pro Micro for the job, as I wanted to make a wired USB version (I will give Bluetooth a try in my next iteration, but the simpler the better for this, especially power issues). I built mine on a wooden body with all the wiring on the outside and exposed to give it a steampunk vibe. Just one of the wires to the accelerometer has a rubber coating. I can’t remember if that was necessary to shield it, or if I did that for some other reason. Forgive my terrible solder jobs in the photos. I’ve never been great at it. The buttons I chose were not great, and I will be sure to choose some that have less resistance and are smoother to press next time.
So, that was built, and it was neat. I wanted to get proficient at typing on it at some point, so I looked up the frequency of letters in my language (English). I reassigned some of the keys from McEvoy’s so that the more frequent letters had simpler chords. I messed around with the accelerometer/mouse code some, but I’ve never been happy with it. (After these pictures I added an eighth button and reassigned the mouse function to it; that made it more usable, but I still think I’m going to go with a thumb operated joystick in my next version.) One problem I came across was that I wanted to be able to use this keyboard on my main computer, an Apple MacBook Pro running OS X, and, eventually, my wearable computer, which would most likely be based on a Raspberry Pi running Linux. OS X tends to use the Command key in menu commands such as creating a new document, saving, and printing, while Linux and Windows tend to use the Ctrl key. These keys are mapped differently (the Apple Command key is mapped to the Windows key on most PC keyboards). There’s no way that I can figure out for a keyboard, even one with the ATMega brain that mine has, to detect what OS is running on the host computer, so I needed a way to tell the keyboard which key combinations to send. I solved this by adding a jumper and adjusting the code so that, when the jumper is on when the keyboard is plugged in, the keyboard thinks it’s on OS X, and, when it’s off, the keyboard sends the commands for Linux and Windows.
You can check out the code at GitHub. The schematic is there, too, as well as on this entry. If you make your own chording keyboard using this or inspired by this, I’d love to hear about it.