process_records.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "bocaj.h"
  2. #include <print.h>
  3. __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
  4. __attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
  5. // Defines actions tor my global custom keycodes. Defined in bocaj.h file
  6. // Then runs the _keymap's record handler if not processed here
  7. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  8. if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
  9. #ifdef RGB_MATRIX_ENABLE
  10. && process_record_user_rgb_matrix(keycode, record)
  11. #endif
  12. ) {
  13. switch (keycode) {
  14. case KC_WORKMAN:
  15. if (!record->event.pressed) {
  16. uint8_t mods = mod_config(get_mods());
  17. if (!mods) {
  18. set_single_persistent_default_layer(_WORKMAN);
  19. } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) {
  20. set_single_persistent_default_layer(_WWORKMAN);
  21. }
  22. }
  23. return false;
  24. break;
  25. case KC_QWERTY:
  26. if (!record->event.pressed) {
  27. uint8_t mods = mod_config(get_mods());
  28. if (!mods) {
  29. set_single_persistent_default_layer(_QWERTY);
  30. } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) {
  31. set_single_persistent_default_layer(_WQWERTY);
  32. }
  33. }
  34. return false;
  35. break;
  36. case MC_ARRW:
  37. if (!record->event.pressed) {
  38. clear_mods();
  39. send_string_with_delay_P(PSTR("->"), TAP_CODE_DELAY);
  40. }
  41. return false;
  42. break;
  43. case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
  44. if (!record->event.pressed) {
  45. clear_mods();
  46. send_string_with_delay_P(PSTR("qmk compile "), TAP_CODE_DELAY);
  47. send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD), TAP_CODE_DELAY);
  48. send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
  49. }
  50. return false;
  51. break;
  52. case VRSN: // Prints firmware version
  53. if (!record->event.pressed) {
  54. send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
  55. }
  56. break;
  57. #if defined(RGB_MATRIX_ENABLE)
  58. case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
  59. if (!record->event.pressed) {
  60. userspace_config.rgb_layer_change ^= 1;
  61. dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
  62. eeconfig_update_user(userspace_config.raw);
  63. if (userspace_config.rgb_layer_change) {
  64. rgblight_enable_noeeprom();
  65. layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
  66. } else {
  67. rgblight_disable_noeeprom();
  68. }
  69. }
  70. return false;
  71. break;
  72. case RGB_TOG:
  73. if (!record->event.pressed) {
  74. # if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
  75. rgb_matrix_toggle();
  76. # endif
  77. }
  78. return false;
  79. break;
  80. case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
  81. if (!record->event.pressed) {
  82. bool is_eeprom_updated;
  83. # if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
  84. if (userspace_config.rgb_matrix_idle_anim) {
  85. userspace_config.rgb_matrix_idle_anim = false;
  86. dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
  87. is_eeprom_updated = true;
  88. }
  89. # endif
  90. if (is_eeprom_updated) {
  91. eeconfig_update_user(userspace_config.raw);
  92. }
  93. }
  94. return false;
  95. break;
  96. #endif
  97. }
  98. }
  99. #ifdef CONSOLE_ENABLE
  100. uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
  101. #endif
  102. return true;
  103. }