Skip to content
Switch branches/tags
This branch is even with master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

The DMOTE application

This is a CAD program for designing a keyboard that suits you. By editing text files of parameters, you can change:

  • Switch type: ALPS, Kailh (PG1511) or MX.
  • Microcontroller type: Lots of options.
  • Size and shape.
    • Row and column curvature and tilt (tenting).
    • Exceptions at any level, down to the position of individual keys.
  • Minor features like LED strips and wrist rests.

Here are two of the application’s bundled designs for concave, columnar, ergonomic keyboards, as examples of what you can do:

Image of the second working Concertina

⤤ The Concertina, a diploid keyboard with 20 thumb keys and 3 assortment drawers.

Image of the second working DMOTE

⤤ The original, split DMOTE keyboard, short for “Dactyl-ManuForm, Opposable Thumb Edition”.

To get started, try the introduction, part of the project’s documentation.


This project, the DMOTE application, is a fork of Tom Short’s Dactyl-ManuForm. It’s one of many forks in the Dactyl genus.

There’s a small family of accessory projects:

  • dmote-keycap: A library used directly by the DMOTE application to model both featureless maquettes for use in easily rendered previews, and “minimal” keycaps you can print and use to save space.
  • dmote-topography: Smooth organic topography for height maps you can use as wrist rests, including the example bundled in the resource folder of this project.
  • dmote-drawer: Assortment drawers for the Concertina, a bundled keyboard design.
  • dmote-beam: Configurable clips for stabilizing a split keyboard by holding a connecting rod between the two halves.

Like its parent, the DMOTE project is based on Matthew Farrell’s scad-clj. A second small family of general CAD libraries for scad-clj have grown up around the DMOTE project.

  • scad-app: A simple way to turn scad-clj specifications into applications, stripping out some boilerplate. See also cad-template, which is all boilerplate for starting new CAD projects that are ready to render.
  • scad-tarmi: Commonplace abstractions.
  • scad-klupe: Threaded fasteners.


Copyright © 2015–2020 Matthew Adereth, Tom Short, Viktor Eikman et al.

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.