Ergogen: Rework keyboard layout to an ortholinear one
This commit is contained in:
parent
db8e2af1ed
commit
ed1b4b7632
|
|
@ -14,3 +14,7 @@ Custom ergonomic mechanical keyboard with low-profile (Choc) switches.
|
|||
- [KiCad](https://www.kicad.org/)
|
||||
- [FreeCAD](https://www.freecad.org/)
|
||||
- [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/)
|
||||
|
||||
## Resources
|
||||
|
||||
- [FlatFootFox's Ergogen tutorial](https://flatfootfox.com/ergogen-introduction/)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,217 @@
|
|||
# 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
|
||||
|
|
@ -1,142 +0,0 @@
|
|||
# Ergogen config for the eepyBoard
|
||||
#
|
||||
# Reference information:
|
||||
# - Keycap size (FK MBK keycaps): 17.5mm x 16.5mm
|
||||
|
||||
# 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:
|
||||
zones:
|
||||
# Primary keyboard zone
|
||||
primary:
|
||||
# Key rows (from bottom to top)
|
||||
rows:
|
||||
# Modifier row (Ctrl, ..., but excluding the thumb keys)
|
||||
mod:
|
||||
# Bottom letter row (Shift, Backspace, ZXCV...)
|
||||
bottom:
|
||||
# Middle letter row (Esc, ASDFG...)
|
||||
home:
|
||||
# Top letter row (Tab, QWERT...)
|
||||
top:
|
||||
# Number row (`, 12345...)
|
||||
num:
|
||||
|
||||
# Key columns (from left to right)
|
||||
columns:
|
||||
# Left-most column (`, Tab, Esc, Shift, Ctrl)
|
||||
outer:
|
||||
key.stagger: 0.25cy
|
||||
|
||||
# First letter column (1, QA, ...)
|
||||
one:
|
||||
key.stagger: 0.25cy
|
||||
|
||||
# Second letter column (2, WSZ)
|
||||
two:
|
||||
rows.mod.skip: true
|
||||
|
||||
# Third letter column (3, EDX)
|
||||
three:
|
||||
rows.mod.skip: true
|
||||
|
||||
# Fourth letter column (4, RFC)
|
||||
four:
|
||||
rows.mod.skip: true
|
||||
key.stagger: -0.25cy
|
||||
|
||||
# Fifth letter column (5, TGV)
|
||||
five:
|
||||
rows.mod.skip: true
|
||||
key.stagger: -0.25cy
|
||||
|
||||
# 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:
|
||||
origin: [ -0.5cx, -0.5cy ]
|
||||
splay: -8
|
||||
|
||||
# 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_num
|
||||
shift: [ 0.5cx, 0.5cx ]
|
||||
distance: 1cx
|
||||
|
||||
# Slightly rotate each half of the keyboard
|
||||
rotate: -8
|
||||
|
||||
# Generate outlines that can be used in the PCB and for 3D models
|
||||
outlines:
|
||||
# Outline of the key caps (like the demo preview; used for debugging)
|
||||
_keys:
|
||||
- what: rectangle
|
||||
where: true
|
||||
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, 1.0cy ]
|
||||
- ref: mirror_primary_five_num
|
||||
shift: [ 0.5cx, 1.0cy ]
|
||||
- ref: mirror_primary_outer_num
|
||||
shift: [ -0.5cx, 0.75cy ]
|
||||
- ref: mirror_primary_outer_mod
|
||||
shift: [ -0.5cx, -0.5cy ]
|
||||
- ref: mirror_thumb_one
|
||||
shift: [ -0.5cx, -0.5cy ]
|
||||
- ref: mirror_thumb_four
|
||||
shift: [ 0.5cx, -0.5cy ]
|
||||
- ref: thumb_four
|
||||
shift: [ 0.5cx, -0.5cy ]
|
||||
- ref: thumb_one
|
||||
shift: [ -0.5cx, -0.5cy ]
|
||||
- ref: primary_outer_mod
|
||||
shift: [ -0.5cx, -0.5cy ]
|
||||
expand: 2
|
||||
|
||||
# Debug version of board with key caps for visualization
|
||||
board_debug:
|
||||
- board
|
||||
- ^_keys
|
||||
|
||||
# Cutouts for the switches
|
||||
switch_cutouts:
|
||||
- what: rectangle
|
||||
where: true
|
||||
size: 14
|
||||
|
||||
# Board outline with switch cutouts
|
||||
switch_plate:
|
||||
- board
|
||||
- -switch_cutouts
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
"": {
|
||||
"name": "eepyboard",
|
||||
"dependencies": {
|
||||
"ergogen": "4.0.5"
|
||||
"ergogen": "4.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
|
|
@ -148,9 +148,10 @@
|
|||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"node_modules/ergogen": {
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/ergogen/-/ergogen-4.0.5.tgz",
|
||||
"integrity": "sha512-vrIrMSNEWRpD6N0JpoJzNkZ4agXN+mbAQZ//G+1UdC8thGewlJxhJp2Oxs+pVXHULoVWWi/popPvgRmy8Jq/Zg==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ergogen/-/ergogen-4.1.0.tgz",
|
||||
"integrity": "sha512-m5mfbF87tdiBjEE/WsBrNKPm+4ZoYOA+ubPTyy5JVj8+DpDUh4lf/bhxkC/gXXcgJB7SLUmNeCtS9C2ttyzAFg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fs-extra": "^11.1.0",
|
||||
"js-yaml": "^3.14.1",
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "eepyboard",
|
||||
"author": "binaryDiv <eepyboard@binarydiv.dev>",
|
||||
"author": "binaryDiv <keyboards@binarydiv.dev>",
|
||||
"description": "Dependencies to generate files for the eepyBoard (not an actual node project).",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"ergogen": "ergogen -o ergogen/output ergogen/eepyboard.yml"
|
||||
"ergogen": "ergogen -o ergogen/output ergogen"
|
||||
},
|
||||
"dependencies": {
|
||||
"ergogen": "4.0.5"
|
||||
"ergogen": "4.1.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue