units: kx: cx ky: cy px: 2 py: 2 points: key: footprints: choc_hotswap: type: choc params: hotswap: true reverse: true keycaps: true nets: # from: P1 # to: P2 from: =colrow to: =column_net diode: type: diode nets: # from: P3 # to: P4 from: =colrow to: =row_net anchor: shift: [0, -5] zones: matrix: # anchor: # rotate: 5 key.padding: ky columns: pinky: stagger: 0 ky spread: kx key: column_net: P21 ring: stagger: 0.7 ky spread: kx key: column_net: P20 middle: stagger: 0.2 ky spread: kx key: column_net: P19 index: stagger: -0.2 ky spread: kx key: column_net: P18 inner: stagger: -0.1 ky spread: kx key: column_net: P15 rows: bottom: row_net: P7 home: row_net: P6 top: row_net: P5 thumbfan: anchor: ref: matrix_inner_bottom shift: [-1.5 kx, -1 ky] columns: near: spread: kx rotate: -15 origin: [-0.5 kx, -0.5 ky] key: column_net: P19 home: spread: kx rotate: -15 origin: [-0.5 kx, -0.5 ky] key: column_net: P18 far: spread: kx rotate: -15 origin: [-0.5 kx, -0.5 ky] key: column_net: P15 rows: thumb: row_net: P4 outlines: exports: raw: - type: keys side: left size: [kx + px, ky + py] corner: px thumbfan_glue: - type: polygon points: - ref: matrix_inner_bottom shift: [0.5 kx + 0.5px, -0.5 ky + 0.5 py] - ref: thumbfan_far_thumb shift: [0.5 kx - 0.5px, 0.5 ky + 0.5 py] - ref: thumbfan_far_thumb shift: [0.5 kx - 0.5px, -0.5 ky - 0.5 py] - ref: thumbfan_near_thumb shift: [-0.5 kx + 0.5 px, -0.5 ky - 0.5 py] - ref: matrix_pinky_bottom shift: [0.5 kx - 0.5 py, -0.5 ky - 0.5 py] - ref: matrix_pinky_home - ref: matrix_inner_home patch_outer: - type: polygon points: - ref: matrix_ring_top - ref: matrix_ring_bottom - ref: matrix_pinky_bottom shift: [-0.5 (kx + px), 0] - ref: matrix_pinky_top shift: [-0.5 (kx + px), 0] patch_inner: - type: polygon points: - ref: matrix_inner_top shift: [0.5 (kx + px), 0] - ref: matrix_inner_bottom shift: [0.5 (kx + px), 0] - ref: matrix_index_bottom - ref: matrix_index_top controller_area: main: type: rectangle anchor: ref: - matrix_inner_top shift: [0 kx, -4.05 ky] size: [32, 76.5] corner: px switches: main: type: keys side: left size: 14 bound: false keycaps: main: type: keys side: left size: [kx, ky] bound: false corner: 1 keywell: main: type: outline name: raw patch_inner: type: outline name: patch_inner operation: add patch_outer: type: outline name: patch_outer operation: add thumbfan_glue: type: outline name: thumbfan_glue operation: add base_outline: main: type: outline name: keywell controller: type: outline name: controller_area operation: add screw_holes: top_left: type: circle anchor: - ref: matrix_ring_home shift: [-0.5 kx, 0 ky] radius: 1 bottom_left: type: circle anchor: - ref: matrix_pinky_bottom shift: [0.5 kx, 0] radius: 1 top_right: type: circle anchor: - ref: matrix_inner_top shift: [-0.5 kx, 0] radius: 1 palm: type: circle anchor: - ref: matrix_index_bottom shift: [0, -1.06 ky] radius: 1 thumb: type: circle anchor: - ref: thumbfan_far_thumb shift: [-0.55 kx, 0] radius: 1 mounting_holes: $extends: outlines.exports.screw_holes top_left: radius: 1.6 bottom_left: radius: 1.6 top_right: radius: 1.6 palm: radius: 1.6 thumb: radius: 1.6 bottom_outline: main: type: outline name: base_outline screw_holes: type: outline name: screw_holes operation: subtract plate: main: type: outline name: keywell switches: type: outline name: switches operation: subtract mounting_holes: type: outline # TODO use mounting holes of bigger diameter on PCB name: screw_holes operation: subtract pcb: main: type: outline name: base_outline mounting_holes: type: outline name: mounting_holes operation: subtract pcbs: main: outlines: edge: outline: pcb layer: Edge.Cuts # TODO there's a way to add stuff to the silkscreen layer footprints: mcu_l: type: promicro params: orientation: up anchor: ref: - matrix_inner_top shift: [20, -11] rotate: 270 mcu_r: type: promicro params: orientation: down anchor: ref: - matrix_inner_top shift: [22.5, -12.25] rotate: 270 trrs: type: trrs anchor: ref: - matrix_inner_bottom shift: [30, -8] rotate: 270 params: reverse: true symmetric: true nets: A: P0 B: P0 C: GND D: VCC