diff --git a/converter/ibm4704_usb/matrix.c b/converter/ibm4704_usb/matrix.c
index f25452d5..8b9b518d 100644
--- a/converter/ibm4704_usb/matrix.c
+++ b/converter/ibm4704_usb/matrix.c
@@ -29,7 +29,6 @@ along with this program. If not, see .
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
-static void matrix_clear(void);
/*
@@ -155,8 +154,7 @@ static void matrix_break(uint8_t code)
matrix[ROW(code)] &= ~(1<
.
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
-static void matrix_clear(void);
-#ifdef MATRIX_HAS_GHOST
-static bool matrix_has_ghost_in_row(uint8_t row);
-#endif
/*
@@ -71,18 +67,6 @@ static uint8_t matrix[MATRIX_ROWS];
static bool is_modified = false;
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
void matrix_init(void)
{
debug_enable = true;
@@ -398,23 +382,6 @@ uint8_t matrix_scan(void)
return 1;
}
-bool matrix_is_modified(void)
-{
- return is_modified;
-}
-
-inline
-bool matrix_has_ghost(void)
-{
-#ifdef MATRIX_HAS_GHOST
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- if (matrix_has_ghost_in_row(i))
- return true;
- }
-#endif
- return false;
-}
-
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
@@ -427,21 +394,6 @@ uint8_t matrix_get_row(uint8_t row)
return matrix[row];
}
-void matrix_print(void)
-{
- print("\nr/c 01234567\n");
- for (uint8_t row = 0; row < matrix_rows(); row++) {
- phex(row); print(": ");
- pbin_reverse(matrix_get_row(row));
-#ifdef MATRIX_HAS_GHOST
- if (matrix_has_ghost_in_row(row)) {
- print(" .
static void matrix_make(uint8_t code);
static void matrix_break(uint8_t code);
-static void matrix_clear(void);
#ifdef MATRIX_HAS_GHOST
static bool matrix_has_ghost_in_row(uint8_t row);
#endif
@@ -326,8 +325,7 @@ static void matrix_break(uint8_t code)
}
}
-inline
-static void matrix_clear(void)
+void matrix_clear(void)
{
for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00;
}
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<