summaryrefslogtreecommitdiffstats
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-10-27 20:53:50 +0200
committerJack Humbert <jack.humb@gmail.com>2018-10-27 20:53:50 +0200
commit4ffcacd92086870eb7a3102d54178a7af64edb0c (patch)
treeb30479a70abc0d0dcd6c287383eb64e8f2fee104 /quantum/quantum.c
parent5be438f03d0ae3ebdb9e24d249fdfd7f5c573634 (diff)
downloadqmk_firmware-4ffcacd92086870eb7a3102d54178a7af64edb0c.tar.gz
qmk_firmware-4ffcacd92086870eb7a3102d54178a7af64edb0c.tar.xz
Add Bootmagic Lite to QMK (#4215)
* Preliminary additon of bootmagic lite functionality * Cleanup code * Clean up bootmagic code * Add documentation and clean up code * Make 'lite' an option for BOOTMAGIC_ENABLE * Update Templates with note about Bootmagic Lite option * Detect Debounce variable * Make sure debounce is a non-zero number * Capitalize Bootmagic * Capitalize bootmagic * Update wording * Re-add EEPROM reset, by popular demand And add eeprom-less version to drashna userspace for his sanity * Fix spacing * Set BOOTMAGIC_ENABLE to use full/lite/off And default yes to "full" for compatibility * Add Bootmagic lite info to templates * Remove text from makefiles * Cleanup of makefile * mention yes in bootmagic docs * Wordsmitthing the docs * Fix white spaces * Readd default bootmagic setting, because it's necessary
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index c9bec6740..5f1a691c8 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -949,8 +949,40 @@ void tap_random_base64(void) {
}
}
+__attribute__((weak))
+void bootmagic_lite(void) {
+ // The lite version of TMK's bootmagic based on Wilba.
+ // 100% less potential for accidentally making the
+ // keyboard do stupid things.
+
+ // We need multiple scans because debouncing can't be turned off.
+ matrix_scan();
+ #if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
+ wait_ms(DEBOUNCING_DELAY * 2);
+ #elif defined(DEBOUNCE) && DEBOUNCE > 0
+ wait_ms(DEBOUNCE * 2);
+ #else
+ wait_ms(30);
+ #endif
+ matrix_scan();
+
+ // If the Esc and space bar are held down on power up,
+ // reset the EEPROM valid state and jump to bootloader.
+ // Assumes Esc is at [0,0].
+ // This isn't very generalized, but we need something that doesn't
+ // rely on user's keymaps in firmware or EEPROM.
+ if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
+ eeconfig_disable();
+ // Jump to bootloader.
+ bootloader_jump();
+ }
+}
+
void matrix_init_quantum() {
- if (!eeconfig_is_enabled() && !eeconfig_is_disabled()) {
+ #ifdef BOOTMAGIC_LITE
+ bootmagic_lite();
+ #endif
+ if (!eeconfig_is_enabled()) {
eeconfig_init();
}
#ifdef BACKLIGHT_ENABLE