My Keyboard
TLDR
The following is a deep dive into my current keyboard which is outlined below.
- 4x5 Dactyl Manuform (with a few small tweaks)
- Printed on my 3D printer
- Custom-built
- Hand Wired
- Cherry MX Blue switches
- Firmware: QMK
- Dvorak, Layers & Layout
- Pretty Layout for Printing
Why a Dactyl Manuform?
Well, the short answer is because I have historically had wrist pain from typing. But not with the 4x5 Dactyl Manuform. I believe at this point with all my experimentation with a ton of other custom keyboards I have built that the key to my success with this build is due to two things.
First, I determined that my wrist pain was caused largely by repetitive stretching of my fingers to reach keys at the outer boundaries of keyboards. The only way I could figure to reduce that was to reduce the number of keys I have on the keyboard. Hence, the 4x5 size. However, this meant that I would have to have layers and a comfortable thumb cluster I could use all the keys from.
The Dactyl Manuform 4x5 meets all these requirements and still maintains all my other ergonomic requirements. Also thanks to QMK it is customizable enough to support a layered layout in a way that I can still be efficient at programming.
A Problem, No More
I love my Dactyl Manuform keyboard. It is by far the best keyboard I have every used and my wrists haven't felt any pain since I started using it. However, it has had one problem. It is too light-weight. Because of this even when I have rubber on the bottom of it, it still slides around on my desk.
The other day I decided it was time to address this annoyance. So I took them apart and first tried to see if I could figure out a good mechanism for adding weight to them. Didn't have much luck with that. And then I thought my other issue is having my trackpad positioned appropriately relative to the keyboard.
This got me thinking if I could create some sort of thin thing that would hold the keyboards in the appropriate positions to be ergonomic, as well as hold my trackpad.
So I laid out the components on my desk in the correct positions and then took a rough measurement to figure out how large something would need to be. I then took those measurements to find some scrap Masonite board in my wood shop and cut it down to that size. Then I laid the components on it the correct positions and then used some CA glue to glue down tiny blocks to hold the components in the correct positions & orientations.
This actually worked extremely well. It kept the keyboards and trackpad in the correct positions. It also increased the surface area in contact with the rubber as well as the weight. Causing it to prevent the devices from sliding around on my desk.
However, the next problem that I had was that it was ugly and that it bothered my wrist when I would relax my hand on the desk. Beyond that it was just ugly. So I free hand drew a more organic looking outline around the components, visible in the photo above, and then cut it out with a band saw.
This made it not only look nicer. But also eliminated the discomfort that I had when I would wrest my hinds on the desk every so often. In fact, you can see what it looks like in use in the following photo.
It is still a bit ugly and could use some love. So my plan is to cover up the blocks and the visible wood by sculpting clay to make in organic looking alien blob that is absorbing my keyboards and touchpad. And then I will paint it. Hopefully, at that point it will look much nicer.
The Build
The following are a bunch of photos I took throughout the build. I won't go into all the details about them. But figured I would share.
Notes
The following are really more notes for me about things. But it might be useful to you if you are trying to get a Dactyl Manuform setup with QMK Firmware.
References
Parts
- Tapered Heat-Set Inserts for Plastic (Brass, M3 x 0.50 mm Thread Size, 3.800 mm Installed Length) - use for attaching a base to the bottom of the housing
- M3 wafer-head screws, 5mm - used to attach the base to the inserts in the housing
- 1N4148 diodes
- #30 wire
- 2 Arduino Pro Micros
- Veroboard stripboard
- 4pin Telephone Cord
- Female RJ-9 connectors - 4pin RJ-9 Female Connectors
Keyboard Layout
QMK
Possible Parts
Build Videos
Kevin Eckert - Keyboard Build Stream - Dactyl Manuform
This is great in depth series on the build which matches the types of connectors used in abstracthat/dactyl-manuform.
- Keyboard Build Stream - Dactyl Manuform - Part 1 - assume already printed, put switches in the case, wire the switches
- Keyboard build Stream - Dactyl Manuform - Part 2 - continue wiring switches with diodes on the rows
- Keyboard build Stream - Dactyl Manuform - Part 3 - wire up the Pro Micro to the switches
- Keyboard Build Stream - Dactyl Manuform - Part 4 - Wiring RJ-9, USB-C to micro USB extension, programming mode button
CMD - Dactyl Manuform Build
This build video is great for understanding the background of the Dactyl and seeing someone paint it. However, it is using a slightly different case from abstracthat/dactyl-manuform. It uses a different type of connector to connect the two halves of the keyboard, etc.
I built a Ridiculous Keyboard by Hand
Keyboard Layout
Dactyl QMK
Wiring / Flashing
Split Not Working
QMK Firmware
Compile
qmk compile -kb handwired/dactyl_manuform/4x5 -km drewdeponte
Flash
- Connect the keyboard directly to the laptop via straight USB-C cable with the left half plugged into the computer. The right half can stay connected to the left half via the telephone wire.
- Run the following command, it will get to a point where it starts waiting for the device. When it does, you double tap the button on the back of the left half of the keyboard, and it will switch the controller into flash mode. The app will detect it and flash the device.
qmk flash -kb handwired/dactyl_manuform/4x5 -km drewdeponte
After it is done you should be able to disconnect it, reconnect the keyboard and everything should be good to go.
Edit
Edit the
~/code/personal/qmk_firmware/keyboards/handwired/dactyl_manuform/4x5/keymaps/drewdeponte/keymap.c
file to make changes to the layout.
Notes
To get this split to work I had to set up my config.h
as follows:
#define USE_SERIAL
#define SPLIT_USB_DETECT
This only really works when the left side is plugged into the computer. If the right side is plugged in the keys translate differently.
I tried the EEPROM
detection but even after flashing the EEPROM
s it didn't
seem to work with the EE_HAND
. So after trying things out this is what I
found to work.
Past Keyboards
I have had many past keyboards. The following is a list of just a few.