diff options
Diffstat (limited to 'util/lang_conv.py')
-rw-r--r-- | util/lang_conv.py | 65 |
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) |