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) | 
