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