process_records.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #include "ninjonas.h"
  2. uint16_t copy_paste_timer;
  3. __attribute__((weak))
  4. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
  5. __attribute__((weak))
  6. bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
  7. #ifdef OLED_DRIVER_ENABLE
  8. __attribute__((weak))
  9. bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; }
  10. #endif
  11. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  12. switch (keycode) {
  13. // Sends pyenv to activate 'jira' environment
  14. case M_PYNV:
  15. if (record->event.pressed) {
  16. SEND_STRING("pyenv activate jira\n");
  17. }
  18. break;
  19. // Sends  + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
  20. case M_SHFT:
  21. if (record->event.pressed) {
  22. register_code(KC_LGUI);
  23. register_code(KC_LALT);
  24. register_code(KC_LCTL);
  25. } else {
  26. unregister_code(KC_LGUI);
  27. unregister_code(KC_LALT);
  28. unregister_code(KC_LCTL);
  29. }
  30. break;
  31. // Sends QMK make command to compile keyboard
  32. case M_MAKE:
  33. if (record->event.pressed) {
  34. SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
  35. }
  36. break;
  37. // Sends QMK make command to compile all keyboards
  38. case M_MALL:
  39. if (record->event.pressed) {
  40. SEND_STRING("rm -f *.hex && rm -rf .build/ && make crkbd:ninjonas lily58:ninjonas hotdox:ninjonas pinky/3:ninjonas kyria:ninjonas\n");
  41. }
  42. break;
  43. // Sends QMK make command with the correct bootloader
  44. case M_FLSH:
  45. if (!record->event.pressed) {
  46. SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP
  47. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  48. ":dfu "
  49. #elif defined(BOOTLOADER_CATERINA)
  50. ":avrdude "
  51. #endif
  52. SS_TAP(X_ENTER)
  53. );
  54. // Send reset_keyboard command instead of pressing reset button
  55. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  56. reset_keyboard();
  57. #endif
  58. }
  59. break;
  60. // Sends QMK version
  61. case M_VRSN:
  62. if (record->event.pressed) {
  63. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
  64. }
  65. break;
  66. // Opens Visual Studio Code on current directory
  67. case M_CODE:
  68. if (record->event.pressed) {
  69. SEND_STRING("code .\n");
  70. }
  71. break;
  72. // Opens Terminal
  73. case M_TERM:
  74. if (record->event.pressed) {
  75. SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_SPACE) SS_UP(X_LGUI));
  76. wait_ms(250);
  77. SEND_STRING("terminal\n");
  78. }
  79. break;
  80. // Single key copy/paste
  81. case M_COPA:
  82. if (record->event.pressed) {
  83. copy_paste_timer = timer_read();
  84. } else {
  85. if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {
  86. tap_code16(LGUI(KC_C)); // Hold  + C
  87. } else {
  88. tap_code16(LGUI(KC_V)); // Tap  + V
  89. }
  90. }
  91. // BEGIN: Layer macros
  92. case QWERTY:
  93. if (record->event.pressed) {
  94. set_single_persistent_default_layer(_QWERTY);
  95. }
  96. break;
  97. case DVORAK:
  98. if (record->event.pressed) {
  99. set_single_persistent_default_layer(_DVORAK);
  100. }
  101. break;
  102. case COLEMAK:
  103. if (record->event.pressed) {
  104. set_single_persistent_default_layer(_COLEMAK);
  105. }
  106. break;
  107. // END: Layer macros
  108. }
  109. return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
  110. #ifdef OLED_DRIVER_ENABLE
  111. && process_record_oled(keycode, record)
  112. #endif
  113. ; // Close return
  114. }