mirror of https://github.com/zmkfirmware/zmk.git
feat: Add double tap to enter bootloader functionality
Add ability to enter the bootloader if double tapping reset within the specified window.
This commit is contained in:
parent
bf323bf577
commit
15fcf92a63
|
|
@ -110,4 +110,5 @@ config ZMK_BATTERY_REPORT_INTERVAL
|
||||||
default 60
|
default 60
|
||||||
|
|
||||||
# Imports
|
# Imports
|
||||||
|
rsource "src/boot/Kconfig.defaults"
|
||||||
rsource "src/split/Kconfig.defaults"
|
rsource "src/split/Kconfig.defaults"
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
|
|
||||||
target_sources_ifdef(CONFIG_ZMK_BOOTMODE_TO_MAGIC_VALUE_MAPPER app PRIVATE bootmode_to_magic_mapper.c)
|
target_sources_ifdef(CONFIG_ZMK_BOOTMODE_TO_MAGIC_VALUE_MAPPER app PRIVATE bootmode_to_magic_mapper.c)
|
||||||
|
target_sources_ifdef(CONFIG_ZMK_DBL_TAP_BOOTLOADER app PRIVATE dbl_tap_bootloader.c)
|
||||||
|
|
@ -1,4 +1,18 @@
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER
|
||||||
|
bool "Double Tap To Enter Bootloader"
|
||||||
|
depends on RETENTION_BOOT_MODE
|
||||||
|
|
||||||
|
if ZMK_DBL_TAP_BOOTLOADER
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER_TIMEOUT_MS
|
||||||
|
int "Double Tap Timeout (ms)"
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER_INIT_PRIORITY
|
||||||
|
int "Double Tap Init Priority"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
config ZMK_BOOTMODE_TO_MAGIC_VALUE_MAPPER
|
config ZMK_BOOTMODE_TO_MAGIC_VALUE_MAPPER
|
||||||
bool "Magic Value Mapper"
|
bool "Magic Value Mapper"
|
||||||
default y
|
default y
|
||||||
|
|
@ -25,7 +39,5 @@ endchoice
|
||||||
|
|
||||||
config ZMK_BOOTMODE_BOOTLOADER_MAGIC_VALUE
|
config ZMK_BOOTMODE_BOOTLOADER_MAGIC_VALUE
|
||||||
hex
|
hex
|
||||||
default 0xf01669ef if ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_TINYUF2 || ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_BOSSA || BOOTLOADER_BOSSA_ADAFRUIT_UF2
|
|
||||||
default 0x57 if ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_NRF52
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER
|
||||||
|
default y if STM32_BOOTLOADER || RPI_PICO_ROM_BOOTLOADER
|
||||||
|
depends on RETENTION_BOOT_MODE
|
||||||
|
|
||||||
|
if ZMK_DBL_TAP_BOOTLOADER
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER_TIMEOUT_MS
|
||||||
|
default 500
|
||||||
|
|
||||||
|
config ZMK_DBL_TAP_BOOTLOADER_INIT_PRIORITY
|
||||||
|
default 20
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ZMK_BOOTMODE_TO_MAGIC_VALUE_MAPPER
|
||||||
|
|
||||||
|
choice ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE
|
||||||
|
default ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_NRF52 if SOC_NRF52840
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ZMK_BOOTMODE_BOOTLOADER_MAGIC_VALUE
|
||||||
|
default 0xf01669ef if ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_TINYUF2 || ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_BOSSA || BOOTLOADER_BOSSA_ADAFRUIT_UF2
|
||||||
|
default 0x57 if ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_NRF52
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include <soc.h>
|
||||||
|
#include <zephyr/init.h>
|
||||||
|
#include <zephyr/retention/retention.h>
|
||||||
|
#include <zephyr/retention/bootmode.h>
|
||||||
|
|
||||||
|
static int dbl_tap_boot_mode_init(void) {
|
||||||
|
bootmode_set(BOOT_MODE_TYPE_BOOTLOADER);
|
||||||
|
|
||||||
|
k_busy_wait(CONFIG_ZMK_DBL_TAP_BOOTLOADER_TIMEOUT_MS * 1000);
|
||||||
|
|
||||||
|
bootmode_clear();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SYS_INIT(dbl_tap_boot_mode_init, POST_KERNEL, CONFIG_ZMK_DBL_TAP_BOOTLOADER_INIT_PRIORITY);
|
||||||
Loading…
Reference in New Issue