mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-28 12:09:16 +06:00
114 lines
2.8 KiB
C
114 lines
2.8 KiB
C
|
#include "leader_user.h"
|
||
|
#ifdef RGBLIGHT_ENABLE
|
||
|
extern rgblight_config_t rgblight_config;
|
||
|
#endif
|
||
|
bool leader_succeed;
|
||
|
|
||
|
void matrix_scan_user(void) {
|
||
|
static bool has_ran_yet;
|
||
|
if (!has_ran_yet) {
|
||
|
has_ran_yet = true;
|
||
|
startup_user();
|
||
|
}
|
||
|
#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
|
||
|
// run_diablo_macro_check();
|
||
|
#endif
|
||
|
#ifdef RGBLIGHT_ENABLE
|
||
|
matrix_scan_rgb();
|
||
|
#endif
|
||
|
|
||
|
// matrix_scan_keymap();
|
||
|
}
|
||
|
|
||
|
void leader_start_user(void) {
|
||
|
#ifdef RGBLIGHT_ENABLE
|
||
|
rgblight_savebase();
|
||
|
rgblight_mode_noeeprom(1);
|
||
|
rgblight_sethsv_noeeprom(HSV_GOLDENROD);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void leader_end_user(void) {
|
||
|
leader_succeed = false;
|
||
|
|
||
|
if (leader_sequence_one_key(KC_W)) {
|
||
|
// vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command
|
||
|
SEND_STRING(":w" SS_TAP(X_ENTER));
|
||
|
tmux_pane_switch_repeat();
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_one_key(KC_T)) {
|
||
|
// Send the Tmux Prefix
|
||
|
tmux_prefix();
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_one_key(KC_A)) {
|
||
|
// tmux: Send the prefix and press 'right' arrow
|
||
|
tmux_prefix();
|
||
|
tap_code(KC_RIGHT);
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_T, KC_T)) {
|
||
|
// tmux: Send the prefix to a nested session
|
||
|
tmux_prefix();
|
||
|
tmux_prefix();
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_T, KC_R)) {
|
||
|
// tmux: Switch pane and repeat last action
|
||
|
tmux_pane_switch_repeat();
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_V, KC_Z)){
|
||
|
// vim: Zoom pane
|
||
|
tap_code16(LCTL(KC_W));
|
||
|
tap_code16(LSFT(KC_BSLS));
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_V, KC_R)) {
|
||
|
// vim: Substitute and place cursor
|
||
|
SEND_STRING(":%s///g" SS_TAP(X_LEFT));
|
||
|
tap_code(KC_LEFT);
|
||
|
tap_code(KC_LEFT);
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_V, KC_T)) {
|
||
|
// vim: move current pane to new tab
|
||
|
tap_code16(LCTL(KC_W));
|
||
|
tap_code16(LSFT(KC_T));
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_one_key(KC_R)){
|
||
|
// Toggle RGB Layer indicator
|
||
|
tap_code16(KC_RGB_T);
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_one_key(KC_SPC)){
|
||
|
// One Shot Unicode layer
|
||
|
//TODO tap_code16(OS_UNI);
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_two_keys(KC_SPC, KC_SPC)){
|
||
|
// Toggle _MODS
|
||
|
tap_code16(TG_MODS);
|
||
|
leader_succeed = true;
|
||
|
} else
|
||
|
if (leader_sequence_three_keys(KC_BSPC, KC_BSPC, KC_BSPC)){
|
||
|
// Reset the keyboard
|
||
|
reset_keyboard();
|
||
|
leader_succeed = true;
|
||
|
}
|
||
|
|
||
|
// pick color depending of success /fail
|
||
|
// fade leader_start from 100 to 0
|
||
|
// fade new color from 0 to 100 to 0
|
||
|
// fade old color from 0 to 100
|
||
|
#ifdef RGBLIGHT_ENABLE
|
||
|
if (leader_succeed) {
|
||
|
fadeflash_leds(HSV_GREEN);
|
||
|
} else {
|
||
|
fadeflash_leds(HSV_RED);
|
||
|
}
|
||
|
#endif
|
||
|
}
|