M common/keyboard.c => common/keyboard.c +11 -0
@@ 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
M keyboard/hhkb/config.h => keyboard/hhkb/config.h +14 -0
@@ 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)))