This commit is contained in:
Hunter Praska 2020-05-03 12:51:32 -05:00
commit 1b450e5f67
No known key found for this signature in database
GPG key ID: 3C9EB5EA0CBC4417
5 changed files with 304 additions and 29 deletions

View file

@ -9,7 +9,8 @@ This is a fork of the [Dactyl-ManuForm](https://github.com/tshort/dactyl-keyboar
- If enabled, the rows which use 1.5u sized keys can be specified. - If enabled, the rows which use 1.5u sized keys can be specified.
- Toggle for an extra row of keys for the outer column(s). - Toggle for an extra row of keys for the outer column(s).
- Toggle for an extra inner column before the thumbcluster with (nrows-2) rows. - Toggle for an extra inner column before the thumbcluster with (nrows-2) rows.
- Toggle between using the default thumb cluster and mini thumb cluster designed by [l4u](https://github.com/l4u/dactyl-manuform-mini-keyboard). - Toggle between using the default thumb cluster, the mini thumb cluster designed by [l4u](https://github.com/l4u/dactyl-manuform-mini-keyboard), and a new thumb cluster.
- This new thumb cluster uses the same keycaps as the default, but is more compact. The thumb only has to move one position left or right from its neutral position to reach all the keys.
- Removable controller board / TRRS jack holder as a separate part. This holder is then friction fit into a cutout on the back wall of the case. Designed for common TRRS breakout boards. - Removable controller board / TRRS jack holder as a separate part. This holder is then friction fit into a cutout on the back wall of the case. Designed for common TRRS breakout boards.
- Models for both pro-micro and elite-c holders in the [things/](things/) directory. - Models for both pro-micro and elite-c holders in the [things/](things/) directory.

View file

@ -28,7 +28,7 @@
(def extra-row true) ; adds an extra bottom row to the outer columns (def extra-row true) ; adds an extra bottom row to the outer columns
(def inner-column true) ; adds an extra inner column (two less rows than nrows) (def inner-column true) ; adds an extra inner column (two less rows than nrows)
(def mini-thumb false) ; toggles between the default thumb cluster and mini thumb cluster (def thumb-style "new") ; toggles between "default", "mini", and "new" thumb cluster
(def column-style :standard) (def column-style :standard)
@ -668,6 +668,11 @@
(minithumb-1x-layout (sa-cap 1)) (minithumb-1x-layout (sa-cap 1))
(minithumb-15x-layout (rotate (/ π 2) [0 0 1] (sa-cap 1))))) (minithumb-15x-layout (rotate (/ π 2) [0 0 1] (sa-cap 1)))))
(def minithumbcaps-fill
(union
(minithumb-1x-layout keyhole-fill)
(minithumb-15x-layout (rotate (/ π 2) [0 0 1] keyhole-fill))))
(def minithumb (def minithumb
(union (union
(minithumb-1x-layout single-plate) (minithumb-1x-layout single-plate)
@ -765,9 +770,205 @@
(key-place (+ innercol-offset 3) lastrow web-post-tr) (key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) cornerrow web-post-br) (key-place (+ innercol-offset 3) cornerrow web-post-br)
(key-place (+ innercol-offset 4) cornerrow web-post-bl)))))) (key-place (+ innercol-offset 4) cornerrow web-post-bl))))))
;;;;;;;;;;;;;;;;
;; New Thumb ;;
;;;;;;;;;;;;;;;;
(if (true? mini-thumb) (def thumb-type minithumb) (def thumb-type thumb)) (defn newthumb-tl-place [shape]
(if (true? mini-thumb) (def thumb-connector-type minithumb-connectors) (def thumb-connector-type thumb-connectors)) (->> shape
(rotate (deg2rad 10) [1 0 0])
(rotate (deg2rad -24) [0 1 0])
(rotate (deg2rad 10) [0 0 1])
(translate thumborigin)
(translate [-13 -9.8 4])))
(defn newthumb-tr-place [shape]
(->> shape
(rotate (deg2rad 6) [1 0 0])
(rotate (deg2rad -24) [0 1 0])
(rotate (deg2rad 10) [0 0 1])
(translate thumborigin)
(translate [-7.5 -29.5 0])))
(defn newthumb-ml-place [shape]
(->> shape
(rotate (deg2rad 8) [1 0 0])
(rotate (deg2rad -31) [0 1 0])
(rotate (deg2rad 14) [0 0 1])
(translate thumborigin)
(translate [-30.5 -17 -6])))
(defn newthumb-mr-place [shape]
(->> shape
(rotate (deg2rad 4) [1 0 0])
(rotate (deg2rad -31) [0 1 0])
(rotate (deg2rad 14) [0 0 1])
(translate thumborigin)
(translate [-22.2 -41 -10.3])))
(defn newthumb-br-place [shape]
(->> shape
(rotate (deg2rad 2) [1 0 0])
(rotate (deg2rad -37) [0 1 0])
(rotate (deg2rad 18) [0 0 1])
(translate thumborigin)
(translate [-37 -46.4 -22])))
(defn newthumb-bl-place [shape]
(->> shape
(rotate (deg2rad 6) [1 0 0])
(rotate (deg2rad -37) [0 1 0])
(rotate (deg2rad 18) [0 0 1])
(translate thumborigin)
(translate [-47 -23 -19])))
(defn newthumb-1x-layout [shape]
(union
(newthumb-tr-place (rotate (/ π 2) [0 0 1] shape))
(newthumb-mr-place shape)
(newthumb-br-place shape)
(newthumb-tl-place (rotate (/ π 2) [0 0 1] shape))))
(defn newthumb-15x-layout [shape]
(union
(newthumb-bl-place shape)
(newthumb-ml-place shape)))
(def newthumbcaps
(union
(newthumb-1x-layout (sa-cap 1))
(newthumb-15x-layout (rotate (/ π 2) [0 0 1] (sa-cap 1.5)))))
(def newthumbcaps-fill
(union
(newthumb-1x-layout keyhole-fill)
(newthumb-15x-layout (rotate (/ π 2) [0 0 1] keyhole-fill))))
(def newthumb
(union
(newthumb-1x-layout single-plate)
(newthumb-15x-layout larger-plate-half)
(newthumb-15x-layout single-plate)))
(def newthumb-connectors
(union
(triangle-hulls ; top two
(newthumb-tl-place web-post-tl)
(newthumb-tl-place web-post-bl)
(newthumb-ml-place thumb-post-tr)
(newthumb-ml-place web-post-br))
(triangle-hulls
(newthumb-ml-place thumb-post-tl)
(newthumb-ml-place web-post-bl)
(newthumb-bl-place thumb-post-tr)
(newthumb-bl-place web-post-br))
(triangle-hulls ; bottom two
(newthumb-br-place web-post-tr)
(newthumb-br-place web-post-br)
(newthumb-mr-place web-post-tl)
(newthumb-mr-place web-post-bl))
(triangle-hulls
(newthumb-mr-place web-post-tr)
(newthumb-mr-place web-post-br)
(newthumb-tr-place web-post-tl)
(newthumb-tr-place web-post-bl))
(triangle-hulls
(newthumb-tr-place web-post-br)
(newthumb-tr-place web-post-bl)
(newthumb-mr-place web-post-br))
(triangle-hulls ; between top row and bottom row
(newthumb-br-place web-post-tl)
(newthumb-bl-place web-post-bl)
(newthumb-br-place web-post-tr)
(newthumb-bl-place web-post-br)
(newthumb-mr-place web-post-tl)
(newthumb-ml-place web-post-bl)
(newthumb-mr-place web-post-tr)
(newthumb-ml-place web-post-br)
(newthumb-tr-place web-post-tl)
(newthumb-tl-place web-post-bl)
(newthumb-tr-place web-post-tr)
(newthumb-tl-place web-post-br)
)
(triangle-hulls ; top two to the main keyboard, starting on the left
(newthumb-ml-place thumb-post-tl)
(key-place (+ innercol-offset 0) cornerrow web-post-bl)
(newthumb-ml-place thumb-post-tr)
(key-place (+ innercol-offset 0) cornerrow web-post-br)
(newthumb-tl-place web-post-tl)
(key-place (+ innercol-offset 1) cornerrow web-post-bl)
(newthumb-tl-place web-post-tr)
(key-place (+ innercol-offset 1) cornerrow web-post-br)
(key-place (+ innercol-offset 2) lastrow web-post-tl)
(key-place (+ innercol-offset 2) lastrow web-post-bl)
(newthumb-tl-place web-post-tr)
(key-place (+ innercol-offset 2) lastrow web-post-bl)
(newthumb-tl-place web-post-br)
(key-place (+ innercol-offset 2) lastrow web-post-br)
(key-place (+ innercol-offset 3) lastrow web-post-bl)
(newthumb-tl-place web-post-br)
(newthumb-tr-place web-post-tr))
(triangle-hulls
(key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) cornerrow web-post-br)
(key-place (+ innercol-offset 3) lastrow web-post-tl)
(key-place (+ innercol-offset 3) cornerrow web-post-bl))
(triangle-hulls
(key-place (+ innercol-offset 2) lastrow web-post-tr)
(key-place (+ innercol-offset 2) lastrow web-post-br)
(key-place (+ innercol-offset 3) cornerrow web-post-bl)
(key-place (+ innercol-offset 3) lastrow web-post-bl))
(triangle-hulls
(newthumb-tr-place web-post-br)
(newthumb-tr-place web-post-tr)
(key-place (+ innercol-offset 3) lastrow web-post-bl))
(triangle-hulls
(key-place (+ innercol-offset 1) cornerrow web-post-br)
(key-place (+ innercol-offset 2) lastrow web-post-tl)
(key-place (+ innercol-offset 2) cornerrow web-post-bl)
(key-place (+ innercol-offset 2) lastrow web-post-tr)
(key-place (+ innercol-offset 2) cornerrow web-post-br)
(key-place (+ innercol-offset 3) cornerrow web-post-bl))
(if (true? extra-row)
(union
(triangle-hulls
(key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) lastrow web-post-br)
(key-place (+ innercol-offset 4) lastrow web-post-tl)
(key-place (+ innercol-offset 4) lastrow web-post-bl))
(triangle-hulls
(key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) cornerrow web-post-br)
(key-place (+ innercol-offset 4) lastrow web-post-tl)
(key-place (+ innercol-offset 4) cornerrow web-post-bl)))
(union
(triangle-hulls
(key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) lastrow web-post-br)
(key-place (+ innercol-offset 4) cornerrow web-post-bl))
(triangle-hulls
(key-place (+ innercol-offset 3) lastrow web-post-tr)
(key-place (+ innercol-offset 3) cornerrow web-post-br)
(key-place (+ innercol-offset 4) cornerrow web-post-bl))))))
;switching connectors, switchplates, etc. depending on thumb-style used
(cond
(= thumb-style "default") (when true
(def thumb-type thumb)
(def thumb-connector-type thumb-connectors)
(def thumbcaps-type thumbcaps)
(def thumbcaps-fill-type thumbcaps-fill)))
(cond
(= thumb-style "new") (when true
(def thumb-type newthumb)
(def thumb-connector-type newthumb-connectors)
(def thumbcaps-type newthumbcaps)
(def thumbcaps-fill-type newthumbcaps-fill)))
(cond
(= thumb-style "mini") (when true
(def thumb-type minithumb)
(def thumb-connector-type minithumb-connectors)
(def thumbcaps-type minithumbcaps)
(def thumbcaps-fill-type minithumbcaps-fill)))
;;;;;;;;;; ;;;;;;;;;;
;; Case ;; ;; Case ;;
@ -858,6 +1059,71 @@
(key-wall-brace lastcol extra-cornerrow 0 -1 web-post-br lastcol extra-cornerrow 1 0 web-post-br) (key-wall-brace lastcol extra-cornerrow 0 -1 web-post-br lastcol extra-cornerrow 1 0 web-post-br)
))) )))
(def new-thumb-wall
(union
; thumb walls
(wall-brace newthumb-mr-place 0 -1 web-post-br newthumb-tr-place 0 -1 web-post-br)
(wall-brace newthumb-mr-place 0 -1 web-post-br newthumb-mr-place 0 -1 web-post-bl)
(wall-brace newthumb-br-place 0 -1 web-post-br newthumb-br-place 0 -1 web-post-bl)
(wall-brace newthumb-bl-place -0.3 1 thumb-post-tr newthumb-bl-place 0 1 thumb-post-tl)
(wall-brace newthumb-br-place -1 0 web-post-tl newthumb-br-place -1 0 web-post-bl)
(wall-brace newthumb-bl-place -1 0 thumb-post-tl newthumb-bl-place -1 0 web-post-bl)
; newthumb corners
(wall-brace newthumb-br-place -1 0 web-post-bl newthumb-br-place 0 -1 web-post-bl)
(wall-brace newthumb-bl-place -1 0 thumb-post-tl newthumb-bl-place 0 1 thumb-post-tl)
; newthumb tweeners
(wall-brace newthumb-mr-place 0 -1.15 web-post-bl newthumb-br-place 0 -1 web-post-br)
(wall-brace newthumb-bl-place -1 0 web-post-bl newthumb-br-place -1 0 web-post-tl)
(wall-brace newthumb-tr-place 0 -1 minithumb-post-br (partial key-place (+ innercol-offset 3) lastrow) 0 -1 web-post-bl)
; clunky bit on the top left newthumb connection (normal connectors don't work well)
(bottom-hull
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate2 -1 0) web-post))
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate3 -1 0) web-post))
(newthumb-bl-place (translate (wall-locate2 -0.3 1) thumb-post-tr))
(newthumb-bl-place (translate (wall-locate3 -0.3 1) thumb-post-tr)))
(hull
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate2 -1 0) web-post))
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate3 -1 0) web-post))
(newthumb-bl-place (translate (wall-locate2 -0.3 1) thumb-post-tr))
(newthumb-bl-place (translate (wall-locate3 -0.3 1) thumb-post-tr))
(newthumb-ml-place thumb-post-tl))
(hull
(left-key-place (- cornerrow innercol-offset) -1 web-post)
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate1 -1 0) web-post))
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate2 -1 0) web-post))
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate3 -1 0) web-post))
(newthumb-ml-place thumb-post-tl))
(hull
(left-key-place (- cornerrow innercol-offset) -1 web-post)
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate1 -1 0) web-post))
(key-place 0 (- cornerrow innercol-offset) web-post-bl)
(newthumb-ml-place thumb-post-tl))
(hull
(newthumb-bl-place thumb-post-tr)
(newthumb-bl-place (translate (wall-locate1 -0.3 1) thumb-post-tr))
(newthumb-bl-place (translate (wall-locate2 -0.3 1) thumb-post-tr))
(newthumb-bl-place (translate (wall-locate3 -0.3 1) thumb-post-tr))
(newthumb-ml-place thumb-post-tl))
; connectors below the inner column to the thumb & second column
(if (true? inner-column)
(union
(hull
(key-place 0 (dec cornerrow) web-post-bl)
(key-place 0 (dec cornerrow) web-post-br)
(key-place 0 cornerrow web-post-tr))
(hull
(key-place 0 cornerrow web-post-tr)
(key-place 1 cornerrow web-post-tl)
(key-place 1 cornerrow web-post-bl))
(hull
(key-place 0 (dec cornerrow) web-post-bl)
(key-place 0 cornerrow web-post-tr)
(key-place 1 cornerrow web-post-bl))
(hull
(key-place 0 (dec cornerrow) web-post-bl)
(key-place 1 cornerrow web-post-bl)
(newthumb-ml-place thumb-post-tl))))))
(def mini-thumb-wall (def mini-thumb-wall
(union (union
; thumb walls ; thumb walls
@ -963,7 +1229,7 @@
(left-key-place (- cornerrow innercol-offset) -1 web-post) (left-key-place (- cornerrow innercol-offset) -1 web-post)
(left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate1 -1 0) web-post)) (left-key-place (- cornerrow innercol-offset) -1 (translate (wall-locate1 -1 0) web-post))
(key-place 0 (- cornerrow innercol-offset) web-post-bl) (key-place 0 (- cornerrow innercol-offset) web-post-bl)
(key-place 0 (- cornerrow innercol-offset) (translate (wall-locate1 -1 0) web-post-bl)) (key-place 0 (- cornerrow innercol-offset) (translate (wall-locate1 0 0) web-post-bl))
(thumb-tl-place thumb-post-tl)) (thumb-tl-place thumb-post-tl))
; connectors below the inner column to the thumb & second column ; connectors below the inner column to the thumb & second column
(if (true? inner-column) (if (true? inner-column)
@ -990,8 +1256,19 @@
(thumb-ml-place (translate (wall-locate2 -0.3 1) web-post-tr)) (thumb-ml-place (translate (wall-locate2 -0.3 1) web-post-tr))
(thumb-ml-place (translate (wall-locate3 -0.3 1) web-post-tr)) (thumb-ml-place (translate (wall-locate3 -0.3 1) web-post-tr))
(thumb-tl-place thumb-post-tl)))) (thumb-tl-place thumb-post-tl))))
;switching walls depending on thumb-style used
(cond
(= thumb-style "default") (when true
(def thumb-wall-type default-thumb-wall)))
(if (true? mini-thumb) (def thumb-wall-type mini-thumb-wall) (def thumb-wall-type default-thumb-wall)) (cond
(= thumb-style "new") (when true
(def thumb-wall-type new-thumb-wall)))
(cond
(= thumb-style "mini") (when true
(def thumb-wall-type mini-thumb-wall)))
(def case-walls (def case-walls
(union (union
@ -1026,17 +1303,23 @@
(case nrows (case nrows
4 (def holder-offset -3.5) 4 (def holder-offset -3.5)
5 (def holder-offset 0) 5 (def holder-offset 0)
6 (def holder-offset 2.2) 6 (def holder-offset 3.2))
)
(if (and (false? inner-column) (= nrows 6)) (if (and (false? inner-column) (= nrows 6))
(def holder-offset (- holder-offset 1)) (def holder-offset (- holder-offset 1))
) )
(case nrows
4 (def notch-offset 3.15)
5 (def notch-offset 0)
6 (def notch-offset -5.07))
; Cutout for controller/trrs jack holder ; Cutout for controller/trrs jack holder
(def usb-holder-ref (key-position 0 0 (map - (wall-locate2 0 -1) [0 (/ mount-height 2) 0]))) (def usb-holder-ref (key-position 0 0 (map - (wall-locate2 0 -1) [0 (/ mount-height 2) 0])))
(def usb-holder-position (map + [(+ 18.8 holder-offset) 18.7 1.3] [(first usb-holder-ref) (second usb-holder-ref) 2])) (def usb-holder-position (map + [(+ 18.8 holder-offset) 18.7 1.3] [(first usb-holder-ref) (second usb-holder-ref) 2]))
(def usb-holder-cube (cube 28.666 30 12.6)) (def usb-holder-cube (cube 28.666 30 19.8))
(def usb-holder-space (translate (map + usb-holder-position [-1.5 (* -1 wall-thickness) 3]) usb-holder-cube)) (def usb-holder-space (translate (map + usb-holder-position [-1.5 (* -1 wall-thickness) 6.6]) usb-holder-cube))
(def usb-holder-notch (translate (map + usb-holder-position [-1.5 (+ 4.4 notch-offset) 6.6]) (cube 31.366 1.3 19.8)))
; Screw insert definition & position ; Screw insert definition & position
(defn screw-insert-shape [bottom-radius top-radius height] (defn screw-insert-shape [bottom-radius top-radius height]
@ -1057,12 +1340,12 @@
(->> (screw-insert-shape bottom-radius top-radius height) (->> (screw-insert-shape bottom-radius top-radius height)
(translate (map + offset [(first position) (second position) (/ height 2)]))))) (translate (map + offset [(first position) (second position) (/ height 2)])))))
(defn screw-insert-all-shapes [bottom-radius top-radius height] (defn screw-insert-all-shapes [bottom-radius top-radius height]
(union (screw-insert 0 0 bottom-radius top-radius height [7 6.5 0]) (union (screw-insert 0 0 bottom-radius top-radius height [7 6.5 0])
(screw-insert 0 lastrow bottom-radius top-radius height [9 -6.5 0]) (screw-insert 0 lastrow bottom-radius top-radius height [13 4 0])
(screw-insert lastcol lastrow bottom-radius top-radius height [7 14 0]) (screw-insert lastcol lastrow bottom-radius top-radius height [7 14 0])
(screw-insert lastcol 0 bottom-radius top-radius height [1 7 0]) (screw-insert lastcol 0 bottom-radius top-radius height [1 7 0])
(screw-insert 2 lastrow bottom-radius top-radius height [15 3.2 0]))) (screw-insert (+ 1 innercol-offset) lastrow bottom-radius top-radius height [13 -7 0])))
; Hole Depth Y: 4.4 ; Hole Depth Y: 4.4
(def screw-insert-height 4) (def screw-insert-height 4)
@ -1131,6 +1414,7 @@
(difference (union case-walls (difference (union case-walls
screw-insert-outers) screw-insert-outers)
usb-holder-space usb-holder-space
usb-holder-notch
screw-insert-holes)) screw-insert-holes))
(translate [0 0 -20] (cube 350 350 40)))) (translate [0 0 -20] (cube 350 350 40))))
@ -1141,19 +1425,9 @@
(write-scad (mirror [-1 0 0] model-right))) (write-scad (mirror [-1 0 0] model-right)))
(spit "things/right-test.scad" (spit "things/right-test.scad"
(write-scad (write-scad (union model-right
(union thumbcaps-type
key-holes caps)))
key-holes-inner
pinky-connectors
extra-connectors
connectors
inner-connectors
thumb
thumb-connectors
case-walls
thumbcaps
caps)))
(spit "things/right-plate.scad" (spit "things/right-plate.scad"
(write-scad (write-scad
@ -1168,10 +1442,10 @@
extra-connectors extra-connectors
connectors connectors
inner-connectors inner-connectors
thumb thumb-type
thumb-connectors thumb-connector-type
case-walls case-walls
thumbcaps-fill thumbcaps-fill-type
caps-fill caps-fill
screw-insert-outers) screw-insert-outers)
(translate [0 0 -10] screw-insert-screw-holes)))))) (translate [0 0 -10] screw-insert-screw-holes))))))

Binary file not shown.

BIN
things/shim.stl Normal file

Binary file not shown.