summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/keyboard.c11
-rw-r--r--keyboard/hhkb/config.h14
2 files changed, 25 insertions, 0 deletions
diff --git a/common/keyboard.c b/common/keyboard.c
index ea4d0ee7e6..9f0ca76769 100644
--- a/common/keyboard.c
+++ b/common/keyboard.c
@@ -40,6 +40,17 @@ void keyboard_init(void)
timer_init();
matrix_init();
+
+ /* boot magic keys goes here */
+ matrix_scan();
+#ifdef IS_BOOTMAGIC_BOOTLOADER
+ /* kick up bootloader */
+ if (IS_BOOTMAGIC_BOOTLOADER()) bootloader_jump();
+#endif
+#ifdef IS_BOOTMAGIC_DEBUG
+ if (IS_BOOTMAGIC_DEBUG()) debug_enable = true;
+#endif
+
#ifdef PS2_MOUSE_ENABLE
ps2_mouse_init();
#endif
diff --git a/keyboard/hhkb/config.h b/keyboard/hhkb/config.h
index cca75f2434..66dede9a5c 100644
--- a/keyboard/hhkb/config.h
+++ b/keyboard/hhkb/config.h
@@ -37,6 +37,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 8
+/*
+ * Boot magic keys
+ * call some function by pressing key when pluging cable or powering on.
+ */
+/* key position on matrix(ROW:COL) */
+#define KEY_FN 0x54
+#define KEY_D 0x14
+#define KEY_IS_ON(key) matrix_is_on((key)>>4, (key)&0xF)
+/* kick up bootloader */
+#define IS_BOOTMAGIC_BOOTLOADER() KEY_IS_ON(KEY_FN)
+/* debug on */
+#define IS_BOOTMAGIC_DEBUG() KEY_IS_ON(KEY_D)
+
+
/* key combination for command */
#define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))