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: 'PG1316S.step', switch_3dmodel_xyz_offset: [-4.75, -6.25, -10.25], // [-5.45, 0, 3] for MX6C switch_3dmodel_xyz_rotation: [0,0,0], // [0, 0, -90] for MX6C switch_3dmodel_xyz_scale: [1, 1, 1], from: undefined, to: undefined, ground: undefined, }, body: p => { const keycap_xo = 0.5 * p.keycap_width const keycap_yo = 0.5 * p.keycap_height // Original elements let footprint = ` (footprint "ULP_HANDSOLDER" (version 20260313) (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.825 -3.0 ${p.r}) (size 1.3 1.85) (drill oval 1.3 1.85) (layers "*.Cu" "*.Mask")) (pad "" np_thru_hole oval (at 5.825 3.0 ${p.r}) (size 1.3 1.85) (drill oval 1.3 1.85) (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 -5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask") ${p.ground || ''}) (pad "3" smd rect (at -5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask") ${p.ground || ''}) (pad "3" smd rect (at 5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask") ${p.ground || ''}) (pad "3" smd rect (at 5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask") ${p.ground || ''}) `; // Add mirrored elements if reversible is true if (p.reversible) { footprint += ` (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 "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 -5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "B.Cu" "B.Mask") ${p.ground || ''}) (pad "3" smd rect (at -5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "B.Cu" "B.Mask") ${p.ground || ''}) (pad "3" smd rect (at 5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "B.Cu" "B.Mask") ${p.ground || ''}) (pad "3" smd rect (at 5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "B.Cu" "B.Mask") ${p.ground || ''}) (pad "" thru_hole circle (at -5.9 -5.4 ${p.r}) (size 1.05 1.05) (drill 0.6) (layers "*.Cu")) (pad "" thru_hole circle (at -5.9 5.4 ${p.r}) (size 1.05 1.05) (drill 0.6) (layers "*.Cu")) (pad "" thru_hole circle (at 5.9 -5.4 ${p.r}) (size 1.05 1.05) (drill 0.6) (layers "*.Cu")) (pad "" thru_hole circle (at 5.9 5.4 ${p.r}) (size 1.05 1.05) (drill 0.6) (layers "*.Cu")) `; } // Add 3D models if specified if (p.switch_3dmodel_filename) { footprint += ` (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]})) ) `; } footprint += ` ) `; return footprint; } }