From e5721bbd37fcb0372fd007caae5a3f2aed060479 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 21 Dec 2022 23:35:23 +0000 Subject: Remaining DD keymap_extras migration (#19110) * Parse headers to data * Regen headers from data --- util/lang_conv.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ util/lang_gen.sh | 8 +++++++ 2 files changed, 73 insertions(+) create mode 100644 util/lang_conv.py create mode 100755 util/lang_gen.sh (limited to 'util') 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 -- cgit v1.2.3