This is a fork of the Dactyl, a parameterized, split-hand, concave, columnar, ergonomic keyboard. I've applied a couple fixes to the geometry and also:
- added kailh switch support and kailh hot swap socket cradles for every switch.
- added 3d printable wrist rests
- added 3d printable bottom plates
Pregenerated STL files are available in the things/ directory.
This model can be tricky to print, but I printed @ home with my cheap ender 3 printer (calibration is key). If printed at Shapeways or other professional shops, I would not expect any problems.
I reccomend that you print a couple switch holes to test your switches fit before printing the whole keyboard.
The fit should be thight and the switch hole should flex a little, but not deform. if the fit is not right, you'll have to change the keyswitch-height
and keyswitch-width
and regenerate the desings (see Generating a Design)
Here are materials I used for the build:
- 2 x Pro Micro ATmega32U4 5V/16MHz
- 30 AWG Magnet Wire
- Jumper Wires
- 1N4148 Switching Diode 100V 200mA Hole DO-35
- M3 x 3 mm Female Thread Brass Knurled Threaded Insert
- M3x4.8mm Flat Phillips Head Screw
- 4P4C x 2 Female Telephone Connector
- Phone Reciever RJ9 Coiled Cable
- USB 2.0 A-Male to Micro B
- Straight Solder Type A USB Female Jack Connector
- 1U Blank DSA Keycaps
- 2x 4.7K Ohm Resistors
- USB 2.0 A Male to A Male
- Switches (64, but you should get more just in case), I used Hako Violet
- If you want hot swappable switches Kailh PCB Socket
The following guide will take as reference the left side of the keyboard. All the wiring for the right side is just a mirror of the left side 😉.
Parts required:
- 64 switches
- The dactyl cases
Simplest, and yet the most rewarding step, put on the switches in the key slots, it is important to note that the little tab has to be in-between the switch's legs
Once you're done with all of them it should look beautiful like so:
Parts required:
- 64 sockets
- The dactyl cases
- Super glue (or any kind of strong plastic glue)
If you opted to have swappable switches, now is the time to put them, because the soldering part comes right after this, that means that if you decided to have swappable switches later on, then it's going to be a pain to put them on (desoldering and whatnot).
With that little word of advice out of the way, let's proceed to put the Socket onto single switch, as the image shows:
Once you confirm that everything fits perfectly, you can proceed to add a bit of glue right in the middle of the socket and press against the tab of the key slot, rinse and repeat for all the remaining keys.
Parts required:
- Diodes
Start by wiring using the traditional approach of using the legs of a diode to form the row connections as the image shows (I drew lines on the picture so it is easy to understand)
Be extra sure that all the diodes are pointing to the same direction (i.e. all black end pointing up)
Parts required:
- Magnet wire
The magnet wire can be a bit tricky when soldering to the socket. Make sure you melt the resin that covers the wire by using the metal tin, once you are able to cover the cable with metal tin, you can proceed with the soldering to the socket, repeat this process for all the socket connections for each column as shown in the picture:
here is the image without lines:
Parts required:
- Arduino
- Jumper wires (female)
The easiest way to work with the arduino is to use jumper cables (at least for me it is!) so you don't have to solder the cables directly to the arduino board. You still need to do some soldering to attach the legs though 😜.
Once the legs are attached, proceed to solder female jumper cables to the rows (leftmost side) and columns (uppermost side).
Now connect them all as shown in the picture:
Parts required:
- Arduino
- Jumper wires (female)
- 2x Resistors 4.7 Ohms
- 4P4C Female Telephone Connector
Proceed with soldering jumper wires to all of the four wires of the 4P4C Female Telephone connector
The I2C connection requires for the wires connected to pin 2 & 3 to be connected to VCC pin through resistors. You could easily attach the two resistors and connect them to VCC. See the image that illustrates the wiring:
IMPORTANT You don't have to solder resistors on the right keyboard
Parts required:
- Telephone Handset Coil Phone Reciever
- 4P4C Female Telephone Connector
This part can be a bit tricky, this is because the Telephone connector reverts the wiring from one end to the other 🤷🏻♂️. Make sure you have a multimeter at hand to identify what wire is which.
This part is mostly for the right side of the keyboard (remember to mirror the wiring on the socket). Same as before, solder the jumper wires with the 4P4C wires, but this time use the multimeter to identify which cable corresponts to the left side wiring, my advice is try to match the colors of the jumper cables on the left.
Following picture shows a somewhat finished wiring 😉
Wiring the right side is a mirror for the left side, for diodes and magnet wire.
Arduino connections are mostly the same except:
- You do not need to solder the 2 resistors for the I2C connection
- For handedness, you NEED to connect GND to pin A2, this is to signal the firware that it is the right side. This is not need in the left side, cos it will assume left by default.
Firmware goes hand in hand with how you wire the circuit. If you follow my wiring you can use my qmk firmware here
Once you have tested that all the keys works well, then you are ready to hot glue the components onto the case:
- Micro USB male to female USB 2.0 Connector
- The two 4P4C Female Telephone Connector
For the female thread brass, you just need to place them into the case's hole and heat the metal up with the solder iron, that will melt the plastic thus glueing the metal into it.
Setting up the Clojure environment
Generating the design
- Run
lein repl
- Load the file
(load-file "src/dactyl_keyboard/dactyl.clj")
- This will regenerate the
things/*.scad
files - Use OpenSCAD to open a
.scad
file. - Make changes to design, repeat
load-file
, OpenSCAD will watch for changes and rerender. - When done, use OpenSCAD to export STL files
I recommend you to test out the left side first before continuing with the right side. For this you will have to change the connection type to serial, compile, and flash.
- #define USE_I2C
+ #define USE_SERIAL
IMPORTANT Remember to change it back once you are ready to use the two sides.
Copyright © 2015-2020 Matthew Adereth, Tom Short, Nicolas Fernandez and Andres Otarola
The source code for generating the models (everything excluding the things/ and resources/ directories is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3. The generated models and PCB designs are distributed under the Creative Commons Attribution-NonCommercial-ShareAlike License Version 3.0.