Skip to content

Commit 9802e84

Browse files
committed
CapsLock for 5 seconds triggers bootloader
1 parent 60b3d77 commit 9802e84

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

  • keyboards/framework/iso/keymaps/default

keyboards/framework/iso/keymaps/default/keymap.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
8888

8989
// Make sure to keep FN Lock even after reset
9090
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
91+
static uint16_t bootloader_key_timer = 0;
92+
static bool bootloader_other_key_recorded = false; // track if any key other than CapsLock has been pressed
93+
if (keycode != KC_CAPS) { bootloader_other_key_recorded = true; }
94+
9195
switch (keycode) {
96+
case KC_CAPS: // enter bootloader if CapsLock is held for 5 seconds
97+
if (record->event.pressed) {
98+
bootloader_key_timer = timer_read();
99+
bootloader_other_key_recorded = false; // start tracking other keys
100+
} else {
101+
if (!bootloader_other_key_recorded) { // only go to bootloader if no other key has been pressed
102+
if (timer_elapsed(bootloader_key_timer) >= 5000) {
103+
bootloader_jump();
104+
}
105+
}
106+
bootloader_key_timer = 0; // reset timer counter on release so it can be used for tracking if CapsLock is pressed
107+
}
108+
break;
109+
92110
case FN_LOCK:
93111
if (record->event.pressed) {
94112
if (layer_state_is(_FN)) {

0 commit comments

Comments
 (0)