Read why I built it here.
Read about my second build here.
TL;DR / Facts
- Cherry MX Clears
- Blank black PBT keycaps (China)
- Case and plate made of 3mm (1/8″) birch plywood, hand cut (with my old coping saw)
- QMK firmware on an Arduino Micro
- Hand wired, like a 4×12 and thus can use the same firmware as ortholinear 40% (like the Planck)
- Time to build: one month. 3 weeks of planning and reading. Actual handwork more like a week.
- Material cost: around 100€
- Keycaps: 23€
- Plywood: 12€
- Arduino Micro: 24€
- Switches: 28€
- USB cable: 5€
- Wood glue, wood lacquer, rubber feet, screws
- Tools used:
- Drill
- Coping saw
- Several clamps
- Files
- Sand paper
- Soldering iron
- A vise grip for creating gaps in the wire insulation
Full story
Inspired by re-watching Matt Adereth’s talk about his dactyl I first thought about buying a pre-built ergonomic keyboard like the ergodox-ez or the keyboardio. Both are kind of costly, especially after adding 19% VAT in Germany. Then I read how easy hand-wiring actually is and thought about building the dactyl myself (and some day I certainly will). But without a 3D printer this is also costly (200$ just for the case). Looking for lower-cost alternatives I found Phil Hagelberg’s Atreus.
The Atreus design really hooked me. It is simple, ergonomic, lightweight, portable and can be built from wood with regular hand tools. So I thought about ordering an Atreus kit. The problem is, that the german alphabet has 4 more letters than the english one („äöüß“). Also I did not want to do without the „control“ column (Esc, Tab, Shift, Ctrl). What I needed was an Atreus with six columns on each side, i.e. Atreus 52 or similar.
I bought the cheapest keycaps I could find and built a cardboard prototype. This helped me realize that I wanted a proper thumb cluster which the Atreus doesn’t have. Thus the only option was to go fully custom. My custom keyboard is obviously heavily influenced by Atreus‘ brilliant design.
Edit: I also have to mention Tim Ewald’s talk Programming with hand tools. „You can build anything by hand“ stuck with me. It plays a huge role in even considering building a keyboard myself.
Plate design / Layout
For the plate design I used http://www.keyboard-layout-editor.com/, http://builder.swillkb.com/ and Gimp. Keyboard layout editor is cool but really designed for row-based layouts. Creating column-based layouts sucks. Also I haven’t found a way to mirror half of the keyboard, so I did that in Gimp. (What I would like to have would be a DSL that allows row- and column-based ordering as well as hierarchies of transformations much like the scene-graph of 3D engines. I am thinking about a Clojure based DSL that outputs keyboard layout editor’s JSON files, to stay compatible. That would make an awesome next side project.)
The next step was to use http://builder.swillkb.com/ to create a plate design as an svg file. The cool thing about swillkb is, that it let’s you add a kerf width that I could use to generate the top layer of the case (e.g. -6mm). Then I imported the SVGs into Gimp, drew the case outline and printed it out.
Troy Fletcher made a nice video on the process from which I got the idea for (mis-)using the kerf setting for my top layer.
Edit: There’s also a whole guide on the mechanical keyboard subreddit about this. Would have saved me a ton of time.
Cutting the plate
With the finished printout the process is:
- lay printed layout on wood
- use a nail or similar spiky thing to punch through corners/vertices
- draw the shape with a pencil (on the wood)
- drill holes
- start sawing
- refine with file until it fits
Layered Design
Before I started building the case I built a prototype (switch tester with 6 switches) with the layered technique to see if it works. I was amazed by the result. Not only did it work very well, it’s also pretty easy to achieve surprising precision with a coping saw and files. Building the plate by hand is a viable solution for very small batch sizes (and cheap as well).
Also this does not require a lot of prior knowledge and skills. Last time I used the coping saw was 20 years ago to build boomerangs.
The case is built from five layers of 3mm (1/8″) plywood, totaling 1.5cm (5/8″):
- top layer for looks, stability and protection
- plate layer to hold the switches
- frame layer 1 and 2 (almost identical) to provide clearance for the lower parts of the switches, the wiring as well as the Arduino
- bottom layer
Top layer and plate are glued together. The frame layers and the bottom layer are glued together. Thus the case consists of two parts really, which are then screwed together with regular wood screws.
Gluing the layers together makes the case surprisingly stiff. In its finished state I can hardly bend it which is a must have for me.
Keymap
I use three layers in my keymap.
- Default layer. Regular keys.
- Lower layer (left thump key) gives me special characters (left hand) and num-pad (right hand)
- Rise layer (right thumb key) gives me function keys (left hand) and cursor keys + home/end, page-up/down (right hand)
That means everything is just two key-presses away without having to move the hands. So awesome.
Finished keyboard
The finished keyboard really is a joy to use. It is also so small that I can take it everywhere with me and thus only rarely will have to do without (a design goal inherited from the Atreus). Whenever I use a regular staggered keyboard now, I feel my carpal tunnels weeping 😉
The columnar layout and the column-staggering needs some getting used to however. It’s been almost a week and I’m still only at bearable speed.
Update (after 2 weeks): I’m almost back to normal speed but with higher accuracy. The numpad layer needs some more getting used to. The cursor layer on the other hand has already become second nature. Would not want to go back.
Update (after 3 weeks): I’m now faster than I ever was (by about 5-10 WPM). This is IMHO mostly due to the higher accuracy (+5%) which makes a huge difference. Note that I’ve been touch typing for more than a year before. Such jumps in accuracy within 3 weeks can only mean the keyboard is helping tremendously. Columnar layouts are the future people!
Flaws in the design
Of course there are also things I would like to improve:
- Screws on the top layer are a bad idea. I don’t know what came over me there (maybe I thought that it would look cool). There’s simply not enough space for screws here, especially if you’re aiming for a slim case. In the next version the screws will be screwed in from the backside.
- Sanding and finish: The case needs more sanding and maybe a third layer of lacquer. I need to leave a gap between the edge of the case and the screws in order to keep them from interfering with the sanding.
- Reduce column-staggering slightly, as it is too strong
- Lube the switches to reduce spring sound and ping while typing
- Improve woodworking precision. There are keys that are slightly twisted. This does not impact typing at all, but it doesn’t look as good as I would like.
- Improve uneven wood patterning on sides of the case. I had to do this because the boards were all bent in the same direction. In order to neutralize some of that I flipped one board. I will also experiment with higher quality wood. The one I used has 3 layers. Birch plywood used for RC planes has 6 layers. Maybe it’s also less bent as a result.
Conclusion
Building a keyboard with your own two hands is awesome. It’s also way easier than you might think. If you’re thinking about buying an ergonomic keyboard you might as well build one yourself. It’s a fun project, not overly expensive (if you have the tools) and you get exactly what you want.
If you have questions I’d love to answer them in the comments.
Addendum
While working on his build mrzealot, a fellow redditor, asked me about my design. See questions and answers below (and make sure to read the blog post about his amazing build)
>“Correct me if I’m wrong, but as I see it you’re using -3/4u stagger for the pinky (with an additional -1/4u for the outer ones), 1/4u up from ring to the middle but closer to -1/2u down to the index (and an additional -1/4u down to the inner index column).“
-3/4u stagger for the pinky is correct. The additional stagger (for the outer pinky column) is less than -1/4u however. This depends on the length of the pinky. The longer the pinky, the less stagger is required for a 1u sideways motion. All other columns have a really weird stagger to them. I can’t even say what it is exactly, because keyboard-layout-editor.com so bad at columnar layouts. But here’s the raw JSON so maybe you can figure that out yourself:
[{r:12,y:0.15,x:6.5},"F5"], [{y:-0.4,x:5.5},"E"], [{y:-0.85,x:2.5},"Esc"], [{y:-0.9,x:4.5},"W"], [{y:-0.85,x:6.5},"R"], [{y:-0.75,x:7.5},"T"], [{y:-0.75,x:3.5},"Q"], [{y:-0.9,x:5.5},"D"], [{y:-0.85,x:2.5},"Tab"], [{y:-0.9,x:4.5},"S"], [{y:-0.85,x:6.5,n:true},"F"], [{y:-0.75,x:7.5},"G"], [{y:-0.75,x:3.5},"A"], [{y:-0.9,x:5.5},"C"], [{y:-0.85,x:2.5},"Shift"], [{y:-0.9,x:4.5},"X"], [{y:-0.85,x:6.5},"V"], [{y:-0.75,x:7.5},"B"], [{y:-0.75,x:3.5},"Y"], [{y:-0.75,x:2.5},"Ctrl"], [{x:5.5,a:7},"",{a:4},"Alt","Space","Lower"], [{y:1.5,x:10},"Dummy"]
>“You also stated at the end that the stagger amounts should be slightly reduced. Why? What isn’t comfortable? What’s working?“
I modelled the stagger after the tips of my fingers when my hand is lying flat on the table. And that’s where the problems come from. My fingers don’t rest flat on the keyboard, they are pointing downwards and that reduces the required stagger a little. If I had to do it again, I would probably use less stagger, maybe only -1/2u for the pinky column. Note that the current stagger has really worked great for me so far. But maybe that slight adjustment would make it even more comfortable. The other staggers are totally fine the way they are.
>“I’m thinking about only 1/8u between the base and inner indexes, and the base index wouldn’t be that far below the middle column either (maybe the same -1/4u as the ring finger column on the other side). The pinkies are planned for the same -3/4u downward shift. That isn’t too much, right?“
The stagger depends on the length of you fingers. And so does the thumb-cluster position btw. I would encourage you to build a prototype that holds the keys in the desired position and try it. Also 1/4u is really not much. You will be able to type on the keyboard and you will like it, even if the stagger is too strong or too weak. The most important thing is that there are proper columns. For the pinky: as mentioned I would try a -1/2u stagger first, and maybe settle for something in between -1/2u and -3/4u.
>“Also, since I’ll only have a single pinky column, I think I might rotate it outward a little following the natural movement of my fingers (the double makes this harder, I’d imagine). Have you thought about angle differences somewhere between your columns?“
Yes, I have thought of that. But I didn’t do it because I was aiming for maximum portability and didn’t want to make the keyboard an inch wider than necessary. But the cool thing with such a DIY wood build is that you can do whatever you want. Again, build a prototype and try. If you like it, by all means go for it!
>“I also totally agree with you „prototype, try, repeat“ cycle, as that’s definitely the best strategy — on an infinite budget. My outside limiting factor here is money that I can justify spending on this project, that’s why I’m trying to max out the research part in advance and learn from other’s mistakes. Conceptually pre-load a few fails and save a few iterations and bucks.“
I built two prototypes before starting the build. One for testing the wood construction part (left) and one for testing the layout. The second is just two layers of cardboard where one was cut with a box cutter to the desired shape (with a print-out as a template). I would highly recommend doing both, for getting a feel for the required woodworking as well as practicing precision, and for getting a feel for the layout.
The cardboard prototype is enough to hold the keycaps in place and that gave me a pretty good estimate on how the keyboard would feel like. I think it would be possible to make a cardboard plate and put switches AND keycaps in it. That would even allow testing the actual typing. The cool thing about cardboard is that cutting it is really easy and fast. The best thing is that it’s dirt cheap.
As you can see I also experimented with stagger in the thumb cluster and tried 1.5u keys at first, but then settled for the much simpler straight 1u thumb row.
nice job!
Gefällt mirGefällt mir
Sehr cool!
Gefällt mirGefällt mir