265c415f |
1 | /** |
2 | * noah.c |
3 | */ |
4 | |
5 | #include "noah.h" |
6 | |
7 | #ifdef RGBLIGHT_ENABLE |
8 | #include <string.h> |
9 | #include "rgblight.h" |
26eef35f |
10 | #include "ws2812.h" |
265c415f |
11 | extern rgblight_config_t rgblight_config; |
12 | |
13 | // led 0 for caps lock, led 1 for scroll lock, led 3 for num lock |
14 | // led 4 for layer 1, led 5 for layer 2, led 6 for layer 3, led 7 for layer 4 |
15 | #if RGBLED_NUM < 7 |
16 | #error "MUST set the RGBLED_NUM bigger than 7" |
17 | #endif |
18 | LED_TYPE noah_leds[RGBLED_NUM]; |
19 | static bool noah_led_mode = false; |
20 | void rgblight_set(void) { |
21 | memset(&noah_leds[0], 0, sizeof(noah_leds)); |
22 | if (!rgblight_config.enable) { |
23 | for (uint8_t i = 0; i < RGBLED_NUM; i++) { |
24 | led[i].r = 0; |
25 | led[i].g = 0; |
26 | led[i].b = 0; |
27 | } |
28 | } |
29 | if (noah_led_mode) { |
30 | uint8_t ind_led = host_keyboard_leds(); |
31 | if (IS_LED_ON(ind_led, USB_LED_CAPS_LOCK)) { |
32 | noah_leds[0] = led[0]; |
33 | } |
34 | if (IS_LED_ON(ind_led, USB_LED_SCROLL_LOCK)) { |
35 | noah_leds[1] = led[1]; |
36 | } |
37 | if (IS_LED_ON(ind_led, USB_LED_NUM_LOCK)) { |
38 | noah_leds[2] = led[2]; |
39 | } |
40 | for (int32_t i = 0; i < 4; i++) { |
41 | if(layer_state_is(i+1)) { |
42 | noah_leds[i + 3] = led[i + 3]; |
43 | } |
44 | } |
45 | } else { |
46 | memcpy(&noah_leds[0], &led[0], sizeof(noah_leds)); |
47 | } |
48 | |
49 | ws2812_setleds(noah_leds, RGBLED_NUM); |
50 | } |
51 | #endif |
52 | |
53 | void matrix_scan_kb(void) { matrix_scan_user(); } |
54 | |
55 | void matrix_init_kb(void) { |
56 | matrix_init_user(); |
57 | } |
58 | __attribute__((weak)) |
59 | void matrix_init_user(void) { |
60 | #ifdef RGBLIGHT_ENABLE |
265c415f |
61 | rgblight_enable(); |
62 | #endif |
63 | |
64 | #ifdef RGB_MATRIX_ENABLE |
65 | rgb_matrix_disable(); |
66 | #endif |
67 | } |
68 | |
69 | __attribute__((weak)) |
70 | void matrix_scan_user(void) { |
71 | #ifdef RGBLIGHT_ENABLE |
72 | rgblight_task(); |
73 | #endif |
74 | } |
75 | |
76 | |
77 | #ifdef RGB_MATRIX_ENABLE |
78 | const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { |
79 | /* Refer to IS31 manual for these locations |
80 | * driver |
81 | * | R location |
82 | * | | G location |
83 | * | | | B location |
84 | * | | | | */ |
85 | |
86 | // left CB |
87 | {0, C1_9, C3_10, C4_10}, |
88 | {0, C1_10, C2_10, C4_11}, |
89 | {0, C1_11, C2_11, C3_11}, |
90 | {0, C1_12, C2_12, C3_12}, |
91 | {0, C1_13, C2_13, C3_13}, |
92 | {0, C1_14, C2_14, C3_14}, |
93 | {0, C1_15, C2_15, C3_15}, |
94 | {0, C1_16, C2_16, C3_16}, |
95 | |
96 | {0, C5_9, C4_9, C6_9}, |
97 | {0, C5_16, C4_16, C6_16}, |
98 | |
99 | {0, C9_9, C8_9, C7_9}, |
100 | {0, C9_10, C8_10, C7_10}, |
101 | {0, C9_11, C8_11, C7_11}, |
102 | {0, C9_12, C8_12, C7_12}, |
103 | {0, C9_13, C8_13, C7_13}, |
104 | {0, C9_14, C8_14, C7_14}, |
105 | {0, C9_15, C8_15, C6_14}, |
106 | {0, C9_16, C7_15, C6_15}, |
107 | |
108 | // left CA |
109 | {0, C1_1, C3_2, C4_2}, |
110 | {0, C1_2, C2_2, C4_3}, |
111 | {0, C1_3, C2_3, C3_3}, |
112 | {0, C1_4, C2_4, C3_4}, |
113 | {0, C1_5, C2_5, C3_5}, |
114 | {0, C1_6, C2_6, C3_6}, |
115 | {0, C1_7, C2_7, C3_7}, |
116 | {0, C1_8, C2_8, C3_8}, |
117 | |
118 | {0, C5_1, C4_1, C6_1}, |
119 | {0, C5_8, C4_8, C6_8}, |
120 | |
121 | {0, C9_1, C8_1, C7_1}, |
122 | {0, C9_2, C8_2, C7_2}, |
123 | {0, C9_3, C8_3, C7_3}, |
124 | {0, C9_4, C8_4, C7_4}, |
125 | {0, C9_5, C8_5, C7_5}, |
126 | {0, C9_6, C8_6, C7_6}, |
127 | {0, C9_7, C8_7, C6_6}, |
128 | {0, C9_8, C7_7, C6_7}, |
129 | |
130 | // right CA |
131 | {1, C1_1, C3_2, C4_2}, |
132 | {1, C1_2, C2_2, C4_3}, |
133 | {1, C1_3, C2_3, C3_3}, |
134 | {1, C1_4, C2_4, C3_4}, |
135 | {1, C1_5, C2_5, C3_5}, |
136 | {1, C1_6, C2_6, C3_6}, |
137 | {1, C1_7, C2_7, C3_7}, |
138 | {1, C1_8, C2_8, C3_8}, |
139 | |
140 | {1, C5_1, C4_1, C6_1}, |
141 | {1, C5_8, C4_8, C6_8}, |
142 | |
143 | {1, C9_1, C8_1, C7_1}, |
144 | {1, C9_2, C8_2, C7_2}, |
145 | {1, C9_3, C8_3, C7_3}, |
146 | {1, C9_4, C8_4, C7_4}, |
147 | {1, C9_5, C8_5, C7_5}, |
148 | {1, C9_6, C8_6, C7_6}, |
149 | {1, C9_7, C8_7, C6_6}, |
150 | {1, C9_8, C7_7, C6_7}, |
151 | // right CB |
152 | {1, C1_9, C3_10, C4_10}, |
153 | {1, C1_10, C2_10, C4_11}, |
154 | {1, C1_11, C2_11, C3_11}, |
155 | {1, C1_12, C2_12, C3_12}, |
156 | {1, C1_13, C2_13, C3_13}, |
157 | {1, C1_14, C2_14, C3_14}, |
158 | {1, C1_15, C2_15, C3_15}, |
159 | {1, C1_16, C2_16, C3_16}, |
160 | |
161 | {1, C5_9, C4_9, C6_9}, |
162 | {1, C5_16, C4_16, C6_16}, |
163 | |
164 | {1, C9_9, C8_9, C7_9}, |
165 | {1, C9_10, C8_10, C7_10}, |
166 | {1, C9_11, C8_11, C7_11}, |
167 | {1, C9_12, C8_12, C7_12}, |
168 | {1, C9_13, C8_13, C7_13}, |
169 | {1, C9_14, C8_14, C7_14}, |
170 | {1, C9_15, C8_15, C6_14}, |
171 | {1, C9_16, C7_15, C6_15}, |
172 | }; |
173 | |
174 | led_config_t g_led_config = { |
175 | { |
176 | { 1, 2, 3, 4, 5, 6, 7, 36, 37, 38, 39, 40, NO_LED, 41}, |
177 | { 0, 8, 10, 11, 12, 13, 14, 44, 46, 47, 48, 49, 50, 51}, |
178 | { 30, 18, 26, 9, 19, 15, 16, 17, 55, 56, 57, 58, 59, 60}, |
179 | { 29, 31, 32, 33, 20, 21, 23, 22, 54, 62, 64, 65, 66, 63}, |
180 | { 34, 35, 27, 25, 67, 68, 69, 70, 71, 61, 53, 45, 42, 43}, |
181 | }, |
182 | { |
183 | { 0, 16},{ 0, 0},{ 15, 0},{ 30, 0},{ 45, 0},{ 60, 0},{ 75, 0},{ 90, 0}, |
184 | { 20, 16},{ 42, 32}, |
185 | { 45, 16},{ 50, 16},{ 65, 16},{ 80, 16},{ 95, 16},{ 70, 32},{ 84, 32},{ 98, 32}, |
186 | |
187 | { 14, 32},{ 56, 32},{ 50, 48},{ 80, 48},{110, 48},{ 95, 48},{100, 64},{112, 64}, |
188 | { 42, 32},{ 38, 64}, |
189 | { 0, 32},{ 10, 48},{ 0, 48},{ 20, 48},{ 35, 48},{ 65, 48},{ 0, 64},{ 19, 64}, |
190 | |
191 | {105, 0},{120, 0},{135, 0},{150, 0},{165, 0},{180, 0},{202, 0},{224, 0}, |
192 | {110, 16},{224, 16}, |
193 | {125, 16},{140, 16},{155, 16},{172, 16},{187, 16},{202, 16},{210, 32},{224, 32}, |
194 | |
195 | {125, 48},{112, 32},{126, 32},{140, 32},{154, 32},{168, 32},{182, 32},{224, 48}, |
196 | {140, 48},{200, 48}, |
197 | {155, 48},{170, 48},{185, 48},{150, 64},{173, 64},{195, 64},{210, 64},{224, 64} |
198 | }, |
199 | { |
200 | 1, 1, 4, 4, 4, 4, 4, 4, |
201 | 4, 4, |
202 | 4, 4, 4, 4, 4, 4, 4, 4, |
203 | |
204 | 4, 4, 4, 4, 4, 4, 4, 4, |
205 | 4, 4, |
206 | 1, 1, 1, 4, 4, 4, 1, 1, |
207 | |
208 | 4, 4, 4, 4, 4, 4, 1, 1, |
209 | 4, 1, |
210 | 4, 4, 4, 4, 4, 4, 4, 1, |
211 | |
212 | 4, 4, 4, 4, 4, 4, 4, 1, |
213 | 4, 4, |
214 | 4, 4, 4, 1, 1, 1, 1, 1, |
215 | } |
216 | }; |
217 | |
218 | #endif |
219 | |
220 | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { |
221 | if (record->event.pressed) { |
222 | switch(keycode) { |
223 | #ifdef RGBLIGHT_ENABLE |
224 | case KC_F24: // switch the led mode on or off |
225 | noah_led_mode = !noah_led_mode; |
226 | return false; |
227 | |
228 | #ifdef RGB_MATRIX_ENABLE |
229 | case KC_F13: // toggle rgb matrix |
230 | rgb_matrix_toggle(); |
231 | return false; |
232 | case KC_F14: |
233 | rgb_matrix_step(); |
234 | return false; |
235 | #endif |
236 | #endif |
237 | default: |
238 | break; |
239 | } |
240 | } |
241 | return true; |
242 | } |