A project that I've been working on off and on for more than a year now, the Humble Hacker Keyboard (i.e. a keyboard for humble hackers like me) is an idea for a keyboard that I believe would appeal mostly to programmers, though it could have more widespread appeal. This is a big project for me, and I was hoping to have a complete working version before I made it public, but time being as scarce as it is, that could be a while. In the meantime, since I found geekhack, I thought this would be the perfect place to introduce it to the world.
I've got a page set up at http://humblehacker.com/keyboard
(design shamelessly ripped off from some page at apple.com). I've planned to set down all of my ideas there, but haven't had the time yet to do so. If this post sparks some conversation, maybe that might help.
The ideas behind this board are an amalgamation of features
from some of my favorite keyboards.
[*]Hand separation: Despite the keyboard being only 2cm longer than a Happy Hacking Pro, it has quite a bit of hand separation (12.5cm).
[*]Multiple layers: It has four fn (layer switching) keys, two of which are placed in position easily reachable from the home row. This makes things like embedded cursor keys really convenient and comfortable. All of the punctuation keys, like parens and brackets are available through alternate layers. And none of this is set in stone. All of the keys can be remapped, even the fn keys! You can even create more fn keys if you wish.
[*]Non-staggered layout: Those familiar with the TypeMatrix keyboards will appreciate (or not) this feature. I've typed on a Kinesis Contoured keyboard for years, and I believe from this that a staggered keyboard layout is not a necessary feature for a good keyboard.
[*]Gestures: The idea for the multiple layers actually came about from my use of the nearly excellent Fingerworks Touchstream keyboard. They had multitouch gestures for just about everything. I realized that keyboard chords are much like gestures, but they are often inconvenient on a standard keyboard. Hence the well-placed extra fn keys.
[*]Compact keyboard: We love 'em. Happy Hacking, TypeMatrix, the various Tenkeyless keyboards, Lowpoly's beautiful compact keyboard, etc.
[*]Fully programmable: I like the programmability of my kinesis, but the Touchstream again wins the prize here. I wanted my keyboard to be as malleable as possible.
[*]Non-tradtional placement of keys: This I got from the TypeMatrix. Once I got the idea of moving the outer keys to the center, a whole avalanche of ideas fell out from there. I realize that the standard keyboard layout is unbalanced and unsymmetrical, with a bunch of hard to hit keys bunched up around the right hand. By moving these keys to the alternate layers, I could keep a very compact size while at the same time separating the hands as much as possible.
[*]Control key where it's supposed to be: The Happy Hacking keyboard is the obvious influence here, yet I've been swapping my caps lock and control key for years before I ever saw one. If you've ever used emacs, you'll know it as a near necessity.
[*]Thumb operated keys: The Alt (windows) or Command (Mac) keys are bottom center, and very easy to hit. There is also a thumb operated backspace key. These ideas all come from the Kinesis Contoured keyboard.
My TypeMatrix 2030 hacking project that I posted here some months back is the programming side of the project. The firmware for that will eventually become the firmware for the Humble Hacker Keyboard. This is an open-source project, but it's in such a narrow area I'm not sure I could get many people to work on it with me.
The keyboard you see here is a real prototype. It's built using salvaged blue alps sliders. There were many compromises I had to make due to the cost of custom keycaps being exorbitant. For example, the center shift keys were actually supposed to be combined with the center return keys to make them larger and easier to hit. That would have been $1500 minimum. Ouch.update
The keys were custom made by Signature Plastics
. As I alluded to in the previous paragraph, I was limited to key shapes that they already had the tooling for. Anything more would have been too expensive. Signature Plastics did a great job and were very easy to work with. I expected that they would be resistant to working with someone who is just a hobbyist, but that was not the case.
Speaking of cases, the case was also custom made. This is one of the coolest things ever. I made a 3d model using Google SketchUp, and sent it to ShapeWays
. A short time later, an exact plastic copy of my 3d model appeared at my doorstep. Simply amazing.end update
All that remains to be done to make this a working prototype is to build the circuit board and finish the programming. I have also started on a desktop companion application to make creation and sharing of layouts easy. But like I said, time being scarce I'm not certain when that will be finished.Back from the dead
"Perfect is the enemy of good." This is my new mantra. This project has lain dormant for so long because I could see ahead of me all the work that it would take to bring to life my platonic ideal of a keyboard, and it seemed overwhelming. I finally decided that it just needed to get done, and that I could fix problems later, in version 2. So I bit the bullet, ordered some PCBs and got to work.
I ordered two PCBs from ExpressPCB
(minimum order). I decided to assemble one board as a test, and use the second for the final build. It turned out to be a good idea.
I simplified this board from some earlier designs I had done. For one, I decided to use a Teensy++ board and solder to my PCB rather than try to solder all those tiny pins on an AT90USB1287 MCU.
I'm saving my blue Alps sliders for the final build. For this test build, I'm using some white Alps sliders from an Apple Extended Keyboard II. To mount the keys to the PCB, I used a hot glue gun. This way, I could try to align them before the glue set - something that would be very difficult once they are soldered down. After all the switches were glued in place, I soldered them, the diodes, and the teensy++.
Then I mounted one of my two sets of key caps.
With that complete, I just had to load my firmware and I'd be off and typing!
I mentioned that building a test board was a good idea. Here's why. Despite how much time I spent going over the PCB design to make sure I hadn't made any mistakes, I somehow totally missed a very obvious error.
That trace should have gone between those holes, not through them! Doh! So I had to cut the traces and reroute with jumper wires.
The part that sucks the most about this is that I had already mounted my SD card reader to those pins, and I'm pretty sure that I destroyed it trying to remove it. It took me a while to discover what the problem was. I thought at first that it was a firmware problem. Imagine my surprise.HumbleHacker I - The Final Build
At long last, we arrive at the final leg of our journey to create this keyboard. First, I had to trim the corners off of the bottom of the board so it would fit in the case. Then, learning lessons from the previous build, I first added the previously mentioned jumper wire repair. After that, I mounted the pin headers for the Teensy++ and the SD card reader.
Then I mounted the nearly 100 diodes for each key.
After the diodes were mounted, it was time to trim off their leads:
Next came mounting of my precious blue Alps sliders!
Then, insert the PCB, and solder it down: