diff options
Diffstat (limited to 'lib/python')
| -rwxr-xr-x | lib/python/qmk/cli/generate/config_h.py | 13 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/keyboard_c.py | 15 | ||||
| -rw-r--r-- | lib/python/qmk/info.py | 9 | 
3 files changed, 30 insertions, 7 deletions
| diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index 924834caef..2c624e3e9a 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -74,7 +74,14 @@ def generate_matrix_size(kb_info_json, config_h_lines):  def generate_matrix_masked(kb_info_json, config_h_lines):      """"Enable matrix mask if required""" +    mask_required = False +      if 'matrix_grid' in kb_info_json.get('dip_switch', {}): +        mask_required = True +    if 'matrix_grid' in kb_info_json.get('split', {}).get('handedness', {}): +        mask_required = True + +    if mask_required:          config_h_lines.append(generate_define('MATRIX_MASKED')) @@ -141,6 +148,12 @@ def generate_encoder_config(encoder_json, config_h_lines, postfix=''):  def generate_split_config(kb_info_json, config_h_lines):      """Generate the config.h lines for split boards.""" +    if 'handedness' in kb_info_json['split']: +        # TODO: change SPLIT_HAND_MATRIX_GRID to require brackets +        handedness = kb_info_json['split']['handedness'] +        if 'matrix_grid' in handedness: +            config_h_lines.append(generate_define('SPLIT_HAND_MATRIX_GRID', ', '.join(handedness['matrix_grid']))) +      if 'protocol' in kb_info_json['split'].get('transport', {}):          if kb_info_json['split']['transport']['protocol'] == 'i2c':              config_h_lines.append(generate_define('USE_I2C')) diff --git a/lib/python/qmk/cli/generate/keyboard_c.py b/lib/python/qmk/cli/generate/keyboard_c.py index 325624c9cc..f8a2372cf3 100755 --- a/lib/python/qmk/cli/generate/keyboard_c.py +++ b/lib/python/qmk/cli/generate/keyboard_c.py @@ -63,13 +63,14 @@ def _gen_matrix_mask(info_data):      cols = info_data['matrix_size']['cols']      rows = info_data['matrix_size']['rows'] -    # Default mask to everything enabled -    mask = [['1'] * cols for i in range(rows)] - -    # Automatically mask out dip_switch.matrix_grid locations -    matrix_grid = info_data.get('dip_switch', {}).get('matrix_grid', []) -    for row, col in matrix_grid: -        mask[row][col] = '0' +    # Default mask to everything disabled +    mask = [['0'] * cols for i in range(rows)] + +    # Mirror layout macros squashed on top of each other +    for layout_data in info_data['layouts'].values(): +        for key_data in layout_data['layout']: +            row, col = key_data['matrix'] +            mask[row][col] = '1'      lines = []      lines.append('#ifdef MATRIX_MASKED') diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index b56ec0fbff..fe829a724a 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -352,6 +352,14 @@ def _extract_secure_unlock(info_data, config_c):          info_data['secure']['unlock_sequence'] = unlock_array +def _extract_split_handedness(info_data, config_c): +    # Migrate +    split = info_data.get('split', {}) +    if 'matrix_grid' in split: +        split['handedness'] = split.get('handedness', {}) +        split['handedness']['matrix_grid'] = split.pop('matrix_grid') + +  def _extract_split_transport(info_data, config_c):      # Figure out the transport method      if config_c.get('USE_I2C') is True: @@ -543,6 +551,7 @@ def _extract_config_h(info_data, config_c):      _extract_matrix_info(info_data, config_c)      _extract_audio(info_data, config_c)      _extract_secure_unlock(info_data, config_c) +    _extract_split_handedness(info_data, config_c)      _extract_split_transport(info_data, config_c)      _extract_split_right_pins(info_data, config_c)      _extract_encoders(info_data, config_c) | 
