Ergonomics is an important part of our computer-centric life, so why not use an ergonomic keyboard? I decided to design my own, based on the popular Ergodox keyboard and my typing needs. I ended up with the Split70.
When I began thinking about building this keyboard, I started at the Ergodox. Looking around at all the kits and parts available online, I felt that this was too easy, so I started thinking about how I would change it. Some things would be the same, or very similar, like the controller and connectors. Others, Like the layout, PCB, and construction, I wanted to design myself.
I started by looking at the Ergodox in Keyboard Layout Editor. The ortholinear layout has been shown to be ergonomic compared to the more standard staggered keys, and I enjoyed using it in a previous keyboard I built. I removed some keys that I don’t need, changed the size of the thumb keys, and moved the F-keys to the bottom. I tested and tweaked this design over several iterations by printing it out and seeing how it felt. After several iterations, I arrived at this design:
With this layout, I used the SwillKB Plate and Case Builder to speed up the CAD process. I refined the generated files using a combination of Seimens NX, Autodesk Inventor, and LibreCAD. I made four layers: a plate, a spacer, a top, and a bottom. I ended up only using the plate and bottom layers, but I have included all the files here. I made the holes in the case hexagonal, like the standoffs, so that they would not turn when I tried to tighten the screws. The case is reversible; the only difference between left and right halves is a missing USB port on the left side.
At the same time, I was designing the PCB in KiCAD, a Free and Open Source PCB Design program. It can be a bit clunky to use at first, but the basic workflow is broken down by this excellent guide by Ruiqimao. I overlaid the generated plate design to aid my placement of the switches. Here’s the final design, as shown in the designer and KiCAD’s renderer:
After designing both the PCB and case, I used my school’s laser cutter to prototype them out of wood. I had to make a few changes to how they fit together, but overall it was almost how I wanted it.
|Teensy Microcontroller||Goes on the right hand||Teensy 2.0||1|
|I2C I/O Expander||Goes on the left hand||MCP23018-E/SP||1|
|Switches||Any Cherry MX or clones should work||70|
|Diodes||The PCB supports both thru-hole and SMD||1N-4148||70|
|Resistors||2.2k Ohms (Red Red Red)||2|
|USB Mini-B Connector||Thru-hole||WM17115||1|
|USB Mini-B Plug||A mini-B cable can be dissected for this||1|
|USB Mini-B to USB B Cable||To connect to your computer||1|
|TRRS 3.5mm Cable||To connect between halves||1|
|PCBs||See notes||Design files||2|
|Case||See notes||Design files||2|
The keycaps are where you can get creative. Any Cherry MX keycaps will work, with a couple extras that may need to be acquired. The 1u keys are the standard keys for alphanumerics, and F-keys. Most modifiers (Ctrl, Alt, Win, etc.) will be 1.25u, but a standard keyset probably will not have enough. The same goes for the 1.5u keys, which are Tab, Backslash, and the keys one row below them. I bought extra blanks from Signature Plastics to solve this.
The PCBs will have to be manufactured by one of many online services. You could manufacture it yourself, but do you really want to drill all those holes? I used PCBShopper to choose what service to use, and EasyEDA was one of the cheaper choices, with relatively fast shipping (for the price) and good reviews. The PCBs took about 3 weeks to arrive once I ordered them. They arrived in perfect condition, looked great and worked well. I actually received two extra; I ordered five (the minimum) and they sent seven.
There are two options for the case I have designed, or you can use my files to design your own. My original plan was to use several layers of 4mm thick plywood and a 1mm thick steel plate, but a combination of the laser cutting of my plywood not going to plan and having to buy the correct oils and finishes for the wood made me reconsider. I decided to use just the 1mm steel plate and cut the back piece from 0.118” clear acrylic.
|Screws||M3 x 0.5, 8mm long||28|
|Standoffs||4.5mm Hex, 10mm long, M3||14|
|Washers||Optional, used between plate and standoff||14|
Populating and Soldering the PCB
Populating the PCB is easy enough, but it’s a little tedious to do all almost 400 solder joints. The PCBs are designed so that the silkscreens on the top of that side say exactly what goes where. The diodes go with the black stripes on the square hole side. The switches MUST be inserted in the plate before soldering them to the PCB or you can have a fun time re-soldering them.
Note that the rectangular pads next to Pin 14 of the I/O expander have been bridged together with solder, and the pads with silkscreen linking them next to each 3.5mm jack have been bridged with a resistor or diode lead.
Soldering detail (clockwise from top left): the I/O expander on the left hand; the 3.5mm jack, resistors, and USB port on the right hand; the wires connecting the USB port on the PCB to the one on the Teensy; the Teensy 2.0 on the right hand.
To solder the diodes, I put them all in the PCBs, with the leads bent out to keep them in place. This allows me to easily solder them flush to the PCB.
All finished with the electronics! Don’t forget to trim your leads.
Adding a Case
My case was very bare-bones, just the plate, standoffs, and the acrylic backing. First, I added all the switches to the plate and soldered that to each PCB.
Top: The switches in the plate; The switches soldered in, from the back (Left) and the front (Right)
Then I attached the standoffs with washers between them and the plate. To finish, I added the acrylic back plate and some rubber feet to keep it from slipping on my desk. To make the screws flush on bottom, I angled the holes with a drill to countersink them. The acrylic combined with the steel provides some excellent sturdiness to the keyboard.
Building and Flashing Firmware
For firmware, I modified OLKB’s QMK Firmware for my layout, basing it on the Ergodox’s firmware, with a few changes so that the columns were correctly located on each half. I also created my own keymap, which I tweaked over several iterations to find the most comfortable layout for me. This firmware is available in the git repository and build instructions for your operating system can be found in QMK’s documentation.
As with all new layouts, this took a bit of time to get used to. It’s taken about a week or so to get up to my usual typing speed, if not slightly better (I’m not going to say what it is, it’s rather slow…).
This entire post was typed with the Split70.