Firmware for HexBoard MIDI controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python3
import sys

evenCols=9
oddCols=10
rows=14

def makeLayout(starting, across, downleft):
    a = []
    for row in range(0, rows):
        a.append([])
        for col in range(0, oddCols if row%2 else evenCols):
            if row == 0 and col == 0:
                a[row].append(starting)
            elif col > 0:
                a[row].append(a[row][col-1] + across)
            else: # col == 0
                if row%2:
                    ref = a[row-1][0]
                else:
                    ref = a[row-1][1]
                a[row].append(ref+downleft)
    return a

def print_qmk(layout):
    # Mapping to QMK constants
    start = ["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"]
    start = ["MI_"+x for x in start]
    arr = start.copy()
    for n in range(1,6):
        arr += [x+str(n) for x in start]
    row = 0
    print("LAYOUT_inorder(")
    for Row in layout:
        if row%2 == 0:
            n = int(row/2)+1
            print(f"_______, ", end='')
        else:
            print("      ", end='')
        for entry in Row:
            print(arr[entry] if entry < len(arr) else 'KC_NO', end=', ')
        print()
        row = row + 1
    print("    ),")

if __name__ == '__main__':
    layout = makeLayout(int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3]))
    if len(sys.argv)==5:
        print_qmk(layout)
        exit()
    #print(layout)
    row = 0
    for Row in layout:
        if row%2 == 0:
            n = int(row/2)+1
            print(f"  ROW_FLIP(CMDB_{n}, ", end='')
        else:
            print("        ROW_FLIP(", end='')
        col = 1
        for entry in Row:
            end = ', ' if col < (oddCols if row%2 else evenCols) else ''
            print(entry, end=end)
            col = col + 1
        print(')' if row +1 == rows else '),')
        row = row + 1