Made good progress moving to key overrides

This commit is contained in:
Drew Whitney 2025-11-01 17:18:33 -06:00
commit ad8e3c3c54
5 changed files with 173 additions and 96 deletions

View file

View file

@ -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)

View file

@ -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)),
};

View file

@ -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);
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:
if (record->tap.count) { // only trigger on taps, not holds
uint8_t mods = get_mods();
if (mods & MOD_MASK_GUI) {
if (record->tap.count) {
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);
} else {
unregister_code(KC_DEL);
}
return false;
} else {
neutralize_flashing_mods();
}
} 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,
};

View file

@ -1,7 +1,9 @@
{
"userspace_version": "1.1",
"build_targets": [
["keebio/nyquist/rev4", "drew"],
["planck/rev7", "drew"]
[
"keebio/nyquist/rev4",
"drew"
]
]
}