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