process_records.c 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "ninjonas.h"
  2. __attribute__((weak))
  3. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
  4. __attribute__((weak))
  5. bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
  6. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  7. if (record->event.pressed) {
  8. #ifdef SSD1306OLED
  9. set_keylog(keycode, record);
  10. #endif
  11. }
  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" SS_TAP(X_ENTER));
  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 with the correct bootloader
  38. case M_FLSH:
  39. if (!record->event.pressed) {
  40. SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP
  41. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  42. ":dfu "
  43. #elif defined(BOOTLOADER_CATERINA)
  44. ":avrdude "
  45. #endif
  46. SS_TAP(X_ENTER)
  47. );
  48. // Send reset_keyboard command instead of pressing reset button
  49. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  50. reset_keyboard();
  51. #endif
  52. }
  53. break;
  54. // Sends QMK version
  55. case M_VRSN:
  56. if (record->event.pressed) {
  57. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
  58. }
  59. break;
  60. // Opens Visual Studio Code on current directory
  61. case M_CODE:
  62. if (record->event.pressed) {
  63. SEND_STRING("code ." SS_TAP(X_ENTER));
  64. }
  65. break;
  66. // BEGIN: Layer macros
  67. case QWERTY:
  68. if (record->event.pressed) {
  69. set_single_persistent_default_layer(_QWERTY);
  70. }
  71. break;
  72. case DVORAK:
  73. if (record->event.pressed) {
  74. set_single_persistent_default_layer(_DVORAK);
  75. }
  76. break;
  77. case COLEMAK:
  78. if (record->event.pressed) {
  79. set_single_persistent_default_layer(_COLEMAK);
  80. }
  81. break;
  82. // END: Layer macros
  83. }
  84. return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
  85. }