aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/ploopyco
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ploopyco')
-rw-r--r--keyboards/ploopyco/madromys/keymaps/bjc/keymap.c52
-rw-r--r--keyboards/ploopyco/madromys/keymaps/bjc/rules.mk2
2 files changed, 31 insertions, 23 deletions
diff --git a/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c b/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c
index aa75a63..e8d5e7c 100644
--- a/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c
+++ b/keyboards/ploopyco/madromys/keymaps/bjc/keymap.c
@@ -19,7 +19,8 @@
enum {
DEFAULT = 0,
- FN1 = 1
+ FN1,
+ FN2
};
enum {
@@ -33,12 +34,10 @@ 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),
- [FN1] = LAYOUT(KC_BRIU, QK_BOOT, KC_MPLY, KC_MCTL, KC_BRID, KC_TRNS)
+ [FN1] = LAYOUT(KC_TRNS, QK_BOOT, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS),
+ [FN2] = LAYOUT(KC_BRID, QK_BOOT, KC_MPLY, KC_BRIU, KC_MCTL, KC_TRNS),
};
-static bool fn1_layer_on = false;
-static uint16_t fn1_release_timer = 0;
-
// probably shouldn't be doing this, but beats trying to keep track of
// it myself and getting out of sync.
extern bool is_drag_scroll;
@@ -52,30 +51,39 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return state;
}
+/*
+ * use deferred execution to turn on a layer aften n ms of the key
+ * being held down.
+ */
+/*
+uinst32_t callback(uint32_t trigger_time, void *cb_arg) {
+ return 0;
+}
+token = defer_exec(layer_hold_timeout, callback, NULL);
+cancel_deferred_exec(token);
+*/
+
+static bool fn1_up = false;
+static uint16_t fn1_release_timer = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_TOG_HOLD:
if (record->event.pressed) {
- /*
- * 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();
- }
+ fn1_release_timer = timer_read();
+ layer_off(FN1);
+ layer_on(FN2);
} else {
- if (timer_elapsed(fn1_release_timer) > layer_hold_timeout) {
- fn1_layer_on = false;
+ layer_off(FN2);
+
+ if (timer_elapsed(fn1_release_timer) < layer_hold_timeout) {
+ fn1_up = !fn1_up;
+ if (fn1_up) {
+ layer_on(FN1);
+ } else {
+ layer_off(FN1);
+ }
}
- }
- if (fn1_layer_on) {
- layer_on(FN1);
- } else {
- layer_off(FN1);
}
break;
}
diff --git a/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk b/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk
index 0757206..381de6f 100644
--- a/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk
+++ b/keyboards/ploopyco/madromys/keymaps/bjc/rules.mk
@@ -1,2 +1,2 @@
-#VIA_ENABLE = yes
+VIA_ENABLE = yes
DEFERRED_EXEC_ENABLE = yes