I’ve wanted a mechanical keyboard for a long time, but I could never find a key layout that I liked. After experimenting with making some macro buttons, I decided to make my own keyboard. This is what happened.
The reason for designing this keyboard is because I wanted a tenkeyless keyboard with the arrow keys that was still around the 60-61% size.
With that in mind, I based my keyboard off of the keyboard on the Dell XPS 15 9550 and the newer Thinkpad T-series. The right shift key was completely removed in order to accommodate full-size arrow keys and keys on each side of the up-arrow were added, similar to Thinkpad keyboards. The space bar was extended to the standard 7u and, as such, the right alt and ctr keys were also removed.
As with most 60% keyboards, the function keys are not there and, as such, they are accessed via “fn+top row”.
Because the right shift key is removed, it becomes difficult to do the key combination “shift+delete” with one hand. As such, the function key is utilized to enable the key combination to be done with one hand on the left side.
Designing and Ordering the Plate
My plate was manufactured by Lasergist. The easiest way to get this done is by inputting your raw data from Keyboard Layout Editor into Swillkb, which will generate a plate for you and automatically send the file to LaserGist.
I used decided to use 8 mount holes (4 on the top and bottom edges) sized for M2 screws. I also rounded the corners for aesthetic purposes.
Swillkb will generate a DXF, SVG, or EPS file. You can send this file to any company to manufacture, although you may need to change the Kerf depending on the company’s specifications.
I chose the thickness to be 1.5mm, in order for the switches to snap into the plate. All in all, my plate cost $50.29 including shipping.
For this build, I am using:
63 x Cherry MX Blue Switches
3 x 2u Costar MX Stabilizer
1 x 7u Costar MX Stabilizer
1 x USB Type B Port
1 x Teensy 2.0
1 x USB cable I happened to have
1 x PBT 87 Blank White Key Caps from Banggood (link, not referral)
I chose the Cherry MX Blue Switch (product code: MX1A-E1xx) as I plan on using the keyboard primarily for typing. I was attracted to the tactile bump and the audible click, as well as the higher actuation force. However, this makes it less suitable for public work environments. When I build another keyboard, I will probably choose to use MX Brown switches, to make it more public-area-friendly.
The Teensy 2.0 was chosen as there is plenty of firmware available for it. More detail on this below in the “programming section”.
As I will be making my own keycaps soon, I chose the cheapest set of blank keycaps I could find, which were a set of 87 blank keycaps from Banggood. They are very highly rated and are aggressively priced. One of the keycaps arrived broken. I sent Banggood a message, but never received a response.
The total cost for the electronic parts was $75.36 from Mouser. The USB cable was $10 and the keycaps were $17.69.
For the build, I referred to BrownFox’s guide on deskauthority (found here). I found that it is more efficient to bend the transistors first. It also makes sure they all look uniform.
For the cross wires, I used pre-cut and stripped wires for uniformity, with the exception of the spacebar switch, which required a length that was in between the sizes I had on hand.
From this bottom view picture, you can see that I did not do a good job of connecting the rows and columns to my Teensy. Doing this again, I would have taken extra special care in planning this step out. As with most, I would position the Teensy under the space bar (potential drilling holes to mount it in place) and cut wires to ensure clutter-free, clean wiring.
To program the keyboard, I first explored using Hasu’s TMK firmware (free on github: here). The nice part about using TMK is that it comes with many pre-programmed layouts. Modifying a layout to fit your own custom design is also very easy. I used WinAVR to do the modifying. This requires writing in the rows and columns in your keyboard matrix and then mapping the keys functions to each key. For a very comprehensive guide on programming, check out matt3o’s guide: here.
However, I eventually came across EasyAVR which is… easy. The geekhack page (found: here) is detailed and explains everything that you need to do to create a layout. Modifying the source code is the most time consuming part. However, after that is done, the GUI makes it easy to map keys. I like how it is visual, so you can see how what your key map looks like.
I can share my firmware with anyone who wants it (email me for now until I upload it somewhere). I would highly suggest going through the process yourself. It is very satisfying and, even for an amateur like me, only took about an hour to do.
To flash the firmware to the Teensy, I used Teensy Loader. Quick and painless.
I wanted a case that I would be proud of showing off. As such, I decided to build a wooden case myself. I chose to use 1/2″ Cherry planks for the sides and 1/4″ Cherry for the bottom. The 1/2″ planks provide enough space to screw the plate into the sides securely.
I used traditional cabinet making techniques to put the wood together. Well, I tried. This is what I ended up with a pile of wood.
That being said, I learned a lot about woodworking and made some mistakes that I definitely will not be making again.
I figured that I had wasted enough money and I really wanted to get typing, so I used the M2 screws and brass standoffs that I had purchased as a makeshift case. While the screws sometimes become a little loose, it honestly works pretty well for something so “jank”. I feel very little flex and the keyboard sits at a comfortable angle for typing.
However, I found this to be very unstable and, over time, the screws would unloosen and the entire keyboard would wobble. Furthermore, I experienced quite a bit of keyboard flex, even with the metal plate.
As such, I resorted to one of my most hated machines: the laser cutter. Using the files outputted by Swillkb, I was able to instantly cut out the pieces. I made the mid-layers out of cherry and the bottom layer out of acrylic. I did experience some issues with the holes being a bit off center on the acrylic layer (due to warping from the heat, I presume), but it is not noticeable. The wood was scorched by the laser cutter. Doing this again, I would cut it slightly large, then sand it to size.
As such, the back is transparent, showing off the internal components, just like the exhibition back of a watch.
It has its flaws: I never added a USB port to allow the cable to be detached, the soldering is a bit shoddy, and the case is scorched. It’s been a journey though and has taught me many good lessons to help me make a second, third, and many more custom boards.
Please leave a comment or send me an email if you have any questions.