summaryrefslogtreecommitdiffstats
path: root/util/lang_conv.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/lang_conv.py')
-rw-r--r--util/lang_conv.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/util/lang_conv.py b/util/lang_conv.py
new file mode 100644
index 0000000000..a0da6c392d
--- /dev/null
+++ b/util/lang_conv.py
@@ -0,0 +1,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)