/* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "turbomech.h" #include "quantum.h" //#include "action_layer.h" #include "action.h" //#include "rgblight.h" __attribute__ ((weak)) void matrix_init_keymap(void) {} __attribute__ ((weak)) void matrix_scan_keymap(void) {} __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } __attribute__ ((weak)) uint32_t layer_state_set_keymap (uint32_t state) { return state; } __attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) {} //#define default_layer _QWERTY (0) //extern keymap_config_t keymap_config; extern rgblight_config_t rgblight_config; //#ifdef RGBLIGHT_ENABLE /*change the rgblight_setrgb(#, #, #) to what you want CAPS lock - currenlty red*/ //#define rgblight_set_caps rgblight_setrgb(255, 0, 0) //#define rgblight_base rgblight_mode(RGB_current_mode) //#endif // //bool rgb_layer_change = true; //bool RGB_INIT = false; //bool TOG_STATUS = false; #ifdef RGBLIGHT_ENABLE bool rgb_layer_change = true; #endif int RGB_current_mode; /*void matrix_init_user(void) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); if (true) { eeconfig_read_rgblight(); rgblight_get_mode(); eeconfig_update_rgblight_default(); // eeconfig_debug_rgblight(); //rgblight_init(); } #endif } */ /*void matrix_init_user(void) { #ifdef RGBLIGHT_ENABLE eeconfig_read_rgblight(); eeconfig_update_rgblight_default(); //rgblight_init(); //rgblight_mode(RGB_current_mode); //rgblight_mode(RGB_current_mode); //RGB_current_mode = rgblight_config.mode; #endif }*/ void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); default_layer = _QWERTY; // eeconfig_update_rgblight(rgblight_config.raw); } //Setting ADJUST layer RGB back to default /*void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { rgblight_mode(RGB_current_mode); layer_on(layer1); } else { layer_off(layer2); } }*/ void matrix_init_user(void) { uint8_t default_layer = eeconfig_read_default_layer(); rgblight_enable(); if(true) { if (default_layer & (1UL << _QWERTY)) { //RGB_current_mode = rgblight_config.mode; rgblight_mode(11); } else { rgblight_mode (12); } /*else if (default_layer & (1UL << _DVORAK)) { rgblight_set_green; } //else if (default_layer & (1UL << _WORKMAN)) { rgblight_set_purple; } else { rgblight_set_teal;*/ } } static bool is_capslocked = false; void led_set_user(uint8_t usb_led) { if (usb_led & (1<<USB_LED_CAPS_LOCK)) { is_capslocked = true; // DDRB |= (1 << 2); PORTB &= ~(1 << 2); } else { is_capslocked = false; // DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); } } //rgblight_set(); //static uint8_t is_capslocked = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case _QWERTY: persistent_default_layer_set(1UL << _QWERTY); return false; break; case KC_MAKE_ALU84: if (!record->event.pressed) { SEND_STRING("make alu84:TurboMech:dfu"); SEND_STRING(SS_TAP(X_ENTER)); } return false; break; case KC_QMK: if (!record->event.pressed) { SEND_STRING("cd QMK/qmk_firmware"); SEND_STRING(SS_TAP(X_ENTER)); } return false; break; case KC_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(255, 255, 255); #endif //_delay_ms(2000); reset_keyboard(); } return false; break; /*case RGB_MOD: //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 if (record->event.pressed) { rgblight_mode(RGB_current_mode); RGB_current_mode = rgblight_config.mode; rgblight_step(); // rgblight_mode(RGB_current_mode); //RGB_current_mode = rgblight_config.mode; // _delay_ms(50); // rgblight_set(); RGB_current_mode = rgblight_config.mode; } else //if (rgblight_config.enable) { _delay_ms(50); rgblight_set(); //rgblight_mode(rgblight_config.mode); // eeconfig_update_rgblight(rgblight_config.raw); } return true; break;*/ /*case MO(1): if (record->event.realeased) { rgblight_mode(1); rgblight_set_red; } return true; break;*/ /*case KC_CAPS: if (record->event.pressed) { rgblight_mode(RGB_current_mode); register_code(KC_CAPS); rgblight_mode(1); rgblight_set_red; } else { unregister_code(KC_CAPS); rgblight_mode(RGB_current_mode); } return false; break;*/ /* rgblight_mode(RGB_current_mode); register_code(KC_CAPS); rgblight_mode(1); rgblight_set_red; } else { unregister_code(KC_CAPS); rgblight_mode(RGB_current_mode);*/ // } // return true; // break; /*case KC_RESET: if (record->event.pressed) { layer_off(_FUNCTION); rgblight_mode(RGB_current_mode); RGB_current_mode = rgblight_config.mode; layer_clear(); _delay_ms(1000); reset_keyboard(); } else{ //layer_off(_FUNCTION); _delay_ms(1000); rgblight_mode(RGB_current_mode); RGB_current_mode = rgblight_config.mode; //eeconfig_update_rgblight_default(); } return false; break; }*/ return true; break; /*case RGB_MOD: case RGB_HUI: case RGB_HUD: case RGB_SAI: case RGB_SAD: case RGB_VAI: case RGB_VAD: case RGB_MODE_PLAIN: case RGB_MODE_BREATHE: case RGB_MODE_RAINBOW: case RGB_MODE_SWIRL: case RGB_MODE_SNAKE: case RGB_MODE_KNIGHT: case RGB_MODE_XMAS: case RGB_MODE_GRADIENT: if (record->event.pressed) { rgb_layer_change = false; } break; } return true;*/ } return process_record_keymap(keycode, record); } uint32_t layer_state_set_user(uint32_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); if (rgb_layer_change) { switch (biton32(state)) { case _FUNCTION: rgblight_set_blue; rgblight_mode(1); break; case _QWERTY: rgblight_mode(11); break; // case _MOUS: // rgblight_set_yellow; // rgblight_mode(1); // break; //case _MACROS: //rgblight_set_orange; //is_overwatch ? rgblight_mode(17) : rgblight_mode(18); //break; //case _MEDIA: //rgblight_set_green; //rgblight_mode(22); //break; default: if (is_capslocked) { rgblight_mode(1); rgblight_set_red; } else { if (default_layer & (1UL << _QWERTY)) { rgblight_mode(11); } else if (default_layer & (1UL << _FUNCTION)) { rgblight_set_cyan; } //else if (default_layer & (1UL << _WORKMAN)) { // rgblight_set_purple; // } else { rgblight_set_orange; } } rgblight_mode(1); break; } } #endif return state; } !!** possible for later void set_single_persistent_default_layer(uint8_t default_layer); void set_single_persistent_default_layer(uint8_t default_layer) { #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) PLAY_SONG(default_layer_songs[default_layer]); #endif eeconfig_update_default_layer(1U<<default_layer); default_layer_set(1U<<default_layer); void matrix_init_kb(void); void matrix_init_user(void); !!** line 31 __attribute__ ((weak)) void matrix_init_keymap(void) {} __attribute__ ((weak)) void matrix_scan_keymap(void) {} __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } __attribute__ ((weak)) uint32_t layer_state_set_keymap (uint32_t state) { return state; } __attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) {} Alt +30C4 ¯\_(ツ)_/¯ Alt +00AF