summaryrefslogtreecommitdiffstats
path: root/quantum/matrix.c
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-05-09 06:36:23 +0200
committerJack Humbert <jack.humb@gmail.com>2016-05-09 06:36:23 +0200
commit684793360cdb08ac1e50a6d27e1796fadd527adb (patch)
treeb666da50e3910825815083a6796255ac96362455 /quantum/matrix.c
parent35a72ca5e1abaf2eece7f61c17f94260ea1d16c7 (diff)
downloadqmk_firmware-684793360cdb08ac1e50a6d27e1796fadd527adb.tar.gz
qmk_firmware-684793360cdb08ac1e50a6d27e1796fadd527adb.tar.xz
quantum accommodates more than 16 columns
Diffstat (limited to 'quantum/matrix.c')
-rw-r--r--quantum/matrix.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 2dab6ae94..7d70f728d 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -42,6 +42,13 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS];
static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS];
#endif
+
+#if MATRIX_COLS > 16
+ #define SHIFTER 1UL
+#else
+ #define SHIFTER 1
+#endif
+
static matrix_row_t read_cols(void);
static void init_cols(void);
static void unselect_rows(void);
@@ -235,15 +242,15 @@ static matrix_row_t read_cols(void)
#endif
if ((col & 0xF0) == 0x20) {
- result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1<<x));
+ result |= (PINB&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x));
} else if ((col & 0xF0) == 0x30) {
- result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x));
+ result |= (PINC&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x));
} else if ((col & 0xF0) == 0x40) {
- result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x));
+ result |= (PIND&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x));
} else if ((col & 0xF0) == 0x50) {
- result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x));
+ result |= (PINE&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x));
} else if ((col & 0xF0) == 0x60) {
- result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x));
+ result |= (PINF&(1<<(col & 0x0F)) ? 0 : (SHIFTER<<x));
}
}
return result;