// 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 QK_BOOT #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 bool 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); return false; } //capslock leds if (host_keyboard_leds() & (1<