units: # Proxy Spacing Variables kx: U ky: U # Padding Variables px: kx + 4 py: ky + 4 screwSize: 1 points: zones: matrix: anchor: shift: [100, -100] columns: outer: key: column_net: P020 pinky: key.stagger: 0 key: column_net: P022 ring: key: stagger: 5 column_net: P024 middle: key: stagger: 8 column_net: P100 index: key: stagger: -5 column_net: P011 inner: key: stagger: -3 column_net: P104 rows: bottom: key: column_net: P010 home: key: column_net: P111 top: key: column_net: P113 num: # 4th row key: column_net: P115 # The 5-key Thumb Arc thumbs: # Anchoring the thumbs relative to the 'index' column, 'bottom' row anchor: - ref: matrix_index_bottom shift: [-19, -19] # Move slightly right and down from index columns: # First key (tucked under the middle finger area) tuck: key.rotate: 0 key.shift: [0, 0] key.name: thumb_tuck key.column_net: P024 # Second key (the "Home" thumb key) reach: key.rotate: -5 key.shift: [1, -5] key.name: thumb_reach key.column_net: P100 # Third key (Middle of arc) middle: key.rotate: -10 key.shift: [2, -10] key.name: thumb_middle key.column_net: P011 # Fourth key (Moving outward) stretch: key.tags: 1.25cap key.width: 1.25u key.rotate: -115 key.shift: [6, -14] key.name: thumb_stretch key.column_net: P104 rows: cluster: row_net: P009 mirror: ref: matrix_inner_num # The "anchor" point for the mirror distance: 90 outlines: raw: - what: rectangle where: true size: [px, py] fillet: 2 keys: - what: rectangle where: true bound: false size: [kx-0.5,ky-0.5] - what: rectangle where: [1.25cap] size: [ky*1.25-0.5,ky-0.5] _boardL: - what: polygon operation: stack points: - ref: matrix_outer_num shift: [-0.5px, 0.5py] - ref: matrix_ring_num shift: [-0.5px, 0.5py] - ref: matrix_middle_num shift: [-0.5px, +0.5py] - ref: matrix_middle_num shift: [+0.5px, +0.5py] - ref: matrix_index_num shift: [0.5px, 0.5py] - ref: matrix_inner_num shift: [0.5px, 0.5py] - ref: matrix_inner_num shift: [1.5px, 0.5py] # Extending out for the MCU - ref: matrix_inner_bottom shift: [1.5px, -0.5py] - ref: thumb_stretch shift: [-0.625px, +0.5py] - ref: thumb_stretch shift: [0.625px, +0.5py] - ref: thumb_tuck shift: [-0.5px, -0.5py] - ref: matrix_pinky_bottom shift: [1py, -0.5py] - ref: matrix_outer_bottom shift: [-0.5px, -0.5py] fillet: 2 _boardR: - what: polygon operation: stack points: - ref: mirror_matrix_outer_num shift: [-0.5px, 0.5py] - ref: mirror_matrix_middle_num shift: [-0.5px, +0.5py] - ref: mirror_matrix_middle_num shift: [+0.5px, +0.5py] - ref: mirror_matrix_inner_num shift: [1.5px, 0.5py] # Extending out for the MCU - ref: mirror_thumb_stretch shift: [-0.625px, +0.5py] - ref: mirror_thumb_stretch shift: [0.625px, +0.5py] - ref: mirror_thumb_tuck shift: [-0.5px, -0.5py] - ref: mirror_matrix_outer_bottom shift: [-0.5px, -0.5py] fillet: 2 combo: - name: _boardL - operation: stack name: keys - name: _boardR - operation: stack name: keys pcbs: left_side: outlines: main: outline: _boardL footprints: # 1. MX Switches mx_hotswap: what: mx where: true params: keycaps: true reverse: false hotswap: true from: "{{col_net}}" to: "{{colrow}}" # 2. Diodes (Placed slightly above/below the switch) diodes: what: diode where: true params: from: "{{colrow}}" to: "{{row_net}}" adjust: shift: [0, -5] # 3. Exposed nice!nano nice_nano: what: nice_nano where: ref: matrix_inner_num shift: [kx/2+18/2+1.6,ky/2-36/2] rotate: 270 # 4. Power Switch (Hidden on the back or next to MCU) power: what: slider params: side: B from: pos to: RAW where: ref: matrix_inner_home shift: [1.5px-2,0] rotate: -90 # 5. Reset Button reset: what: button params: from: "{{colrow}}" to: "{{row_net}}" #6. BatteryJack jstph: what: jstph where: ref: matrix_inner_home shift: [kx/2,ky/2] rotate: 90 params: side: B pos: pos neg: GND #7. Holes holeTopLeft: what: mountinghole where: ref: [matrix_outer_num] shift: [kx/2, -ky/2] holeTopRight: what: mountinghole where: ref: [matrix_middle_num] shift: [kx/2, -ky/2] holeBottom: what: mountinghole where: ref: [thumb_tuck] shift: [0, ky/2] holeRight: what: mountinghole where: ref: [matrix_index_home] shift: [kx/2,ky/2] cases: