rgb.c (6480B)
1 /* Copyright 2023 @ Keychron (https://www.keychron.com) 2 * 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. 7 * 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. 12 * 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/>. 15 */ 16 17 #include "quantum.h" 18 19 // clang-format off 20 #ifdef RGB_MATRIX_ENABLE 21 const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { 22 /* Refer to SNLED27351 manual for these locations 23 * driver 24 * | R location 25 * | | G location 26 * | | | B location 27 * | | | | */ 28 {0, CB9_CA1, CB7_CA1, CB8_CA1}, 29 {0, CB9_CA2, CB7_CA2, CB8_CA2}, 30 {0, CB9_CA3, CB7_CA3, CB8_CA3}, 31 {0, CB9_CA4, CB7_CA4, CB8_CA4}, 32 {0, CB9_CA5, CB7_CA5, CB8_CA5}, 33 {0, CB9_CA6, CB7_CA6, CB8_CA6}, 34 {0, CB9_CA7, CB7_CA7, CB8_CA7}, 35 {0, CB9_CA8, CB7_CA8, CB8_CA8}, 36 {0, CB9_CA9, CB7_CA9, CB8_CA9}, 37 {0, CB9_CA10, CB7_CA10, CB8_CA10}, 38 {0, CB9_CA11, CB7_CA11, CB8_CA11}, 39 {0, CB9_CA12, CB7_CA12, CB8_CA12}, 40 {0, CB9_CA13, CB7_CA13, CB8_CA13}, 41 {0, CB9_CA15, CB7_CA15, CB8_CA15}, 42 {0, CB9_CA16, CB7_CA16, CB8_CA16}, 43 {1, CB9_CA15, CB7_CA15, CB8_CA15}, 44 45 {0, CB3_CA1, CB1_CA1, CB2_CA1}, 46 {0, CB3_CA2, CB1_CA2, CB2_CA2}, 47 {0, CB3_CA3, CB1_CA3, CB2_CA3}, 48 {0, CB3_CA4, CB1_CA4, CB2_CA4}, 49 {0, CB3_CA5, CB1_CA5, CB2_CA5}, 50 {0, CB3_CA6, CB1_CA6, CB2_CA6}, 51 {0, CB3_CA7, CB1_CA7, CB2_CA7}, 52 {0, CB3_CA8, CB1_CA8, CB2_CA8}, 53 {0, CB3_CA9, CB1_CA9, CB2_CA9}, 54 {0, CB3_CA10, CB1_CA10, CB2_CA10}, 55 {0, CB3_CA11, CB1_CA11, CB2_CA11}, 56 {0, CB3_CA12, CB1_CA12, CB2_CA12}, 57 {0, CB3_CA13, CB1_CA13, CB2_CA13}, 58 {0, CB3_CA14, CB1_CA14, CB2_CA14}, 59 {0, CB3_CA15, CB1_CA15, CB2_CA15}, 60 {0, CB3_CA16, CB1_CA16, CB2_CA16}, 61 {1, CB9_CA16, CB7_CA16, CB8_CA16}, 62 63 {0, CB6_CA1, CB4_CA1, CB5_CA1}, 64 {0, CB6_CA2, CB4_CA2, CB5_CA2}, 65 {0, CB6_CA3, CB4_CA3, CB5_CA3}, 66 {0, CB6_CA4, CB4_CA4, CB5_CA4}, 67 {0, CB6_CA5, CB4_CA5, CB5_CA5}, 68 {0, CB6_CA6, CB4_CA6, CB5_CA6}, 69 {0, CB6_CA7, CB4_CA7, CB5_CA7}, 70 {0, CB6_CA8, CB4_CA8, CB5_CA8}, 71 {0, CB6_CA9, CB4_CA9, CB5_CA9}, 72 {0, CB6_CA10, CB4_CA10, CB5_CA10}, 73 {0, CB6_CA11, CB4_CA11, CB5_CA11}, 74 {0, CB6_CA12, CB4_CA12, CB5_CA12}, 75 {0, CB6_CA13, CB4_CA13, CB5_CA13}, 76 {0, CB6_CA14, CB4_CA14, CB5_CA14}, 77 {0, CB6_CA15, CB4_CA15, CB5_CA15}, 78 {0, CB6_CA16, CB4_CA16, CB5_CA16}, 79 {1, CB9_CA13, CB7_CA13, CB8_CA13}, 80 81 {1, CB9_CA1, CB7_CA1, CB8_CA1}, 82 {1, CB9_CA2, CB7_CA2, CB8_CA2}, 83 {1, CB9_CA3, CB7_CA3, CB8_CA3}, 84 {1, CB9_CA4, CB7_CA4, CB8_CA4}, 85 {1, CB9_CA5, CB7_CA5, CB8_CA5}, 86 {1, CB9_CA6, CB7_CA6, CB8_CA6}, 87 {1, CB9_CA7, CB7_CA7, CB8_CA7}, 88 {1, CB9_CA8, CB7_CA8, CB8_CA8}, 89 {1, CB9_CA9, CB7_CA9, CB8_CA9}, 90 {1, CB9_CA10, CB7_CA10, CB8_CA10}, 91 {1, CB9_CA11, CB7_CA11, CB8_CA11}, 92 {1, CB9_CA12, CB7_CA12, CB8_CA12}, 93 {1, CB9_CA14, CB7_CA14, CB8_CA14}, 94 95 {0, CB9_CA14, CB7_CA14, CB8_CA14}, // CAPS_MAC_WIN_LED_INDEX 96 97 {1, CB3_CA1, CB1_CA1, CB2_CA1}, 98 {1, CB3_CA3, CB1_CA3, CB2_CA3}, 99 {1, CB3_CA4, CB1_CA4, CB2_CA4}, 100 {1, CB3_CA5, CB1_CA5, CB2_CA5}, 101 {1, CB3_CA6, CB1_CA6, CB2_CA6}, 102 {1, CB3_CA7, CB1_CA7, CB2_CA7}, 103 {1, CB3_CA8, CB1_CA8, CB2_CA8}, 104 {1, CB3_CA9, CB1_CA9, CB2_CA9}, 105 {1, CB3_CA10, CB1_CA10, CB2_CA10}, 106 {1, CB3_CA11, CB1_CA11, CB2_CA11}, 107 {1, CB3_CA12, CB1_CA12, CB2_CA12}, 108 {1, CB3_CA14, CB1_CA14, CB2_CA14}, 109 {1, CB3_CA16, CB1_CA16, CB2_CA16}, 110 111 {1, CB6_CA1, CB4_CA1, CB5_CA1}, 112 {1, CB6_CA2, CB4_CA2, CB5_CA2}, 113 {1, CB6_CA3, CB4_CA3, CB5_CA3}, 114 {1, CB6_CA7, CB4_CA7, CB5_CA7}, 115 {1, CB6_CA11, CB4_CA11, CB5_CA11}, 116 {1, CB6_CA12, CB4_CA12, CB5_CA12}, 117 {1, CB6_CA13, CB4_CA13, CB5_CA13}, 118 {1, CB6_CA14, CB4_CA14, CB5_CA14}, 119 {1, CB6_CA15, CB4_CA15, CB5_CA15}, 120 {1, CB6_CA16, CB4_CA16, CB5_CA16}, 121 {1, CB3_CA15, CB1_CA15, CB2_CA15}, 122 }; 123 124 // clang-format on 125 126 bool process_record_kb(uint16_t keycode, keyrecord_t *record) { 127 if (!process_record_user(keycode, record)) { 128 return false; 129 } 130 switch (keycode) { 131 case QK_RGB_MATRIX_TOGGLE: 132 if (record->event.pressed) { 133 switch (rgb_matrix_get_flags()) { 134 case LED_FLAG_ALL: { 135 rgb_matrix_set_flags(LED_FLAG_NONE); 136 rgb_matrix_set_color_all(0, 0, 0); 137 } break; 138 default: { 139 rgb_matrix_set_flags(LED_FLAG_ALL); 140 } break; 141 } 142 } 143 if (!rgb_matrix_is_enabled()) { 144 rgb_matrix_set_flags(LED_FLAG_ALL); 145 rgb_matrix_enable(); 146 } 147 return false; 148 } 149 return true; 150 } 151 152 bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { 153 if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { 154 return false; 155 } 156 if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) { 157 rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 0, 255, 255); 158 } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) { 159 rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 0, 0, 255); 160 } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) { 161 rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 255, 255, 0); 162 } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) { 163 rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 255, 0, 0); 164 } 165 return true; 166 } 167 168 #endif