aboutsummaryrefslogtreecommitdiff
path: root/users/drashna/drashna.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/drashna/drashna.c')
-rw-r--r--users/drashna/drashna.c95
1 files changed, 59 insertions, 36 deletions
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 4cef5433d..27b9b5bc9 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -50,8 +50,7 @@ bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this
50} 50}
51 51
52__attribute__((weak)) void keyboard_pre_init_keymap(void) {} 52__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
53 53void keyboard_pre_init_user(void) {
54void keyboard_pre_init_user(void) {
55 userspace_config.raw = eeconfig_read_user(); 54 userspace_config.raw = eeconfig_read_user();
56 keyboard_pre_init_keymap(); 55 keyboard_pre_init_keymap();
57} 56}
@@ -59,12 +58,11 @@ void keyboard_pre_init_user(void) {
59// This allows for a global, userspace functions, and continued 58// This allows for a global, userspace functions, and continued
60// customization of the keymap. Use _keymap instead of _user 59// customization of the keymap. Use _keymap instead of _user
61// functions in the keymaps 60// functions in the keymaps
62__attribute__((weak)) void matrix_init_keymap(void) {}
63__attribute__((weak)) void matrix_init_secret(void) {}
64
65// Call user matrix init, set default RGB colors and then 61// Call user matrix init, set default RGB colors and then
66// call the keymap's init function 62// call the keymap's init function
67void matrix_init_user(void) { 63__attribute__((weak)) void matrix_init_keymap(void) {}
64__attribute__((weak)) void matrix_init_secret(void) {}
65void matrix_init_user(void) {
68#if defined(BOOTLOADER_CATERINA) && defined(__AVR__) 66#if defined(BOOTLOADER_CATERINA) && defined(__AVR__)
69 DDRD &= ~(1 << 5); 67 DDRD &= ~(1 << 5);
70 PORTD &= ~(1 << 5); 68 PORTD &= ~(1 << 5);
@@ -75,11 +73,15 @@ void matrix_init_user(void) {
75 73
76 matrix_init_secret(); 74 matrix_init_secret();
77 matrix_init_keymap(); 75 matrix_init_keymap();
76#if defined(AUDIO_ENABLE) && defined(SPLIT_KEYBOARD)
77 if (!is_keyboard_master()) {
78 stop_all_notes();
79 }
80#endif
78} 81}
79 82
80__attribute__((weak)) void keyboard_post_init_keymap(void) {} 83__attribute__((weak)) void keyboard_post_init_keymap(void) {}
81 84void keyboard_post_init_user(void) {
82void keyboard_post_init_user(void) {
83#if defined(RGBLIGHT_ENABLE) 85#if defined(RGBLIGHT_ENABLE)
84 keyboard_post_init_rgb_light(); 86 keyboard_post_init_rgb_light();
85#endif 87#endif
@@ -92,13 +94,12 @@ void keyboard_post_init_user(void) {
92 keyboard_post_init_keymap(); 94 keyboard_post_init_keymap();
93} 95}
94 96
95__attribute__((weak)) void shutdown_keymap(void) {}
96
97#ifdef RGB_MATRIX_ENABLE 97#ifdef RGB_MATRIX_ENABLE
98void rgb_matrix_update_pwm_buffers(void); 98void rgb_matrix_update_pwm_buffers(void);
99#endif 99#endif
100 100
101void shutdown_user(void) { 101__attribute__((weak)) void shutdown_keymap(void) {}
102void shutdown_user(void) {
102#ifdef RGBLIGHT_ENABLE 103#ifdef RGBLIGHT_ENABLE
103 rgblight_enable_noeeprom(); 104 rgblight_enable_noeeprom();
104 rgblight_mode_noeeprom(1); 105 rgblight_mode_noeeprom(1);
@@ -113,8 +114,7 @@ void shutdown_user(void) {
113} 114}
114 115
115__attribute__((weak)) void suspend_power_down_keymap(void) {} 116__attribute__((weak)) void suspend_power_down_keymap(void) {}
116 117void suspend_power_down_user(void) {
117void suspend_power_down_user(void) {
118#ifdef OLED_DRIVER_ENABLE 118#ifdef OLED_DRIVER_ENABLE
119 oled_off(); 119 oled_off();
120#endif 120#endif
@@ -122,8 +122,7 @@ void suspend_power_down_user(void) {
122} 122}
123 123
124__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} 124__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
125 125void suspend_wakeup_init_user(void) {
126void suspend_wakeup_init_user(void) {
127 if (layer_state_is(_GAMEPAD)) { 126 if (layer_state_is(_GAMEPAD)) {
128 layer_off(_GAMEPAD); 127 layer_off(_GAMEPAD);
129 } 128 }
@@ -133,13 +132,11 @@ void suspend_wakeup_init_user(void) {
133 suspend_wakeup_init_keymap(); 132 suspend_wakeup_init_keymap();
134} 133}
135 134
136__attribute__((weak)) void matrix_scan_keymap(void) {}
137
138__attribute__((weak)) void matrix_scan_secret(void) {}
139
140// No global matrix scan code, so just run keymap's matrix 135// No global matrix scan code, so just run keymap's matrix
141// scan function 136// scan function
142void matrix_scan_user(void) { 137__attribute__((weak)) void matrix_scan_keymap(void) {}
138__attribute__((weak)) void matrix_scan_secret(void) {}
139void matrix_scan_user(void) {
143 static bool has_ran_yet; 140 static bool has_ran_yet;
144 if (!has_ran_yet) { 141 if (!has_ran_yet) {
145 has_ran_yet = true; 142 has_ran_yet = true;
@@ -166,11 +163,10 @@ void matrix_scan_user(void) {
166float doom_song[][2] = SONG(E1M1_DOOM); 163float doom_song[][2] = SONG(E1M1_DOOM);
167#endif 164#endif
168 165
169__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
170
171// on layer change, no matter where the change was initiated 166// on layer change, no matter where the change was initiated
172// Then runs keymap's layer change check 167// Then runs keymap's layer change check
173layer_state_t layer_state_set_user(layer_state_t state) { 168__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
169layer_state_t layer_state_set_user(layer_state_t state) {
174 if (!is_keyboard_master()) { 170 if (!is_keyboard_master()) {
175 return state; 171 return state;
176 } 172 }
@@ -194,10 +190,9 @@ layer_state_t layer_state_set_user(layer_state_t state) {
194 return state; 190 return state;
195} 191}
196 192
197__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
198
199// Runs state check and changes underglow color and animation 193// Runs state check and changes underglow color and animation
200layer_state_t default_layer_state_set_user(layer_state_t state) { 194__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
195layer_state_t default_layer_state_set_user(layer_state_t state) {
201 if (!is_keyboard_master()) { 196 if (!is_keyboard_master()) {
202 return state; 197 return state;
203 } 198 }
@@ -212,22 +207,14 @@ layer_state_t default_layer_state_set_user(layer_state_t state) {
212} 207}
213 208
214__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} 209__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
215 210void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
216// Any custom LED code goes here.
217// So far, I only have keyboard specific code,
218// So nothing goes here.
219void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
220 211
221__attribute__((weak)) void eeconfig_init_keymap(void) {} 212__attribute__((weak)) void eeconfig_init_keymap(void) {}
222 213void eeconfig_init_user(void) {
223void eeconfig_init_user(void) {
224 userspace_config.raw = 0; 214 userspace_config.raw = 0;
225 userspace_config.rgb_layer_change = true; 215 userspace_config.rgb_layer_change = true;
226 eeconfig_update_user(userspace_config.raw); 216 eeconfig_update_user(userspace_config.raw);
227 eeconfig_init_keymap(); 217 eeconfig_init_keymap();
228#ifdef VIA_ENABLE
229 via_eeprom_reset();
230#endif
231 keyboard_init(); 218 keyboard_init();
232} 219}
233 220
@@ -237,3 +224,39 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
237 224
238 return (value & mask) == mask; 225 return (value & mask) == mask;
239} 226}
227
228#ifdef SPLIT_KEYBOARD
229# if defined(AUDIO_ENABLE)
230bool delayed_tasks_run = false;
231# endif
232__attribute__((weak)) void matrix_slave_scan_keymap(void) {}
233void matrix_slave_scan_user(void) {
234# if defined(AUDIO_ENABLE)
235# if !defined(NO_MUSIC_MODE)
236 music_task();
237# endif
238 if (!is_keyboard_master()) {
239 static uint16_t delayed_task_timer = 0;
240 if (!delayed_tasks_run) {
241 if (!delayed_task_timer) {
242 delayed_task_timer = timer_read();
243 } else if (timer_elapsed(delayed_task_timer) > 300) {
244 audio_startup();
245 delayed_tasks_run = true;
246 }
247 }
248 }
249# endif
250# ifdef SEQUENCER_ENABLE
251 sequencer_task();
252# endif
253# ifdef LED_MATRIX_ENABLE
254 led_matrix_task();
255# endif
256# ifdef HAPTIC_ENABLE
257 haptic_task();
258# endif
259
260 matrix_slave_scan_keymap();
261}
262#endif