From cfc9211651e5da504ceaf958a56164b3f9945acf Mon Sep 17 00:00:00 2001 From: brian cully Date: Tue, 13 Jan 2026 15:31:45 -0500 Subject: clean up fn1 so it only ever goes away on release otherwise a toggle followed by a long press would release fn1 when the button was down, which felt weird as i was holding it down in order to keep the layer on. --- keyboards/ploopyco/madromys/keymaps/bjc/keymap.c | 18 +++++++++++++++--- keyboards/ploopyco/madromys/keymaps/bjc/rules.mk | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'keyboards/ploopyco/madromys/keymaps/bjc') diff --git a/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c b/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c index aa5a127..aa75a63 100644 --- a/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c +++ b/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c @@ -26,6 +26,10 @@ enum { KC_TOG_HOLD = QK_USER }; +// if the layer hold button is released before this timeout, it +// becomes a toggle. +const uint32_t layer_hold_timeout = 200; + // top left left, top left, top right, top right right, bottom left, bottom right const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DEFAULT] = LAYOUT(MS_BTN4, MS_BTN5, MS_BTN3, MS_BTN2, MS_BTN1, KC_TOG_HOLD), @@ -52,16 +56,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_TOG_HOLD: if (record->event.pressed) { - fn1_layer_on = !fn1_layer_on; + /* + * if the layer is already on, do nothing, as the release event + * (where we want the layer to turn off) will compare against, + * what is at this point a very old ‘fn1_release_timer’ and so + * should release automatically. + */ + if (!fn1_layer_on) { + fn1_layer_on = true; + fn1_release_timer = timer_read(); + } } else { - if (timer_elapsed(fn1_release_timer) > 100) { + if (timer_elapsed(fn1_release_timer) > layer_hold_timeout) { fn1_layer_on = false; } } if (fn1_layer_on) { layer_on(FN1); - fn1_release_timer = timer_read(); } else { layer_off(FN1); } diff --git a/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk b/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk index 59222a6..0757206 100644 --- a/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk +++ b/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk @@ -1 +1,2 @@ #VIA_ENABLE = yes +DEFERRED_EXEC_ENABLE = yes -- cgit v1.3