feat(q5_max): implement CAPS_MOD tap/hold logic (ESC/Ctrl/CapsLock/CapsWord/Autocorrect)
This commit is contained in:
@@ -149,11 +149,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// CAPS_MOD handler added in Task 3; suppress unused-variable errors until then.
|
|
||||||
(void)caps_mod_held;
|
|
||||||
(void)caps_mod_ctrl_registered;
|
|
||||||
(void)caps_mod_timer;
|
|
||||||
|
|
||||||
// Chord key: activate/deactivate chord unicode mode.
|
// Chord key: activate/deactivate chord unicode mode.
|
||||||
if (keycode == CHORD_KEY) {
|
if (keycode == CHORD_KEY) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
@@ -170,6 +165,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
case CAPS_MOD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
caps_mod_held = true;
|
||||||
|
caps_mod_timer = timer_read();
|
||||||
|
} else {
|
||||||
|
if (caps_mod_ctrl_registered) {
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
caps_mod_ctrl_registered = false;
|
||||||
|
} else {
|
||||||
|
uint8_t mods = get_mods();
|
||||||
|
if (mods & MOD_MASK_GUI) {
|
||||||
|
autocorrect_toggle();
|
||||||
|
} else if (mods & MOD_MASK_ALT) {
|
||||||
|
caps_word_toggle();
|
||||||
|
} else if (mods & MOD_MASK_SHIFT) {
|
||||||
|
tap_code(KC_CAPS);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_ESC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
caps_mod_held = false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
case LCK_FN1:
|
case LCK_FN1:
|
||||||
case LCK_FN2:
|
case LCK_FN2:
|
||||||
case LCK_FN3:
|
case LCK_FN3:
|
||||||
@@ -228,6 +247,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_user(void) {
|
||||||
|
if (caps_mod_held && !caps_mod_ctrl_registered
|
||||||
|
&& timer_elapsed(caps_mod_timer) > TAPPING_TERM) {
|
||||||
|
caps_mod_ctrl_registered = true;
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
}
|
||||||
if (alt_tab_active && timer_elapsed(alt_tab_timer) > ALT_TAB_TIMEOUT) {
|
if (alt_tab_active && timer_elapsed(alt_tab_timer) > ALT_TAB_TIMEOUT) {
|
||||||
unregister_code(KC_LALT);
|
unregister_code(KC_LALT);
|
||||||
alt_tab_active = false;
|
alt_tab_active = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user