eepyBoard/ergogen/config.yaml

218 lines
5.2 KiB
YAML

# Ergogen config for the eepyBoard
#
# 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 + 1.5mm clearance)
cx: 19
cy: 18
# Size of keycaps
kcx: 17.5
kcy: 16.5
# Size of key rectangle in demo view (keycap size)
$default_width: 17.5
$default_height: 16.5
# 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)
mods:
# Bottom letter row (Shift, ZXCV...)
bottom:
# Middle/home letter row (Caps Lock, ASDFG...)
home:
# Top letter row (Tab, QWERT...)
top:
# Number row (`, 12345...)
numbers:
# Key columns (from left to right)
columns:
# Left-most column (`, Tab, Caps Lock, Shift, Ctrl)
zero:
# First letter column (1, Q)
one:
# Second letter column (2, W)
two:
rows.mods.skip: true
# Third letter column (3, E)
three:
rows.mods.skip: true
# Fourth letter column (4, R)
four:
rows.mods.skip: true
# Fifth letter column (5, T)
five:
rows.mods.skip: true
# Sixth letter column (6, Y)
six:
rows.mods.skip: true
# Seventh letter column (7, U)
seven:
rows.mods.skip: true
# Eighth letter column (8, I)
eight:
rows.mods.skip: true
# Nineth letter column (9, O)
nine:
rows.mods.skip: true
# Tenth letter column (0, P)
ten:
rows.mods.skip: true
# Eleventh letter column (-, [)
eleven:
# Twelfth letter column (=, ])
twelve:
# Thumb fan
thumb:
# Position thumb keys based on the (non-existant) third key in the modifier row
anchor:
ref: primary_two_mods
shift: [ 2, 0 ]
# Rotate the thumb keys around the bottom-left corner of the key
key:
origin: [ -0.5cx, -0.5cy ]
splay: -4
# Define thumb keys
columns:
one:
two:
three:
four:
# Mirror the board with a distance of 1 key between the upper corners
mirror:
ref: primary_five_numbers
shift: [ 0.5cx, 0.5cx ]
distance: 1cx
# Extra row above the primary zone (including rotary encoder)
extra:
# Position extra row above primary zone with 3mm of vertical offset
anchor:
ref: primary_zero_numbers
shift: [ 0, cy + 3 ]
# Define extra keys
# (The "F" keys will likely be used for macros and other special functions, but can be mapped to specific F keys
# when needed.)
columns:
# Escape key
esc:
# Block of 4 extra keys with 6mm offset
f1:
key.spread: cx + 6
f2:
f3:
f4:
# Block of 4 extra keys with 6mm offset
f5:
key.spread: cx + 6
f6:
f7:
f8:
# Rotary encoder in the upper right corner, with offset to be centered between columns eleven/twelve
rotary:
key:
spread: 2.5cx + 7
width: 20.5
height: 20.5
tags: [ is_rotary_encoder ]
# 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: [ kcx, kcy ]
# Rotary encoder with knob (2cm)
rotary_encoder:
- what: rectangle
operation: stack
size: [ 14, 14 ]
- what: circle
operation: stack
radius: 10
# Outline for the PCB
board:
- what: polygon
points:
- ref: primary_zero_numbers
shift: [ -0.5cx, 1.5cy + 3 ]
- ref: primary_twelve_numbers
shift: [ 0.5cx, 1.5cy + 3 ]
- ref: primary_twelve_mods
shift: [ 0.5cx, -0.5cy ]
- ref: mirror_thumb_four
shift: [ 0.5cx, -0.5cy ]
- ref: thumb_four
shift: [ 0.5cx, -0.5cy ]
- ref: primary_zero_mods
shift: [ -0.5cx, -0.5cy ]
expand: 4
# Preview version of board with key caps and components for visualization
board_preview:
- board
- ^keys
# RP2040 controller board
- what: rectangle
operation: stack
where: primary_eleven_numbers
size: [ 54, 20 ]
adjust.shift: [ 0, cy + 3 ]
# Rotary encoder (component)
- what: outline
name: rotary_encoder
operation: stack
where: is_rotary_encoder
# Cutouts for the switches
switch_cutouts:
- what: rectangle
where: true
size: 14
# Board outline with switch cutouts
switch_plate:
- board
- -switch_cutouts