blob: a0da6c392d274896a39a67fc91dcf886faf442d4 (
plain)
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
|
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)
|