e5721bbd37
* Parse headers to data * Regen headers from data
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from pathlib import Path
|
|
|
|
langs = set()
|
|
files = Path('quantum/keymap_extras/').glob('keymap_*.h')
|
|
for file in files:
|
|
langs.add(file.stem.replace('keymap_', ''))
|
|
|
|
for lang in langs:
|
|
try:
|
|
file = Path(f'quantum/keymap_extras/keymap_{lang}.h')
|
|
print(f'Reading:{file}')
|
|
collect = None
|
|
out = []
|
|
out += ['{']
|
|
out += [' "aliases": {']
|
|
lines = file.read_text(encoding='utf-8').split('\n')
|
|
for line in lines:
|
|
|
|
if line.startswith("// Row"):
|
|
# print(line)
|
|
continue
|
|
elif line.startswith("/*******************************************************************************"):
|
|
raise Exception(f'Skipping:{file}')
|
|
elif '/*' in line:
|
|
collect = [line]
|
|
elif '*/' in line:
|
|
collect += [line]
|
|
if 'copyright' in collect[0].lower():
|
|
collect = None
|
|
continue
|
|
out += collect
|
|
collect = None
|
|
elif collect:
|
|
collect += [line]
|
|
|
|
elif '#define' in line:
|
|
define = line.split()
|
|
while len(define) < 5:
|
|
define.append("")
|
|
|
|
if define[4] == "(backslash)":
|
|
define[4] = '\\\\'
|
|
|
|
define[4] = " ".join(define[4:]).strip()
|
|
define[4] = define[4].replace('"', '\\"')
|
|
|
|
if define[4]:
|
|
out += [f' "{define[2]}": {{']
|
|
out += [f' "key": "{define[1]}",']
|
|
out += [f' "label": "{define[4]}",']
|
|
out += [f' }}']
|
|
else:
|
|
out += [f' "{define[2]}": {{']
|
|
out += [f' "key": "{define[1]}"']
|
|
out += [f' }}']
|
|
|
|
out += [' }']
|
|
out += ['}']
|
|
|
|
dump = Path(f'data/constants/keycodes/extras/keycodes_{lang}_0.0.1.hjson')
|
|
print(f'Writing:{dump}')
|
|
dump.write_text("\n".join(out), encoding='utf-8')
|
|
|
|
except Exception as e:
|
|
print(e)
|