curry.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #include "curry.h"
  2. userspace_config_t userspace_config;
  3. #define CURRY_UNICODE_MODE 1
  4. void bootmagic_lite(void) {
  5. matrix_scan();
  6. #if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
  7. wait_ms(DEBOUNCING_DELAY * 2);
  8. #elif defined(DEBOUNCE) && DEBOUNCE > 0
  9. wait_ms(DEBOUNCE * 2);
  10. #else
  11. wait_ms(30);
  12. #endif
  13. matrix_scan();
  14. #if defined(BOOTMAGIC_ENABLE)
  15. if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
  16. bootloader_jump();
  17. }
  18. #endif
  19. }
  20. __attribute__((weak)) void keyboard_pre_init_keymap(void) {}
  21. void keyboard_pre_init_user(void) {
  22. userspace_config.raw = eeconfig_read_user();
  23. keyboard_pre_init_keymap();
  24. }
  25. __attribute__((weak)) void matrix_init_keymap(void) {}
  26. // Call user matrix init, set default RGB colors and then
  27. // call the keymap's init function
  28. void matrix_init_user(void) {
  29. #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
  30. set_unicode_input_mode(CURRY_UNICODE_MODE);
  31. get_unicode_input_mode();
  32. #endif // UNICODE_ENABLE
  33. matrix_init_keymap();
  34. }
  35. __attribute__((weak)) void keyboard_post_init_keymap(void) {}
  36. void keyboard_post_init_user(void) {
  37. #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
  38. keyboard_post_init_rgb();
  39. #endif
  40. keyboard_post_init_keymap();
  41. }
  42. __attribute__((weak)) void shutdown_keymap(void) {}
  43. void rgb_matrix_update_pwm_buffers(void);
  44. // On RESET, set all RGB to red, shutdown the keymap.
  45. void shutdown_user(void) {
  46. #if defined(RGBLIGHT_ENABLE)
  47. rgblight_enable_noeeprom();
  48. rgblight_mode_noeeprom(1);
  49. rgblight_setrgb(RGB_RED);
  50. #endif
  51. #if defined(RGB_MATRIX_ENABLE)
  52. rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
  53. rgb_matrix_update_pwm_buffers();
  54. #endif
  55. shutdown_keymap();
  56. }
  57. __attribute__((weak)) void suspend_power_down_keymap(void) {}
  58. void suspend_power_down_user(void) { suspend_power_down_keymap(); }
  59. __attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
  60. void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); }
  61. __attribute__((weak)) void matrix_scan_keymap(void) {}
  62. // No global matrix scan code, so just run keymap's matrix
  63. // scan function
  64. __attribute__((weak)) void matrix_scan_user(void) {
  65. static bool has_ran_yet;
  66. if (!has_ran_yet) {
  67. has_ran_yet = true;
  68. startup_user();
  69. }
  70. #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
  71. matrix_scan_rgb();
  72. #endif // RGBLIGHT_ENABLE
  73. matrix_scan_keymap();
  74. }
  75. __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
  76. // On Layer change, run keymap's layer change check
  77. layer_state_t layer_state_set_user(layer_state_t state) {
  78. state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
  79. #if defined(RGBLIGHT_ENABLE)
  80. state = layer_state_set_rgb(state);
  81. #endif
  82. return layer_state_set_keymap(state);
  83. }
  84. __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
  85. // Runs state check and changes underglow color and animation
  86. layer_state_t default_layer_state_set_user(layer_state_t state) { return default_layer_state_set_keymap(state); }
  87. __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
  88. // Any custom LED code goes here.
  89. void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
  90. __attribute__((weak)) void eeconfig_init_keymap(void) {}
  91. void eeconfig_init_user(void) {
  92. userspace_config.raw = 0;
  93. userspace_config.rgb_layer_change = true;
  94. eeconfig_update_user(userspace_config.raw);
  95. #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
  96. set_unicode_input_mode(CURRY_UNICODE_MODE);
  97. get_unicode_input_mode();
  98. #else
  99. eeprom_update_byte(EECONFIG_UNICODEMODE, CURRY_UNICODE_MODE);
  100. #endif
  101. eeconfig_init_keymap();
  102. keyboard_init();
  103. }