process_quantum.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2025 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "process_quantum.h"
  4. #include "quantum.h"
  5. #ifdef ENABLE_COMPILE_KEYCODE
  6. /** \brief Compiles the firmware, and adds the flash command based on keyboard bootloader
  7. */
  8. static void send_make_command(void) {
  9. # ifdef NO_ACTION_ONESHOT
  10. const uint8_t temp_mod = mod_config(get_mods());
  11. # else
  12. const uint8_t temp_mod = mod_config(get_mods() | get_oneshot_mods());
  13. clear_oneshot_mods();
  14. # endif
  15. clear_mods();
  16. SEND_STRING_DELAY("qmk", TAP_CODE_DELAY);
  17. if (temp_mod & MOD_MASK_SHIFT) { // if shift is held, flash rather than compile
  18. SEND_STRING_DELAY(" flash ", TAP_CODE_DELAY);
  19. } else {
  20. SEND_STRING_DELAY(" compile ", TAP_CODE_DELAY);
  21. }
  22. # if defined(CONVERTER_ENABLED)
  23. SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP " -e CONVERT_TO=" CONVERTER_TARGET SS_TAP(X_ENTER), TAP_CODE_DELAY);
  24. # else
  25. SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP SS_TAP(X_ENTER), TAP_CODE_DELAY);
  26. # endif
  27. if (temp_mod & MOD_MASK_SHIFT && temp_mod & MOD_MASK_CTRL) {
  28. reset_keyboard();
  29. }
  30. }
  31. #endif
  32. bool process_quantum(uint16_t keycode, keyrecord_t *record) {
  33. if (record->event.pressed) {
  34. switch (keycode) {
  35. #ifndef NO_RESET
  36. case QK_BOOTLOADER:
  37. reset_keyboard();
  38. return false;
  39. case QK_REBOOT:
  40. soft_reset_keyboard();
  41. return false;
  42. #endif
  43. #ifndef NO_DEBUG
  44. case QK_DEBUG_TOGGLE:
  45. debug_enable ^= 1;
  46. if (debug_enable) {
  47. print("DEBUG: enabled.\n");
  48. } else {
  49. print("DEBUG: disabled.\n");
  50. }
  51. return false;
  52. #endif
  53. case QK_CLEAR_EEPROM:
  54. #ifdef NO_RESET
  55. eeconfig_init();
  56. #else
  57. eeconfig_disable();
  58. soft_reset_keyboard();
  59. #endif
  60. return false;
  61. #ifdef ENABLE_COMPILE_KEYCODE
  62. case QK_MAKE:
  63. send_make_command();
  64. return false;
  65. #endif
  66. default:
  67. break;
  68. }
  69. }
  70. return true;
  71. }