Giter Club home page Giter Club logo

dactyl-manuform's Introduction

The Dactyl-ManuForm Keyboard

This is a fork of the Dactyl, a parameterized, split-hand, concave, columnar, ergonomic keyboard.

Imgur

The main change is that the thumb cluster was adapted from the ManuForm keyboard (geekhack). The walls were changed to just drop to the floor. The keyboard is paramaterized to allow adjusting the following:

  • Rows: 4 - 6
  • Columns: 5 and up
  • Row curvature
  • Column curvature
  • Row tilt (tenting)
  • Column tilt
  • Column offsets
  • Height

I built a 4x5 version (40% size) for myself. The default has a bit more tenting than the Dactyl. See the following model files for configurations that may be most common:

Assembly

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

Printing

Pregenerated 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. It's wide, so I've had problems with PLA on a Makerbot 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, so I had to cut down my connector to fit.

If printed at Shapeways or other professional shops, I would not expect such problems.

Thingiverse

The 4x5 STL left/right pair from the things/ directory is in the thingiverse for public printing

Wiring

Here are materials I used for wiring.

I wired one half using the traditional approach of using the legs of a diode to form the row connections. (I'm not great at soldering, so this was challenging for me.) For this side, I used magnet wire to wire columns. That worked okay. The magnet wire is small enough, it wants to move around, and it's hard to tell if you have a good connection.

Imgur

For another half, I used stripboard for the row connections. This allowed me to presolder all of the diodes. Then, I hot-glued this in place and finished the soldering of the other diode ends. I like this approach quite a lot. Connections for the diodes were much easier with one end fixed down. On this half, I also used copper tape to connect columns. This worked a bit better than the magnet wire for me. For a future version, I may try just bare tinned copper wire for columns (something like #20). With the stripboard, it's pretty easy keeping row and column connections separate.

Imgur

Note that a telephone handset cable has leads that are reversed, so take this into account when connecting these leads to the controller.

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, I used wafer-head screws to connect a bottom plate. If wires aren't dangling, a bottom plate may not be needed. You need something on the bottom to keep the keyboard from sliding around. Without a plate, you could use a rubber pad, or you could dip the bottom of the keyboard in PlastiDip.

For more photos of the first complete wiring of v0.4, see Imgur.

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. I adapted the QMK firmware here. This allows each side to work separately or together. This site also shows connections for the Arduino Pro Micro controllers.

License

Copyright © 2015-2017 Matthew Adereth and Tom Short

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.

dactyl-manuform's People

Contributors

abstracthat avatar adereth avatar bruceme avatar dfc avatar mathias avatar mrusu91 avatar tshort avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dactyl-manuform's Issues

Build from docker

To reduce installation time and hassle, one can use docker to build the files likes this:

echo '(load-file "src/dactyl_keyboard/dactyl.clj")' | docker run -i -v $(pwd -P):/data -w /data clojure

Kailh incompatibility

A little warning for fellow builders planning to use Kailh switches: the side locking tabs are incompatible with Kailhs (those have no side notches matching them). A switch could be forced into position, but it will tend to jump out. Either remove the tabs from the model before printing or cut them with shears after (that was my case, discovered the problem after printing).
Other types of switches I’ve tested are Gateron and Everglide - both fits perfectly (they follow Cherry MX shape I guess).

Printing Service claims that halves would break

My local printing service claims that the STL files contain errors which would result in the halves breaking.
They also sent some images:
Fehler_in_STL
Fehler_in_STL_2

What is your opinion on this?
It's about the 5x6 variant from the things/ foler

Optional Trackball

Would it be possible to have a Trackball on the right thumb space? Like in the Split 58?

No scad file generated ..

Hello,

OS : Linux Debian 10
OpenJDK 11
Clojure 1.7
REPL 0.4.4

load-file returns this message but no openscad file is generated in the things folder

dactyl-keyboard.dactyl=> load-file "src/dactyl_keyboard/dactyl.clj"
#object[clojure.lang.RT$3 0x2d1e55e4 "clojure.lang.RT$3@2d1e55e4"]
"src/dactyl_keyboard/dactyl.clj"

Latency or delay

I'm interested in making one for myself, but does it have any significant latency whatsoever?

Variable commented out that are used in the code

This block:

;; Settings for column-style == :fixed
;; The defaults roughly match Maltron settings
;;   http://patentimages.storage.googleapis.com/EP0219944A2/imgf0002.png
;; Fixed-z overrides the z portion of the column ofsets above.
;; NOTE: THIS DOESN'T WORK QUITE LIKE I'D HOPED.
(def fixed-angles [(deg2rad 10) (deg2rad 10) 0 0 0 (deg2rad -15) (deg2rad -15)])
(def fixed-x [-41.5 -22.5 0 20.3 41.4 65.5 89.6])  ; relative to the middle finger
(def fixed-z [12.1    8.3 0  5   10.7 14.5 17.5])
(def fixed-tenting (deg2rad 0))

...is commented out in master, and have been since commit a4014a2. Without it, the code will not run to generate *.scad files.

Question about commercial use of the license

Dear dactyl manuform author,

I hope this message finds you well. My name is Antoni Bezak and I am a 14-year-old technology enthusiast with a particular interest in keyboard design and assembly.

Recently, I successfully built a keyboard based on the Dactyl Manuform design, which I found to be an incredibly rewarding and educational experience. I am writing to you because I am considering taking this project a step further.

Given the positive feedback I've received from those who have seen and used my keyboard, I am contemplating the idea of building more Dactyl Manuform keyboards and selling them. However, I am aware that your design is open-source and I want to respect any conditions or restrictions associated with its use.

Therefore, I would like to formally ask for your permission to use the Dactyl Manuform design in this manner. Would it be acceptable for me to build and sell keyboards based on your design? If so, are there any specific requirements or conditions that I need to adhere to?

I look forward to hearing from you and would like to express my gratitude for your contribution to the open-source community. Your work has not only provided me with a fantastic keyboard but also a valuable learning experience.

Best regards,
Antoni Bezak

types of switches

hello,
this project looks amazing! thanks for all the work! - i'm planning on making one!
i'd like to understand the compatibility with different switch manufacturers...
thinking of Cherry, Kailh, Gateron, ...
Could someone make a statement about what would fit?
or is it possible to customize the switch sockets (like explained here adereth/dactyl-keyboard#56 (comment)) ?

thanks for your insights

Unable to resolve symbol: fixed-tenting

When running echo '(load-file "src/dactyl_keyboard/dactyl.clj")' | docker run -i -v $(pwd -P):/data -w /data clojure it won't generate any files, the output im getting is:

Clojure 1.7.0
OpenJDK 64-Bit Server VM 11.0.10+9
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

dactyl-keyboard.dactyl=> (load-file "src/dactyl_keyboard/dactyl.clj")
WARNING: import already refers to: #'clojure.core/import in namespace: dactyl-keyboard.dactyl, being replaced by: #'scad-clj.model/import
WARNING: use already refers to: #'clojure.core/use in namespace: dactyl-keyboard.dactyl, being replaced by: #'scad-clj.model/use
CompilerException java.lang.RuntimeException: Unable to resolve symbol: fixed-tenting in this context, compiling:(/data/src/dactyl_keyboard/dactyl.clj:181:33)

dactyl-keyboard.dactyl=> Bye for now!

The commit leading to that output seems to be a4014a2

Adding leds makes one half urensponsive

So I made 6x6 manuform and it was challenging built (so far :P) and I want to add leds strips to each of halves. So I go vcc and gnd from pro micro (master) and on slave i got vcc and gnd from board after connecting rj9. RGB pin was set to d3 and then by me to d2. Overall leds are working on first half, on second one they are working but no key presses are "recorded". I tried lowering number of leds etc but nothing works.
In qmk I have set that I have 30 leds and 15 on each half. I set left to master, tried to carry out signal dOut but no luck. Without leds it works 100%.

Guide and Readme have different BOMs

Good afternoon, I am compiling all the materials I require for building this keyboard, however I have discovered the guide uses really different materials from the ones shown in the Readme.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.