added gateron switches

This commit is contained in:
Emily Zeng 2023-11-11 13:33:24 -05:00
parent a1351dd3b3
commit fdb6531f74
2 changed files with 175 additions and 61 deletions

View File

@ -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

View File

@ -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})
`