Dactyl

Manuform

Keyboard

This was by far the most involved piece of tech that I have messed around with. I would say that anyone can go out and buy a custom keyboard with custom cables. Going about building one for yourself, however, is a different story. This kind of project can be daunting at first but, with a bit of drive, you too can have your very own custom keyb!

There are a few things necessary to get it completed and I have a handy list below:

  • Base

  • Micro-controllers

  • Keys

  • Keycaps

  • Wire

  • Connectors

  • Optional Components

*(Depending on the one you choose, you may need to get yourself a switch to reset the micro-controllers while flashing firmware, or you can short the reset pin to ground with a small screwdriver if you are too cool for switches)

The Base

The base of the keyboard can take a variety of shapes and sizes. The one that I decided to go with is a bit of a strange design, but it is one that I was drawn to. I would recommend that you go out on a search for a design that you like and get yourself something that you would love to look at on your desk.


This is probably the most important part of the build since everything else is going to go on top of it. The design should be something that you feel will be comfortable to type on. The Dactyl design is one that I felt would be more ergonomic given how much I use my keyboard.


Aside from the design, you will want to decide now how many keys you want the keyboard to have. My choice has 34 keys on each half. A total of 64 keys will be necessary for the completed board. There are many designs out there, and each has their benefits.

Printing supports

If you can get your hands on a Dactyl build, REMEMBER TO USE SUPPORTS!!! This build has a few locations that will need them in order to print properly. There are many awesome guides online on youtube/forums on how to print with supports. Give someone you enjoy watching a like and a follow for some sources of inspiration.

If you decide to go with the Dactyl build, you will either be printing the part on your own or buying one from an online vendor. I have heard good things about some vendors but have not purchased anything myself. That being said, I understand that not everyone has access to a 3D printer. Think about the amount you are willing to spend on the build and maybe consider if obtaining an inexpensive 3D printer would be a good choice. There are many amazing resources online for learning how to get started and may be an option for you.

Ensuring Quality

If you decided to purchase the base somewhere, you do not have much to worry about here. Most places that you can buy prints from have the know-how and experience to get some good quality prints.

If you print one on your own, I would recommend that you get your first layer as dialed in as you possibly can before you start. My biggest troubles came from not getting proper adhesion on the first few layers leading to subpar results.

I am adding a list of the settings I used on my build below, but know that all printers have their tolerances and should be tweaked accordingly.

Notable Settings:

layer height: 0.2 mm

Nozzle Diameter: 0.4 mm

Bed Temp: 90C

Nozzle Temp: 255C

Material: PETG

Snipping Supports


Testing Feel


The Micro-controllers

I decided on the Arduino Pro Micro for this build. Between the different forums I visited, and various builds from others, it seemed that the Pro-Micro is already capable of working with QMK (Open Source Keyboard Software). Another reason for going with this microcontroller is that these are relatively inexpensive. They have been around for some time and have many documents available in case I ran into any troubles.

Thankfully, I did not run into any issues during the project even though I used a knockoff brand. That doesn't necessarily mean that you won't. I would usually go with a legitimate product but the stress in the supply chain during the pandemic made it a bit more difficult to obtain.

AITRIP Pro Micro Atmega32U4

This is basically, as far as I can tell, no different than any other Arduino Micro. I was honestly a bit surprised, but it makes sense that some companies would begin to make them at a lower cost. These usually come in packs of two or more, and you can get the same ones I did here. You can currently get the pack of four for about 25 bucks.

Arduino Micro

This is the genuine Arduino Micro here. While this would have been preferred, the cost of the single board is just over 20 dollars. Being that much for the same functionality makes it easy to choose the pack of 4 on the left that I mentioned.

I say that obtaining legitimate products is best practice, but sometimes cost takes precedence.

The Keys


Kailh Box Switches

I decided on these box switches here. The cost of switches can also climb pretty quickly. I enjoy working on mechanical keyboards and using them, but I am not a switch maximalist. I chose these because of the cost and the effects of having a box on the outside of the + shaped piece. It makes the switch stay in a linear region as opposed to swaying side to side.

If you want to check out a few different types, I recommend going out to a Best Buy nearby, or another local store that may carry them for you to get a feel for the switches.

Fitting Switches

The switches may be a bit difficult to snap into place, but with a bit of patience and some small files, you can get them all into their homes. I considered going with some different ones to have an extra guide for my finger placement but decided against it.

Reset Switch

Assuming you get the same microcontrollers that I did, you will need to wire your own reset switch to the body of your build in some way or another. It is either that route, or everytime you need to flash the firmware, you will need to short the ground and reset pins on the MC. I would recommend taking apart your old devices that no longer work, or something you can use for parts, and get some tactile switch out of it. I have done this for most of the switches I have, but I also have some nice ones that came with an arduino uno kit. However you want to move forward, I suggest you plan for this ahead of time as I did not. I only realized after having printed my frame and gotten started with soldering. Thankfully, I did not do any damage to my parts and I was able to add a reset switch to the system.

Note: You will only need one reset switch if you are using the two in a master/slave system. This will not be sufficient and you will need one on each if you plan to work them as separate devices; each connected to the PC.

Having placed the switch, I decided to recess the switch a bit to ensure that it would not be pressed on accident in any scenario. It is still in a simple and easy to reach location, big enough to find without having to look for it, and I am now ready to reset the MC when it comes time to flash the devices with our firmware.

The Keycaps


Printed Keycaps

I decided to print some caps that I could use to differentiate the home row from the rest of the keys. I printed a few extra in case I had some issues but I did not have any problems. For any prints that you attempt, remember to use an appropriate-sized nozzle for the part. Depending on the level of detail you want to end up at, you may need to adjust your settings and do some trial and error. I went with these simple blank keycaps for my asthetic.

Designs

The keys that I chose to go with can be downloaded here. The designs available online are plenty. I would take some time to check out the different ones that others have made. I took this design and made some changes to fit my keys. There are many to look over at Thingiverse.

Go wild here if you want to. There are so many great creators out there making beautiful work.

Modifying Files

Should you find a nice cap that you would like, and there are some tolerance issues, I suggest you get acquainted with some CAD software. You can get started with Tinkercad. It has a simple and easy-to-pick-up interface that you can use to modify your chosen design. You can see the change I made to the cap above where I changed the connecting bit of the cap. It gets easier to do over time.

Buying Caps

If you would rather not print these, or you do not have a 3D printer, you can find many vendors online. I went with the cheapest set of blanks I could get since I knew I wanted all of them to be blank. If that is something you would do, I recommend AliExpress or Amazon. There are many artisan caps available all over the place but things get pricey quick. You can get the same ones above here from AliExpress.

The Wire

There are two different types of wire that were used in the build. The first is the obvious USB cable for connecting to the computer, and the second is used on the inside of the keyboard. The wire inside does not need to be beefy as it is not going to be carrying a lot of current. Any wire that is easy to work with and pliable is preferred. I used some 24 AWG stranded silicone wire because of the pliability and cost. I picked up some of this wire on Amazon for about 10 dollars. It came in 6 colors and 5 feet of each.

Note: I am fairly confident that any wire would do for the internal connections. I think a good place to find some would be some old networking cables that could be repurposed. Since they are typically 5 or 6 core, you should have plenty of different wires to choose from.

USB Wire

The USB wire I bought was the 4 core because of other projects, but only 3 core wire is needed. You can get your hands on some of that wire at Amazon here.

Hookup Wire

The hookup wire that I mentioned and pictured above can be found here. As I mentioned before, the wire does not need to be very large. I would recommend using the wire at the link. It is really worth it and I will be buying more of it in the future.

Using multiple colors here is a great idea. Having a way to tell each of your rows and columns apart comes in handy should you need to perform any troubleshooting.

The Code

import Keyb_software as simple

Ok, so it definitely wont be that simple, but it doesn't have to be hard. If anything involving the terminal is too much for you to tackle right now, there is a simpler way to do this with an online configuration tool. This is called the QMK configurator and you can access it Here. Be sure to chose the layout you want in the dropdown before setting up the keys. If you have a custom layout, I am afraid you will have to create your own using the methods below. If not, you should be able to set everything up in the configurator just fine to get your keyboard layouts mapped.

The first thing that needs to happen before we start thinking of making a keymap is to set up the environment. There are many good walkthroughs online that you can search for but, as usual, the best place to go is the source. You can take a gander at the setup page on QMK's git-book site here. This page contains all the necessary materials for you to get started and run your first test compilation.


qmk compile -kb clueboard/66/rev3 -km default


This is the same as the example from the QMK site and will attempt to make a build of the Clueboard 66% keyboard. If that completes successfully, you should see the following output:


Linking: .build/clueboard_66_rev3_default.elf [OK]

Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]

Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]

Checking file size of clueboard_66_rev3_default.hex [OK]

* The firmware size is fine - 26356/28672 (2316 bytes free)


The next piece of the process will have us working to create the keymap.

Creating a new Keymap

The process for creating a new map is fairly straightforward. We need to open up a command prompt or terminal to create our new keymap, and use the following command:


qmk new-keymap


This command is all that is necessary, or you can use the following if you have multiple keyboards:

qmk new-keymap -kb <Keyboard_name>


This one allows you to specify which one you are going to be using. After the command is processed, you should see a new keymap.c file at the location provided by the CLI. Open up that new keymap.c file and take a look at its contents. The list of layers that you have on your keyboard firmware at the end of the process begins at the keymaps array. The array is of type const uint16 and has the following definition:


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]


This is where we need to make the changes to add more layers to the keyboard. You can add many different types of actions to the array by adding in the keycodes. These can be basic codes, quantum codes, and even mouse presses. No matter what your fancy is, you are sure to find something that you like.

Note of Caution:

While you are just getting started, it would be wise to keep your changes small to minimize any errors that you may introduce.

Building the Firmware

Congrats! We have come a long way and are nearing completion. The last command needed is:


qmk compile


After the command is complete, you should see the following or similar in the window:

Linking: .build/planck_rev5_default.elf [OK]

Creating load file for flashing: .build/planck_rev5_default.hex [OK]

Copying planck_rev5_default.hex to qmk_firmware folder [OK]

Checking file size of planck_rev5_default.hex [OK]

* The firmware size is fine - 27312/28672 (95%, 1360 bytes free)


If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap with the following:


qmk compile -kb <keyboard> -km <keymap>


Flashing your Firmware

Next up is the flashing process. We need to first plug in your microcontroller and press the reset button. This will start the connection and a message will pop up that looks like this:

*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)

If you see the above message, great!! All we need to do is the following:

qmk flash

That's it! You're done! Give the new keyboard a test drive!!

Again, if you want to specify a certain board or keymap, use the following:

qmk flash -kb <my_keyboard> -km <my_keymap>

In case you have any issues, visit the support page here.