summary refs log tree commit diff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/lang_conv.py65
-rwxr-xr-xutil/lang_gen.sh8
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