The DMOTE application is a CAD application. It grew out of a single keyboard design (the DMOTE keyboard) and now comes bundled with several different designs and room for your own innovation.
This file, and all other documentation in this Git repository, concerns the DMOTE application as such, not its individual bundled designs or any firmware. Concrete build guides and other peripheral documents can be found elsewhere:
- A less technical, more general introduction.
- Build guides:
- The Dactyl, which is currently not bundled with the DMOTE application.
- The Dactyl-ManuForm.
- The Concertina.
- A guide to planning for wiring in 3D.
As for microcontroller firmware, QMK works great and has good documentation. In that project, the DMOTE is filed as a version of the Dactyl-ManuForm here. The Concertina is filed as a stand-alone project here.
This repository is source code for a Clojure application. Clojure runs on the JVM. The application produces an OpenSCAD program which, in turn, can be rendered to a portable geometric description like STL. STL can be sliced to G-code and the G-code can steer a 3D printer.
flowchart TD
Start((Start))
A["Edit settings<br>(.yaml)"]
B["Run DMOTE appplication<br>(.clj or .jar)"]
subgraph OpenSCAD
C["Preview<br>(.scad)"]
D["Render<br>(.stl)"]
end
E["Slice<br>(.gcode)"]
F[Print]
End((End))
Start --> A
A --> B --> C
B -->|"Extra CLI flag<br>(--render)"| D
D --> E --> F --> End
C -->|Manual control| D
C -->|Redesign| A
OpenSCAD can represent the model visually, but there is no step in this process where you point and click with a mouse to change the design. The shape of the keyboard is determined by your written parameters to the Clojure application. It’s programmatic CAD, without the drafting-table skeuomorph of construction lines.
If this repository includes STL files you will find them in the things/stl
directory. Otherwise, here’s how to make your own.
- Install the Clojure runtime.
- Install the Leiningen project manager.
- Install OpenSCAD.
- Optional: Install GNU make.
On Debian GNU+Linux, all four are accomplished with apt install clojure leiningen openscad make
. The necessary Clojure libraries will be pulled in
by Leiningen.
The Clojure application combines configuration details from zero or more
YAML files like the ones under config
.
The process is documented here. Together, the files you
select define the shape of your keyboard.
Even if you go with a bundled design, you might want to customize it for your own hands. You won’t need to touch the source code for such a personal fit. Just edit the YAML or add your own file to the configuration.
To start learning how to configure the application one feature at a time, go to the Butty tutorial, here. It starts from scratch and covers a lot of the basics.
There is more than one way to run the application. The easiest and most
automated is to call make
from your command line, but this will not use any
original YAML you have created. Refer to the execution guide
for details and alternatives.
After running the application, start OpenSCAD. Open one of the
things/scad/*.scad
files for a preview. To render a complex model in
OpenSCAD, you may need to go to Edit → Preferences → Advanced and raise the
ceiling for when to “Turn off rendering”. When you are satisfied with the
preview, you can render to STL from OpenSCAD.
If you find that you cannot get what you want just by changing the parameters,
you need to edit the source code. If you are not familiar with OpenSCAD, start
by experimenting with its native format, writing .scad
files from scratch.
Then consider starting in src/dactyl_keyboard/sandbox.clj
to get familiar
with scad-clj
. It writes OpenSCAD code for you with helpful abstractions.
If you want your changes to the source code to be merged upstream, please do
not remove or break existing features. There are already several include
and
style
parameters designed to support a variety of mutually incompatible
styles in the code base. Add yours instead of simply repurposing functions,
and test to make sure you have not damaged other styles.
The DMOTE application places each of its outputs in the same coordinate space. If you want to print two parts physically joined together, you can usually achieve this by concatenating the contents of multiple SCAD files.
If you are printing holes for threaded fasteners as part of your design, please note that common FDM printers won’t print threaded holes smaller than M3 with useful accuracy. M4 is a safer bet, but even that may require some manual cleanup, particularly in orientations other than the vertical.
For accuracy problems in general, and especially for problems with threaded
holes, consider tweaking the DFM settings documented here,
particularly the error-general
parameter.
You may prefer tapping threads yourself to work around problems with accuracy.
Each of the bolt-properties
parameters to the application can take a value
for include-threading
. If you set this to false
, a hole cut for that bolt
will be a plain cylinder with the inner diameter (a.k.a. minor diameter) of
standard ISO threading. If you have enough plastic in the perimeter of that
hole, you can drill it to clean up the print and then tap it.
If you are including wrist rests, consider printing the plinths without a bottom plate and with sparse or gradual infill. This makes it easy to pour plaster or some other dense material into the plinths to add mass.