satisfaction75.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #pragma once
  2. #include "quantum.h"
  3. // The first section contains all of the arguements
  4. // The second converts the arguments into a two-dimensional array
  5. #define LAYOUT_default( \
  6. K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
  7. K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
  8. K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
  9. K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, \
  10. K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \
  11. K500, K501, K502, K505, K509, K510, K511, K512, K513, K515 \
  12. ) { \
  13. { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, KC_NO }, \
  14. { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, K115 }, \
  15. { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
  16. { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, K315 }, \
  17. { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415 }, \
  18. { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515 } \
  19. }
  20. /* screen off after this many milliseconds */
  21. #define ScreenOffInterval 60000 /* milliseconds */
  22. typedef union {
  23. uint8_t raw;
  24. struct {
  25. bool enable :1;
  26. bool breathing : 1;
  27. uint8_t level :6;
  28. };
  29. } backlight_config_t;
  30. // Start these at the USER code range in VIA
  31. enum my_keycodes {
  32. ENC_PRESS = 0x5F80,
  33. CLOCK_SET,
  34. OLED_TOGG
  35. };
  36. enum encoder_modes {
  37. ENC_MODE_VOLUME,
  38. ENC_MODE_MEDIA,
  39. ENC_MODE_SCROLL,
  40. ENC_MODE_BRIGHTNESS,
  41. ENC_MODE_BACKLIGHT,
  42. ENC_MODE_CUSTOM0,
  43. ENC_MODE_CUSTOM1,
  44. ENC_MODE_CUSTOM2,
  45. _NUM_ENCODER_MODES,
  46. ENC_MODE_CLOCK_SET // This shouldn't be included in the default modes, so we put it after NUM_ENCODER_MODES
  47. };
  48. enum oled_modes {
  49. OLED_DEFAULT,
  50. OLED_TIME,
  51. OLED_OFF,
  52. _NUM_OLED_MODES
  53. };
  54. // Keyboard Information
  55. extern volatile uint8_t led_numlock;
  56. extern volatile uint8_t led_capslock;
  57. extern volatile uint8_t led_scrolllock;
  58. extern uint8_t layer;
  59. // OLED Behavior
  60. extern uint16_t last_flush;
  61. extern bool queue_for_send;
  62. extern uint8_t oled_mode;
  63. extern bool oled_sleeping;
  64. // Encoder Behavior
  65. extern uint8_t encoder_value;
  66. extern uint8_t encoder_mode;
  67. extern uint8_t enabled_encoder_modes;
  68. // RTC
  69. extern RTCDateTime last_timespec;
  70. extern uint16_t last_minute;
  71. // RTC Configuration
  72. extern bool clock_set_mode;
  73. extern uint8_t time_config_idx;
  74. extern int8_t hour_config;
  75. extern int16_t minute_config;
  76. extern int8_t year_config;
  77. extern int8_t month_config;
  78. extern int8_t day_config;
  79. extern uint8_t previous_encoder_mode;
  80. // Backlighting
  81. extern backlight_config_t kb_backlight_config;
  82. extern bool kb_backlight_breathing;
  83. void pre_encoder_mode_change(void);
  84. void post_encoder_mode_change(void);
  85. void change_encoder_mode(bool negative);
  86. uint16_t handle_encoder_clockwise(void);
  87. uint16_t handle_encoder_ccw(void);
  88. uint16_t handle_encoder_press(void);
  89. void update_time_config(int8_t increment);
  90. __attribute__ ((weak))
  91. void draw_ui(void);
  92. void draw_default(void);
  93. void draw_clock(void);
  94. void backlight_init_ports(void);
  95. void backlight_set(uint8_t level);
  96. bool is_breathing(void);
  97. void breathing_enable(void);
  98. void breathing_disable(void);
  99. // void backlight_save_to_eeprom(uint8_t level);
  100. // uint8_t backlight_config_load();