summary refs log tree commit diff stats
path: root/src/keymaps/soispha/rgb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/keymaps/soispha/rgb.c')
-rw-r--r--src/keymaps/soispha/rgb.c227
1 files changed, 227 insertions, 0 deletions
diff --git a/src/keymaps/soispha/rgb.c b/src/keymaps/soispha/rgb.c
new file mode 100644
index 0000000..183296e
--- /dev/null
+++ b/src/keymaps/soispha/rgb.c
@@ -0,0 +1,227 @@
+#include QMK_KEYBOARD_H
+#define MOON_LED_LEVEL LED_LEVEL
+
+extern rgb_config_t rgb_matrix_config;
+
+void keyboard_post_init_user(void) { rgb_matrix_enable(); }
+
+// clang-format off
+const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
+    [0] = {{0, 255, 255},   {86, 255, 128},  {86, 255, 128},  {172, 255, 255},
+           {215, 255, 128}, {0, 255, 255},   {27, 255, 255},  {86, 255, 128},
+           {172, 255, 255}, {215, 255, 128}, {0, 255, 255},   {27, 255, 255},
+           {86, 255, 128},  {172, 255, 255}, {215, 255, 128}, {0, 255, 255},
+           {27, 255, 255},  {86, 255, 128},  {172, 255, 255}, {215, 255, 128},
+           {0, 255, 255},   {27, 255, 255},  {43, 255, 255},  {172, 255, 255},
+           {215, 255, 128}, {0, 255, 255},   {27, 255, 255},  {86, 255, 128},
+           {172, 255, 255}, {0, 255, 255},   {27, 255, 255},  {27, 255, 255},
+           {0, 245, 245},   {0, 245, 245},   {0, 245, 245},   {0, 0, 0},
+           {0, 255, 255},   {86, 255, 128},  {86, 255, 128},  {172, 255, 255},
+           {215, 255, 128}, {0, 255, 255},   {27, 255, 255},  {86, 255, 128},
+           {172, 255, 255}, {215, 255, 128}, {0, 255, 255},   {27, 255, 255},
+           {86, 255, 128},  {172, 255, 255}, {215, 255, 128}, {0, 255, 255},
+           {27, 255, 255},  {86, 255, 128},  {172, 255, 255}, {215, 255, 128},
+           {0, 255, 255},   {27, 255, 255},  {43, 255, 255},  {172, 255, 255},
+           {215, 255, 128}, {0, 255, 255},   {27, 255, 255},  {86, 255, 128},
+           {172, 255, 255}, {0, 255, 255},   {27, 255, 255},  {27, 255, 255},
+           {0, 245, 245},   {0, 245, 245},   {0, 245, 245},   {0, 0, 0}},
+
+    [1] = {{0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245},   {0, 245, 245}, {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {131, 255, 255}, {0, 245, 245}, {0, 0, 0}},
+
+    [2] = {{0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245},   {0, 245, 245}, {0, 245, 245}, {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {131, 255, 255}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}},
+
+    [3] = {{0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {131, 255, 255}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},       {0, 0, 0},     {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245},   {0, 245, 245}, {0, 245, 245}, {0, 0, 0}},
+
+    [4] = {{0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {131, 255, 255}, {0, 245, 245}, {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245},   {0, 245, 245}, {0, 0, 0}},
+
+    [5] = {{0, 0, 0},     {131, 255, 255}, {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245},   {0, 245, 245}, {0, 245, 245},
+           {0, 0, 0},     {131, 255, 255}, {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},       {0, 0, 0},     {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245},   {0, 245, 245}, {0, 245, 245}},
+
+    [6] = {{0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245}, {131, 255, 255}, {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0},     {0, 0, 0},     {0, 0, 0},       {0, 0, 0},
+           {0, 245, 245}, {0, 245, 245}, {0, 245, 245},   {0, 0, 0}},
+
+    [7] = {{0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {131, 255, 255}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {215, 255, 128}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {215, 255, 128}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {215, 255, 128}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0},       {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}},
+
+    [8] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {131, 255, 255},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {131, 255, 255},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
+
+    [9] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}, {0, 0, 0},       {0, 0, 0}, {0, 0, 0},
+           {0, 0, 0}, {0, 0, 0}},
+};
+// clang-format on
+
+void set_layer_color(int layer) {
+  for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
+    HSV hsv = {
+        .h = pgm_read_byte(&ledmap[layer][i][0]),
+        .s = pgm_read_byte(&ledmap[layer][i][1]),
+        .v = pgm_read_byte(&ledmap[layer][i][2]),
+    };
+    if (!hsv.h && !hsv.s && !hsv.v) {
+      rgb_matrix_set_color(i, 0, 0, 0);
+    } else {
+      RGB rgb = hsv_to_rgb(hsv);
+      float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
+      rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b);
+    }
+  }
+}
+
+bool rgb_matrix_indicators_user(void) {
+  if (keyboard_config.disable_layer_led) {
+    return false;
+  }
+
+  int layer = biton32(layer_state);
+  if (layer <= 9) {
+    set_layer_color(layer);
+  } else {
+    if (rgb_matrix_get_flags() == LED_FLAG_NONE) {
+      rgb_matrix_set_color_all(0, 0, 0);
+    }
+  }
+  return true;
+}