# Ergogen config for the protoEepyBoard # # Reference information: # - Keycap size (FK MBK keycaps): 17.5mm x 16.5mm # Metadata meta: # Required version of Ergogen engine: "4.1.0" # Version of the board version: "1.0" author: binaryDiv # Define units and default values used throughout this file units: # Redefine choc units (keycap size + 1mm clearance) cx: 18.5 cy: 17.5 # Size of key rectangle in demo view (keycap size) $default_width: cx-1 $default_height: cy-1 # Actual spacing of keys $default_spread: cx $default_padding: cy # Define the points (i.e. keys) points: key: # Tag all points as "is_key" unless overwritten tags: [ is_key ] zones: # Primary keyboard zone primary: # Set anchor to fix placement on KiCad sheet anchor: shift: [ 100, -150 ] # Key rows (from bottom to top) rows: # Modifier row (Ctrl, ..., but excluding the thumb keys) mod: row_net: P9 # Bottom letter row (Shift, Backspace, ZXCV...) bottom: row_net: P7 # Middle letter row (Esc, ASDFG...) home: row_net: P5 # Top letter row (Tab, QWERT...) top: row_net: P3 # Number row (`, 12345...) num: row_net: P1 # Key columns (from left to right) columns: # Left-most column (`, Tab, Esc, Shift, Ctrl) outer: key.column_net: P10 key.stagger: 0.25cy # First letter column (1, QA, ...) one: key.column_net: P8 key.stagger: 0.25cy # Second letter column (2, WSZ) two: key.column_net: P6 rows.mod.skip: true # Third letter column (3, EDX) three: key.column_net: P4 rows.mod.skip: true # Fourth letter column (4, RFC) four: key.column_net: P2 key.stagger: -0.25cy rows.mod.skip: true # Fifth letter column (5, TGV) five: key.column_net: P12 key.stagger: -0.25cy rows.mod.skip: true # Thumb fan thumb: # Position thumb keys based on the (non-existant) third key in the modifier row anchor: ref: primary_three_mod shift: [ -0.5cx, -0.25cy ] # Rotate the thumb keys around the bottom-left corner of the key key: row_net: P9 origin: [ -0.5cx, -0.5cy ] splay: -8 # Define thumb keys columns: one: key.column_net: P6 two: key.column_net: P4 three: key.column_net: P2 four: key.column_net: P12 # Generate outlines that can be used in the PCB and for 3D models outlines: # Outline of the key caps keys: - what: rectangle where: is_key size: [ cx - 1, cy - 1 ] # Outline for the PCB board: - what: polygon points: - ref: primary_outer_num shift: [ -0.5cx, 0.75cy ] - ref: primary_five_num shift: [ 0.5cx + 0, cy ] - ref: primary_five_bottom shift: [ 0.5cx + 0, -cy - 6 ] - ref: thumb_four shift: [ 0.5cx, 0.5cy ] - ref: thumb_four shift: [ 0.5cx, -0.5cy ] - ref: thumb_three shift: [ 0.5cx, -0.5cy ] - ref: thumb_two shift: [ 0.5cx, -0.5cy ] - ref: thumb_one shift: [ 0.5cx, -0.5cy ] - ref: thumb_one shift: [ -0.5cx, -0.5cy ] - ref: primary_one_mod shift: [ 0.5cx, -0.75cy ] - ref: primary_outer_mod shift: [ -0.5cx, -0.5cy ] expand: 4 # Preview version of board with key caps and components for visualization board_preview: - board - ^keys # Pin header - what: rectangle operation: stack where: primary_five_num size: [ 5.2, 15.4 ] adjust.rotate: 90 adjust.shift: [ 0cx, cy - 2 ] # Cutouts for the switches switch_cutouts: - what: rectangle where: is_key size: 14 # Board outline with switch cutouts switch_plate: - board - -switch_cutouts # Generate the PCB pcbs: protoeepyboard: outlines: main: outline: board footprints: choc_hotswap: what: choc_pretty where: is_key # Rotate footprint so that the hotswap socket is at the bottom and the LED can be at the top adjust.rotate: 180 params: keycaps: true reverse: true hotswap: true from: "{{column_net}}" to: "{{colrow}}" diode: what: diode_smd where: is_key adjust: shift: [ 0, 4.7 ] rotate: 180 params: side: B from: "{{colrow}}" to: "{{row_net}}" pin_header: what: pin_header_2x6 where: ref: primary_five_num rotate: 90 # The footprint's origin is on the first pin, so we need an offset of -6.35 / -1.27 (2.5 pins, 0.5 pins) to # center the footprint. shift: [ 0 - 6.35, cy - 2 - 1.27 ] # Mounting holes mounting_hole_top_left: what: mountinghole_m2 where: ref: primary_outer_num shift: [ 0cx, 0.5cy + 4 ] mounting_hole_top_right: what: mountinghole_m2 where: ref: primary_five_num shift: [ 0.5cx + 1.5, 0.5cy + 2 ] mounting_hole_bottom_left: what: mountinghole_m2 where: ref: primary_one_mod shift: [ -0.25cx, -0.5cy - 4 ] mounting_hole_bottom_right: what: mountinghole_m2 where: ref: primary_five_bottom shift: [ 0.25cx, -0.75cy - 2 ]