diff options
Diffstat (limited to 'lib/python/qmk/info.py')
-rw-r--r-- | lib/python/qmk/info.py | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index 93eba7376a..b4fa481b1b 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -223,12 +223,6 @@ def _validate(keyboard, info_data): def info_json(keyboard, force_layout=None): """Generate the info.json data for a specific keyboard. """ - cur_dir = Path('keyboards') - root_rules_mk = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') - - if 'DEFAULT_FOLDER' in root_rules_mk: - keyboard = root_rules_mk['DEFAULT_FOLDER'] - info_data = { 'keyboard_name': str(keyboard), 'keyboard_folder': str(keyboard), @@ -260,6 +254,7 @@ def info_json(keyboard, force_layout=None): # Ensure that we have various calculated values info_data = _matrix_size(info_data) info_data = _joystick_axis_count(info_data) + info_data = _matrix_masked(info_data) # Merge in data from <keyboard.c> info_data = _extract_led_config(info_data, str(keyboard)) @@ -836,6 +831,25 @@ def _joystick_axis_count(info_data): return info_data +def _matrix_masked(info_data): + """"Add info_data['matrix_pins.masked'] if required""" + mask_required = False + + if 'matrix_grid' in info_data.get('dip_switch', {}): + mask_required = True + if 'matrix_grid' in info_data.get('split', {}).get('handedness', {}): + mask_required = True + + if mask_required: + if 'masked' not in info_data.get('matrix_pins', {}): + if 'matrix_pins' not in info_data: + info_data['matrix_pins'] = {} + + info_data['matrix_pins']['masked'] = True + + return info_data + + def _check_matrix(info_data): """Check the matrix to ensure that row/column count is consistent. """ @@ -1005,11 +1019,6 @@ def find_info_json(keyboard): keyboard_parent = keyboard_path.parent info_jsons = [keyboard_path / 'info.json', keyboard_path / 'keyboard.json'] - # Add DEFAULT_FOLDER before parents, if present - rules = rules_mk(keyboard) - if 'DEFAULT_FOLDER' in rules: - info_jsons.append(Path(rules['DEFAULT_FOLDER']) / 'info.json') - # Add in parent folders for least specific for _ in range(5): if keyboard_parent == base_path: @@ -1066,23 +1075,13 @@ def get_modules(keyboard, keymap_filename): """ modules = [] + kb_info_json = info_json(keyboard) + modules.extend(kb_info_json.get('modules', [])) + if keymap_filename: keymap_json = parse_configurator_json(keymap_filename) if keymap_json: - kb = keymap_json.get('keyboard', None) - if not kb: - kb = keyboard - - if kb: - kb_info_json = info_json(kb) - if kb_info_json: - modules.extend(kb_info_json.get('modules', [])) - modules.extend(keymap_json.get('modules', [])) - elif keyboard: - kb_info_json = info_json(keyboard) - modules.extend(kb_info_json.get('modules', [])) - return list(dict.fromkeys(modules)) # remove dupes |