// qmk flash -kb bm40hsrgb -km signynt
/* Copyright 2021 Vincenzo Mitchell Barroso
*
* 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 .
*/
#include QMK_KEYBOARD_H
// non-KC_ keycodes
#define KC_RST RESET
#define KC_TOG RGB_TOG
#define KC_MOD RGB_MOD
#define KC_HUI RGB_HUI
#define KC_SAI RGB_SAI
#define KC_VAI RGB_VAI
//define layers
enum layers {BASE, MEDR, NAVR, NSSL, NSL, FUNL, GAME, SECGAME};
enum custom_keycodes {
CMD_TAB = SAFE_RANGE,
};
//cmd tab
bool is_cmd_tab_active = false;
uint16_t cmd_tab_timer = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case CMD_TAB:
if (record->event.pressed) {
if (!is_cmd_tab_active) {
is_cmd_tab_active = true;
register_code(KC_LCTL);
}
cmd_tab_timer = timer_read();
register_code(KC_TAB);
} else {
unregister_code(KC_TAB);
}
break;
}
return true;
}
void matrix_scan_user(void) {
if (is_cmd_tab_active) {
if (timer_elapsed(cmd_tab_timer) > 500) {
unregister_code(KC_LCTL);
is_cmd_tab_active = false;
}
}
}
//layer led colors
void rgb_matrix_indicators_user(void) {
//game indicators
if(IS_LAYER_ON(GAME)) {
rgb_matrix_set_color(11, 0, 40, 50);
}
if(IS_LAYER_ON(SECGAME)) {
rgb_matrix_set_color(11, 50, 0, 0);
}
//layer indicators
if(IS_LAYER_ON(NAVR)) {
rgb_matrix_set_color(40, 0, 40, 50);
rgb_matrix_set_color(19, 0, 40, 50);
rgb_matrix_set_color(20, 0, 40, 50);
rgb_matrix_set_color(21, 0, 40, 50);
rgb_matrix_set_color(22, 0, 40, 50);
}
if(IS_LAYER_ON(MEDR)) {
rgb_matrix_set_color(39, 50, 10, 20);
rgb_matrix_set_color(19, 50, 10, 20);
rgb_matrix_set_color(22, 50, 10, 20);
rgb_matrix_set_color(42, 50, 10, 20);
}
if(IS_LAYER_ON(FUNL)) {
rgb_matrix_set_color(43, 50, 0, 0);
rgb_matrix_set_color(1, 50, 0, 0);
rgb_matrix_set_color(2, 50, 0, 0);
rgb_matrix_set_color(3, 50, 0, 0);
rgb_matrix_set_color(4, 50, 0, 0);
rgb_matrix_set_color(13, 50, 0, 0);
rgb_matrix_set_color(14, 50, 0, 0);
rgb_matrix_set_color(15, 50, 0, 0);
rgb_matrix_set_color(16, 50, 0, 0);
rgb_matrix_set_color(25, 50, 0, 0);
rgb_matrix_set_color(26, 50, 0, 0);
rgb_matrix_set_color(27, 50, 0, 0);
rgb_matrix_set_color(28, 50, 0, 0);
}
if(IS_LAYER_ON(NSL)) {
rgb_matrix_set_color(42, 10, 0, 50);
rgb_matrix_set_color(2, 10, 0, 50);
rgb_matrix_set_color(3, 10, 0, 50);
rgb_matrix_set_color(4, 10, 0, 50);
rgb_matrix_set_color(14, 10, 0, 50);
rgb_matrix_set_color(15, 10, 0, 50);
rgb_matrix_set_color(16, 10, 0, 50);
rgb_matrix_set_color(26, 10, 0, 50);
rgb_matrix_set_color(27, 10, 0, 50);
rgb_matrix_set_color(28, 10, 0, 50);
rgb_matrix_set_color(38, 10, 0, 50);
rgb_matrix_set_color(39, 10, 0, 50);
rgb_matrix_set_color(40, 10, 0, 50);
}
if(IS_LAYER_ON(NSSL)) {
rgb_matrix_set_color(41, 0, 50, 1.9);
rgb_matrix_set_color(1, 0, 50, 1.9);
rgb_matrix_set_color(2, 0, 50, 1.9);
rgb_matrix_set_color(3, 0, 50, 1.9);
rgb_matrix_set_color(4, 0, 50, 1.9);
rgb_matrix_set_color(5, 0, 50, 1.9);
rgb_matrix_set_color(13, 0, 50, 1.9);
rgb_matrix_set_color(14, 0, 50, 1.9);
rgb_matrix_set_color(15, 0, 50, 1.9);
rgb_matrix_set_color(16, 0, 50, 1.9);
rgb_matrix_set_color(17, 0, 50, 1.9);
rgb_matrix_set_color(25, 0, 50, 1.9);
rgb_matrix_set_color(26, 0, 50, 1.9);
rgb_matrix_set_color(27, 0, 50, 1.9);
rgb_matrix_set_color(28, 0, 50, 1.9);
rgb_matrix_set_color(29, 0, 50, 1.9);
}
//capslock leds
if (host_keyboard_leds() & (1<