process_records.c 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #include "yet-another-developer.h"
  2. uint16_t copy_paste_timer;
  3. __attribute__ ((weak))
  4. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  5. return true;
  6. }
  7. __attribute__ ((weak))
  8. bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
  9. return true;
  10. }
  11. // Defines actions for my global custom keycodes. Defined in yet-another-developer.h file
  12. // Then runs the _keymap's record handier if not processed here
  13. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  14. // If console is enabled, it will print the matrix position and status of each key pressed
  15. #ifdef KEYLOGGER_ENABLE
  16. #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
  17. xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
  18. #else
  19. xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
  20. #endif
  21. #endif //KEYLOGGER_ENABLE
  22. switch (keycode) {
  23. case KC_QWERTY ... KC_UNICODE:
  24. if (record->event.pressed) {
  25. set_single_persistent_default_layer(keycode - KC_QWERTY);
  26. }
  27. break;
  28. case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
  29. if (!record->event.pressed) {
  30. clear_mods();
  31. clear_oneshot_mods();
  32. send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
  33. {
  34. send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY);
  35. }
  36. }
  37. break;
  38. /* Tap Dance */
  39. case MC_QT1: // ""
  40. if(record->event.pressed){
  41. SEND_STRING("\"\"");
  42. tap_code(KC_LEFT);
  43. }
  44. break;
  45. case MC_QT2: // ''
  46. if(record->event.pressed){
  47. SEND_STRING("''");
  48. tap_code(KC_LEFT);
  49. }
  50. break;
  51. case MC_QT3: // `'
  52. if(record->event.pressed){
  53. SEND_STRING("`'");
  54. tap_code(KC_LEFT);
  55. }
  56. break;
  57. case MC_PAR: // Parenthesis
  58. if(record->event.pressed){
  59. SEND_STRING("()");
  60. tap_code(KC_LEFT);
  61. }
  62. break;
  63. case MC_CUR: // Curly bracket
  64. if(record->event.pressed){
  65. SEND_STRING("{}");
  66. tap_code(KC_LEFT);
  67. }
  68. break;
  69. case MC_SQR: // Square bracket
  70. if(record->event.pressed){
  71. SEND_STRING("[]");
  72. tap_code(KC_LEFT);
  73. }
  74. break;
  75. case MC_ABR: // Angle bracket
  76. if(record->event.pressed){
  77. SEND_STRING("<>");
  78. tap_code(KC_LEFT);
  79. }
  80. break;
  81. case MCT_NEW: // New Tmux Session
  82. if(record->event.pressed){
  83. SEND_STRING(":neww");
  84. tap_code(KC_ENT);
  85. }
  86. break;
  87. case MCT_SH: // Tmux horizontal split
  88. if(record->event.pressed){
  89. SEND_STRING("%");
  90. }
  91. break;
  92. case MCT_SV: // Tmux vertical split
  93. if(record->event.pressed){
  94. SEND_STRING("\"");
  95. }
  96. break;
  97. case MCT_ZM: // Tmux zoom
  98. if(record->event.pressed){
  99. tap_code(KC_Z);
  100. }
  101. break;
  102. case MCT_SCR: // Tmux scroll mode
  103. if(record->event.pressed){
  104. tap_code(KC_PGUP);
  105. }
  106. break;
  107. case MCT_UP: // Tmux up
  108. break;
  109. case MCT_DW: // Tmux down
  110. break;
  111. case MCT_LFT: // Tmux left
  112. break;
  113. case MCT_RGT: // Tmux right
  114. tap_code(KC_RIGHT);
  115. break;
  116. case MCV_B: // Vim begin of line
  117. if(record->event.pressed){
  118. tap_code(KC_0);
  119. }
  120. break;
  121. case MCV_E: // Vim end of line
  122. if(record->event.pressed){
  123. SEND_STRING(":vsplit");
  124. tap_code(KC_ENT);
  125. }
  126. break;
  127. case MCT_F: // Vim for loop
  128. if(record->event.pressed){
  129. SEND_STRING(":help");
  130. tap_code(KC_ENT);
  131. }
  132. break;
  133. case VRSN: // Prints firmware version
  134. if (record->event.pressed) {
  135. send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
  136. }
  137. break;
  138. case KC_CCCV: // One key copy/paste
  139. if (record->event.pressed) {
  140. copy_paste_timer = timer_read();
  141. } else {
  142. if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
  143. register_code(KC_LCTL);
  144. tap_code(KC_C);
  145. unregister_code(KC_LCTL);
  146. } else { // Tap, paste
  147. register_code(KC_LCTL);
  148. tap_code(KC_V);
  149. unregister_code(KC_LCTL);
  150. }
  151. }
  152. break;
  153. #ifdef UNICODE_ENABLE
  154. case UC_FLIP:
  155. if (record->event.pressed) {
  156. send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
  157. }
  158. break;
  159. case UC_TABL:
  160. if (record->event.pressed) {
  161. send_unicode_string("┬─┬ノ( º _ ºノ)");
  162. }
  163. break;
  164. case UC_SHRG:
  165. if (record->event.pressed) {
  166. send_unicode_string("¯\\_(ツ)_/¯");
  167. }
  168. break;
  169. case UC_DISA:
  170. if (record->event.pressed) {
  171. send_unicode_string("ಠ_ಠ");
  172. }
  173. break;
  174. #endif // UNICODE_ENABLE
  175. }
  176. return process_record_keymap(keycode, record) &&
  177. #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
  178. process_record_user_rgb(keycode, record) &&
  179. #endif // RGBLIGHT_ENABLE
  180. process_record_secrets(keycode, record);
  181. }