2
0

satisfaction75.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #pragma once
  2. #include "quantum.h"
  3. #ifdef KEYBOARD_cannonkeys_satisfaction75_prototype
  4. #include "prototype.h"
  5. #else
  6. #include "rev1.h"
  7. #endif
  8. /* screen off after this many milliseconds */
  9. #define ScreenOffInterval 60000 /* milliseconds */
  10. typedef union {
  11. uint8_t raw;
  12. struct {
  13. bool enable :1;
  14. bool breathing : 1;
  15. uint8_t level :6;
  16. };
  17. } backlight_config_t;
  18. // Start these at the USER code range in VIA
  19. enum my_keycodes {
  20. ENC_PRESS = 0x5F80,
  21. CLOCK_SET,
  22. OLED_TOGG
  23. };
  24. enum s75_keyboard_value_id {
  25. id_encoder_modes = 0x80,
  26. id_oled_default_mode,
  27. id_encoder_custom,
  28. id_oled_mode
  29. };
  30. enum encoder_modes {
  31. ENC_MODE_VOLUME,
  32. ENC_MODE_MEDIA,
  33. ENC_MODE_SCROLL,
  34. ENC_MODE_BRIGHTNESS,
  35. ENC_MODE_BACKLIGHT,
  36. ENC_MODE_CUSTOM0,
  37. ENC_MODE_CUSTOM1,
  38. ENC_MODE_CUSTOM2,
  39. _NUM_ENCODER_MODES,
  40. ENC_MODE_CLOCK_SET // This shouldn't be included in the default modes, so we put it after NUM_ENCODER_MODES
  41. };
  42. enum oled_modes {
  43. OLED_DEFAULT,
  44. OLED_TIME,
  45. OLED_OFF,
  46. _NUM_OLED_MODES
  47. };
  48. // Keyboard Information
  49. extern volatile uint8_t led_numlock;
  50. extern volatile uint8_t led_capslock;
  51. extern volatile uint8_t led_scrolllock;
  52. extern uint8_t layer;
  53. // OLED Behavior
  54. extern uint16_t last_flush;
  55. extern bool queue_for_send;
  56. extern uint8_t oled_mode;
  57. extern bool oled_sleeping;
  58. // Encoder Behavior
  59. extern uint8_t encoder_value;
  60. extern uint8_t encoder_mode;
  61. extern uint8_t enabled_encoder_modes;
  62. // RTC
  63. extern RTCDateTime last_timespec;
  64. extern uint16_t last_minute;
  65. // RTC Configuration
  66. extern bool clock_set_mode;
  67. extern uint8_t time_config_idx;
  68. extern int8_t hour_config;
  69. extern int16_t minute_config;
  70. extern int8_t year_config;
  71. extern int8_t month_config;
  72. extern int8_t day_config;
  73. extern uint8_t previous_encoder_mode;
  74. // Backlighting
  75. extern backlight_config_t kb_backlight_config;
  76. extern bool kb_backlight_breathing;
  77. void pre_encoder_mode_change(void);
  78. void post_encoder_mode_change(void);
  79. void change_encoder_mode(bool negative);
  80. uint16_t handle_encoder_clockwise(void);
  81. uint16_t handle_encoder_ccw(void);
  82. uint16_t handle_encoder_press(void);
  83. void update_time_config(int8_t increment);
  84. __attribute__ ((weak))
  85. void draw_ui(void);
  86. void draw_default(void);
  87. void draw_clock(void);
  88. void backlight_init_ports(void);
  89. void backlight_set(uint8_t level);
  90. bool is_breathing(void);
  91. void breathing_enable(void);
  92. void breathing_disable(void);
  93. void load_custom_config(void);
  94. void save_backlight_config_to_eeprom(void);