meta: engine: 4.1.0 author: phiwan units: kx: cx ky: cy # halfs khx: kx/2 khy: ky/2 # padding px: kx + 2 py: ky + 2 # adjust preview rendering $default_width: cx $default_height: cy points: zones: # main key matrix matrix: anchor.shift: [170, -170] key: tags: [key] padding: ky spread: kx columns: outer: # upper key rows.top.column_net: cpinky rows.top.row_net: rthumbs # lower key rows.home.column_net: cring rows.home.row_net: rthumbs # this column only has 2 keys rows.bottom.skip: true pinky.key: stagger: 5 column_net: cpinky ring.key: stagger: 10 column_net: cring middle.key: stagger: 7 column_net: cmiddle index.key: stagger: -7 column_net: cindex inner.key: stagger: 0 column_net: cinner rows: bottom.row_net: rbottom home.row_net: rhome top.row_net: rtop # thumb clusters thumbs: key: tags: [key] spread: 22 anchor: ref: matrix_inner_bottom shift: [-24, -ky] columns: left.key: splay: 0 column_net: cmiddle middle.key: splay: -15 shift: [0, -3] column_net: cindex right.key: splay: -15 shift: [0, -6] column_net: cinner rows: cluster.row_net: rthumbs # screw points screws: key.tags: [screw] key.spread: 0 anchor: ref: matrix_outer_top columns: left_top.key.shift: [khx+0.3, -3.5] left_bottom.key.shift: [khx+0.3, -ky-3.5] middle_top.key.shift: [2kx+khx+0.3, ky-3.5] middle_bottom.key.shift: [3kx+6, -ky-7] right_top.key.shift: [4kx+khx, +6.5] right_bottom.key.shift: [5kx+khx+2, -2ky+2] outlines: keys: - what: rectangle where: [key] size: [kx, ky] board: - what: polygon operation: stack points: - ref: matrix_outer_top shift: [-khx-2,khy+2] - ref: matrix_outer_top shift: [khx-2,khy+2] - ref: matrix_pinky_top shift: [-khx-2,khy+2] - ref: matrix_pinky_top shift: [khx-2,khy+2] - ref: matrix_ring_top shift: [-khx-2,khy+2] - ref: matrix_ring_top shift: [khx-2,khy+2] - ref: matrix_middle_top shift: [-khx-2,khy+2] - ref: matrix_middle_top shift: [khx+2,khy+2] - ref: matrix_index_top shift: [-khx+2,khy+2] - ref: matrix_inner_top shift: [30.6,khy+2] - ref: thumbs_right_cluster shift: [khx+2,khy+1] # not an error - ref: thumbs_right_cluster shift: [khx+2,-khy-2] - ref: thumbs_right_cluster shift: [-khx,-khy-2] - ref: thumbs_middle_cluster shift: [-khx-1,-khy-2] # not an error - ref: thumbs_left_cluster shift: [-khx-2,-khy-2] - ref: matrix_pinky_bottom shift: [khx,-khy-2] - ref: matrix_pinky_bottom shift: [-khx-2,-khy-2] - ref: matrix_outer_home shift: [khx-2,-khy-2] - ref: matrix_outer_home shift: [-khx-2,-khy-2] fillet: 2 combined: - name: board - operation: stack name: keys pcbs: pcb: outlines.main.outline: board footprints: # hotswap choc switches: what: choc where: [key] params: keycaps: false # outline on the pcb reverse: true hotswap: true from: "{{column_net}}" to: "{{colrow}}" # smd diodes diodes: what: combo_diode where: [key] params: include_smd: true include_tht: false reversible: true from: "{{colrow}}" to: "{{row_net}}" adjust: shift: [0, -5] # mcu with reversible pins xiao_ble: what: xiao_ble_smd_reversible params: D0: "rtop" D1: "rhome" D2: "rbottom" D3: "rthumbs" D4: "sda" D5: "scl" D6: "cinner" D10: "cpinky" D9: "cring" D8: "cmiddle" D7: "cindex" where: ref: matrix_inner_top shift: [kx+2, 0] # raw battery pads, no connector battery_pads: what: pads params: reverse: true net_1: "BAT+" net_2: "GND" label_1: "+" label_2: "" space: 1.25 where: ref: matrix_inner_home shift: [kx+2, 0] # OLED screen # added manually in kicad # uses jumpers to make it reversible screws: what: mounting_hole params: drill: 3.6 where: [screw] # silkscreen # added manually in kicad # different graphics for front and back # small custom graphics # different graphics for front and back phi-caps: what: phi-caps params.scale: 0.013 where: ref: thumbs_left_cluster shift: [-2kx-2, 16] phi-logo: what: phi-logo params.scale: 0.011 where: ref: thumbs_left_cluster shift: [-2kx+2, 14]