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
|
||||
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "Test_Keyboard"
|
||||
default "Test_TKL_v2"
|
||||
|
||||
config I2C
|
||||
default y
|
||||
|
|
|
@ -11,10 +11,12 @@
|
|||
#include <drivers/led.h>
|
||||
#include <logging/log.h>
|
||||
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_RELEASED 1
|
||||
#define BASE_RED 255
|
||||
#define BASE_GREEN 0
|
||||
#define BASE_GREEN 255
|
||||
#define BASE_BLUE 255
|
||||
uint8_t led_base_color[3] = {BASE_RED, BASE_GREEN, BASE_BLUE};
|
||||
#define PRESSED_RED 250
|
||||
|
@ -26,6 +28,7 @@ struct zmk_kscan_event {
|
|||
uint32_t column;
|
||||
uint32_t state;
|
||||
};
|
||||
|
||||
K_MSGQ_DEFINE(zmk_kscan_msgxq, sizeof(struct zmk_kscan_event), CONFIG_ZMK_KSCAN_EVENT_QUEUE_SIZE, 4);
|
||||
struct zmk_kscan_msg_processor {
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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){
|
||||
struct device *dev = NULL;
|
||||
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");
|
||||
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) {
|
||||
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){
|
||||
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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue