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
|