diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/alias.h b/keyboards/keebio/nyquist/rev4/keymaps/drew/alias.h index 1d2ff05e..74e913e2 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/alias.h +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/alias.h @@ -27,9 +27,6 @@ enum CustomKeycodes { #define TAB_FORWARD C(KC_TAB) #define TAB_BACKWARD (C(S(KC_TAB))) -// weird tap holds -#define CW_CL SFT_T(CAPS_WORD) - // layers #define NUM_SPC LT(_NUM, KC_SPC) #define NAV_ENT LT(_NAV, KC_ENT) diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/caps_word/caps_word.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/caps_word/caps_word.c index 4dca80dd..1601c0dc 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/caps_word/caps_word.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/caps_word/caps_word.c @@ -1,6 +1,7 @@ #include QMK_KEYBOARD_H #include "caps_word.h" #include "../alias.h" +#include "../tap_dance/tap_dance.h" bool caps_word_press_user(uint16_t keycode) { switch (keycode) { @@ -18,6 +19,7 @@ bool caps_word_press_user(uint16_t keycode) { case KC_RGHT: case KC_MINS: case KC_UNDS: + case TD(TD_CW_CL): // this makes toggling work return true; break; default: diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c index 065b07c9..334eb736 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_ortho_4x12( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, GUI_A, ALT_S, SFT_D, CTL_F, CTL_G, CTL_H, CTL_J, SFT_K, ALT_L, GUI_SCLN, KC_QUOT, - CW_CL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL, + TD(TD_CW_CL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_DEL, KC_NO, FUNC_PLAY, KC_LALT, TD(TD_CAD_LOCK_SLEEP), LAUNCH, NUM_SPC, NAV_ENT, KC_RALT, KC_LEFT, DOWN, UP, KC_RGHT ), // gamer @@ -61,35 +61,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t* record) { switch (keycode) { - case CW_CL: { // caps word is really complicated, eek - static bool tab_backward_held = false; - if (record->tap.count) { - if (record->event.pressed) { - uint8_t mods = get_mods(); - if (mods & TABBING_TRIGGER_MODS) { // tabbing - del_mods(TABBING_TRIGGER_MODS); - register_code16(TAB_BACKWARD); - set_mods(mods); - tab_backward_held = true; // set the flag - } else { // caps word - caps_word_toggle(); - } - } else { - if (tab_backward_held) { - tab_backward_held = false; // clear the flag - unregister_code16(TAB_BACKWARD); - neutralize_flashing_mods(); - } - } - } else { // hold; caps lock - if (record->event.pressed) { - tap_code(KC_CAPS); - } - } - return false; - break; - } - // make it possible to go from layer 3 to layer 2 case NUM_SPC: if (!record->tap.count) { @@ -235,6 +206,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { return true; } +const key_override_t CW_CL_TO_TAB_BACKWARDS = + ko_make_basic(TABBING_TRIGGER_MODS, TD(TD_CW_CL), TAB_BACKWARD); + const key_override_t Q_TO_KILL = ko_make_with_layers(MOD_MASK_GUI, KC_Q, A(KC_F4), 1 << _BASE); const key_override_t COMM_TO_TAB_BACKWARDS = @@ -328,6 +302,7 @@ const key_override_t F2_TO_M = ko_make_with_layers(MOD_MASK_CTRL, KC_F2, C(KC_M) // this globally defines all key overrides to be used const key_override_t* key_overrides[] = { + &CW_CL_TO_TAB_BACKWARDS, &COMM_TO_TAB_BACKWARDS, &TILDE_TO_TAB_BACKWARDS, &Q_TO_KILL, diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.c index 01812dc2..63ba71ed 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.c @@ -2,7 +2,7 @@ #include "./tap_dance.h" #include "../alias.h" -void CAD_lock_sleep(tap_dance_state_t* state, void* user_data) { +void CAD_lock_sleep(tap_dance_state_t* state, void*) { switch (state->count) { case 1: tap_code16(CAD); @@ -18,6 +18,27 @@ void CAD_lock_sleep(tap_dance_state_t* state, void* user_data) { } } +void caps_lock_caps_word_on_tap(tap_dance_state_t* state, void*) { + switch (state->count) { + case 1: // do nothing for the first tap + break; + default: + tap_code(KC_CAPS); + break; + } +} + +void caps_lock_caps_word_on_finish(tap_dance_state_t* state, void*) { + switch (state->count) { + case 1: + caps_word_toggle(); + break; + } +} + tap_dance_action_t tap_dance_actions[] = { [TD_CAD_LOCK_SLEEP] = ACTION_TAP_DANCE_FN(CAD_lock_sleep), + [TD_CW_CL] = ACTION_TAP_DANCE_FN_ADVANCED( + caps_lock_caps_word_on_tap, caps_lock_caps_word_on_finish, NULL + ), }; diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.h b/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.h index 3321d686..6c55383b 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.h +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/tap_dance/tap_dance.h @@ -2,4 +2,5 @@ enum { TD_CAD_LOCK_SLEEP, + TD_CW_CL, }; diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/taphold/taphold_options.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/taphold/taphold_options.c index 67191468..03b24a5e 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/taphold/taphold_options.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/taphold/taphold_options.c @@ -137,10 +137,6 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t* record) { case ALT_UP: return 400; break; - - case CW_CL: // have to hold for caps lock a little longer - return 300; - break; } return TAPPING_TERM; }