diff --git a/src/dactyl_keyboard/dactyl.clj b/src/dactyl_keyboard/dactyl.clj index c01975e..25da24b 100644 --- a/src/dactyl_keyboard/dactyl.clj +++ b/src/dactyl_keyboard/dactyl.clj @@ -168,10 +168,14 @@ cap-top-height)) (def column-x-delta (+ -1 (- (* column-radius (Math/sin β))))) +(defn offset-for-column [col] + (cond + (= col lastcol) 20 + :else 0)) (defn apply-key-geometry [translate-fn rotate-x-fn rotate-y-fn column row shape] (let [column-angle (* β (- centercol column)) placed-shape (->> shape - (translate-fn [0 0 (- row-radius)]) + (translate-fn [(offset-for-column column) 0 (- row-radius)]) (rotate-x-fn (* α (- centerrow row))) (translate-fn [0 0 row-radius]) (translate-fn [0 0 (- column-radius)]) @@ -258,6 +262,12 @@ (def web-post-bl (translate [(+ (/ mount-width -2) post-adj) (+ (/ mount-height -2) post-adj) 0] web-post)) (def web-post-br (translate [(- (/ mount-width 2) post-adj) (+ (/ mount-height -2) post-adj) 0] web-post)) +; wide posts for 1.5u keys in the main cluster +(def wide-post-tr (translate [(- (/ mount-width 0.81) post-adj) (- (/ mount-height 2) post-adj) 0] web-post)) +(def wide-post-tl (translate [(+ (/ mount-width -0.81) post-adj) (- (/ mount-height 2) post-adj) 0] web-post)) +(def wide-post-bl (translate [(+ (/ mount-width -0.81) post-adj) (+ (/ mount-height -2) post-adj) 0] web-post)) +(def wide-post-br (translate [(- (/ mount-width 0.81) post-adj) (+ (/ mount-height -2) post-adj) 0] web-post)) + (defn triangle-hulls [& shapes] (apply union (map (partial apply hull) @@ -496,8 +506,8 @@ ; back wall (for [x (range 0 ncols)] (key-wall-brace x 0 0 1 web-post-tl x 0 0 1 web-post-tr)) (for [x (range 1 ncols)] (key-wall-brace x 0 0 1 web-post-tl (dec x) 0 0 1 web-post-tr)) - (key-wall-brace lastcol 0 0 1 web-post-tr lastcol 0 1 0 web-post-tr) ; right wall + (key-wall-brace lastcol 0 0 1 web-post-tr lastcol 0 1 0 web-post-tr) (for [y (range 0 lastrow)] (key-wall-brace lastcol y 1 0 web-post-tr lastcol y 1 0 web-post-br)) (for [y (range 1 lastrow)] (key-wall-brace lastcol (dec y) 1 0 web-post-br lastcol y 1 0 web-post-tr)) (key-wall-brace lastcol cornerrow 0 -1 web-post-br lastcol cornerrow 1 0 web-post-br) @@ -515,7 +525,6 @@ (wall-brace (partial key-place 0 0) 0 1 web-post-tl (partial left-key-place 0 1) 0 1 web-post) (wall-brace (partial left-key-place 0 1) 0 1 web-post (partial left-key-place 0 1) -1 0 web-post) ; front wall - (key-wall-brace lastcol 0 0 1 web-post-tr lastcol 0 1 0 web-post-tr) (key-wall-brace 3 lastrow 0 -1 web-post-bl 3 lastrow 0.5 -1 web-post-br) (key-wall-brace 3 lastrow 0.5 -1 web-post-br 4 cornerrow 0.5 -1 web-post-bl) (for [x (range 4 ncols)] (key-wall-brace x cornerrow 0 -1 web-post-bl x cornerrow 0 -1 web-post-br)) ; TODO fix extra wall