Skip to content

A parameterized ergonomic keyboard. Significantly expanding what features are parameterized, such as options for the "thumb cluster", and accounting for a wider range of curvature options. This project also introduces different curve options for keys requiring a reach vs "home" keys. Of course this is all expanding on, and out of appreciation, o…

License

AGPL-3.0, Unknown licenses found

Licenses found

AGPL-3.0
LICENSE
Unknown
LICENSE-models
Notifications You must be signed in to change notification settings

SeattleChris/ergo-code

Repository files navigation

The Dactyl ErgoCode Keyboard

This is a fork of the Tom Short's ManuForm keyboard, which itself is a fork of the Dactyl, a parameterized, split-hand, concave, columnar, ergonomic keyboard. This work builds off of the ideas of the ManuForm by Jeff Gran with discussions on (geekhack).

Imgur

For additional background information about mechanical keyboard history and various parts and consideration check out the Keyboard Information Doc.

New Features & Updates

  • Can have different row curvature for home columns vs. extra "reach" columns.
  • Any column can have the last row keys (previously only middle and ring finger had them).
  • Can utilize an optimization setting if column gap is too tight on last row keys.
  • Additional thumb cluster options (see below).
  • Parameters for how the thumb cluster attaches to main, useful if designing new thumb cluster.
  • Can create more rows and more columns compared to previous versions.
  • Allow for Cherry MX or more generic key switch hole.
  • Expanded what settings are computed instead of hard-coded options requiring multiple edits.
  • Overall improved parameterization, fewer setting assumptions & leveraging computed settings.
  • Added more documentation on mechanical keyboards and key map layout.

Thumb Cluster

For ergonomic keyboards of this design there is a desire to make better use of the thumb, giving it multiple keys to press instead of how a traditional keyboard only has a single space bar button to be used by one or both thumbs. This fork introduced a new design for the keys pressed by the thumbs. This collection of extra keys for the thumbs has come to be referred to as the "Thumb Cluster" within the mechanical keyboard community.

Here we are introducing the Thumb Bowl design for the thumb cluster. This code also has an option for the Manuform thumb cluster design.

Parameterized Settings

The keyboard is parameterized to allow adjusting the following:

  • Rows: 4 - 6 (or more, or less)
  • Columns: 4 and up
  • Row curvature - Home columns
  • Row curvature - Reach columns
  • Column curvature
  • Row tilt (tenting)
  • Column tilt
  • Column offsets
  • Depth (raised off the table)
  • Thumb cluster design style:
    • Manuform
    • Thumb-bowl
  • Thumb cluster positioning & attachment points
    • useful if creating additional thumb cluster designs

For any given number of "rows" defined for any keyboard size only some of the columns in the main keys section will have that number of rows, so it better to think of the row number as the maximum number of keys a column could have. Frequently the "lastrow" (the row closest to the user) won't actually have a key for every column. For example if a keyboard is defined as having 4 rows, looking at it may seem more like a "keyboard with three rows, but an extra key at the bottom on some columns". Likewise some columns may be set to not have a first row key (at the top, furthest from the user). When describing a board size, the short hand should be in the format of RxC where R is the setting for the number or rows, and C is the setting for the number of columns (eg 4x6 is set to 4 rows and 6 columns, plus the thumb cluster keys, but depending on other settings it may appear to typically be 3 rows with a few bonus keys).

There are two primary row curvature parameter settings. The curve of the keyboard for the home row keys are set by the "β" parameter. The "γ" is the curvature setting for any of the reach columns, which are when the pinkie or pointer finger has to travel to the side for that column. It is also possible to decide to only use the main first parameter for all columns if desired.

Currently the author is using heavily curved main board and heavily curved thumb clusters with the thumb-bowl design with 6 thumb buttons. On a 4x6 layout, all columns have a first row key, while only three columns (middle finger, ring finger, and home column pinkie) have a last row key. For the 5x6 layout, the settings are the same except there is no first-row-key for the non-home pinkie column (when the pinkie finger has to reach sideways for keys in that column).

Previously the 40% size (set as 4x5) and the 60% size (set as 5x6) models by Tom Short implement the Manuform thumb cluster design. The 40% version has a bit more tenting than the Dactyl. The Heavy Curve model (set as 5x5) is for those who want a deep bowl design for the See the following model files for configurations that may be most common:

Features and Patches currently being worked on

Current ToDo

Setup & Assembly

Setting up the Clojure environment

Generating a 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 the above load-file command, OpenSCAD will watch for changes and rerender.
  • When done, use OpenSCAD to export STL files

Tips

Printing

Pre-generated STL files are available in the things/ directory. When a model is generated, it also generates a .scad model for a bottom plate. This can be exported to a DXF file in OpenSCAD. The things/ directory also has DXF files for the bottom plate. When laser cut, some of the inside cuts will need to be removed.

This model can be tricky to print, depending on your 3D printer.

Printing with PLA on a Makerbot: It's wide, so there were problems with edges warping. This can cause the printer to think its head is jammed. Even if it successfully prints, warping can cause problems. On one print, the RJ-9 holder was squished, requiring cutting down the connector to fit.

Printing with Shapeways or other professional shops: They probably won't have such difficulties.

Printing with PLA on a larger more robust 3D-printer: Higher quality PLA helps with fewer tangles or print errors. Larger print area means the print head doesn't have to go all the way to the edge.

Build Notes

For guidance from previous versions, see the instructions for wiring and general build for the original Dactyl and for Tom Short's Manuform.

Wiring

Here are materials I expect to use for wiring.

Following the traditional approach, the row connections can be made soldering the legs of the diodes. The columns can be wired with a bare wire, or insulated wire stripped at the connection points.

Imgur

The 3D printed part is the main keyboard. You can attach a bottom plate with screws. The case has holes for heat-set inserts designed to hold 3- to 6-mm long M3 screws. Then use wafer-head screws to connect a bottom plate. A bottom plate is technically optional, but can help clean things up and protect any dangling wires. You need something on the bottom to keep the keyboard from sliding around such as a rubber pad (or PlastiDip the bottom).

This is how the rows/columns wire to the keys and the ProMicro Wire Diagram

Alternative row-driven wiring diagram for ProMicro

NOTE: you also make sure the firmware is set up correctly (ex: change row pins with col pins)

Left Wire Diagram Left Wire Diagram

Firmware

Firmware goes hand in hand with how you wire the circuit. Some firmware options include:

  • Tom Short's adaptation of QMK firmware here. This allows each side to work separately or together, and shows connections for the Arduino Pro Micro controllers.
  • Keyboard firmware in Python here

Key Map Layout

Keyboard Layout Editor is useful for designing how you want to map your keys.

Layout Image

License

Copyright © 2015-2020 Matthew Adereth, Tom Short, Chris L Chapman

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.

About

A parameterized ergonomic keyboard. Significantly expanding what features are parameterized, such as options for the "thumb cluster", and accounting for a wider range of curvature options. This project also introduces different curve options for keys requiring a reach vs "home" keys. Of course this is all expanding on, and out of appreciation, o…

Resources

License

AGPL-3.0, Unknown licenses found

Licenses found

AGPL-3.0
LICENSE
Unknown
LICENSE-models

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7