RGB Work
This commit is contained in:
parent
9a74e03861
commit
28cce575fa
2 changed files with 23 additions and 5 deletions
|
@ -3,7 +3,7 @@
|
||||||
if BOARD_RETIC1337_TKL
|
if BOARD_RETIC1337_TKL
|
||||||
|
|
||||||
config ZMK_KEYBOARD_NAME
|
config ZMK_KEYBOARD_NAME
|
||||||
default "Test_Keyboard"
|
default "Test_TKL_v2"
|
||||||
|
|
||||||
config I2C
|
config I2C
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -11,10 +11,12 @@
|
||||||
#include <drivers/led.h>
|
#include <drivers/led.h>
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||||
|
const uint8_t RGB = 1;
|
||||||
|
const uint8_t GRB = 2;
|
||||||
#define ZMK_KSCAN_EVENT_STATE_PRESSED 0
|
#define ZMK_KSCAN_EVENT_STATE_PRESSED 0
|
||||||
#define ZMK_KSCAN_EVENT_STATE_RELEASED 1
|
#define ZMK_KSCAN_EVENT_STATE_RELEASED 1
|
||||||
#define BASE_RED 255
|
#define BASE_RED 255
|
||||||
#define BASE_GREEN 0
|
#define BASE_GREEN 255
|
||||||
#define BASE_BLUE 255
|
#define BASE_BLUE 255
|
||||||
uint8_t led_base_color[3] = {BASE_RED, BASE_GREEN, BASE_BLUE};
|
uint8_t led_base_color[3] = {BASE_RED, BASE_GREEN, BASE_BLUE};
|
||||||
#define PRESSED_RED 250
|
#define PRESSED_RED 250
|
||||||
|
@ -26,6 +28,7 @@ struct zmk_kscan_event {
|
||||||
uint32_t column;
|
uint32_t column;
|
||||||
uint32_t state;
|
uint32_t state;
|
||||||
};
|
};
|
||||||
|
|
||||||
K_MSGQ_DEFINE(zmk_kscan_msgxq, sizeof(struct zmk_kscan_event), CONFIG_ZMK_KSCAN_EVENT_QUEUE_SIZE, 4);
|
K_MSGQ_DEFINE(zmk_kscan_msgxq, sizeof(struct zmk_kscan_event), CONFIG_ZMK_KSCAN_EVENT_QUEUE_SIZE, 4);
|
||||||
struct zmk_kscan_msg_processor {
|
struct zmk_kscan_msg_processor {
|
||||||
struct k_work work;
|
struct k_work work;
|
||||||
|
@ -42,13 +45,28 @@ static void zmk_kscan_callback_led(const struct device *dev, uint32_t row, uint3
|
||||||
k_work_submit(&led_processor.work);
|
k_work_submit(&led_processor.work);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t led_type_matrix[128] = { GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB,
|
||||||
|
RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, GRB, GRB, RGB, RGB, RGB, RGB, RGB, RGB,
|
||||||
|
RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, RGB, GRB,
|
||||||
|
GRB, GRB, RGB, GRB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB,
|
||||||
|
RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, GRB, RGB, GRB, RGB, GRB, GRB, GRB, RGB, RGB, RGB, RGB,
|
||||||
|
RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB, RGB,
|
||||||
|
GRB, RGB, GRB, RGB, GRB, RGB, GRB, RGB};
|
||||||
uint8_t led_lookup_matrix[108] = { 1, 0, 3, 5, 7, 9, 11, 13, 15, 65, 0, 67, 69, 71, 73, 75, 77, 79,
|
uint8_t led_lookup_matrix[108] = { 1, 0, 3, 5, 7, 9, 11, 13, 15, 65, 0, 67, 69, 71, 73, 75, 77, 79,
|
||||||
17, 20, 22, 24, 26, 28, 30, 80, 81, 82, 83, 84, 85, 0, 86, 87, 88, 90,
|
17, 20, 22, 24, 26, 28, 30, 80, 81, 82, 83, 84, 85, 0, 86, 87, 88, 90,
|
||||||
19, 21, 23, 25, 27, 29, 31, 96, 98, 100, 102, 104, 106, 0, 108, 109, 110, 92,
|
19, 21, 23, 25, 27, 29, 31, 96, 98, 100, 102, 104, 106, 0, 108, 109, 110, 92,
|
||||||
34, 36, 38, 40, 42, 44, 46, 97, 99, 101, 103, 105, 0, 0, 107, 0, 0, 0,
|
34, 36, 38, 40, 42, 44, 46, 97, 99, 101, 103, 105, 0, 0, 107, 0, 0, 0,
|
||||||
35, 0, 37, 39, 41, 43, 45, 47, 112, 113, 114, 115, 0, 0, 119, 0, 111, 0,
|
35, 0, 37, 39, 41, 43, 45, 47, 112, 113, 114, 115, 0, 0, 119, 0, 111, 0,
|
||||||
49, 51, 53, 0, 0, 0, 0, 57, 0, 0, 0, 62, 116, 118, 121, 123, 125, 127};
|
49, 51, 53, 0, 0, 0, 55, 57, 0, 0, 0, 62, 116, 118, 121, 123, 125, 127};
|
||||||
|
|
||||||
|
void led_set_color_rgb(struct device *dev, uint8_t led,uint8_t qty, uint8_t *rgb, uint8_t type){
|
||||||
|
if (led_type_matrix[led] == RGB)
|
||||||
|
led_set_color(dev, led, qty, rgb);
|
||||||
|
else if (led_type_matrix[led] == GRB){
|
||||||
|
uint8_t color[3] = {rgb[1], rgb[0], rgb[2]};
|
||||||
|
led_set_color(dev, led, qty, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
void set_led_rgb(uint8_t led, uint8_t *rgb){
|
void set_led_rgb(uint8_t led, uint8_t *rgb){
|
||||||
struct device *dev = NULL;
|
struct device *dev = NULL;
|
||||||
if (led < 64){
|
if (led < 64){
|
||||||
|
@ -63,7 +81,7 @@ void set_led_rgb(uint8_t led, uint8_t *rgb){
|
||||||
LOG_ERR("Failed to get device binding\n");
|
LOG_ERR("Failed to get device binding\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
led_set_color(dev, led, 3, rgb);
|
led_set_color_rgb(dev, led, 3, rgb, 1);
|
||||||
}
|
}
|
||||||
void zmk_kscan_process_msgxq(struct k_work *item) {
|
void zmk_kscan_process_msgxq(struct k_work *item) {
|
||||||
struct zmk_kscan_event evx;
|
struct zmk_kscan_event evx;
|
||||||
|
@ -91,7 +109,7 @@ void set_all_on(const struct device *dev){
|
||||||
}
|
}
|
||||||
void set_all_rgb(const struct device *dev, uint8_t *rgb){
|
void set_all_rgb(const struct device *dev, uint8_t *rgb){
|
||||||
for (uint8_t led = 0; led < 64; led++) {
|
for (uint8_t led = 0; led < 64; led++) {
|
||||||
led_set_color(dev, led, 3, rgb);
|
led_set_color_rgb(dev, led, 3, rgb, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int led_perkey_init(char *name) {
|
int led_perkey_init(char *name) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue