meta: engine: 4.0.4 name: samoklava version: 0.3 author: soundmonnster url: https://github.com/soundmonster/samoklava 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: =colrow to: =column_net diode: type: diode nets: from: =colrow to: =row_net anchor: shift: [0, -5] zones: matrix: key.padding: ky columns: pinky: key: stagger: 0 ky spread: kx column_net: col_pinky ring: key: stagger: 0.7 ky spread: kx column_net: col_ring middle: key: stagger: 0.2 ky spread: kx column_net: col_middle index: key: stagger: -0.2 ky spread: kx column_net: col_index inner: key: stagger: -0.1 ky spread: kx column_net: col_inner rows: bottom: row_net: row_bottom home: row_net: row_home top: row_net: row_top thumbfan: anchor: ref: matrix_inner_bottom shift: [-0.5 kx, -1 ky] columns: near: key: spread: kx splay: -15 origin: [-0.5 kx, -0.5 ky] column_net: col_middle home: key: spread: kx splay: -15 origin: [-0.5 kx, -0.5 ky] column_net: col_index far: key: spread: kx splay: -15 origin: [-0.5 kx, -0.5 ky] column_net: col_inner rows: thumb: row_net: row_thumb outlines: # board dimensions according to JLCPCB: 122.28 mm x 101.05 mm raw: - what: rectangle where: true asym: source size: [kx + px, ky + py] corner: px thumbfan_glue: - what: 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: - what: 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: - what: 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: - what: rectangle where: - ref: matrix_inner_top # re-tranalte to new anchor position shift: [32/2 + 0 kx, 76.5/2 - 4.05 ky] size: [32, 76.5] corner: px switches: - what: rectangle where: true asym: source size: 14 keycaps: - what: rectangle where: true asym: source size: [kx, ky] corner: 1 keywell: - "raw" - "+patch_inner" - "+patch_outer" - "+thumbfan_glue" base_outline: - "keywell" - "+controller_area" screw_holes: top_left: what: circle where: - ref: matrix_ring_home shift: [-0.5 kx, 0 ky] radius: 1.05 bottom_left: what: circle where: - ref: matrix_pinky_bottom shift: [0.5 kx, 0] radius: 1.05 top_right: what: circle where: - ref: matrix_inner_top shift: [-0.5 kx, 0] radius: 1.05 palm: what: circle where: - ref: matrix_index_bottom shift: [0, -1.06 ky] radius: 1.05 thumb: what: circle where: - ref: thumbfan_far_thumb shift: [-0.55 kx, 0] radius: 1.05 mounting_holes: $extends: outlines.screw_holes top_left: radius: 2.05 bottom_left: radius: 2.05 top_right: radius: 2.05 palm: radius: 2.05 thumb: radius: 2.05 bottom_outline: - "base_outline" # TODO use footprints with pad + via reinforcement as mounting holes - "-screw_holes" plate: - "keywell" - "-switches" - "-screw_holes" pcb: - "base_outline" # TODO use footprints with pad + via reinforcement as mounting holes - "-mounting_holes" pcbs: top_plate: outlines: edge: outline: plate layer: Edge.Cuts footprints: jlc_order_number: what: text where: ref: - matrix_ring_home shift: [-0.25 kx, 0.5 ky] params: text: "JLCJLCJLCJLC" justify: left bottom_plate: outlines: edge: outline: bottom_outline layer: Edge.Cuts board: outlines: edge: outline: pcb layer: Edge.Cuts footprints: choc_hotswap: what: choc where: - /matrix_.*/ - /thumbfan_.*/ params: hotswap: true reverse: true keycaps: true from: "{{colrow}}" to: "{{column_net}}" diode: what: diode where: - /matrix_.*/ - /thumbfan_.*/ adjust.shift: [0, -5] params: from: "{{colrow}}" to: "{{row_net}}" mcu_l: what: promicro where: ref: - matrix_inner_top shift: [20, -11] rotate: 270 params: orientation: up P4: row_top P5: row_home P6: row_bottom P7: row_thumb P14: col_inner P15: col_index P18: col_middle P19: col_ring P20: col_pinky mcu_r: what: promicro where: ref: - matrix_inner_top shift: [22.5, -12.25] rotate: 270 params: orientation: down pad_plus: what: pad where: ref: - matrix_inner_top shift: [23, -6] rotate: 0 params: front: true back: true width: 1.5 height: 1.5 text: "B+" net: Bplus pad_minus: what: pad where: ref: - matrix_inner_top shift: [23, -3] rotate: 0 params: front: true back: true width: 1.5 height: 1.5 text: "B-" net: GND trrs: what: trrs_tight where: ref: - matrix_inner_bottom shift: [32, -15] rotate: 270 params: reverse: true symmetric: false # The naming of the nets on this footprint is different from the Corne schematics. A: "" B: VCC C: GND D: P0 jumper_l: what: jumper where: ref: - matrix_inner_bottom shift: [23.5, 0] rotate: 270 params: side: B from: Bplus to: RAW jumper_r: what: jumper where: ref: - matrix_inner_bottom shift: [23.5, 0] rotate: 270 params: side: F from: Bplus to: RAW slider_l: what: slider_threeway where: ref: - matrix_inner_bottom shift: [30, 0] rotate: 270 params: side: F from: RAW left: Bplus right: '' slider_r: what: slider_threeway where: ref: - matrix_inner_bottom shift: [30, 0] rotate: 270 params: side: B from: RAW left: '' right: Bplus reset: what: reset_button where: ref: - matrix_inner_bottom shift: [17, 0] rotate: 270 params: from: GND to: RST info_l: what: text where: ref: - matrix_pinky_bottom shift: [0.75 kx, 0] params: text: "samoklava v0.3\\nby soundmonster" justify: left info_r: what: text where: ref: - matrix_pinky_bottom shift: [0.75 kx, 0] params: layer: B.SilkS text: "samoklava v0.3\\nby soundmonster" justify: right mirror