Building a Dactyl Lightcycle Keyboard

NOTE FROM AUTHOR [2024/05/07]: This post was originally written in 2022, but sat unpublished. I used this keyboard on and off for about 2 years. I still like the layout of the Kinesis better, but I can use either fluently. I’ve had to do a few repairs on it. On the righthand half, the pro micro controller’s USB port broke so I ended up replacing the controllers with Elite-Cs and addressing all the poor soldering.

I still love the Kinesis, but appreciate that the thumb cluster on the dactyl was a bit closer, but was really annoyed with the stagger of the outermost columns. After building the dactyl (lightcycle) below, I upgraded the original kinesis with the Stapelberg mod. It’s 2024 now and I actually alternate between a handwired Dactyl-cc with 67g, un-lubed, Zealio┬« V2 Switches and “like-new” Kinesis Advantage 1 (in black) with a Stapelberg mod PCB. My original kinesis is at my parent’s home at a hotdesk where my brothers and I work from time to time. Admittedly, I would probably not have built the Dactyl-cc had I chosen better switches that the Kailh box browns below.

I’m a huge fan of my Kinesis Contour. I wrote a series of articles (first, second and third) about it. I was able to get the first up and running shortly before the pandemic set in and actually swapped in the old PS/2 controller with an Advantage 1 controller board. I have been using it ever since. It has ruined me for all other keyboards.

At the time, I was expecting to be returning to the office in 2021 and I considered the implications of having to potentially move the Kinesis back and forth between my home office and Nulogy HQ downtown. I was not looking forward to that. This brought me to explore other more portable keyboard designs and I ended up purchasing an ErgoDash kit from Keycapsss.com. I never got around to building it though as it soon became apparent that our return to the office wasn’t in the cards.

Fast forward to Black Friday 2021, and I make the impulse decision to buy a 3D printer.1I bought a Flashforge Adventurer 3. It works well, but I am already hitting limits based on its meager build volume (150 mm3) and the fact that most open source split ergo keyboards are larger than its build area. I already want to upgrade. I didn’t unbox until the Christmas holidays, but it occurred to me that I wasn’t just limited to building the ErgoDash, but I could in fact start exploring alternative curvilinear designs similar to my Kinesis. I finally summoned up the will power to start this project again, but rather than build the ErgoDash, I decided to build a Dactyl keyboard. I decided I wanted to use a design that mimics the Kinesis thumb cluster, and to be frank, the Dactyl-Manuform (DacMan) thumb clusters were a bit too intimidating for me.2Some Readers might point out that there does exist the Dactyl-cc, a fork of Mike Adereth’s Dactyl that better captures the Kinesis Advantage. That’s on my list of future projects for sure.

So I wanted to write my build log for this project. Much of the resources I cite deal directly with the Dactyl (lightcycle) and/or Dactyl Manuform variants.

Equipment:

It’s important to note that I choose to build the Dactyl using TWO Pro Micro controllers.3Although I ended up using 4 controllers because I nuked 2 during the build process. Matt Adereth’s original design for the Dactyl uses a Teensy 2.0 as the Controller-half (right side) and a MCP23018 IO expander for the Agent-half (left-side). I’ve read that using two Pro Micros was a bit more performant and you have the ability to flash a completely different keymap agent side and have that act as the Controller depending on which side you plug in to the computer. This has implications on the firmware and wiring section.

Tools that you will need:

  • Soldering Iron
  • Solder
  • Flush Cutter
  • X-acto knife
  • Tweezers
  • Soldering Wick
  • soldering flux
  • Soldering vaccuum
  • Multimeter
  • Needle nose pliers

I had most of this equipment already purchased from STEM projects that my kids were doing. Admittedly, I want to get a better soldering iron.

Materials that I used:

The case

I download a pre-rendered, ready-to-print model: It is available on Thingiverse. I tried the original bottom case, but I gave up trying to fit everything into it. If you want to read a great story about the struggles of fitting everything into the stock base plate read Joe Devivo’s build log on his Dactyl keyboard. So I ended up using this extended base with wrist rests to better mirror the experience typing on a Kinesis Advantage. This clamshell approach encases all the components into two halves. The top half containing the keys and the bottom half containing your I/O ports. I’m not a fan of this approach as the two halves are wired together and it makes it much harder to work with. The 30 cm panel mount cable barely fits and you need to manage your wiring quite aggressively in order to fit everything together.

PRO TIP
A better alternative to using off-the-shelf renders from Thingiverse is to use the Web-based configurator for Dactyl (Lightcycle) and Dactyl-Manuforms. Choose the “Lightcycle” option and “include case” option you can customize your layout to include things like a function key row, wider 1.25u column keys for the left and right side (like on the Kinesis), or even change the geometry key wells (arc, offset and height) and remove or add keys to the thumb clusters. Most importantly, it creates a Dactyl-Manuform like housing for your keyboard (dome with switches and I/O combined and a simple base plate). You also have have the option to specify an external holder for the pro-micro and TRRS jacks. NOTE: If you take this route, you’ll need to download the OpenSCAD app and render out the .STL file for your printer.

Printing

If you have a friend with a printer, I would encourage you to ask a favour to print out the keyboard case. Try to print it out in one piece, if possible. My bases are printed out in multiple pieces (4 each) and I’m not really happy with the results. In order to print faceplate, I had to set up a very aggressive angle on my printer and use a generous amount of supports. This is a waste of material and I ended up using an entire 1 kg roll of PLA filament. It also affects the structural integrity of the keyboard where expansion caused by the keycaps could rupture the casing along the angled PLA layers.

Printing the top right faceplate used a lot of filament for supports.
Flashforge’s slicer app, Flashprint, has limited cutting abilities. Don’t do this. Not worth it.

I glued the parts together using JB Weld, but decided to not do any extensive filling, sanding and painting.

Wiring

There are several great posts online that shows approaches to wiring the Keyboard matrix. Some are even Dactyl and DacMan specific.

I was inspired a lot by Sasha Solomon’s guide and used her wiring layout for my boards. Her hand drawn diagrams are beautiful and very clear. It’s really approachable as well.

However, they DO NOT MATCH the wiring required for the handwired/dactyl-promicro build in the qmk repository which states, somewhat cryptically I might add, that:

Wiring is a 6×6 Matrix like the Dactyl Manuform

Dactyl with Arduino Pro Micro page in the QMK repository
Sasha’s Solomon’s wiring diagram. Note how it uses a 7×6 matrix.

Sasha’s wiring diagram uses 7×6 setup and I didn’t feel like futzing around in the software and remapping the keymap.

For a Dactyl keyboard using two pro micros, the wiring diagram looks like this:

Wiring diagram for a Dactyl keyboard using two pro micros. Credit to Aaron Mak for providing the source SVG file.

The key part is that the first and second buttons in the thumb cluster is treated as part of the first column.

PRO TIP #1
If you are soldering diodes together to create your “row” matrix, you can use blue sticky tack to hold the diode still.
PRO TIP #2
If you have access to a “self-adjusting” wire stripper, it makes creating row and column wires a breeze
PRO TIP #3
For rows, specifically, you can attach the wire lead anywhere along the row to trace back to the micro controller.
PRO TIP #4
Keep some of the diode legs. You can use them to socket your micro controllers. It’s very easy to do if they come in a paper strip.

I had a lot of excess wire from the leads that wasn’t necessary for the build, but helpful when I breadboarded the system for testing.

Prepare and Reinforce the Controllers

Pro Micros are notoriously fragile. There isn’t a lot of solder holding the port down to the PCB. The first thing I did was reinforce the port with solder and super glue.

Do this for both pro micros.

I chose to put pin headers onto the bottom of the board (necessary for breadboarding) (or you can choose to socket your controller using Mil Max pins or diode legs). Regardless, this is good practice. It provides a surface to attach your wires and helps prevent you from damaging the circuit board with the soldering iron. Diode legs make great pins for socketing.

Flash the controllers

Caution
I blew up two pro micro controllers because I was shorting the wrong pins (the 5V and the GND vs. the GND and RST).

Follow the QMK firmware instructions for setting up your environment and toolchain.

Create you keymap using the handwired/dactyl-promicro folder:

and build your firmware using the handwired/dactyl-promicro:

Use QMK Toolkit (Windows and Mac Only)4If you use Linux, you AVRDUDE to flash the controller.