Skip to content

Commit

Permalink
Merge pull request #2 from dexter93/sn32_rgb_v3
Browse files Browse the repository at this point in the history
Sn32 rgb v3
  • Loading branch information
fightforlife authored Jan 2, 2024
2 parents 834e234 + cf298f3 commit 8568ff4
Show file tree
Hide file tree
Showing 22 changed files with 387 additions and 192 deletions.
7 changes: 3 additions & 4 deletions builddefs/common_features.mk
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ endif

RGB_MATRIX_ENABLE ?= no

VALID_RGB_MATRIX_TYPES := aw20216s is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 ws2812 sn32f24xb sled1734x custom
VALID_RGB_MATRIX_TYPES := aw20216s is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 ws2812 sn32f2xx sled1734x custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
Expand Down Expand Up @@ -548,10 +548,9 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
APA102_DRIVER_REQUIRED := yes
endif

ifeq ($(strip $(RGB_MATRIX_DRIVER)), sn32f24xb)
OPT_DEFS += -DSHARED_MATRIX
ifeq ($(strip $(RGB_MATRIX_DRIVER)), sn32f2xx)
COMMON_VPATH += $(DRIVER_PATH)/led/sn32
SRC += rgb_matrix_sn32f24xb.c
SRC += rgb_matrix_sn32f2xx.c
endif

ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
Expand Down

Large diffs are not rendered by default.

13 changes: 0 additions & 13 deletions drivers/led/sn32/sn32f24xb.h

This file was deleted.

54 changes: 54 additions & 0 deletions drivers/led/sn32/sn32f2xx.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#pragma once

#include <stdint.h>
#include <stdbool.h>

#if defined(RGB_MATRIX_SN32F2XX)
# define SN32F2XX_LED_COUNT RGB_MATRIX_LED_COUNT
#endif

#if !defined(SN32_PWM_OUTPUT_ACTIVE_LEVEL)
# define SN32_PWM_OUTPUT_ACTIVE_LEVEL SN32_PWM_OUTPUT_ACTIVE_LOW
#endif

#if !defined(SN32_RGB_OUTPUT_ACTIVE_LEVEL)
# define SN32_RGB_OUTPUT_ACTIVE_LEVEL SN32_RGB_OUTPUT_ACTIVE_HIGH
#endif

#if !defined(SN32_PWM_CONTROL)
# define SN32_PWM_CONTROL HARDWARE_PWM
#endif

#if !defined(SN32_PWM_DIRECTION)
# define SN32_PWM_DIRECTION DIODE_DIRECTION
#endif

#if !defined(SN32_RGB_MATRIX_ROW_CHANNELS)
# define SN32_RGB_MATRIX_ROW_CHANNELS 3
#endif

#if !defined(SN32_RGB_MATRIX_ROWS)
# define SN32_RGB_MATRIX_ROWS MATRIX_ROWS
#endif

#if !defined(SN32_RGB_MATRIX_COLS)
# define SN32_RGB_MATRIX_COLS MATRIX_COLS
#endif

#if !defined(SN32_RGB_MATRIX_ROW_PINS)
# error Missing definition for SN32_RGB_MATRIX_ROW_PINS
#endif

#if !defined(SN32_RGB_MATRIX_COL_PINS)
# define SHARED_MATRIX
# define SN32_RGB_MATRIX_COL_PINS MATRIX_COL_PINS
#endif

#if !defined(SN32_RGB_MATRIX_ROWS_HW)
# define SN32_RGB_MATRIX_ROWS_HW (SN32_RGB_MATRIX_ROWS * SN32_RGB_MATRIX_ROW_CHANNELS)
#endif

void sn32f2xx_init(void);
void sn32f2xx_flush(void);
void sn32f2xx_set_color(int index, uint8_t r, uint8_t g, uint8_t b);
void sn32f2xx_set_color_all(uint8_t r, uint8_t g, uint8_t b);
2 changes: 1 addition & 1 deletion keyboards/czc/dwarf/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@
"splash" : true,
"typing_heatmap" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{"matrix": [0, 0],"flags": 1,"x":0, "y":0},
{"matrix": [0, 1],"flags": 1,"x":26, "y":0},
Expand Down
2 changes: 1 addition & 1 deletion keyboards/designedbygg/berserker/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@
"splash" : true,
"typing_heatmap" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{"matrix": [0, 0],"flags": 1,"x":0, "y":0},
{"matrix": [0, 2],"flags": 1,"x":26, "y":0},
Expand Down
2 changes: 1 addition & 1 deletion keyboards/designedbygg/ironclad/icl01/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
"splash" : true,
"typing_heatmap" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{"matrix": [0, 0],"flags": 1,"x":0, "y":0},
{"matrix": [0, 2],"flags": 1,"x":21, "y":0},
Expand Down
2 changes: 1 addition & 1 deletion keyboards/designedbygg/ironclad/icl03/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@
"splash" : true,
"typing_heatmap" : true
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{"matrix": [0, 0],"flags": 1,"x":0, "y":0},
{"matrix": [0, 2],"flags": 1,"x":21, "y":0},
Expand Down
2 changes: 0 additions & 2 deletions keyboards/flesports/fl980/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@

#define SN32_RGB_MATRIX_ROW_PINS { C0,C1,C3, C4,C5,C6, C7,C8,C9, C10,C11,C12, C13,C14,B13, C15,B15,B14 }

#define SN32_RGB_MATRIX_COL_PINS { B9, A8, A9, A10, A11, A12, A13, A14, A15, B0, B1, B2, B3, B4, B5, B6, B7, B8 }

#define RGB_MATRIX_LED_COUNT 98
#define MATRIX_UNSELECT_DRIVE_HIGH
#define SN32_PWM_OUTPUT_ACTIVE_LEVEL SN32_PWM_OUTPUT_ACTIVE_HIGH
Expand Down
198 changes: 99 additions & 99 deletions keyboards/flesports/fl980/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,111 +74,111 @@
"splash" : true,
"typing_heatmap" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{ "matrix":[0, 0], "flags":4, "x":0, "y":0 },
{ "matrix":[0, 1], "flags":4, "x":24, "y":0 },
{ "matrix":[0, 2], "flags":4, "x":36, "y":0 },
{ "matrix":[0, 3], "flags":4, "x":48, "y":0 },
{ "matrix":[0, 4], "flags":4, "x":61, "y":0 },
{ "matrix":[0, 5], "flags":4, "x":79, "y":0 },
{ "matrix":[0, 6], "flags":4, "x":91, "y":0 },
{ "matrix":[0, 7], "flags":4, "x":103, "y":0 },
{ "matrix":[0, 8], "flags":4, "x":115, "y":0 },
{ "matrix":[0, 9], "flags":4, "x":133, "y":0 },
{ "matrix":[0, 10], "flags":4, "x":145, "y":0 },
{ "matrix":[0, 11], "flags":4, "x":157, "y":0 },
{ "matrix":[0, 12], "flags":4, "x":170, "y":0 },
{ "matrix":[0, 14], "flags":4, "x":188, "y":0 },
{ "matrix":[0, 15], "flags":4, "x":200, "y":0 },
{ "matrix":[0, 16], "flags":4, "x":212, "y":0 },
{ "matrix":[0, 17], "flags":4, "x":224, "y":0 },
{ "matrix":[0, 17], "flags":4, "x":0, "y":0 },
{ "matrix":[0, 0], "flags":4, "x":24, "y":0 },
{ "matrix":[0, 1], "flags":4, "x":36, "y":0 },
{ "matrix":[0, 2], "flags":4, "x":48, "y":0 },
{ "matrix":[0, 3], "flags":4, "x":61, "y":0 },
{ "matrix":[0, 4], "flags":4, "x":79, "y":0 },
{ "matrix":[0, 5], "flags":4, "x":91, "y":0 },
{ "matrix":[0, 6], "flags":4, "x":103, "y":0 },
{ "matrix":[0, 7], "flags":4, "x":115, "y":0 },
{ "matrix":[0, 8], "flags":4, "x":133, "y":0 },
{ "matrix":[0, 9], "flags":4, "x":145, "y":0 },
{ "matrix":[0, 10], "flags":4, "x":157, "y":0 },
{ "matrix":[0, 11], "flags":4, "x":170, "y":0 },
{ "matrix":[0, 12], "flags":4, "x":188, "y":0 },
{ "matrix":[0, 14], "flags":4, "x":200, "y":0 },
{ "matrix":[0, 15], "flags":4, "x":212, "y":0 },
{ "matrix":[0, 16], "flags":4, "x":224, "y":0 },

{ "matrix":[1, 0], "flags":4, "x":0, "y":15 },
{ "matrix":[1, 1], "flags":4, "x":12, "y":15 },
{ "matrix":[1, 2], "flags":4, "x":24, "y":15 },
{ "matrix":[1, 3], "flags":4, "x":36, "y":15 },
{ "matrix":[1, 4], "flags":4, "x":48, "y":15 },
{ "matrix":[1, 5], "flags":4, "x":61, "y":15 },
{ "matrix":[1, 6], "flags":4, "x":73, "y":15 },
{ "matrix":[1, 7], "flags":4, "x":85, "y":15 },
{ "matrix":[1, 8], "flags":4, "x":97, "y":15 },
{ "matrix":[1, 9], "flags":4, "x":109, "y":15 },
{ "matrix":[1, 10], "flags":4, "x":121, "y":15 },
{ "matrix":[1, 11], "flags":4, "x":133, "y":15 },
{ "matrix":[1, 12], "flags":4, "x":145, "y":15 },
{ "matrix":[1, 13], "flags":4, "x":163, "y":15 },
{ "matrix":[1, 14], "flags":4, "x":188, "y":15 },
{ "matrix":[1, 15], "flags":4, "x":200, "y":15 },
{ "matrix":[1, 16], "flags":4, "x":212, "y":15 },
{ "matrix":[1, 17], "flags":4, "x":224, "y":15 },
{ "matrix":[1, 17], "flags":4, "x":0, "y":15 },
{ "matrix":[1, 0], "flags":4, "x":12, "y":15 },
{ "matrix":[1, 1], "flags":4, "x":24, "y":15 },
{ "matrix":[1, 2], "flags":4, "x":36, "y":15 },
{ "matrix":[1, 3], "flags":4, "x":48, "y":15 },
{ "matrix":[1, 4], "flags":4, "x":61, "y":15 },
{ "matrix":[1, 5], "flags":4, "x":73, "y":15 },
{ "matrix":[1, 6], "flags":4, "x":85, "y":15 },
{ "matrix":[1, 7], "flags":4, "x":97, "y":15 },
{ "matrix":[1, 8], "flags":4, "x":109, "y":15 },
{ "matrix":[1, 9], "flags":4, "x":121, "y":15 },
{ "matrix":[1, 10], "flags":4, "x":133, "y":15 },
{ "matrix":[1, 11], "flags":4, "x":145, "y":15 },
{ "matrix":[1, 12], "flags":4, "x":163, "y":15 },
{ "matrix":[1, 13], "flags":4, "x":188, "y":15 },
{ "matrix":[1, 14], "flags":4, "x":200, "y":15 },
{ "matrix":[1, 15], "flags":4, "x":212, "y":15 },
{ "matrix":[1, 16], "flags":4, "x":224, "y":15 },

{ "matrix":[2, 0], "flags":4, "x":3, "y":26 },
{ "matrix":[2, 1], "flags":4, "x":18, "y":26 },
{ "matrix":[2, 2], "flags":4, "x":30, "y":26 },
{ "matrix":[2, 3], "flags":4, "x":42, "y":26 },
{ "matrix":[2, 4], "flags":4, "x":54, "y":26 },
{ "matrix":[2, 5], "flags":4, "x":67, "y":26 },
{ "matrix":[2, 6], "flags":4, "x":79, "y":26 },
{ "matrix":[2, 7], "flags":4, "x":91, "y":26 },
{ "matrix":[2, 8], "flags":4, "x":103, "y":26 },
{ "matrix":[2, 9], "flags":4, "x":115, "y":26 },
{ "matrix":[2, 10], "flags":4, "x":127, "y":26 },
{ "matrix":[2, 11], "flags":4, "x":139, "y":26 },
{ "matrix":[2, 12], "flags":4, "x":151, "y":26 },
{ "matrix":[2, 13], "flags":4, "x":166, "y":26 },
{ "matrix":[2, 14], "flags":4, "x":188, "y":26 },
{ "matrix":[2, 15], "flags":4, "x":200, "y":26 },
{ "matrix":[2, 16], "flags":4, "x":212, "y":26 },
{ "matrix":[2, 17], "flags":4, "x":224, "y":32 },
{ "matrix":[2, 17], "flags":4, "x":3, "y":26 },
{ "matrix":[2, 0], "flags":4, "x":18, "y":26 },
{ "matrix":[2, 1], "flags":4, "x":30, "y":26 },
{ "matrix":[2, 2], "flags":4, "x":42, "y":26 },
{ "matrix":[2, 3], "flags":4, "x":54, "y":26 },
{ "matrix":[2, 4], "flags":4, "x":67, "y":26 },
{ "matrix":[2, 5], "flags":4, "x":79, "y":26 },
{ "matrix":[2, 6], "flags":4, "x":91, "y":26 },
{ "matrix":[2, 7], "flags":4, "x":103, "y":26 },
{ "matrix":[2, 8], "flags":4, "x":115, "y":26 },
{ "matrix":[2, 9], "flags":4, "x":127, "y":26 },
{ "matrix":[2, 10], "flags":4, "x":139, "y":26 },
{ "matrix":[2, 11], "flags":4, "x":151, "y":26 },
{ "matrix":[2, 12], "flags":4, "x":166, "y":26 },
{ "matrix":[2, 13], "flags":4, "x":188, "y":26 },
{ "matrix":[2, 14], "flags":4, "x":200, "y":26 },
{ "matrix":[2, 15], "flags":4, "x":212, "y":26 },
{ "matrix":[2, 16], "flags":4, "x":224, "y":32 },

{ "matrix":[3, 0], "flags":4, "x":5, "y":38 },
{ "matrix":[3, 1], "flags":4, "x":21, "y":38 },
{ "matrix":[3, 2], "flags":4, "x":33, "y":38 },
{ "matrix":[3, 3], "flags":4, "x":45, "y":38 },
{ "matrix":[3, 4], "flags":4, "x":58, "y":38 },
{ "matrix":[3, 5], "flags":4, "x":70, "y":38 },
{ "matrix":[3, 6], "flags":4, "x":82, "y":38 },
{ "matrix":[3, 7], "flags":4, "x":94, "y":38 },
{ "matrix":[3, 8], "flags":4, "x":106, "y":38 },
{ "matrix":[3, 9], "flags":4, "x":118, "y":38 },
{ "matrix":[3, 10], "flags":4, "x":130, "y":38 },
{ "matrix":[3, 11], "flags":4, "x":142, "y":38 },
{ "matrix":[3, 13], "flags":4, "x":162, "y":38 },
{ "matrix":[3, 14], "flags":4, "x":188, "y":38 },
{ "matrix":[3, 15], "flags":4, "x":200, "y":38 },
{ "matrix":[3, 16], "flags":4, "x":212, "y":38 },
{ "matrix":[3, 17], "flags":4, "x":224, "y":55 },
{ "matrix":[3, 17], "flags":4, "x":5, "y":38 },
{ "matrix":[3, 0], "flags":4, "x":21, "y":38 },
{ "matrix":[3, 1], "flags":4, "x":33, "y":38 },
{ "matrix":[3, 2], "flags":4, "x":45, "y":38 },
{ "matrix":[3, 3], "flags":4, "x":58, "y":38 },
{ "matrix":[3, 4], "flags":4, "x":70, "y":38 },
{ "matrix":[3, 5], "flags":4, "x":82, "y":38 },
{ "matrix":[3, 6], "flags":4, "x":94, "y":38 },
{ "matrix":[3, 7], "flags":4, "x":106, "y":38 },
{ "matrix":[3, 8], "flags":4, "x":118, "y":38 },
{ "matrix":[3, 9], "flags":4, "x":130, "y":38 },
{ "matrix":[3, 10], "flags":4, "x":142, "y":38 },
{ "matrix":[3, 11], "flags":4, "x":162, "y":38 },
{ "matrix":[3, 13], "flags":4, "x":188, "y":38 },
{ "matrix":[3, 14], "flags":4, "x":200, "y":38 },
{ "matrix":[3, 15], "flags":4, "x":212, "y":38 },
{ "matrix":[3, 16], "flags":4, "x":224, "y":55 },

{ "matrix":[4, 0], "flags":4, "x":8, "y":49 },
{ "matrix":[4, 2], "flags":4, "x":27, "y":49 },
{ "matrix":[4, 3], "flags":4, "x":39, "y":49 },
{ "matrix":[4, 4], "flags":4, "x":51, "y":49 },
{ "matrix":[4, 5], "flags":4, "x":64, "y":49 },
{ "matrix":[4, 6], "flags":4, "x":76, "y":49 },
{ "matrix":[4, 7], "flags":4, "x":88, "y":49 },
{ "matrix":[4, 8], "flags":4, "x":100, "y":49 },
{ "matrix":[4, 9], "flags":4, "x":112, "y":49 },
{ "matrix":[4, 10], "flags":4, "x":124, "y":49 },
{ "matrix":[4, 11], "flags":4, "x":136, "y":49 },
{ "matrix":[4, 13], "flags":4, "x":153, "y":49 },
{ "matrix":[4, 14], "flags":4, "x":188, "y":49 },
{ "matrix":[4, 15], "flags":4, "x":200, "y":49 },
{ "matrix":[4, 16], "flags":4, "x":212, "y":49 },
{ "matrix":[4, 17], "flags":4, "x":212, "y":61 },
{ "matrix":[4, 17], "flags":4, "x":8, "y":49 },
{ "matrix":[4, 0], "flags":4, "x":27, "y":49 },
{ "matrix":[4, 2], "flags":4, "x":39, "y":49 },
{ "matrix":[4, 3], "flags":4, "x":51, "y":49 },
{ "matrix":[4, 4], "flags":4, "x":64, "y":49 },
{ "matrix":[4, 5], "flags":4, "x":76, "y":49 },
{ "matrix":[4, 6], "flags":4, "x":88, "y":49 },
{ "matrix":[4, 7], "flags":4, "x":100, "y":49 },
{ "matrix":[4, 8], "flags":4, "x":112, "y":49 },
{ "matrix":[4, 9], "flags":4, "x":124, "y":49 },
{ "matrix":[4, 10], "flags":4, "x":136, "y":49 },
{ "matrix":[4, 11], "flags":4, "x":153, "y":49 },
{ "matrix":[4, 13], "flags":4, "x":188, "y":49 },
{ "matrix":[4, 14], "flags":4, "x":200, "y":49 },
{ "matrix":[4, 15], "flags":4, "x":212, "y":49 },
{ "matrix":[4, 16], "flags":4, "x":212, "y":61 },

{ "matrix":[5, 0], "flags":4, "x":2, "y":61 },
{ "matrix":[5, 1], "flags":4, "x":17, "y":61 },
{ "matrix":[5, 2], "flags":4, "x":32, "y":61 },
{ "matrix":[5, 6], "flags":4, "x":77, "y":61 },
{ "matrix":[5, 10], "flags":4, "x":121, "y":61 },
{ "matrix":[5, 11], "flags":4, "x":133, "y":61 },
{ "matrix":[5, 12], "flags":4, "x":145, "y":61 },
{ "matrix":[5, 13], "flags":4, "x":173, "y":52 },
{ "matrix":[5, 14], "flags":4, "x":160, "y":64 },
{ "matrix":[5, 15], "flags":4, "x":173, "y":64 },
{ "matrix":[5, 16], "flags":4, "x":185, "y":64 },
{ "matrix":[5, 17], "flags":4, "x":200, "y":61 }
{ "matrix":[5, 17], "flags":4, "x":2, "y":61 },
{ "matrix":[5, 0], "flags":4, "x":17, "y":61 },
{ "matrix":[5, 1], "flags":4, "x":32, "y":61 },
{ "matrix":[5, 2], "flags":4, "x":77, "y":61 },
{ "matrix":[5, 6], "flags":4, "x":121, "y":61 },
{ "matrix":[5, 10], "flags":4, "x":133, "y":61 },
{ "matrix":[5, 11], "flags":4, "x":145, "y":61 },
{ "matrix":[5, 12], "flags":4, "x":173, "y":52 },
{ "matrix":[5, 13], "flags":4, "x":160, "y":64 },
{ "matrix":[5, 14], "flags":4, "x":173, "y":64 },
{ "matrix":[5, 15], "flags":4, "x":185, "y":64 },
{ "matrix":[5, 16], "flags":4, "x":200, "y":61 }
],
"react_on_keyup": true,
"sleep": true
Expand Down
2 changes: 1 addition & 1 deletion keyboards/keychron/k2/rgb/v2/ansi/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
}
},
"rgb_matrix": {
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{ "matrix": [ 0, 0 ], "flags": 4, "x": 0, "y": 0 },
{ "matrix": [ 0, 1 ], "flags": 4, "x": 12, "y": 0 },
Expand Down
2 changes: 1 addition & 1 deletion keyboards/keychron/k2/rgb/v2/iso/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
}
},
"rgb_matrix": {
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{ "matrix": [ 0, 0 ], "flags": 4, "x": 7, "y": 0 },
{ "matrix": [ 0, 1 ], "flags": 4, "x": 21, "y": 0 },
Expand Down
2 changes: 1 addition & 1 deletion keyboards/keychron/k4/rgb/v2/ansi/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@
},

"rgb_matrix": {
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{ "matrix": [ 0, 0 ], "flags": 4, "x": 0, "y": 0 },
{ "matrix": [ 0, 1 ], "flags": 4, "x": 12, "y": 0 },
Expand Down
2 changes: 1 addition & 1 deletion keyboards/keychron/k8/rgb/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
"splash" : true,
"typing_heatmap" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"react_on_keyup": true,
"sleep": true
},
Expand Down
2 changes: 1 addition & 1 deletion keyboards/ozone/tactical/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
"animations": {
"cycle_left_right" : true,
},
"driver": "sn32f24xb",
"driver": "sn32f2xx",
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{ "matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
Expand Down
Loading

0 comments on commit 8568ff4

Please sign in to comment.