protoEepyBoard/ergogen/config.yaml

240 lines
5.6 KiB
YAML

# 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 ]