points:
  key:
    footprints:
      mx_hotswap:
        type: mx
        params:
          hotswap: true
          reverse: false
          keycaps: true
        nets:
          from: =colrow
          to: =column_net
      diode:
        type: diode
        nets:
          from: =colrow
          to: =row_net
        anchor:
          shift: [0, -5]
          rotate: 180

  zones:
    matrix:
      columns:
        pinky:
          key:
            column_net: P21
            mirror: { column_net: P2 }
        ring:
          stagger: 4
          key:
            column_net: P20
            mirror: { column_net: P3 }
        middle:
          stagger: 5
          key:
            column_net: P19
            mirror: { column_net: P4 }
        index:
          stagger: -5
          key:
            column_net: P18
            mirror: { column_net: P5 }
        inner:
          stagger: -6
          key:
            column_net: P15
            mirror: { column_net: P6 }
        thumb:
          stagger: 10
          row_overrides:
            bottom:
          key:
            column_net: P14
            mirror: { column_net: P7}
      rows:
        bottom:
          row_net: P16
        home:
          row_net: P10
        top:
          row_net: P9
        num:
          row_net: P8

  rotate: -23
  mirror:
    ref: matrix_thumb_bottom
    distance: 42

outlines:
  exports:
    # outer border
    outer:
      - type: polygon
        points:
          - ref: matrix_inner_num
            shift: [10, 10]
          - ref: matrix_middle_num
            shift: [10, 10]
          - ref: matrix_middle_num
            shift: [-10, 10]
          - ref: matrix_pinky_num
            shift: [-10, 10]
          - ref: matrix_pinky_bottom
            shift: [-10, -10]
          - ref: matrix_pinky_bottom
            shift: [10, -10]
          - ref: matrix_inner_bottom
            shift: [-10, -10]
          - ref: matrix_inner_bottom
            shift: [10, -10]
          - ref: mirror_matrix_inner_bottom
            shift: [10, -10]
          - ref: mirror_matrix_inner_bottom
            shift: [-10, -10]
          - ref: mirror_matrix_pinky_bottom
            shift: [10, -10]
          - ref: mirror_matrix_pinky_bottom
            shift: [-10, -10]
          - ref: mirror_matrix_pinky_num
            shift: [-10, 10]
          - ref: mirror_matrix_middle_num
            shift: [-10, 10]
          - ref: mirror_matrix_middle_num
            shift: [10, 10]
          - ref: mirror_matrix_inner_num
            shift: [10, 10]
      #- type: keys
      #  side: both
      #  size: 20
      #  corner: 1
      #- type: polygon
      #  points:
      #    - ref: matrix_inner_num
      #      shift: [0, -5]
      #    - ref: matrix_thumb_bottom
      #      shift: [-10, -10]
      #    - ref: mirror_matrix_thumb_bottom
      #      shift: [-10, -10]
      #    - ref: mirror_matrix_inner_num
      #      shift: [0, -5]
    chip:
      # cutout for the chip itself
      - type: rectangle
        size: [18, 33]
        anchor:
          ref: [matrix_inner_top, mirror_matrix_inner_top]
          shift: [-9, -24.5]
      # cutout for the cable (looks)
      - type: rectangle
        size: [8, 50]
        anchor:
          ref: [matrix_inner_top, mirror_matrix_inner_top]
          shift: [-4, -24.5]
    # 14mm holes for cherry switches
    keyholes:
      - type: keys
        side: both
        size: 14
        bound: false
    # switchplate
    switchplate:
      - outer
      - -keyholes
      - -chip

pcbs:
  main:
    outlines:
      outer:
        outline: outer
    footprints:
      reset:
        type: button
        nets:
          from: RST
          to: GND
        anchor:
          ref: [matrix_inner_bottom, mirror_matrix_inner_bottom]
          rotate: 90
      mcu:
        type: promicro
        anchor:
          rotate: 270
          ref: [matrix_inner_top, mirror_matrix_inner_top]
          shift: [0, -4]
