summaryrefslogtreecommitdiff
path: root/lib/python/qmk/cli
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2025-01-20 03:45:47 +0000
committerGitHub <noreply@github.com>2025-01-20 03:45:47 +0000
commitd30cd87556e26f9b716d21a9bd799b271b96ebb4 (patch)
tree287bfac88e53e66920b9aeddb7fe889c33d6212b /lib/python/qmk/cli
parent58aea4b4795d81fcf3fdfd236b08903d1ffeeaca (diff)
Update via2json layout macro searching (#24640)
Diffstat (limited to 'lib/python/qmk/cli')
-rwxr-xr-xlib/python/qmk/cli/via2json.py32
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
9import qmk.path 9import qmk.path
10from qmk.info import info_json 10from qmk.info import info_json
11from qmk.json_encoders import KeymapJSONEncoder 11from qmk.json_encoders import KeymapJSONEncoder
12from qmk.commands import parse_configurator_json, dump_lines 12from qmk.commands import dump_lines
13from qmk.keymap import generate_json, list_keymaps, locate_keymap, parse_keymap_c 13from qmk.keymap import generate_json
14 14
15 15
16def _find_via_layout_macro(keyboard): 16def _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
27def _convert_macros(via_macros): 23def _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