]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - common/matrix.h
Initial version of new code for layer switch is added.
[tmk_firmware.git] / common / matrix.h
index c4b2cab51835b8186968187e93b8bf8907acff79..b3332d5ff91ca3132cc5524a4b6485df568d5b0c 100644 (file)
@@ -18,8 +18,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef MATRIX_H
 #define MATRIX_H
 
+#include <stdint.h>
 #include <stdbool.h>
 
+
+#if (MATRIX_COLS <= 8)
+typedef  uint8_t    matrix_row_t;
+#elif (MATRIX_COLS <= 16)
+typedef  uint16_t   matrix_row_t;
+#elif (MATRIX_COLS <= 32)
+typedef  uint32_t   matrix_row_t;
+#else
+#error "MATRIX_COLS: invalid value"
+#endif
+
+#define MATRIX_IS_ON(row, col)  (matrix_get_row(row) && (1<<col))
+
+
 /* number of matrix rows */
 uint8_t matrix_rows(void);
 /* number of matrix columns */
@@ -35,11 +50,7 @@ bool matrix_has_ghost(void);
 /* whether a swtich is on */
 bool matrix_is_on(uint8_t row, uint8_t col);
 /* matrix state on row */
-#if (MATRIX_COLS <= 8)
-uint8_t matrix_get_row(uint8_t row);
-#else
-uint16_t matrix_get_row(uint8_t row);
-#endif
+matrix_row_t  matrix_get_row(uint8_t row);
 /* count keys pressed */
 uint8_t matrix_key_count(void);
 /* print matrix for debug */