diff options
Diffstat (limited to 'layouts/community/ortho_4x12/guidoism/generate_c.py')
-rw-r--r-- | layouts/community/ortho_4x12/guidoism/generate_c.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/layouts/community/ortho_4x12/guidoism/generate_c.py b/layouts/community/ortho_4x12/guidoism/generate_c.py new file mode 100644 index 0000000000..7876bee68b --- /dev/null +++ b/layouts/community/ortho_4x12/guidoism/generate_c.py @@ -0,0 +1,59 @@ +import itertools +import json +from pprint import pprint as pp + +layers = dict(enumerate(['_QWERTY', '_LOWER', '_RAISE', '_MOVEMENT', '_NUMPAD'])) +key_names = {('MO(%d)' % i): layers.get(i).strip('_') for i in layers.keys()} + +unicodes = { + "<i class='fa fa-fast-forward'></i>": "next", + "<i class='fa fa-volume-down'></i>": "vol-", + "<i class='fa fa-volume-up'></i>": "vol+", + "<i class='fa fa-play'></i>": "play", +} + +d = json.load(open('layouts/community/ortho_4x12/guidoism/guidoism.json')) + +def grouper(iterable, n): + args = [iter(iterable)] * n + return itertools.zip_longest(*args, fillvalue='') + +def truthy(s): + return [a for a in s if a] + +def just(s, n): + return [a.center(n*2+1 if len(s) == 11 and i == 5 else n) for i, a in enumerate(s)] + +def replace(s): + return [key_names.get(a, a) for a in s] + +def layer(i, l): + n = max(len(s) for s in l) + rows = [', '.join(replace(truthy(row))) for row in grouper(l, 12)] + return '[%s] = %s(\n%s)' % (layers[i], d['layout'], ',\n'.join(rows)) + +print(',\n\n'.join(layer(i, l) for i, l in enumerate(d['layers']))) + +def surround(s, a, b, c): + return a + b.join(s) + c + +def pattern(cell, table): + return ['─'*cell for i in range(table)] + +keys = json.load(open('layouts/community/ortho_4x12/guidoism/keys.json')) + +def layer2(i, l): + def replace(s): + s = [keys.get(a, a) for a in s] + return [unicodes.get(a, a) for a in s] + n = max(len(s) for s in l) + return [surround(just(replace(truthy(row)), 5), '│', '│', '│') for row in grouper(l, 12)] + +for i, l in enumerate(d['layers']): + print(surround(pattern(5, 12), '┌', '┬', '┐')) + for n, row in enumerate(layer2(i, l)): + print(row) + if n < 3: + print(surround(pattern(5, 12), '├', '┼', '┤')) + else: + print(surround(pattern(5, 12), '└', '┴', '┘')) |