/* get all connected columns for one active row */ inline static uint8_t matrix_get_active_columns_by_column(int column) { uint8_t activerows = 0; uint8_t activecolumns = 0; matrix_activate_column(column, &activerows, &activecolumns); return activecolumns; }
/* get all connected columns for one active row */ inline static BYTE matrix_get_active_columns_by_column(int column) { BYTE activerows = 0; BYTE activecolumns = 0; matrix_activate_column(column, &activerows, &activecolumns); return activecolumns; }
static void matrix_activate_row(int row, BYTE *activerows, BYTE *activecolumns) { BYTE msk; int m, i; if ((1 << row) & ~(*activerows)) { *activerows |= (1 << row); msk = keyarr[row]; /* loop over columns */ for (m = 0x1, i = 0; i < 8; m <<= 1, i++) { /* activate each column connected to the given row */ if ((msk & m) & ~(*activecolumns)) { matrix_activate_column(i, activerows, activecolumns); } } } }