process_records.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. #ifdef OLED_DRIVER_ENABLE
  7. __attribute__((weak))
  8. bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; }
  9. #endif
  10. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  11. if (record->event.pressed) {
  12. #ifdef OLED_DRIVER_ENABLE
  13. process_record_oled(keycode, record);
  14. #endif
  15. }
  16. switch (keycode) {
  17. // Sends pyenv to activate 'jira' environment
  18. case M_PYNV:
  19. if (record->event.pressed) {
  20. SEND_STRING("pyenv activate jira" SS_TAP(X_ENTER));
  21. }
  22. break;
  23. // Sends  + alt + shift to a keycode to activate shiftit. See: https://github.com/fikovnik/ShiftIt
  24. case M_SHFT:
  25. if (record->event.pressed) {
  26. register_code(KC_LGUI);
  27. register_code(KC_LALT);
  28. register_code(KC_LCTL);
  29. } else {
  30. unregister_code(KC_LGUI);
  31. unregister_code(KC_LALT);
  32. unregister_code(KC_LCTL);
  33. }
  34. break;
  35. // Sends QMK make command to compile keyboard
  36. case M_MAKE:
  37. if (record->event.pressed) {
  38. SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
  39. }
  40. break;
  41. // Sends QMK make command to compile all keyboards
  42. case M_MALL:
  43. if (record->event.pressed) {
  44. SEND_STRING("rm -f *.hex && rm -rf .build/ && make crkbd:ninjonas lily58:ninjonas hotdox:ninjonas pinky/3:ninjonas\n");
  45. }
  46. break;
  47. // Sends QMK make command with the correct bootloader
  48. case M_FLSH:
  49. if (!record->event.pressed) {
  50. SEND_STRING("rm -f *.hex && rm -rf .build/ && make " QMK_KEYBOARD ":" QMK_KEYMAP
  51. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  52. ":dfu "
  53. #elif defined(BOOTLOADER_CATERINA)
  54. ":avrdude "
  55. #endif
  56. SS_TAP(X_ENTER)
  57. );
  58. // Send reset_keyboard command instead of pressing reset button
  59. #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
  60. reset_keyboard();
  61. #endif
  62. }
  63. break;
  64. // Sends QMK version
  65. case M_VRSN:
  66. if (record->event.pressed) {
  67. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
  68. }
  69. break;
  70. // Opens Visual Studio Code on current directory
  71. case M_CODE:
  72. if (record->event.pressed) {
  73. SEND_STRING("code ." SS_TAP(X_ENTER));
  74. }
  75. break;
  76. // BEGIN: Layer macros
  77. case QWERTY:
  78. if (record->event.pressed) {
  79. set_single_persistent_default_layer(_QWERTY);
  80. }
  81. break;
  82. case DVORAK:
  83. if (record->event.pressed) {
  84. set_single_persistent_default_layer(_DVORAK);
  85. }
  86. break;
  87. case COLEMAK:
  88. if (record->event.pressed) {
  89. set_single_persistent_default_layer(_COLEMAK);
  90. }
  91. break;
  92. // END: Layer macros
  93. }
  94. return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
  95. }