From ad8e3c3c54466be5be007250c88a8932993ca23b Mon Sep 17 00:00:00 2001 From: Drew Whitney Date: Sat, 1 Nov 2025 17:18:33 -0600 Subject: [PATCH] Made good progress moving to key overrides --- TODO.md | 0 .../rev4/keymaps/drew/custom_keys/alias.h | 7 +- .../rev4/keymaps/drew/custom_keys/mapping.c | 71 ------- .../keebio/nyquist/rev4/keymaps/drew/keymap.c | 185 ++++++++++++++++-- qmk.json | 6 +- 5 files changed, 173 insertions(+), 96 deletions(-) delete mode 100644 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100644 index e69de29b..00000000 diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/alias.h b/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/alias.h index 61ef7441..92f8adf5 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/alias.h +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/alias.h @@ -5,18 +5,17 @@ #define TAB_FORWARD C(KC_TAB) #define TAB_BACKWARD (C(S(KC_TAB))) +#define NUM_SPC LT(_NUM, KC_SPC) +#define NAV_ENT LT(_NAV, KC_ENT) #define LAUNCH A(KC_SPC) #define MENU S(KC_F10) -#define GUI_LAUNCH GUI_T(NK(TH_LAUNCH)) +#define GUI_LAUNCH GUI_T(LAUNCH) #define ALT_DEL ALT_T(NK(TH_DEL)) -#define ALT_COMP ALT_T(NK(TH_RALT)) #define SFT_TILD SFT_T(NK(TH_TILD)) #define SFT_SFT SFT_T(NK(TH_LSFT)) #define SFT_COMM SFT_T(NK(TH_COMM)) #define CTL_COLN CTL_T(NK(TH_COLN)) // non-custom -#define NUM_SPC LT(_NUM, TH_SPC) -#define NAV_ENT LT(_NAV, KC_ENT) #define CAD C(A(KC_DEL)) #define LOCK G(KC_L) diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/mapping.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/mapping.c index 8b188e35..7d220043 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/mapping.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/custom_keys/mapping.c @@ -19,7 +19,6 @@ void turn_on_caps_word(custom_key_t* custom_key) { custom_key_t custom_keys[] = { // _BASE layer - [NK_Q] = CUSTOM_KEY(KC_Q, 1, REMAP_WITH_OPTIONS(A(KC_F4), MOD_MASK_GUI, REMOVE_TRIGGER, false)), // _NUM layer [NK_COLN] = CUSTOM_KEY(KC_COLN, 1, REMAP(KC_M, MOD_MASK_CTRL)), @@ -27,51 +26,6 @@ custom_key_t custom_keys[] = { KC_MINS, 2, REMAP(KC_R, MOD_MASK_CTRL), REMAP_WITH_OPTIONS(KC_MINS, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) ), - [NK_1] = CUSTOM_KEY( - KC_1, 2, REMAP(KC_A, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_1, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_2] = CUSTOM_KEY( - KC_2, 2, REMAP(KC_S, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_2, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_3] = CUSTOM_KEY(KC_3, 1, REMAP_WITH_OPTIONS(KC_3, MOD_MASK_SHIFT, REMOVE_TRIGGER, false)), - [NK_4] = CUSTOM_KEY( - KC_4, 2, REMAP(KC_F, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_4, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_5] = CUSTOM_KEY(KC_5, 1, REMAP_WITH_OPTIONS(KC_5, MOD_MASK_SHIFT, REMOVE_TRIGGER, false)), - [NK_6] = CUSTOM_KEY( - KC_6, 2, REMAP(KC_H, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_6, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_7] = CUSTOM_KEY( - KC_7, 2, REMAP(KC_J, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_7, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_8] = CUSTOM_KEY(KC_8, 1, REMAP_WITH_OPTIONS(KC_8, MOD_MASK_SHIFT, REMOVE_TRIGGER, false)), - [NK_9] = CUSTOM_KEY(KC_9, 1, REMAP_WITH_OPTIONS(KC_9, MOD_MASK_SHIFT, REMOVE_TRIGGER, false)), - [NK_0] = CUSTOM_KEY(KC_0, 1, REMAP_WITH_OPTIONS(KC_0, MOD_MASK_SHIFT, REMOVE_TRIGGER, false)), - [NK_6_LOW] = CUSTOM_KEY( - KC_6, 2, REMAP(KC_Z, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_6, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_7_LOW] = CUSTOM_KEY( - KC_7, 2, REMAP(KC_X, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_7, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_8_LOW] = CUSTOM_KEY( - KC_8, 2, REMAP(KC_C, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_8, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_9_LOW] = CUSTOM_KEY( - KC_9, 2, REMAP(KC_V, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_9, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), - [NK_0_LOW] = CUSTOM_KEY( - KC_0, 2, REMAP(KC_B, MOD_MASK_CTRL), - REMAP_WITH_OPTIONS(KC_0, MOD_MASK_SHIFT, REMOVE_TRIGGER, false) - ), // _NAV layer [NK_BSLS] = CUSTOM_KEY( @@ -115,36 +69,11 @@ custom_key_t custom_keys[] = { [NK_AMPR] = CUSTOM_KEY(KC_AMPR, 1, REMAP(KC_U, MOD_MASK_CTRL)), [NK_ASTR] = CUSTOM_KEY(KC_ASTR, 1, REMAP(KC_I, MOD_MASK_CTRL)), [NK_RPRN] = CUSTOM_KEY(KC_RPRN, 1, REMAP(KC_P, MOD_MASK_CTRL)), - [NK_ESC] = - CUSTOM_KEY(KC_ESC, 1, REMAP_WITH_OPTIONS(TAB_FORWARD, MOD_MASK_ALT, REMOVE_ALL, false)), - [NK_UP] = CUSTOM_KEY(KC_UP, 1, REMAP(C(KC_EQL), MOD_MASK_CTRL)), - [NK_DOWN] = CUSTOM_KEY(KC_DOWN, 1, REMAP(C(KC_MINS), MOD_MASK_CTRL)), - [NK_BSPC] = CUSTOM_KEY( - KC_BSPC, 1, - REMAP_WITH_NEGATIVE_MODS_AND_OPTIONS_FN( - obliterate_line_backwards, MOD_MASK_GUI, 0, REMOVE_TRIGGER, false - ) - ), // tap-hold - [TH_LAUNCH] = CUSTOM_KEY_FN_NO_REMAP(launch), - [TH_DEL] = CUSTOM_KEY( - KC_DEL, 2, - REMAP_WITH_NEGATIVE_MODS_AND_OPTIONS_FN( - turn_on_caps_word, MOD_MASK_SHIFT, 0, NO_CHANGE, false - ), - REMAP_WITH_NEGATIVE_MODS_AND_OPTIONS_FN( - obliterate_line_forwards, MOD_MASK_GUI, 0, REMOVE_TRIGGER, false - ), - ), - [TH_RALT] = CUSTOM_KEY(KC_RALT, 1, REMAP(KC_CAPS, MOD_MASK_SHIFT)), [TH_TILD] = CUSTOM_KEY(KC_TILD, 1, REMAP_WITH_OPTIONS(TAB_BACKWARD, MOD_MASK_ALT, REMOVE_ALL, false)), - [TH_LSFT] = - CUSTOM_KEY(KC_LSFT, 1, REMAP_WITH_OPTIONS(TAB_BACKWARD, MOD_MASK_ALT, REMOVE_ALL, false)), [TH_COMM] = CUSTOM_KEY(KC_COMM, 1, REMAP_WITH_OPTIONS(TAB_BACKWARD, MOD_MASK_ALT, REMOVE_ALL, false)), [TH_COLN] = CUSTOM_KEY_NO_REMAP(KC_COLN), - [TH_SPC] = - CUSTOM_KEY(KC_SPC, 1, REMAP_WITH_OPTIONS(MENU, MOD_MASK_CTRL, REMOVE_TRIGGER, false)), }; \ No newline at end of file diff --git a/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c b/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c index c789b673..6da5c14a 100644 --- a/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c +++ b/keyboards/keebio/nyquist/rev4/keymaps/drew/keymap.c @@ -8,8 +8,27 @@ bool NAV_enabled = false; +enum CustomKeycodes { + DOWN = SAFE_RANGE + 50, + UP, + + LOW_6, + LOW_7, + LOW_8, + LOW_9, + LOW_0, +}; + #define SFT_DEL SFT_T(KC_DEL) #define L_SFT SFT_T(KC_LSFT) +#define ALT_COMP ALT_T(KC_RALT) + +/// @brief Neutralize flashing modifiers (Alt and Super) if they are active. +static inline void neutralize_flashing_mods(void) { + if (get_mods() & MOD_MASK_AG) { + tap_code(DUMMY_MOD_NEUTRALIZER_KEYCODE); + } +} // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -18,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, L_SFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_DEL, - KC_RCTL, LT(_FUNC, KC_MPLY), ALT_T(KC_LALT), TD(TD_CAD_LOCK_SLEEP), GUI_LAUNCH, NUM_SPC, NAV_ENT, ALT_COMP, KC_LEFT, NK(NK_DOWN), NK(NK_UP), KC_RGHT + KC_RCTL, LT(_FUNC, KC_MPLY), ALT_T(KC_LALT), TD(TD_CAD_LOCK_SLEEP), GUI_LAUNCH, NUM_SPC, NAV_ENT, ALT_COMP, KC_LEFT, DOWN, UP, KC_RGHT ), // gamer [_GAME] = LAYOUT_ortho_4x12( @@ -31,8 +50,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // numbers [_NUM] = LAYOUT_ortho_4x12( KC_TRNS, KC_SLSH, KC_AT, KC_ASTR, NK(NK_MINS_NUM), KC_PLUS, NK(NK_CIRC), NK(NK_AMPR), NK(NK_ASTR), KC_LPRN, NK(NK_RPRN), KC_TRNS, - CTL_T(KC_DOT), NK(NK_1), NK(NK_2), NK(NK_3), NK(NK_4), NK(NK_5), NK(NK_6), NK(NK_7), NK(NK_8), NK(NK_9), NK(NK_0), KC_TRNS, - SFT_COMM, NK(NK_6_LOW), NK(NK_7_LOW), NK(NK_8_LOW), NK(NK_9_LOW), NK(NK_0_LOW), KC_SCLN, NK(NK_COLN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + CTL_T(KC_DOT), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + SFT_COMM, LOW_6, LOW_7, LOW_8, LOW_9, LOW_0, KC_SCLN, NK(NK_COLN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CTL_COLN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_NAV] = LAYOUT_ortho_4x12( @@ -60,32 +79,45 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { record->event.pressed ? layer_off(_NAV) : layer_on(_NAV); } } else { - process_custom_key(NK(TH_SPC), record); - return false; + if (record->event.pressed) { + uint8_t mods = get_mods(); + if (mods & MOD_MASK_CTRL) { + del_mods(mods); + tap_code16(MENU); + set_mods(mods); + return false; + } + } } break; + case NAV_ENT: if (!record->tap.count) { NAV_enabled = record->event.pressed; } break; + + case GUI_LAUNCH: + if (record->tap.count && record->event.pressed) { + tap_code16(LAUNCH); + return false; + } + break; + case SFT_DEL: - uint8_t mods = get_mods(); - if (mods & MOD_MASK_GUI) { - if (record->tap.count) { + if (record->tap.count) { // only trigger on taps, not holds + uint8_t mods = get_mods(); + if (mods & MOD_MASK_GUI) { // obliterate line forwards if (record->event.pressed) { del_mods(MOD_MASK_GUI); tap_code16(S(KC_END)); register_code(KC_DEL); set_mods(mods); - tap_code(DUMMY_MOD_NEUTRALIZER_KEYCODE); + return false; } else { - unregister_code(KC_DEL); + neutralize_flashing_mods(); } - return false; - } - } else if (get_mods() & MOD_MASK_SHIFT) { - if (record->tap.count) { + } else if (mods & MOD_MASK_SHIFT) { // caps word if (record->event.pressed) { caps_word_on(); } @@ -94,13 +126,45 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { } break; + case L_SFT: + static bool tab_backward_held = false; + if (record->tap.count) { + if (record->event.pressed) { + uint8_t mods = get_mods(); + if (mods & MOD_MASK_ALT) { + del_mods(MOD_MASK_ALT); + register_code16(TAB_BACKWARD); + set_mods(mods); + tab_backward_held = true; // set the flag + return false; + } else if (mods & MOD_MASK_SHIFT) { + caps_word_on(); + return false; + } + } else { + if (tab_backward_held) { + tab_backward_held = false; // clear the flag + unregister_code16(TAB_BACKWARD); + neutralize_flashing_mods(); + return false; + } + } + } + break; + + case ALT_COMP: + // caps lock + if (record->tap.count && record->event.pressed && get_mods() & MOD_MASK_SHIFT) { + tap_code(KC_CAPS); + return false; + } + break; + case CUSTOM_KEY_RANGE: process_custom_key(keycode, record); return false; break; - case GUI_LAUNCH: case ALT_DEL: - case ALT_COMP: case SFT_TILD: case SFT_SFT: case SFT_COMM: @@ -151,7 +215,7 @@ bool turn_on_caps_word2(bool key_down, void* _) { return false; } -const key_override_t Q_TO_KILL = ko_make_basic(MOD_MASK_GUI, KC_Q, A(KC_F4)); +const key_override_t Q_TO_KILL = ko_make_with_layers(MOD_MASK_GUI, KC_Q, A(KC_F4), _BASE + 1); const key_override_t BSPC_TO_OBLITERATE = { .trigger = KC_BSPC, @@ -177,8 +241,55 @@ const key_override_t DEL_TO_CAPS_WORD = { const key_override_t ESC_TO_TAB_FORWARD = ko_make_basic(MOD_MASK_ALT, KC_ESC, TAB_FORWARD); -// const key_override_t SFT_TO_TAB_BACKWARD = -// ko_make_basic(MOD_MASK_ALT, L_SFT, ); +const key_override_t DOWN_TO_ZOOM_OUT = ko_make_basic(MOD_MASK_CTRL, DOWN, C(KC_MINS)); +const key_override_t DOWN_DEFAULT = ko_make_basic(0, DOWN, KC_DOWN); +const key_override_t UP_TO_ZOOM_IN = ko_make_basic(MOD_MASK_CTRL, UP, C(KC_EQL)); +const key_override_t UP_DEFAULT = ko_make_basic(0, UP, KC_UP); + +const key_override_t ONE_TO_A = ko_make_basic(MOD_MASK_CTRL, KC_1, C(KC_A)); +const key_override_t ONE_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_1, KC_1); + +const key_override_t TWO_TO_S = ko_make_basic(MOD_MASK_CTRL, KC_2, C(KC_S)); +const key_override_t TWO_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_2, KC_2); + +const key_override_t THREE_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_3, KC_3); + +const key_override_t FOUR_TO_F = ko_make_basic(MOD_MASK_CTRL, KC_4, C(KC_F)); +const key_override_t FOUR_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_4, KC_4); + +const key_override_t FIVE_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_5, KC_5); + +const key_override_t SIX_TO_H = ko_make_basic(MOD_MASK_CTRL, KC_6, C(KC_H)); +const key_override_t SIX_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_6, KC_6); + +const key_override_t SEVEN_TO_J = ko_make_basic(MOD_MASK_CTRL, KC_7, C(KC_J)); +const key_override_t SEVEN_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_7, KC_7); + +const key_override_t EIGHT_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_8, KC_8); + +const key_override_t NINE_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_9, KC_9); + +const key_override_t ZERO_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, KC_0, KC_0); + +const key_override_t LOW_6_TO_Z = ko_make_basic(MOD_MASK_CTRL, LOW_6, C(KC_Z)); +const key_override_t LOW_6_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, LOW_6, KC_6); +const key_override_t LOW_6_DEFAULT = ko_make_basic(0, LOW_6, KC_6); + +const key_override_t LOW_7_TO_X = ko_make_basic(MOD_MASK_CTRL, LOW_7, C(KC_X)); +const key_override_t LOW_7_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, LOW_7, KC_7); +const key_override_t LOW_7_DEFAULT = ko_make_basic(0, LOW_7, KC_7); + +const key_override_t LOW_8_TO_C = ko_make_basic(MOD_MASK_CTRL, LOW_8, C(KC_C)); +const key_override_t LOW_8_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, LOW_8, KC_8); +const key_override_t LOW_8_DEFAULT = ko_make_basic(0, LOW_8, KC_8); + +const key_override_t LOW_9_TO_V = ko_make_basic(MOD_MASK_CTRL, LOW_9, C(KC_V)); +const key_override_t LOW_9_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, LOW_9, KC_9); +const key_override_t LOW_9_DEFAULT = ko_make_basic(0, LOW_9, KC_9); + +const key_override_t LOW_0_TO_B = ko_make_basic(MOD_MASK_CTRL, LOW_0, C(KC_B)); +const key_override_t LOW_0_NOSHIFT = ko_make_basic(MOD_MASK_SHIFT, LOW_0, KC_0); +const key_override_t LOW_0_DEFAULT = ko_make_basic(0, LOW_0, KC_0); // this globally defines all key overrides to be used const key_override_t* key_overrides[] = { @@ -187,4 +298,40 @@ const key_override_t* key_overrides[] = { // &DEL_TO_OBLITERATE, &DEL_TO_CAPS_WORD, &ESC_TO_TAB_FORWARD, + + &DOWN_TO_ZOOM_OUT, + &DOWN_DEFAULT, + &UP_TO_ZOOM_IN, + &UP_DEFAULT, + + &ONE_TO_A, + &ONE_NOSHIFT, + &TWO_TO_S, + &TWO_NOSHIFT, + &THREE_NOSHIFT, + &FOUR_TO_F, + &FOUR_NOSHIFT, + &FIVE_NOSHIFT, + &SIX_TO_H, + &SIX_NOSHIFT, + &SEVEN_TO_J, + &SEVEN_NOSHIFT, + &EIGHT_NOSHIFT, + &NINE_NOSHIFT, + &ZERO_NOSHIFT, + &LOW_6_TO_Z, + &LOW_6_NOSHIFT, + &LOW_6_DEFAULT, + &LOW_7_TO_X, + &LOW_7_NOSHIFT, + &LOW_7_DEFAULT, + &LOW_8_TO_C, + &LOW_8_NOSHIFT, + &LOW_8_DEFAULT, + &LOW_9_TO_V, + &LOW_9_NOSHIFT, + &LOW_9_DEFAULT, + &LOW_0_TO_B, + &LOW_0_NOSHIFT, + &LOW_0_DEFAULT, }; diff --git a/qmk.json b/qmk.json index 6ad38551..e008d168 100644 --- a/qmk.json +++ b/qmk.json @@ -1,7 +1,9 @@ { "userspace_version": "1.1", "build_targets": [ - ["keebio/nyquist/rev4", "drew"], - ["planck/rev7", "drew"] + [ + "keebio/nyquist/rev4", + "drew" + ] ] } \ No newline at end of file