1 /* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "turbomech.h"
19 //#include "action_layer.h"
21 //#include "rgblight.h"
23 __attribute__ ((weak))
24 void matrix_init_keymap(void) {}
26 __attribute__ ((weak))
27 void matrix_scan_keymap(void) {}
29 __attribute__ ((weak))
30 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
33 __attribute__ ((weak))
34 uint32_t layer_state_set_keymap (uint32_t state) {
37 __attribute__ ((weak))
38 void led_set_keymap(uint8_t usb_led) {}
40 //#define default_layer _QWERTY (0)
41 //extern keymap_config_t keymap_config;
43 extern rgblight_config_t rgblight_config;
46 //#ifdef RGBLIGHT_ENABLE
47 /*change the rgblight_setrgb(#, #, #) to what you want CAPS lock - currenlty red*/
48 //#define rgblight_set_caps rgblight_setrgb(255, 0, 0)
49 //#define rgblight_base rgblight_mode(RGB_current_mode)
52 //bool rgb_layer_change = true;
53 //bool RGB_INIT = false;
54 //bool TOG_STATUS = false;
55 #ifdef RGBLIGHT_ENABLE
56 bool rgb_layer_change = true;
60 /*void matrix_init_user(void) {
61 #ifdef RGBLIGHT_ENABLE
64 eeconfig_read_rgblight();
66 eeconfig_update_rgblight_default();
69 // eeconfig_debug_rgblight();
77 /*void matrix_init_user(void) {
78 #ifdef RGBLIGHT_ENABLE
79 eeconfig_read_rgblight();
80 eeconfig_update_rgblight_default();
82 //rgblight_mode(RGB_current_mode);
83 //rgblight_mode(RGB_current_mode);
84 //RGB_current_mode = rgblight_config.mode;
89 void persistent_default_layer_set(uint16_t default_layer) {
90 eeconfig_update_default_layer(default_layer);
91 default_layer_set(default_layer);
92 default_layer = _QWERTY;
93 // eeconfig_update_rgblight(rgblight_config.raw);
96 //Setting ADJUST layer RGB back to default
97 /*void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
98 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
99 rgblight_mode(RGB_current_mode);
107 void matrix_init_user(void) {
109 uint8_t default_layer = eeconfig_read_default_layer();
114 if (default_layer & (1UL << _QWERTY)) {
115 //RGB_current_mode = rgblight_config.mode;
122 /*else if (default_layer & (1UL << _DVORAK)) {
125 //else if (default_layer & (1UL << _WORKMAN)) {
137 static bool is_capslocked = false;
138 void led_set_user(uint8_t usb_led) {
139 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
140 is_capslocked = true;
141 // DDRB |= (1 << 2); PORTB &= ~(1 << 2);
143 is_capslocked = false;
144 // DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
150 //static uint8_t is_capslocked = false;
151 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
154 persistent_default_layer_set(1UL << _QWERTY);
158 if (!record->event.pressed) {
159 SEND_STRING("make alu84:TurboMech:dfu");
160 SEND_STRING(SS_TAP(X_ENTER));
165 if (!record->event.pressed) {
166 SEND_STRING("cd QMK/qmk_firmware");
167 SEND_STRING(SS_TAP(X_ENTER));
172 if (!record->event.pressed) {
173 #ifdef RGBLIGHT_ENABLE
176 rgblight_setrgb(255, 255, 255);
184 //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
185 if (record->event.pressed) {
186 rgblight_mode(RGB_current_mode);
187 RGB_current_mode = rgblight_config.mode;
189 // rgblight_mode(RGB_current_mode);
190 //RGB_current_mode = rgblight_config.mode;
193 RGB_current_mode = rgblight_config.mode;
195 else //if (rgblight_config.enable)
199 //rgblight_mode(rgblight_config.mode);
200 // eeconfig_update_rgblight(rgblight_config.raw);
207 if (record->event.realeased) {
215 if (record->event.pressed) {
216 rgblight_mode(RGB_current_mode);
217 register_code(KC_CAPS);
222 unregister_code(KC_CAPS);
223 rgblight_mode(RGB_current_mode);
229 /* rgblight_mode(RGB_current_mode);
230 register_code(KC_CAPS);
235 unregister_code(KC_CAPS);
236 rgblight_mode(RGB_current_mode);*/
242 if (record->event.pressed) {
243 layer_off(_FUNCTION);
244 rgblight_mode(RGB_current_mode);
245 RGB_current_mode = rgblight_config.mode;
251 //layer_off(_FUNCTION);
253 rgblight_mode(RGB_current_mode);
254 RGB_current_mode = rgblight_config.mode;
256 //eeconfig_update_rgblight_default();
279 case RGB_MODE_BREATHE:
280 case RGB_MODE_RAINBOW:
283 case RGB_MODE_KNIGHT:
285 case RGB_MODE_GRADIENT:
286 if (record->event.pressed) {
287 rgb_layer_change = false;
295 return process_record_keymap(keycode, record);
299 uint32_t layer_state_set_user(uint32_t state) {
300 #ifdef RGBLIGHT_ENABLE
301 uint8_t default_layer = eeconfig_read_default_layer();
302 if (rgb_layer_change) {
303 switch (biton32(state)) {
313 // rgblight_set_yellow;
317 //rgblight_set_orange;
318 //is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
321 //rgblight_set_green;
329 else { if (default_layer & (1UL << _QWERTY)) {
333 else if (default_layer & (1UL << _FUNCTION)) {
336 //else if (default_layer & (1UL << _WORKMAN)) {
337 // rgblight_set_purple;
352 !!** possible for later
354 void set_single_persistent_default_layer(uint8_t default_layer);
356 void set_single_persistent_default_layer(uint8_t default_layer) {
357 #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
358 PLAY_SONG(default_layer_songs[default_layer]);
360 eeconfig_update_default_layer(1U<<default_layer);
361 default_layer_set(1U<<default_layer);
363 void matrix_init_kb(void);
365 void matrix_init_user(void);
369 __attribute__ ((weak))
370 void matrix_init_keymap(void) {}
372 __attribute__ ((weak))
373 void matrix_scan_keymap(void) {}
375 __attribute__ ((weak))
376 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
379 __attribute__ ((weak))
380 uint32_t layer_state_set_keymap (uint32_t state) {
383 __attribute__ ((weak))
384 void led_set_keymap(uint8_t usb_led) {}