process_records.c 3.1 KB

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