@ -57,6 +57,31 @@ def _gen_led_config(info_data):
return lines
def _gen_matrix_mask ( info_data ) :
""" Convert info.json content to matrix_mask
"""
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 '
lines = [ ]
lines . append ( ' #ifdef MATRIX_MASKED ' )
lines . append ( ' __attribute__((weak)) const matrix_row_t matrix_mask[] = { ' )
for i in range ( rows ) :
lines . append ( f ' 0b{ " " .join(reversed(mask[i]))}, ' )
lines . append ( ' }; ' )
lines . append ( ' #endif ' )
return lines
@cli.argument ( ' -o ' , ' --output ' , arg_only = True , type = normpath , help = ' File to write to ' )
@cli.argument ( ' -q ' , ' --quiet ' , arg_only = True , action = ' store_true ' , help = " Quiet mode, only output error messages " )
@cli.argument ( ' -kb ' , ' --keyboard ' , arg_only = True , type = keyboard_folder , completer = keyboard_completer , required = True , help = ' Keyboard to generate keyboard.c for. ' )
@ -70,6 +95,7 @@ def generate_keyboard_c(cli):
keyboard_h_lines = [ GPL2_HEADER_C_LIKE , GENERATED_HEADER_C_LIKE , ' #include QMK_KEYBOARD_H ' , ' ' ]
keyboard_h_lines . extend ( _gen_led_config ( kb_info_json ) )
keyboard_h_lines . extend ( _gen_matrix_mask ( kb_info_json ) )
# Show the results
dump_lines ( cli . args . output , keyboard_h_lines , cli . args . quiet )