/dactyl-keyboard

Dactyl Manuform

Primary LanguageClojureGNU Affero General Public License v3.0AGPL-3.0

My Dactyl-ManuForm Keyboard

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

dactyl manuform

Assembly

Printing

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)

Materials

Here are materials I used for the build:

Step by step

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 😉.

1. Put all the switches in the key slots

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

switches-back

Once you're done with all of them it should look beautiful like so:

switches-back

2. (Optional) Put the Sockets in all of the switches

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:

pcb

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.

3. Wiring I: Connecting diodes for rows

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)

diodes-lines

Be extra sure that all the diodes are pointing to the same direction (i.e. all black end pointing up)

diodes-nolines

4. Wiring II: Connecting magnet wires for columns

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:

colraw-lines

here is the image without lines:

dactyl manuform

5. Wiring III: Connecting columns and rows to arduino connection

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:

arduino-cols-rows

6. Wiring IV: I2C

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:

arduino-i2c

IMPORTANT You don't have to solder resistors on the right keyboard

7. Wiring final

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 😉

arduino-wired

8. Notes on the right ✋🏻 side

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.

9. Firmware flashing

Firmware goes hand in hand with how you wire the circuit. If you follow my wiring you can use my qmk firmware here

Wrapping it up

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.

Generating a Design

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

Tips

Testing the left side of the keyboard first

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.

Working with the design file

License

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.