mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-28 03:59:33 +06:00
391 lines
8.8 KiB
C
391 lines
8.8 KiB
C
/* 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))
|
|
layer_state_t layer_state_set_keymap (layer_state_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;
|
|
bool led_update_user(led_t led_state) {
|
|
if (led_state.caps_lock) {
|
|
is_capslocked = true;
|
|
// DDRB |= (1 << 2); PORTB &= ~(1 << 2);
|
|
} else {
|
|
is_capslocked = false;
|
|
// DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
|
|
}
|
|
return false;
|
|
}
|
|
//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);
|
|
|
|
}
|
|
|
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
#ifdef RGBLIGHT_ENABLE
|
|
uint8_t default_layer = eeconfig_read_default_layer();
|
|
if (rgb_layer_change) {
|
|
switch (get_highest_layer(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))
|
|
layer_state_t layer_state_set_keymap (layer_state_t state) {
|
|
return state;
|
|
}
|
|
__attribute__ ((weak))
|
|
void led_set_keymap(uint8_t usb_led) {}
|
|
|
|
Alt +30C4
|
|
¯\_(ツ)_/¯
|
|
|
|
Alt +00AF
|