diff options
| author | Joel Challis <git@zvecr.com> | 2025-01-20 03:45:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-20 03:45:47 +0000 |
| commit | d30cd87556e26f9b716d21a9bd799b271b96ebb4 (patch) | |
| tree | 287bfac88e53e66920b9aeddb7fe889c33d6212b /lib/python/qmk/cli | |
| parent | 58aea4b4795d81fcf3fdfd236b08903d1ffeeaca (diff) | |
Update via2json layout macro searching (#24640)
Diffstat (limited to 'lib/python/qmk/cli')
| -rwxr-xr-x | lib/python/qmk/cli/via2json.py | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/lib/python/qmk/cli/via2json.py b/lib/python/qmk/cli/via2json.py index 537e102640..0997e9ca9f 100755 --- a/lib/python/qmk/cli/via2json.py +++ b/lib/python/qmk/cli/via2json.py | |||
| @@ -9,19 +9,15 @@ import qmk.keyboard | |||
| 9 | import qmk.path | 9 | import qmk.path |
| 10 | from qmk.info import info_json | 10 | from qmk.info import info_json |
| 11 | from qmk.json_encoders import KeymapJSONEncoder | 11 | from qmk.json_encoders import KeymapJSONEncoder |
| 12 | from qmk.commands import parse_configurator_json, dump_lines | 12 | from qmk.commands import dump_lines |
| 13 | from qmk.keymap import generate_json, list_keymaps, locate_keymap, parse_keymap_c | 13 | from qmk.keymap import generate_json |
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | def _find_via_layout_macro(keyboard): | 16 | def _find_via_layout_macro(keyboard_data): |
| 17 | keymap_layout = None | 17 | """Assume layout macro when only 1 is available |
| 18 | if 'via' in list_keymaps(keyboard): | 18 | """ |
| 19 | keymap_path = locate_keymap(keyboard, 'via') | 19 | layouts = list(keyboard_data['layouts'].keys()) |
| 20 | if keymap_path.suffix == '.json': | 20 | return layouts[0] if len(layouts) == 1 else None |
| 21 | keymap_layout = parse_configurator_json(keymap_path)['layout'] | ||
| 22 | else: | ||
| 23 | keymap_layout = parse_keymap_c(keymap_path)['layers'][0]['layout'] | ||
| 24 | return keymap_layout | ||
| 25 | 21 | ||
| 26 | 22 | ||
| 27 | def _convert_macros(via_macros): | 23 | def _convert_macros(via_macros): |
| @@ -130,20 +126,16 @@ def via2json(cli): | |||
| 130 | 126 | ||
| 131 | This command uses the `qmk.keymap` module to generate a keymap.json from a VIA backup json. The generated keymap is written to stdout, or to a file if -o is provided. | 127 | This command uses the `qmk.keymap` module to generate a keymap.json from a VIA backup json. The generated keymap is written to stdout, or to a file if -o is provided. |
| 132 | """ | 128 | """ |
| 133 | # Find appropriate layout macro | ||
| 134 | keymap_layout = cli.args.layout if cli.args.layout else _find_via_layout_macro(cli.args.keyboard) | ||
| 135 | if not keymap_layout: | ||
| 136 | cli.log.error(f"Couldn't find LAYOUT macro for keyboard {cli.args.keyboard}. Please specify it with the '-l' argument.") | ||
| 137 | return False | ||
| 138 | |||
| 139 | # Load the VIA backup json | 129 | # Load the VIA backup json |
| 140 | with cli.args.filename.open('r') as fd: | 130 | with cli.args.filename.open('r') as fd: |
| 141 | via_backup = json.load(fd) | 131 | via_backup = json.load(fd) |
| 142 | 132 | ||
| 143 | # Generate keyboard metadata | ||
| 144 | keyboard_data = info_json(cli.args.keyboard) | 133 | keyboard_data = info_json(cli.args.keyboard) |
| 145 | if not keyboard_data: | 134 | |
| 146 | cli.log.error(f'LAYOUT macro {keymap_layout} is not a valid one for keyboard {cli.args.keyboard}!') | 135 | # Find appropriate layout macro |
| 136 | keymap_layout = cli.args.layout if cli.args.layout else _find_via_layout_macro(keyboard_data) | ||
| 137 | if not keymap_layout: | ||
| 138 | cli.log.error(f"Couldn't find LAYOUT macro for keyboard {cli.args.keyboard}. Please specify it with the '-l' argument.") | ||
| 147 | return False | 139 | return False |
| 148 | 140 | ||
| 149 | # Get keycode array | 141 | # Get keycode array |
