diff options
author | Joel Challis <git@zvecr.com> | 2022-12-21 23:35:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-21 23:35:23 +0000 |
commit | e5721bbd37fcb0372fd007caae5a3f2aed060479 (patch) | |
tree | 68bfcddfb400d00cbbea3d14e5a3b1c90492218c /util | |
parent | 89b72017a014ca4810790831030c88054129f21c (diff) |
Remaining DD keymap_extras migration (#19110)
* Parse headers to data
* Regen headers from data
Diffstat (limited to 'util')
-rw-r--r-- | util/lang_conv.py | 65 | ||||
-rwxr-xr-x | util/lang_gen.sh | 8 |
2 files changed, 73 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) diff --git a/util/lang_gen.sh b/util/lang_gen.sh new file mode 100755 index 0000000000..0b062b1a09 --- /dev/null +++ b/util/lang_gen.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +for lang in $(find data/constants/keycodes/extras/ -type f -printf "%f\n" | sed "s/keycodes_//g" | sed "s/_[0-9].*//"); do + data=$(qmk generate-keycode-extras --version latest --lang $lang) + if [ "$?" == "0" ]; then + echo "$data" > quantum/keymap_extras/keymap_$lang.h + fi +done |