Refactor Leader key feature (#19632)

Co-authored-by: Drashna Jaelre <drashna@live.com>
This commit is contained in:
Ryan
2023-02-13 03:19:02 +11:00
committed by GitHub
parent d10350cd2c
commit bbf7a20b33
77 changed files with 2457 additions and 1968 deletions

View File

@@ -157,47 +157,41 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
// Screenshot
SEQ_ONE_KEY(KC_S) {
tap_code16(G(C(S(KC_4))));
}
// Record Screen
SEQ_TWO_KEYS(KC_S, KC_S) {
tap_code16(S(G(KC_5)));
}
// 1Pass browser
SEQ_ONE_KEY(KC_A) {
tap_code16(G(A(KC_BSLS)));
}
// 1Pass mini
SEQ_TWO_KEYS(KC_A, KC_A) {
tap_code16(G(KC_BSLS));
}
// Comment out
SEQ_ONE_KEY(KC_F) {
tap_code16(G(KC_SLSH));
}
// Spotlight
SEQ_ONE_KEY(KC_SPC) {
tap_code16(G(KC_SPC));
}
// Auto format
SEQ_ONE_KEY(KC_ENT) {
tap_code16(S(G(A(KC_F))));
}
// Focus file tree
SEQ_ONE_KEY(KC_TAB) {
tap_code16(G(KC_1));
}
// Caps-lock
SEQ_TWO_KEYS(KC_TAB, KC_TAB) {
tap_code16(KC_CAPS);
}
void leader_end_user(void) {
// Screenshot
if (leader_sequence_one_key(KC_S)) {
tap_code16(G(C(S(KC_4))));
}
// Record Screen
if (leader_sequence_two_keys(KC_S, KC_S)) {
tap_code16(S(G(KC_5)));
}
// 1Pass browser
if (leader_sequence_one_key(KC_A)) {
tap_code16(G(A(KC_BSLS)));
}
// 1Pass mini
if (leader_sequence_two_keys(KC_A, KC_A)) {
tap_code16(G(KC_BSLS));
}
// Comment out
if (leader_sequence_one_key(KC_F)) {
tap_code16(G(KC_SLSH));
}
// Spotlight
if (leader_sequence_one_key(KC_SPC)) {
tap_code16(G(KC_SPC));
}
// Auto format
if (leader_sequence_one_key(KC_ENT)) {
tap_code16(S(G(A(KC_F))));
}
// Focus file tree
if (leader_sequence_one_key(KC_TAB)) {
tap_code16(G(KC_1));
}
// Caps-lock
if (leader_sequence_two_keys(KC_TAB, KC_TAB)) {
tap_code16(KC_CAPS);
}
}

View File

@@ -372,39 +372,32 @@ void music_scale_user(void)
#endif
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY (KC_R) {
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
}
SEQ_ONE_KEY (KC_V) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
SEQ_ONE_KEY(KC_F) {
SEND_STRING("if yes\n\tpeanut butter\nelse\n\trice snacks");
}
SEQ_TWO_KEYS(KC_A, KC_S) {
register_code(KC_H);
unregister_code(KC_H);
}
SEQ_THREE_KEYS(KC_A, KC_S, KC_D) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
unregister_code(KC_LGUI);
}
void leader_end_user(void) {
if (leader_sequence_one_key(KC_R)) {
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
tap_random_base64();
}
if (leader_sequence_one_key(KC_V)) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
if (leader_sequence_one_key(KC_F)) {
SEND_STRING("if yes\n\tpeanut butter\nelse\n\trice snacks");
}
if (leader_sequence_two_keys(KC_A, KC_S)) {
register_code(KC_H);
unregister_code(KC_H);
}
if (leader_sequence_three_keys(KC_A, KC_S, KC_D)) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
unregister_code(KC_LGUI);
}
}

View File

@@ -408,7 +408,64 @@ void keyboard_post_init_keymap(void) {
bspc_timer = 0;
}
LEADER_EXTERNS();
void leader_end_user(void) {
if (leader_sequence_one_key(KC_K)) {
layer_invert(_KP);
}
if (leader_sequence_one_key(KC_G)) {
layer_invert(_GAME);
}
if (leader_sequence_one_key(KC_KP_5)) {
layer_invert(_KP);
}
if (leader_sequence_one_key(KC_5)) {
layer_invert(_KP);
}
if (leader_sequence_two_keys(KC_SCLN, KC_1)) {
send_secret_string(0);
}
if (leader_sequence_two_keys(KC_SCLN, KC_2)) {
send_secret_string(1);
}
if (leader_sequence_two_keys(KC_SCLN, KC_3)) {
send_secret_string(2);
}
if (leader_sequence_two_keys(KC_SCLN, KC_4)) {
send_secret_string(3);
}
if (leader_sequence_two_keys(KC_SCLN, KC_5)) {
send_secret_string(4);
}
if (leader_sequence_two_keys(KC_SCLN, KC_6)) {
send_secret_string(5);
}
if (leader_sequence_two_keys(KC_SCLN, KC_M)) {
send_secret_string(0);
}
if (leader_sequence_two_keys(KC_SCLN, KC_COMM)) {
send_secret_string(1);
}
if (leader_sequence_two_keys(KC_SCLN, KC_DOT)) {
send_secret_string(2);
}
if (leader_sequence_two_keys(KC_SCLN, KC_J)) {
send_secret_string(3);
}
if (leader_sequence_two_keys(KC_SCLN, KC_K)) {
send_secret_string(4);
}
if (leader_sequence_two_keys(KC_SCLN, KC_L)) {
send_secret_string(5);
}
if (leader_sequence_one_key(KC_C)) {
tap_code16(C(KC_C));
}
// neovim: terminal escape
if (leader_sequence_one_key(KC_QUOT)) {
tap_code16(C(KC_BSLS));
tap_code16(C(KC_N));
}
}
void matrix_scan_keymap(void) {
#ifdef AUDIO_ENABLE
@@ -436,67 +493,6 @@ void matrix_scan_keymap(void) {
bspc_timer = 0;
register_code(KC_BSPC);
}
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_K) {
layer_invert(_KP);
}
SEQ_ONE_KEY(KC_G) {
layer_invert(_GAME);
}
SEQ_ONE_KEY(KC_KP_5) {
layer_invert(_KP);
}
SEQ_ONE_KEY(KC_5) {
layer_invert(_KP);
}
SEQ_TWO_KEYS(KC_SCLN, KC_1) {
send_secret_string(0);
}
SEQ_TWO_KEYS(KC_SCLN, KC_2) {
send_secret_string(1);
}
SEQ_TWO_KEYS(KC_SCLN, KC_3) {
send_secret_string(2);
}
SEQ_TWO_KEYS(KC_SCLN, KC_4) {
send_secret_string(3);
}
SEQ_TWO_KEYS(KC_SCLN, KC_5) {
send_secret_string(4);
}
SEQ_TWO_KEYS(KC_SCLN, KC_6) {
send_secret_string(5);
}
SEQ_TWO_KEYS(KC_SCLN, KC_M) {
send_secret_string(0);
}
SEQ_TWO_KEYS(KC_SCLN, KC_COMM) {
send_secret_string(1);
}
SEQ_TWO_KEYS(KC_SCLN, KC_DOT) {
send_secret_string(2);
}
SEQ_TWO_KEYS(KC_SCLN, KC_J) {
send_secret_string(3);
}
SEQ_TWO_KEYS(KC_SCLN, KC_K) {
send_secret_string(4);
}
SEQ_TWO_KEYS(KC_SCLN, KC_L) {
send_secret_string(5);
}
SEQ_ONE_KEY(KC_C) {
tap_code16(C(KC_C));
}
// neovim: terminal escape
SEQ_ONE_KEY(KC_QUOT) {
tap_code16(C(KC_BSLS));
tap_code16(C(KC_N));
}
}
}
bool music_mask_user(uint16_t keycode) {

View File

@@ -984,31 +984,26 @@ bool dip_switch_update_user(uint8_t index, bool active) {
return true;
}
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_F) {
void leader_end_user(void) {
if (leader_sequence_one_key(KC_F)) {
// Anything you can do in a macro.
SEND_STRING("QMK is awesome.");
}
SEQ_TWO_KEYS(KC_D, KC_D) {
if (leader_sequence_two_keys(KC_D, KC_D)) {
SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
}
SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {
SEND_STRING("https://start.duckduckgo.com\n");
}
SEQ_TWO_KEYS(KC_A, KC_S) {
if (leader_sequence_two_keys(KC_A, KC_S)) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
unregister_code(KC_LGUI);
}
}
}
void matrix_scan_user(void) {
#ifdef AUDIO_ENABLE
if (muse_mode) {
if (muse_counter == 0) {

View File

@@ -240,7 +240,6 @@ uint16_t muse_tempo = 50;
// Used by Leader key chords
bool did_leader_succeed;
LEADER_EXTERNS();
// Tap-Dance stuffs, initializing functions that are coded further below
td_state_t cur_dance(tap_dance_state_t* state);
@@ -1404,6 +1403,81 @@ void leader_start_user(void) {
}
// Called when either the leader sequence is completed, or the leader timeout is hit
void leader_end_user(void) {
did_leader_succeed = false;
if (leader_sequence_one_key(KC_E)) {
SEND_STRING(SS_LCTL(SS_LSFT("t")));
did_leader_succeed = true;
}
if (leader_sequence_one_key(KC_C)) {
SEND_STRING(SS_LGUI("r") SS_DELAY(250) "calc\n");
did_leader_succeed = true;
}
else if (leader_sequence_one_key(KC_V)) {
SEND_STRING(SS_LCTL("v"));
did_leader_succeed = true;
}
else if (leader_sequence_two_keys(KC_E, KC_D)) {
SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c"));
did_leader_succeed = true;
}
else if (leader_sequence_two_keys(KC_A, KC_C)) {
SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_C, KC_A, KC_T)) {
send_unicode_string("😸");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_B, KC_A, KC_T)) {
send_unicode_string("🦇");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_D, KC_O, KC_G)) {
send_unicode_string("🐶");
did_leader_succeed = true;
}
else if (leader_sequence_five_keys(KC_S, KC_M, KC_I, KC_L, KC_E)) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else if (leader_sequence_four_keys(KC_H, KC_A, KC_P, KC_Y)) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else if (leader_sequence_five_keys(KC_H, KC_A, KC_P, KC_P, KC_Y)) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_S, KC_A, KC_D)) {
send_unicode_string("🙁");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_Y, KC_E, KC_S)) {
send_unicode_string("👍");
did_leader_succeed = true;
}
else if (leader_sequence_two_keys(KC_N, KC_O)) {
send_unicode_string("👎");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_W, KC_O, KC_W)) {
send_unicode_string("🤯");
did_leader_succeed = true;
}
else if (leader_sequence_three_keys(KC_P, KC_O, KC_O)) {
send_unicode_string("💩");
did_leader_succeed = true;
}
else if (leader_sequence_four_keys(KC_P, KC_O, KC_O, KC_P)) {
send_unicode_string("💩");
did_leader_succeed = true;
}
else if (leader_sequence_four_keys(KC_B, KC_O, KC_A, KC_T)) {
send_unicode_string("");
did_leader_succeed = true;
}
if (did_leader_succeed) {
#ifdef AUDIO_ENABLE
PLAY_SONG(leader_succeed);
@@ -1758,84 +1832,6 @@ void matrix_scan_user(void) {
is_alt_tab_active = false;
}
}
// Monitor and perform leader-key chords
LEADER_DICTIONARY() {
did_leader_succeed = leading = false;
SEQ_ONE_KEY(KC_E) {
SEND_STRING(SS_LCTL(SS_LSFT("t")));
did_leader_succeed = true;
}
SEQ_ONE_KEY(KC_C) {
SEND_STRING(SS_LGUI("r") SS_DELAY(250) "calc\n");
did_leader_succeed = true;
}
else SEQ_ONE_KEY(KC_V) {
SEND_STRING(SS_LCTL("v"));
did_leader_succeed = true;
}
else SEQ_TWO_KEYS(KC_E, KC_D) {
SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c"));
did_leader_succeed = true;
}
else SEQ_TWO_KEYS(KC_A, KC_C) {
SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_C, KC_A, KC_T) {
send_unicode_string("😸");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_B, KC_A, KC_T) {
send_unicode_string("🦇");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_D, KC_O, KC_G) {
send_unicode_string("🐶");
did_leader_succeed = true;
}
else SEQ_FIVE_KEYS(KC_S, KC_M, KC_I, KC_L, KC_E) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else SEQ_FOUR_KEYS(KC_H, KC_A, KC_P, KC_Y) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else SEQ_FIVE_KEYS(KC_H, KC_A, KC_P, KC_P, KC_Y) {
send_unicode_string("🙂");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_S, KC_A, KC_D) {
send_unicode_string("🙁");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_Y, KC_E, KC_S) {
send_unicode_string("👍");
did_leader_succeed = true;
}
else SEQ_TWO_KEYS(KC_N, KC_O) {
send_unicode_string("👎");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_W, KC_O, KC_W) {
send_unicode_string("🤯");
did_leader_succeed = true;
}
else SEQ_THREE_KEYS(KC_P, KC_O, KC_O) {
send_unicode_string("💩");
did_leader_succeed = true;
}
else SEQ_FOUR_KEYS(KC_P, KC_O, KC_O, KC_P) {
send_unicode_string("💩");
did_leader_succeed = true;
}
else SEQ_FOUR_KEYS(KC_B, KC_O, KC_A, KC_T) {
send_unicode_string("");
did_leader_succeed = true;
}
leader_end();
}
// Run the wake-up RGB animation if performing wake-up
if (do_wake_animation) {
rgb_wakeup_sequence();

View File

@@ -158,36 +158,24 @@ void keyboard_post_init_user(void) {
}
bool leader_found;
LEADER_EXTERNS();
void matrix_scan_user(void) {
LEADER_DICTIONARY() {
leading = false;
leader_found = false;
SEQ_ONE_KEY(L_RESET) {
leader_found = true;
reset_keyboard();
}
else
SEQ_ONE_KEY(KC_DEL) {
leader_found = true;
layer_clear();
}
else
SEQ_ONE_KEY(LOWER) {
leader_found = true;
layer_on(_LOWER);
}
else
SEQ_ONE_KEY(RAISE) {
leader_found = true;
layer_on(_RAISE);
}
leader_end();
}
}
void leader_end_user(void) {
leader_found = false;
if (leader_sequence_one_key(L_RESET)) {
leader_found = true;
reset_keyboard();
} else if (leader_sequence_one_key(KC_DEL)) {
leader_found = true;
layer_clear();
} else if (leader_sequence_one_key(LOWER)) {
leader_found = true;
layer_on(_LOWER);
} else if (leader_sequence_one_key(RAISE)) {
leader_found = true;
layer_on(_RAISE);
}
// Plays sound on if leader sequence found.
if (leader_found) {
#ifdef AUDIO_ENABLE