From 826591789bf9ca6d1fb23389ca4417df7ef8fe84 Mon Sep 17 00:00:00 2001 From: tslil clingman Date: Fri, 13 Mar 2026 09:35:48 +0000 Subject: working on ULP version, v5 --- ergogen/footprints/mx6c_ulp.js | 130 +++++++++++++++++++++++++++++++++++++++++ ergogen/fpkb_v2.yaml | 118 +++++++++++++++++++++++++++++++++++++ ergogen/fpkb_v4.yaml | 118 +++++++++++++++++++++++++++++++++++++ ergogen/fpkb_v5.yaml | 116 ++++++++++++++++++++++++++++++++++++ 4 files changed, 482 insertions(+) create mode 100644 ergogen/footprints/mx6c_ulp.js create mode 100644 ergogen/fpkb_v2.yaml create mode 100644 ergogen/fpkb_v4.yaml create mode 100644 ergogen/fpkb_v5.yaml (limited to 'ergogen') diff --git a/ergogen/footprints/mx6c_ulp.js b/ergogen/footprints/mx6c_ulp.js new file mode 100644 index 0000000..5a2d789 --- /dev/null +++ b/ergogen/footprints/mx6c_ulp.js @@ -0,0 +1,130 @@ +module.exports = { + params: { + designator: 's', + side: 'f', + reversible: false, + hotswap: false, + include_silkscreen: true, + include_keycaps: true, + keycap_width: 17.5, + keycap_height: 16.5, + switch_3dmodel_filename: '', + switch_3dmodel_xyz_offset: [-5.5, 0, 3], + switch_3dmodel_xyz_rotation: [0, 0, -90], + switch_3dmodel_xyz_scale: [1, 1, 1], + keycap_3dmodel_filename: '', + keycap_3dmodel_xyz_offset: [-12.18, -14.8, 4], + keycap_3dmodel_xyz_rotation: [180, 0, 0], + keycap_3dmodel_xyz_scale: [1, 1, 1], + from: undefined, + to: undefined, + }, + body: p => { + const keycap_xo = 0.5 * p.keycap_width + const keycap_yo = 0.5 * p.keycap_height + + return ` + (footprint "Cherry_ULP_HANDSOLDER" (version 20221018) (generator pcbnew) + (layer "F.Cu") + ${p.at} + (attr smd) + (property "Reference" "${p.ref}" + (at -0.05 -7.5 ${p.r}) + (unlocked yes) + (layer "F.SilkS") + ${p.ref_hide} + (effects (font (size 1 1) (thickness 0.15))) + ) + (property "Value" "ULP_SW" + (at 0 0 ${p.r}) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (effects (font (size 1 1) (thickness 0.15))) + ) + ${p.include_silkscreen ? ` + (fp_poly + (pts + (xy -7.1 -6.4) (xy 7.1 -6.4) (xy 7.1 6.4) (xy -7.1 6.4) + ) + (stroke (width 0.1) (type solid)) + (fill no) + (layer "F.SilkS") + ) + ` : ''} + (fp_poly + (pts + (xy -6.8 -6.1) (xy 6.8 -6.1) (xy 6.8 6.1) (xy -6.8 6.1) + ) + (stroke (width 0.1) (type solid)) + (fill no) + (layer "F.CrtYd") + ) + ${p.include_keycaps ? ` + (fp_rect (start ${keycap_xo} ${keycap_yo}) (end ${-keycap_xo} ${-keycap_yo}) + (stroke (width 0.15) (type solid)) + (fill no) + (layer "Dwgs.User") + ) + ` : ''} + (fp_line (start -2.4 4.5) (end -2.4 3.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start -1.4 2.4) (end 2.6 2.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start 2.6 5.5) (end -1.4 5.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start 3.6 3.4) (end 3.6 4.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start -2.4 3.4) (mid -2.107107 2.692893) (end -1.4 2.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start -1.4 5.5) (mid -2.107107 5.207107) (end -2.4 4.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start 2.6 2.4) (mid 3.307107 2.692893) (end 3.6 3.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start 3.6 4.5) (mid 3.307108 5.207107) (end 2.6 5.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (pad "" np_thru_hole circle (at -5.8 1.2 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole circle (at -5.8 2.75 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole oval (at 5.8 -2.96 ${p.r}) (size 1.2 1.8) (drill oval 1.2 1.8) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole circle (at 5.8 3.26 ${p.r}) (size 1.2 1.2) (drill 1.2) (layers "*.Cu" "*.Mask")) + (pad "1" thru_hole circle (at -0.5 2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.from}) + (pad "2" thru_hole circle (at 1.8 2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.to}) + (pad "3" smd rect (at -6.4 -4.6 ${p.r}) (size 2.15 5) (layers "F.Cu" "F.Mask" "F.Paste")) + (pad "3" smd rect (at -6.4 5.3 ${p.r}) (size 2.15 3.2) (layers "F.Cu" "F.Mask" "F.Paste")) + (pad "3" smd rect (at 6.4 -5.75 ${p.r}) (size 2 2.7) (layers "F.Cu" "F.Mask" "F.Paste")) + (pad "3" smd rect (at 6.4 0 ${p.r}) (size 2 2.6) (layers "F.Cu" "F.Mask" "F.Paste")) + (pad "3" smd rect (at 6.4 5.75 ${p.r}) (size 2 2.3) (layers "F.Cu" "F.Mask" "F.Paste")) + ${p.switch_3dmodel_filename ? ` + (model ${p.switch_3dmodel_filename} + (offset (xyz ${p.switch_3dmodel_xyz_offset[0]} ${p.switch_3dmodel_xyz_offset[1]} ${p.switch_3dmodel_xyz_offset[2]})) + (scale (xyz ${p.switch_3dmodel_xyz_scale[0]} ${p.switch_3dmodel_xyz_scale[1]} ${p.switch_3dmodel_xyz_scale[2]})) + (rotate (xyz ${p.switch_3dmodel_xyz_rotation[0]} ${p.switch_3dmodel_xyz_rotation[1]} ${p.switch_3dmodel_xyz_rotation[2]})) + ) + ` : ''} + ${p.keycap_3dmodel_filename ? ` + (model ${p.keycap_3dmodel_filename} + (offset (xyz ${p.keycap_3dmodel_xyz_offset[0]} ${p.keycap_3dmodel_xyz_offset[1]} ${p.keycap_3dmodel_xyz_offset[2]})) + (scale (xyz ${p.keycap_3dmodel_xyz_scale[0]} ${p.keycap_3dmodel_xyz_scale[1]} ${p.keycap_3dmodel_xyz_scale[2]})) + (rotate (xyz ${p.keycap_3dmodel_xyz_rotation[0]} ${p.keycap_3dmodel_xyz_rotation[1]} ${p.keycap_3dmodel_xyz_rotation[2]})) + ) + ` : ''} + ) + ` + } +} diff --git a/ergogen/fpkb_v2.yaml b/ergogen/fpkb_v2.yaml new file mode 100644 index 0000000..0d8b7df --- /dev/null +++ b/ergogen/fpkb_v2.yaml @@ -0,0 +1,118 @@ +points: + zones: + matrix: + columns: + pinky: + rows.top.bind: [1, 4, 0, 1] + rows.home.bind: [0, 1, 0, 1] + rows.bottom.bind: [0, 1, 1, 1] + key.splay: 10 + ring: + key.stagger: 0.66cy + rows.top.bind: [1,4,0,1] + rows.home.bind: [0,3,0,2] + rows.bottom.bind: [0,1,1,1.5] + key.splay: -5 + key.spread: cx+1 + middle: + key.stagger: 0.25cy + rows.top.bind: [1,1,0,1] + rows.home.bind: [1,3,0,2] + rows.bottom.bind: [0,3,1,3] + key.splay: -5 + key.spread: cx+1 + index: + key.stagger: -0.25cy + rows.top.bind: [1,1,0,5] + rows.home.bind: [0,2,0,2] + rows.bottom.bind: [0,2,1,1] + key.splay: -5 + key.spread: cx+0.7 + inner: + key.stagger: -0.2cy + rows.top.bind: [1,2+1cx,0,1] + rows.home.bind: [0,2+1cx,0,0] + rows.bottom.bind: [0,2+1cx,1,1] + key.spread: cx + rows: + bottom.padding: cy + home.padding: cy + top.padding: cy + thumb: + anchor: + ref: matrix_inner_bottom + shift: [0cx, -1.5cy] + rotate: -10 + columns: + tucky: + key.name: thumb_tucky + rows.home.bind: [12,6,1,1] + reachy: + key.spread: 1.0cx + key.splay: -15 + key.origin: [-0.5cx, -0.5cy] + key.name: thumb_reachy + rows.home.bind: [1,1,1,1] +outlines: + raw: + - what: rectangle + where: true + bound: true + asym: left + size: [1cx, 1cy] + cutout: + - what: outline + name: raw + fillet: 1 +pcbs: + fpkb_v2: + outlines: + main: + outline: cutout + footprints: + switches: + what: choc + where: true + params: + from: "{{name}}" + to: GND + reverse: true + keycaps: true + hotswap: false + promicro: + what: promicro + where: + ref: matrix_inner_home + shift: [1cx+1.5, 0.5cy] + rotate: -90 + params: + P20: matrix_inner_top + P19: matrix_index_top + P18: matrix_middle_top + P15: matrix_ring_top + P14: matrix_pinky_top + P16: matrix_inner_home + P10: matrix_index_home + P1: matrix_middle_home + P0: matrix_ring_home + P2: matrix_pinky_home + P3: matrix_pinky_bottom + P4: matrix_ring_bottom + P5: matrix_middle_bottom + P7: matrix_inner_bottom + P6: matrix_index_bottom + P8: thumb_tucky + P9: thumb_reachy + trrs: + what: trrs + params: + A: GND + B: GND + C: P21 + D: VCC + reverse: true + symmetric: true + where: + ref: matrix_inner_bottom + shift: [1+1.5cx, -0.4cy] + rotate: -90 diff --git a/ergogen/fpkb_v4.yaml b/ergogen/fpkb_v4.yaml new file mode 100644 index 0000000..16c5144 --- /dev/null +++ b/ergogen/fpkb_v4.yaml @@ -0,0 +1,118 @@ +points: + zones: + matrix: + columns: + pinky: + rows.top.bind: [1, 4, 0, 1] + rows.home.bind: [0, 1, 0, 1] + rows.bottom.bind: [0, 1, 1, 1] + key.splay: 10 + ring: + key.stagger: 0.66u + rows.top.bind: [1,4,0,1] + rows.home.bind: [0,3,0,2] + rows.bottom.bind: [0,1,1,1.5] + key.splay: -5 + key.spread: u+1 + middle: + key.stagger: 0.25u + rows.top.bind: [1,1,0,1] + rows.home.bind: [1,3,0,2] + rows.bottom.bind: [0,3,1,3] + key.splay: -5 + key.spread: u+1 + index: + key.stagger: -0.25u + rows.top.bind: [1,1,0,5] + rows.home.bind: [0,2,0,2] + rows.bottom.bind: [0,2,1,1] + key.splay: -5 + key.spread: u+0.7 + inner: + key.stagger: -0.2u + rows.top.bind: [1,2+1u,0,1] + rows.home.bind: [0,2+1u,0,0] + rows.bottom.bind: [0,2+1u,1,1] + key.spread: u + rows: + bottom.padding: u + home.padding: u + top.padding: u + thumb: + anchor: + ref: matrix_inner_bottom + shift: [0u, -1.5u] + rotate: -10 + columns: + tucky: + key.name: thumb_tucky + rows.home.bind: [12,6,1,1] + reachy: + key.spread: 1.0u + key.splay: -15 + key.origin: [-0.5u, -0.5u] + key.name: thumb_reachy + rows.home.bind: [1,1,1,1] +outlines: + raw: + - what: rectangle + where: true + bound: true + asym: left + size: [1u, 1u] + cutout: + - what: outline + name: raw + fillet: 1 +pcbs: + fpkb_v4: + outlines: + main: + outline: cutout + footprints: + switches: + what: mx + where: true + params: + from: "{{name}}" + to: GND + reverse: true + keycaps: true + hotswap: false + promicro: + what: promicro + where: + ref: matrix_inner_home + shift: [1u+1.5, 0.5u] + rotate: -90 + params: + P20: matrix_inner_top + P19: matrix_index_top + P18: matrix_middle_top + P15: matrix_ring_top + P14: matrix_pinky_top + P16: matrix_inner_home + P10: matrix_index_home + P1: matrix_middle_home + P0: matrix_ring_home + P2: matrix_pinky_home + P3: matrix_pinky_bottom + P4: matrix_ring_bottom + P5: matrix_middle_bottom + P7: matrix_inner_bottom + P6: matrix_index_bottom + P8: thumb_tucky + P9: thumb_reachy + trrs: + what: trrs + params: + A: GND + B: GND + C: P21 + D: VCC + reverse: true + symmetric: true + where: + ref: matrix_inner_bottom + shift: [1+1.5u, -0.4u] + rotate: -90 diff --git a/ergogen/fpkb_v5.yaml b/ergogen/fpkb_v5.yaml new file mode 100644 index 0000000..ab71090 --- /dev/null +++ b/ergogen/fpkb_v5.yaml @@ -0,0 +1,116 @@ +points: + zones: + matrix: + columns: + pinky: + rows.top.bind: [1, 4, 0, 1] + rows.home.bind: [0, 1, 0, 1] + rows.bottom.bind: [0, 1, 1, 1] + key.splay: 10 + ring: + key.stagger: 0.66cy + rows.top.bind: [1,4,0,1] + rows.home.bind: [0,3,0,2] + rows.bottom.bind: [0,1,1,1.5] + key.splay: -5 + key.spread: cx+1 + middle: + key.stagger: 0.25cy + rows.top.bind: [1,1,0,1] + rows.home.bind: [1,3,0,2] + rows.bottom.bind: [0,3,1,3] + key.splay: -5 + key.spread: cx+1 + index: + key.stagger: -0.25cy + rows.top.bind: [1,1,0,5] + rows.home.bind: [0,2,0,2] + rows.bottom.bind: [0,2,1,1] + key.splay: -5 + key.spread: cx+0.7 + inner: + key.stagger: -0.2cy + rows.top.bind: [1,2+1cx,0,1] + rows.home.bind: [0,2+1cx,0,0] + rows.bottom.bind: [0,2+1cx,1,1] + key.spread: cx + rows: + bottom.padding: cy + home.padding: cy + top.padding: cy + thumb: + anchor: + ref: matrix_inner_bottom + shift: [0cx, -1.5cy] + rotate: -10 + columns: + tucky: + key.name: thumb_tucky + rows.home.bind: [12,6,1,1] + reachy: + key.spread: 1.0cx + key.splay: -15 + key.origin: [-0.5cx, -0.5cy] + key.name: thumb_reachy + rows.home.bind: [1,1,1,1] +outlines: + raw: + - what: rectangle + where: true + bound: true + asym: left + size: [1cx, 1cy] + cutout: + - what: outline + name: raw + fillet: 1 +pcbs: + fpkb_v5: + template: kicad8 + outlines: + main: + outline: cutout + footprints: + switches: + what: mx6c_ulp + where: true + params: + from: "{{name}}" + to: GND + promicro: + what: promicro + where: + ref: matrix_inner_home + shift: [1cx+1.5, 0.5cy] + rotate: -90 + params: + P20: matrix_inner_top + P19: matrix_index_top + P18: matrix_middle_top + P15: matrix_ring_top + P14: matrix_pinky_top + P16: matrix_inner_home + P10: matrix_index_home + P1: matrix_middle_home + P0: matrix_ring_home + P2: matrix_pinky_home + P3: matrix_pinky_bottom + P4: matrix_ring_bottom + P5: matrix_middle_bottom + P7: matrix_inner_bottom + P6: matrix_index_bottom + P8: thumb_tucky + P9: thumb_reachy + trrs: + what: trrs + params: + A: GND + B: GND + C: P21 + D: VCC + reverse: false + symmetric: true + where: + ref: matrix_inner_bottom + shift: [1+1.5cx, -0.4cy] + rotate: -90 -- cgit v1.3.1