forked from filterpaper/qmk_userspace
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rgb-matrix.c
116 lines (104 loc) · 3.71 KB
/
rgb-matrix.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Copyright 2021 @filterpaper
// SPDX-License-Identifier: GPL-2.0+
#include "filterpaper.h"
void matrix_init_user(void) {
// Remap under glow LEDs to nearby keys
#ifdef KEYBOARD_boardsource_the_mark
g_led_config = (led_config_t){ {
{ 10, 10, 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 1 , 1 },
{ 11, 11, 9 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 4 , 4 , 3 , 2 , 1 , 0 },
{ 12, 12, 14, 14, 15, 16, 16, 17, 18, 18, 19, 20, 21, 21, 23, 23 },
{ 13, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 21, 22, 22 },
{ 13, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 21, 22, 22 },
}, {
{224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42},
{30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {224, 64}
}, {
255, 255, 255, 4, 4, 4, 4, 4, 4, 255, 255, 255,
255, 255, 255, 4, 4, 4, 4, 4, 4, 255, 255, 255
} };
#endif
// Disable underglow LEDs
#if defined(KEYBOARD_boardsource_technik_o) || defined(LP)
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) {
if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) {
g_led_config.flags[i] = LED_FLAG_NONE;
}
}
#endif
// Change thumb key flags
#ifdef KEYBOARD_crkbd_rev1
g_led_config.flags[6] = g_led_config.flags[33] = LED_FLAG_KEYLIGHT;
#endif
}
void keyboard_post_init_user(void) {
rgb_matrix_mode_noeeprom(DEF_MODE);
}
layer_state_t layer_state_set_user(layer_state_t const state) {
layer_state_is(CMK) ? rgb_matrix_mode_noeeprom(CMK_MODE) : rgb_matrix_mode_noeeprom(DEF_MODE);
return state;
}
void rgb_matrix_indicators_user(void) {
// Caps lock indicator
if (host_keyboard_led_state().caps_lock) {
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) {
if (g_led_config.flags[i] & CAP_FLAG) { rgb_matrix_set_color(i, RGB_CAPS); }
}
}
// Modifier keys indicator
if (get_mods() & MOD_MASK_CSAG) {
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) {
if (g_led_config.flags[i] & MOD_FLAG) { rgb_matrix_set_color(i, RGB_MODS); }
}
}
if (get_highest_layer(layer_state) > CMK) {
#ifdef KEYBOARD_boardsource_the_mark
rgb_matrix_set_color_all(RGB_LAYER);
#else
// Layer keys indicator by @rgoulter
uint8_t layer = get_highest_layer(layer_state);
for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
if (g_led_config.matrix_co[row][col] != NO_LED &&
keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
rgb_matrix_set_color(g_led_config.matrix_co[row][col], RGB_LAYER);
}
}
}
#endif // KEYBOARD_boardsource_the_mark
}
}
/*
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
// Caps lock indicator
if (host_keyboard_led_state().caps_lock) {
for (uint8_t i = led_min; i <= led_max; ++i) {
if (g_led_config.flags[i] & CAP_FLAG) { rgb_matrix_set_color(i, RGB_CAPS); }
}
}
// Modifier keys indicator
if (get_mods() & MOD_MASK_CSAG) {
for (uint8_t i = led_min; i <= led_max; ++i) {
if (g_led_config.flags[i] & MOD_FLAG) { rgb_matrix_set_color(i, RGB_MODS); }
}
}
if (get_highest_layer(layer_state) > CMK) {
#ifdef KEYBOARD_boardsource_the_mark
for (uint8_t i = led_min; i <= led_max; ++i) {
rgb_matrix_set_color(i, RGB_LAYER);
}
#else
// Layer keys indicator by @rgoulter
uint8_t layer = get_highest_layer(layer_state);
for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
uint8_t index = g_led_config.matrix_co[row][col];
if (index >= led_min && index <= led_max && index != NO_LED &&
keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
rgb_matrix_set_color(index, RGB_LAYER);
}
}
}
#endif // KEYBOARD_boardsource_the_mark
}
}*/