diff options
author | Ryan <fauxpark@gmail.com> | 2023-03-24 13:46:42 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-24 13:46:42 +1100 |
commit | d6ce42ae5b1093eeae215c073c733c800195ec28 (patch) | |
tree | 4bf1c6da7d9daa3409314797d13e09e81b25a951 /lib/python/qmk | |
parent | 67dae1222f6c73242ffbd3b500530d3346806708 (diff) |
Check for multiple matrix positions assigned to same key (#20039)
Diffstat (limited to 'lib/python/qmk')
-rw-r--r-- | lib/python/qmk/c_parse.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/python/qmk/c_parse.py b/lib/python/qmk/c_parse.py index 83ab1d1e6d..b8e5f6a3c9 100644 --- a/lib/python/qmk/c_parse.py +++ b/lib/python/qmk/c_parse.py @@ -90,8 +90,10 @@ def find_layouts(file): cli.log.error('Invalid LAYOUT macro in %s: Empty parameter name in macro %s at pos %s.', file, macro_name, i) elif key['label'] not in matrix_locations: cli.log.error('Invalid LAYOUT macro in %s: Key %s in macro %s has no matrix position!', file, key['label'], macro_name) + elif len(matrix_locations.get(key['label'])) > 1: + cli.log.error('Invalid LAYOUT macro in %s: Key %s in macro %s has multiple matrix positions (%s)', file, key['label'], macro_name, ', '.join(str(x) for x in matrix_locations[key['label']])) else: - key['matrix'] = matrix_locations[key['label']] + key['matrix'] = matrix_locations[key['label']][0] parsed_layouts[macro_name] = { 'layout': parsed_layout, @@ -186,7 +188,9 @@ def _parse_matrix_locations(matrix, file, macro_name): row = row.replace('{', '').replace('}', '') for col_num, identifier in enumerate(row.split(',')): if identifier != 'KC_NO': - matrix_locations[identifier] = [row_num, col_num] + if identifier not in matrix_locations: + matrix_locations[identifier] = [] + matrix_locations[identifier].append([row_num, col_num]) return matrix_locations |