You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
2.8 KiB

  1. #include "leader_user.h"
  2. #ifdef RGBLIGHT_ENABLE
  3. extern rgblight_config_t rgblight_config;
  4. #endif
  5. bool leader_succeed;
  6. void matrix_scan_user(void) {
  7. static bool has_ran_yet;
  8. if (!has_ran_yet) {
  9. has_ran_yet = true;
  10. startup_user();
  11. }
  12. #ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
  13. // run_diablo_macro_check();
  14. #endif
  15. #ifdef RGBLIGHT_ENABLE
  16. matrix_scan_rgb();
  17. #endif
  18. // matrix_scan_keymap();
  19. }
  20. void leader_start_user(void) {
  21. #ifdef RGBLIGHT_ENABLE
  22. rgblight_savebase();
  23. rgblight_mode_noeeprom(1);
  24. rgblight_sethsv_noeeprom(HSV_GOLDENROD);
  25. #endif
  26. }
  27. void leader_end_user(void) {
  28. leader_succeed = false;
  29. if (leader_sequence_one_key(KC_W)) {
  30. // vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command
  31. SEND_STRING(":w" SS_TAP(X_ENTER));
  32. tmux_pane_switch_repeat();
  33. leader_succeed = true;
  34. } else
  35. if (leader_sequence_one_key(KC_T)) {
  36. // Send the Tmux Prefix
  37. tmux_prefix();
  38. leader_succeed = true;
  39. } else
  40. if (leader_sequence_one_key(KC_A)) {
  41. // tmux: Send the prefix and press 'right' arrow
  42. tmux_prefix();
  43. tap_code(KC_RIGHT);
  44. leader_succeed = true;
  45. } else
  46. if (leader_sequence_two_keys(KC_T, KC_T)) {
  47. // tmux: Send the prefix to a nested session
  48. tmux_prefix();
  49. tmux_prefix();
  50. leader_succeed = true;
  51. } else
  52. if (leader_sequence_two_keys(KC_T, KC_R)) {
  53. // tmux: Switch pane and repeat last action
  54. tmux_pane_switch_repeat();
  55. leader_succeed = true;
  56. } else
  57. if (leader_sequence_two_keys(KC_V, KC_Z)){
  58. // vim: Zoom pane
  59. tap_code16(LCTL(KC_W));
  60. tap_code16(LSFT(KC_BSLS));
  61. leader_succeed = true;
  62. } else
  63. if (leader_sequence_two_keys(KC_V, KC_R)) {
  64. // vim: Substitute and place cursor
  65. SEND_STRING(":%s///g" SS_TAP(X_LEFT));
  66. tap_code(KC_LEFT);
  67. tap_code(KC_LEFT);
  68. leader_succeed = true;
  69. } else
  70. if (leader_sequence_two_keys(KC_V, KC_T)) {
  71. // vim: move current pane to new tab
  72. tap_code16(LCTL(KC_W));
  73. tap_code16(LSFT(KC_T));
  74. leader_succeed = true;
  75. } else
  76. if (leader_sequence_one_key(KC_R)){
  77. // Toggle RGB Layer indicator
  78. tap_code16(KC_RGB_T);
  79. leader_succeed = true;
  80. } else
  81. if (leader_sequence_one_key(KC_SPC)){
  82. // One Shot Unicode layer
  83. //TODO tap_code16(OS_UNI);
  84. leader_succeed = true;
  85. } else
  86. if (leader_sequence_two_keys(KC_SPC, KC_SPC)){
  87. // Toggle _MODS
  88. tap_code16(TG_MODS);
  89. leader_succeed = true;
  90. } else
  91. if (leader_sequence_three_keys(KC_BSPC, KC_BSPC, KC_BSPC)){
  92. // Reset the keyboard
  93. reset_keyboard();
  94. leader_succeed = true;
  95. }
  96. // pick color depending of success /fail
  97. // fade leader_start from 100 to 0
  98. // fade new color from 0 to 100 to 0
  99. // fade old color from 0 to 100
  100. #ifdef RGBLIGHT_ENABLE
  101. if (leader_succeed) {
  102. fadeflash_leds(HSV_GREEN);
  103. } else {
  104. fadeflash_leds(HSV_RED);
  105. }
  106. #endif
  107. }