Homemade keyboard

Last year I came across


Matt Aderet on using Clojure to create firmware for homemade keyboards.

Although this talk was given at a Clojure conference, I believe it should be watched by anyone with a programming and technical aptitude.

In the talk, I talked about why keyboards that are most commonly used today (QWERTY) look exactly the way they look. For example, the presenter mentioned that the keys on a QWERTY keyboard are positioned so that the buttons closest to each other represent letters that are not too prone to follow each other in regular English words. He also said that the order of the keys on modern keyboards, reminiscent of chess, was inherited by them from typewriters. The fact is that with such an arrangement of the keys, there is less chance of problems with the rods going from the base of the keys to the body of the typewriter.

Then he brought up the question of making homemade keyboards that make more sense today than keyboards that weren’t based on 1800s technology.

After listening to that lecture and sitting for an eternity
r / olkbI decided that creating my own keyboard would be worthwhile for the following reasons:

  • Optimization. I am a programmer and I do a lot of keyboard work. Given that the keyboard is a tool that I use every day, even small improvements in its efficiency can speed up my work and reduce the time it takes for my thoughts to turn into program code.
  • Improved ergonomics. I was already looking for an ergonomic keyboard as repetitive motion diseases are quite common among programmers. Several models that interest me, which can be bought, are quite expensive (for example – Kinesis for about $ 300). I realized that if I can create my own keyboard, it means that I can get something that is excellent ergonomics.
  • Useful application of a 3D printer. The cherished dream of every 3D printer owner is to make something meaningful with it. Something that will work and be useful. There is one well-known joke about 3D printers, which is that the one who acquired such a printer prints some parts for this printer itself all the time, but does not do anything else that has at least some value.

When I decided to create my own keyboard, I thought hard about what I expect from it:

  1. The keyboard should be ortholinear (keys should be straight, not staggered). The fingers move in a straight line when they are bent and unbent. Therefore, it makes sense to get a keyboard, the keys on which are arranged in the form of straight columns and rows. Try to squeeze and unclench your fingers – and you yourself will see what I am talking about.
  2. The keyboard must be split. Using such a keyboard allows you to position the wrists and forearms at such angles that are comfortable for a particular person. Conventional keyboards force us to place our hands to match the keyboard layout, which causes unnecessary strain on our hands.
  3. The keyboard should have key groups for thumbs. The thumb is much stronger and more flexible than the other fingers due to the joint at its base (the first metacarpal-carpal joint). Key groups designed for thumbs allow you to relieve the burden of performing some operations from other fingers and transfer it to your thumbs. This increases the ergonomics of the keyboard, allowing you to work with it much more efficiently than with conventional keyboards. (After working with the keyboard out of the box, I can report that I can use my thumbs to operate the following keys: Shift, Tab, [, ], {,}, |,, `, ~, Return, Delete, and some more. And my little fingers no longer get tired as they used to!).
  4. (Optional) The shape of the keyboard should match the anatomical features of the hand. If you look at the shape of our hands, it is clear that there is no point in flat keyboards. Curved keyboards that follow the shape of your hands are much more comfortable than conventional ones.

After doing some research, I decided to make myself a Dactyl Manuform 5×7 keyboard.

The process of creating a keyboard

I will not go into small details here, I will describe only the general course of work. The process of creating a keyboard can be represented in four main stages:

  1. Creation of the keyboard case. I already have some experience with 3D printing, so I decided to print the parts of the keyboard case myself. Most of these projects I’ve seen use 3D printing as well.
  2. Installing switches (key mechanisms) and key tops into the chassis. Mechanical key switches can be found on the Internet in abundance. Most homemade keyboard enclosures are designed to accommodate standard keys. I ended up settling on of these switches. They are suitable for those who need a sufficiently quiet keyboard that provides a good tactile feel.
  3. Soldering. This is probably the hardest part of the job, as the wires are pretty easy to get tangled up. When creating a “wired” part of the keyboard, a grid of conductors is built, to which the keys are connected. The switches have two pins. One is connected to the wire directly, and the second is connected through a diode (electrical analogue of a one-way valve). Then the grid of wires is connected to the microcontroller (to a miniature computer), which is programmed to determine which key is pressed by analyzing the flow of electric current through the grid.
  4. Device firmware. In this step, software is installed on the microcontroller. Most of those who create homemade keyboards use at this stage QMK


  1. Typing the keyboard took a lot of time (24 hours). Any mistake in the printing process can lead to serious waste of time and plastic for 3D printing. When I was making my second keyboard model, I decided to use translucent plastic. But he turned out to be much more fragile than the one to which I was used. When I removed the first finished body part from the printer table, it broke in half. This was one of the few mistakes I made when typing the keyboard case.
  2. Soldering is a tricky business if, like me, you don’t know how to solder. I often burned myself, melted the keyboard case in several places. It was very difficult to get to the soldering points located in some of the corners of the case.
  3. Sometimes the switches don’t fit well into their designated holes. Therefore, sometimes you have to spend a lot of time fiddling with a file and fitting parts.
  4. If you try to save money and buy a cheap microcontroller, like the one I bought, it may happen that if you press this controller a little harder than necessary, the power cable will fall off from it.
  5. After the keyboard is ready, for several months it may happen that some contacts in its wired part suddenly, in the middle of a working day, stop working. Therefore, instead of going about your usual business, you have to spend time looking for problems in the electrical circuits of the keyboard.
  6. Dealing with the wires and parts that fill the keyboard can be tricky the first time around. (When I first soldered the keyboard, I connected the diodes in parallel, not in series).


In the end, I can say that I am incredibly happy with what I did. I love my new keyboard so much that I actually made two of them. One for work and one for home. The project, as a result, met all the expectations placed on it. I get the feeling that by using key groups under my thumbs, I can write code faster. And my keyboard is much more comfortable to work with than a regular one. Since the keyboard has been performing well for several months now, I would also say that it can be safely attributed to the working and useful results of using a 3D printer.

Interestingly, the unusual keyboard on my desk has had a good impact on the social dimension of my life. It plays the role of an interesting topic of conversation, people like to look at it and try it, for which I often open a text editor. I also solidified my reputation as a geek a lot, more than I deserve, which helps me when I sprinkle technical jargon at work that I don’t really understand myself. People think that if I have created a keyboard, then I have something to understand in what I say when it comes to the code that I am trying to build.

Here – STL files for printing wrist rests and here – files for printing the keyboard case.

I would definitely recommend this project to anyone using a keyboard!

What keyboard do you use? Want to make yourself some special keyboard?

Similar Posts

Leave a Reply Cancel reply