This commit is contained in:
Retic1337 2021-10-07 22:35:35 -07:00
parent 9a74e03861
commit 28cce575fa
2 changed files with 23 additions and 5 deletions

View file

@ -3,7 +3,7 @@
if BOARD_RETIC1337_TKL
config ZMK_KEYBOARD_NAME
default "Test_Keyboard"
default "Test_TKL_v2"
config I2C
default y

View file

@ -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) {