diff --git a/common/keyboard.c b/common/keyboard.c index ea4d0ee7..9f0ca767 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 cca75f24..66dede9a 100644 --- a/keyboard/hhkb/config.h +++ b/keyboard/hhkb/config.h @@ -37,6 +37,20 @@ along with this program. If not, see . #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)))