aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/ploopyco/madromys/keymaps/bjc
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ploopyco/madromys/keymaps/bjc')
-rw-r--r--keyboards/ploopyco/madromys/keymaps/bjc/keymap.c18
-rw-r--r--keyboards/ploopyco/madromys/keymaps/bjc/rules.mk1
2 files changed, 16 insertions, 3 deletions
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