diff --git a/tmk_core/common.mk b/tmk_core/common.mk index d91e6d6d..69be0e13 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -1,6 +1,7 @@ COMMON_DIR = common SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/keyboard.c \ + $(COMMON_DIR)/matrix.c \ $(COMMON_DIR)/action.c \ $(COMMON_DIR)/action_tapping.c \ $(COMMON_DIR)/action_macro.c \ diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index b9b58c15..150588ce 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -105,8 +105,6 @@ void suspend_power_down(void) #endif } -__attribute__ ((weak)) void matrix_power_up(void) {} -__attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { matrix_power_up(); @@ -122,7 +120,7 @@ bool suspend_wakeup_condition(void) void suspend_wakeup_init(void) { // clear keyboard state - matrix_init(); + matrix_clear(); clear_keyboard(); #ifdef BACKLIGHT_ENABLE backlight_init(); diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 707351bc..b0319369 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -63,7 +63,6 @@ static bool has_ghost_in_row(uint8_t row) #endif -__attribute__ ((weak)) void matrix_setup(void) {} void keyboard_setup(void) { matrix_setup(); diff --git a/tmk_core/common/matrix.c b/tmk_core/common/matrix.c new file mode 100644 index 00000000..9694bd1a --- /dev/null +++ b/tmk_core/common/matrix.c @@ -0,0 +1,97 @@ +/* +Copyright 2016 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "print.h" +#include "matrix.h" + + +__attribute__ ((weak)) +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +__attribute__ ((weak)) +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +__attribute__ ((weak)) +void matrix_clear(void) +{ + matrix_init(); +} + +__attribute__ ((weak)) +void matrix_setup(void) {} + +__attribute__ ((weak)) +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix_get_row(row) & (1<