From fdb6531f7427820cefc97c7941fc134fc8a8e251 Mon Sep 17 00:00:00 2001 From: Emily Zeng Date: Sat, 11 Nov 2023 13:33:24 -0500 Subject: [PATCH] added gateron switches --- config.yaml | 84 +++++++++++++------- footprints/key-switches.js | 152 ++++++++++++++++++++++++++++--------- 2 files changed, 175 insertions(+), 61 deletions(-) diff --git a/config.yaml b/config.yaml index d3bf06d..27efb2b 100644 --- a/config.yaml +++ b/config.yaml @@ -6,29 +6,29 @@ units: # Padding Variables px: kx + 1 py: ky + 1 - center_x: 118 + center_x: 118.34 center_y: -121 # Defaults to M2 Screws screwSize: 1.5 standoffSize: 2.5 # 65.9, 81 - mounting_1_x: center_x-46.75 - mounting_1_y: center_y+46 + mounting_1_x: center_x-47 + mounting_1_y: center_y+47 # 146.65, 81 mounting_2_x: center_x+34 - mounting_2_y: center_y+46 + mounting_2_y: center_y+47 # 158.5, 146 mm - mounting_3_x: center_x+45.85 + mounting_3_x: center_x+47 mounting_3_y: center_y-19 # 125.65, 172 mounting_4_x: center_x+13 - mounting_4_y: center_y-45 + mounting_4_y: center_y-47 # 102.65, 142 mounting_5_x: center_x-20 mounting_5_y: center_y-13 # 65.9, 138 - mounting_6_x: center_x-46.75 - mounting_6_y: center_y-13 + mounting_6_x: center_x-47 + mounting_6_y: center_y-47 points: zones: matrix: @@ -41,17 +41,17 @@ points: columns: pinky: rows.bottom: - rotate: 90 - rows.home: rotate: -90 - shift: [1kx, -1kx] + rows.home: + rotate: 90 + shift: [-1kx, -1kx] ring.key: stagger: 0.25kx middle.key.stagger: 0.25kx index.key.stagger: -0.25kx inner: key.stagger: -0.15kx - rows.top.rotate: -90 + rows.top.rotate: 90 rows: bottom.padding: kx home.padding: kx @@ -336,9 +336,13 @@ cases: operation: add pcbs: board: - outlines.edge: - outline: pcb_outline - layer: Edge.Cuts + outlines: + edge: + outline: pcb_outline + layer: Edge.Cuts + control_area: + outline: control_area + layer: Dwgs.User footprints: keys: what: key-switches @@ -349,14 +353,19 @@ pcbs: mx: true mx_hotswap: true mx_reverse: true - choc: true - choc_hotswap: true - choc_reverse: true + mx_pth: false + mx_rev_pad: true + gateron_lp: true + gateron_lp_hotswap: true + gateron_lp_reverse: true + gateron_lp_pth: false + gateron_lp_rev_pad: true + gateron_lp_neg_y: true keycaps: true mcu: what: promicro-pretty where: - shift: [center_x - 34.8, center_y - 32.25] + shift: [center_x - 32.8, center_y - 32.25] rotate: 90 params: P7: matrix_pinky_top @@ -391,7 +400,7 @@ pcbs: reset: what: reset_button where: - shift: [center_x - 10, center_y - 48] + shift: [center_x - 8, center_y - 48] rotate: 180 params: from: GND @@ -399,7 +408,7 @@ pcbs: reset2: what: b3u1000p where: - shift: [center_x - 10, center_y - 48] + shift: [center_x - 8, center_y - 48] rotate: 180 params: r1: GND @@ -407,7 +416,7 @@ pcbs: slider_power: what: slider_threeway where: - shift: [center_x - 20.15, center_y - 48.5] + shift: [center_x - 18.15, center_y - 48.5] rotate: 180 params: from: Bplus @@ -415,11 +424,12 @@ pcbs: right: RAW reversible: true # if the switch is verticle, reverse the left and right nets on back side - reverse_left_right: false + # or to just make the wiring easier + reverse_left_right: true slider_wireless: what: slider_threeway where: - shift: [center_x-12, center_y - 40] + shift: [center_x-10, center_y - 40] rotate: -90 params: from: P0 @@ -431,27 +441,47 @@ pcbs: wireless_marker: what: text where: - shift: [center_x-15.2, center_y - 38] + shift: [center_x-13.2, center_y - 38] rotate: 90 params: layer: "F.SilkS" text: "wireless" h_size: .5 v_size: .5 + wireless_box: + what: text + where: + shift: [center_x-12, center_y - 38.4] + rotate: 90 + params: + layer: "F.SilkS" + text: "口" + h_size: 1.5 + v_size: 2.2 wired_marker: what: text where: - shift: [center_x-15.2, center_y - 42] + shift: [center_x-13.2, center_y - 42] rotate: 90 params: layer: "B.SilkS" text: "wired" h_size: .5 v_size: .5 + wired_box: + what: text + where: + shift: [center_x-12, center_y - 41.5] + rotate: 90 + params: + layer: "B.SilkS" + text: "口" + h_size: 1.5 + v_size: 2.2 jst: what: jstph_reversible where: - shift: [center_x-20, center_y-42] + shift: [center_x-18, center_y-42] rotate: 180 params: pos: Bplus diff --git a/footprints/key-switches.js b/footprints/key-switches.js index 1632778..4e00389 100644 --- a/footprints/key-switches.js +++ b/footprints/key-switches.js @@ -14,15 +14,29 @@ module.exports = { params: { - designator: 'S', + designator: 'SW', + + mx_spacing: true, + mx: true, mx_hotswap: false, mx_reverse: false, mx_pth: false, + mx_rev_pad: false, + mx_neg_y: false, + choc: false, choc_hotswap: false, choc_reverse: false, choc_pth: false, + choc_neg_y: true, + + gateron_lp: false, + gateron_lp_hotswap: false, + gateron_lp_reverse: false, + gateron_lp_pth: false, + gateron_lp_rev_pad: false, + gateron_lp_neg_y: true, keycaps: false, from: undefined, @@ -69,6 +83,11 @@ module.exports = { (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) ` + const gateron_lp_shaft = ` + ${''/* middle shaft */} + (pad "" np_thru_hole circle (at 0 0) (size 5.25 5.25) (drill 5.25) (layers *.Cu *.Mask)) + ` + const choc_shaft = ` ${''/* middle shaft */} (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) @@ -97,73 +116,124 @@ module.exports = { let pad_2 = '2' let pad_1_net = p.from.str let pad_2_net = p.to.str - if (p.mx_pth){ + const y_neg_sign = p.mx_neg_y ? '-' : '' + + if (p.mx_pth | p.mx_rev_pad){ pad_1 = (def_side == 'B') ? '1' : '2' pad_2 = (def_side == 'B') ? '2' : '1' pad_1_net = (def_side == 'B') ? p.from.str : p.to.str pad_2_net = (def_side == 'B') ? p.to.str : p.from.str + } + if (p.mx_pth){ return ` ${'' /* holes */} - (pad ${pad_1} thru_hole circle (at ${def_pos}2.54 5.08) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_1_net}) - (pad ${pad_2} thru_hole circle (at ${def_neg}3.81 2.54) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_2_net}) + (pad ${pad_1} thru_hole circle (at ${def_pos}2.54 ${y_neg_sign}5.08) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_1_net}) + (pad ${pad_2} thru_hole circle (at ${def_neg}3.81 ${y_neg_sign}2.54) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_2_net}) ${'' /* net pads */} - (pad ${pad_2} smd rect (at ${def_neg}7.085 2.54 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) - (pad ${pad_1} smd rect (at ${def_pos}5.842 5.08 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + (pad ${pad_2} smd rect (at ${def_neg}7.085 ${y_neg_sign}2.54 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}5.842 ${y_neg_sign}5.08 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) ${'' /* net pads to connect to holes */} - (pad ${pad_2} smd rect (at ${def_neg}6 2.54 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) - (pad ${pad_1} smd rect (at ${def_pos}4.5 5.08 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + (pad ${pad_2} smd rect (at ${def_neg}6 ${y_neg_sign}2.54 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}4.5 ${y_neg_sign}5.08 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) ` } else if (p.mx_hotswap) { return ` ${'' /* holes */} - (pad "" np_thru_hole circle (at ${def_pos}2.54 5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at ${def_neg}3.81 2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_pos}2.54 ${y_neg_sign}5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_neg}3.81 ${y_neg_sign}2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad ${pad_2} smd rect (at ${def_neg}7.085 2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) - (pad ${pad_1} smd rect (at ${def_pos}5.842 5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + (pad ${pad_2} smd rect (at ${def_neg}7.085 ${y_neg_sign}2.54 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}5.842 ${y_neg_sign}5.08 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) ` } else { return ` ${''/* pins */} - (pad ${pad_2} thru_hole circle (at ${def_pos}2.54 5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_2_net}) - (pad ${pad_1} thru_hole circle (at ${def_neg}3.81 2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_1_net}) + (pad ${pad_2} thru_hole circle (at ${def_pos}2.54 ${y_neg_sign}5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_2_net}) + (pad ${pad_1} thru_hole circle (at ${def_neg}3.81 ${y_neg_sign}2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_1_net}) ` } } function choc_pins(def_neg, def_pos, def_side) { + const y_neg_sign = p.choc_pins_neg_y ? '-' : '' if (p.choc_pth){ return ` ${'' /* holes */} - (pad "" np_thru_hole circle (at ${def_pos}5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad 1 thru_hole circle (at 0 -5.95) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${p.from.str}) + (pad "" np_thru_hole circle (at ${def_pos}5 ${y_neg_sign}3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad 1 thru_hole circle (at 0 ${y_neg_sign}5.95) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${p.from.str}) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}2.8 -5.95 ${p.rot}) (size 1.7 1.8) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2 2) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) + (pad 1 smd rect (at ${def_neg}2.8 ${y_neg_sign}5.95 ${p.rot}) (size 1.7 1.8) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}8.275 ${y_neg_sign}3.75 ${p.rot}) (size 2 2) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ${'' /* net pads to connect to holes */} - (pad 1 smd rect (at ${def_neg}2 -5.95 ${p.rot}) (size 2 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${def_pos}7 -3.75 ${p.rot}) (size 2 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) + (pad 1 smd rect (at ${def_neg}2 ${y_neg_sign}5.95 ${p.rot}) (size 2 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}7 ${y_neg_sign}3.75 ${p.rot}) (size 2 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else if (p.choc_hotswap) { return ` ${'' /* holes */} - (pad "" np_thru_hole circle (at ${def_pos}5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_pos}5 ${y_neg_sign}3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at 0 ${y_neg_sign}5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) + (pad 1 smd rect (at ${def_neg}3.275 ${y_neg_sign}5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from.str}) + (pad 2 smd rect (at ${def_pos}8.275 ${y_neg_sign}3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str}) - (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str}) + (pad 1 thru_hole circle (at ${def_pos}5 ${y_neg_sign}3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str}) + (pad 2 thru_hole circle (at ${def_pos}0 ${y_neg_sign}5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str}) + ` + } + } + + function gateron_lp_pins(def_neg, def_pos, def_side) { + let pad_1 = '1' + let pad_2 = '2' + let pad_1_net = p.from.str + let pad_2_net = p.to.str + const y_neg_sign = p.gateron_lp_neg_y ? '-' : '' + + if (p.gateron_lp_pth | p.gateron_lp_rev_pad){ + pad_1 = (def_side == 'B') ? '1' : '2' + pad_2 = (def_side == 'B') ? '2' : '1' + pad_1_net = (def_side == 'B') ? p.from.str : p.to.str + pad_2_net = (def_side == 'B') ? p.to.str : p.from.str + } + if (p.gateron_lp_pth){ + return ` + ${'' /* holes */} + (pad ${pad_1} thru_hole circle (at ${def_pos}2.6 ${y_neg_sign}5.57) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_1_net}) + (pad ${pad_2} thru_hole circle (at ${def_neg}4.4 ${y_neg_sign}4.70) (size 3.6 3.6) (drill 3) (layers *.Cu *.Mask) ${pad_2_net}) + + ${'' /* net pads */} + (pad ${pad_2} smd rect (at ${def_neg}8.075 ${y_neg_sign}4.70 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}6.275 ${y_neg_sign}5.75 ${p.rot}) (size 2.5 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + ${'' /* net pads to connect to holes */} + (pad ${pad_2} smd rect (at ${def_neg}4.475 ${y_neg_sign}4.70 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}6.350 ${y_neg_sign}5.75 ${p.rot}) (size 3 1) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + ` + } + else if (p.gateron_lp_hotswap) { + return ` + ${'' /* holes */} + (pad "" np_thru_hole circle (at ${def_pos}2.6 ${y_neg_sign}5.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_neg}4.4 ${y_neg_sign}4.70) (size 3 3) (drill 3) (layers *.Cu *.Mask)) + + ${'' /* net pads */} + (pad ${pad_2} smd rect (at ${def_neg}8.075 ${y_neg_sign}4.70 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_2_net}) + (pad ${pad_1} smd rect (at ${def_pos}6.275 ${y_neg_sign}5.75 ${p.rot}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${pad_1_net}) + ` + } else { + return ` + ${''/* pins */} + (pad ${pad_2} thru_hole circle (at ${def_pos}2.6 ${y_neg_sign}5.75) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_2_net}) + (pad ${pad_1} thru_hole circle (at ${def_neg}4.4 ${y_neg_sign}4.70) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${pad_1_net}) ` } } @@ -171,10 +241,21 @@ module.exports = { let return_val = `${standard}` - if (p.mx){ + if (p.mx | p.mx_spacing){ return_val += ` ${mx_corner_marks} ${p.keycaps ? mx_keycap : ''} + ` + } + else{ + return_val += ` + ${choc_corner_marks} + ${p.keycaps ? choc_keycap : ''} + ` + } + + if (p.mx){ + return_val += ` ${mx_shafts} ${mx_pins('', '-', 'B')} ` @@ -183,13 +264,6 @@ module.exports = { } } - if (p.choc & !p.mx){ - return_val += ` - ${choc_corner_marks} - ${p.keycaps ? choc_keycap : ''} - ` - } - if (p.choc){ return_val += ` ${choc_shaft} @@ -200,6 +274,16 @@ module.exports = { } } + if (p.gateron_lp){ + return_val += ` + ${gateron_lp_shaft} + ${gateron_lp_pins('', '-', 'B')} + ` + if (p.gateron_lp_reverse){ + return_val += `${gateron_lp_pins('-', '', 'F')}` + } + } + return ` ${return_val}) `