18cca2062e889a23933043ec5bdaf3c18cb060e1
- Author
- Bertrand Le Roy <beleroy@microsoft.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/keyboards/decent/tkl/atari-font.c b/keyboards/decent/tkl/atari-font.c
2new file mode 100644
3index 0000000000000000000000000000000000000000..635e711f525450b21443ea3ddb766b255fbe11d2
4--- /dev/null
5+++ b/keyboards/decent/tkl/atari-font.c
6@@ -0,0 +1,231 @@
7+// Copyright 2023 QMK
8+// SPDX-License-Identifier: GPL-2.0-or-later
9+
10+#include "progmem.h"
11+
12+static const unsigned char PROGMEM font[] = {
13+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
14+ 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18,
15+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
16+ 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00,
17+ 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00,
18+ 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00,
19+ 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07,
20+ 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0,
21+ 0x80, 0xC0, 0xF0, 0xF8, 0xFE, 0xFF,
22+ 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0,
23+ 0xFF, 0xFE, 0xF8, 0xF0, 0xC0, 0x80,
24+ 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F,
25+ 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00,
26+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
27+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
28+ 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00,
29+ 0x18, 0x58, 0x66, 0x66, 0x58, 0x18,
30+ 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18,
31+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
32+ 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18,
33+ 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00,
34+ 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
35+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
36+ 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18,
37+ 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18,
38+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
39+ 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18,
40+ 0x1F, 0x15, 0x75, 0x50, 0x50, 0x00,
41+ 0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00,
42+ 0x10, 0x30, 0x7E, 0x30, 0x10, 0x00,
43+ 0x10, 0x38, 0x54, 0x10, 0x10, 0x00,
44+ 0x10, 0x10, 0x54, 0x38, 0x10, 0x00,
45+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46+ 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
47+ 0x00, 0x06, 0x00, 0x06, 0x00, 0x00,
48+ 0x24, 0x7E, 0x24, 0x7E, 0x24, 0x00,
49+ 0x24, 0x2A, 0x6B, 0x2A, 0x12, 0x00,
50+ 0x4C, 0x2C, 0x10, 0x68, 0x64, 0x00,
51+ 0x30, 0x4A, 0x55, 0x32, 0x50, 0x00,
52+ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
53+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
54+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
55+ 0x10, 0x54, 0x38, 0x54, 0x10, 0x00,
56+ 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00,
57+ 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00,
58+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
59+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
60+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
61+ 0x3C, 0x52, 0x4A, 0x46, 0x3C, 0x00,
62+ 0x00, 0x44, 0x7E, 0x40, 0x00, 0x00,
63+ 0x44, 0x62, 0x52, 0x4A, 0x44, 0x00,
64+ 0x22, 0x42, 0x4A, 0x56, 0x22, 0x00,
65+ 0x30, 0x28, 0x24, 0x7E, 0x20, 0x00,
66+ 0x2E, 0x4A, 0x4A, 0x4A, 0x32, 0x00,
67+ 0x3C, 0x4A, 0x4A, 0x4A, 0x30, 0x00,
68+ 0x62, 0x12, 0x0A, 0x06, 0x02, 0x00,
69+ 0x34, 0x4A, 0x4A, 0x4A, 0x34, 0x00,
70+ 0x04, 0x4A, 0x4A, 0x2A, 0x1C, 0x00,
71+ 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
72+ 0x00, 0x80, 0x48, 0x00, 0x00, 0x00,
73+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
74+ 0x48, 0x48, 0x48, 0x48, 0x48, 0x00,
75+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
76+ 0x04, 0x02, 0x52, 0x0A, 0x04, 0x00,
77+ 0x3C, 0x42, 0x5A, 0x5A, 0x5C, 0x00,
78+ 0x78, 0x24, 0x22, 0x24, 0x78, 0x00,
79+ 0x7E, 0x4A, 0x4A, 0x4A, 0x34, 0x00,
80+ 0x3C, 0x42, 0x42, 0x42, 0x24, 0x00,
81+ 0x7E, 0x42, 0x42, 0x24, 0x18, 0x00,
82+ 0x7E, 0x4A, 0x4A, 0x4A, 0x42, 0x00,
83+ 0x7E, 0x0A, 0x0A, 0x0A, 0x02, 0x00,
84+ 0x3C, 0x42, 0x42, 0x52, 0x72, 0x00,
85+ 0x7E, 0x08, 0x08, 0x08, 0x7E, 0x00,
86+ 0x00, 0x42, 0x7E, 0x42, 0x00, 0x00,
87+ 0x20, 0x40, 0x40, 0x3E, 0x00, 0x00,
88+ 0x7E, 0x18, 0x24, 0x42, 0x00, 0x00,
89+ 0x7E, 0x40, 0x40, 0x40, 0x40, 0x00,
90+ 0x7E, 0x04, 0x08, 0x04, 0x7E, 0x00,
91+ 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00,
92+ 0x3C, 0x42, 0x42, 0x42, 0x3C, 0x00,
93+ 0x7E, 0x12, 0x12, 0x12, 0x0C, 0x00,
94+ 0x3C, 0x42, 0x52, 0x22, 0x5C, 0x00,
95+ 0x7E, 0x12, 0x12, 0x32, 0x4C, 0x00,
96+ 0x04, 0x4A, 0x4A, 0x4A, 0x30, 0x00,
97+ 0x02, 0x02, 0x7E, 0x02, 0x02, 0x00,
98+ 0x7E, 0x40, 0x40, 0x40, 0x7E, 0x00,
99+ 0x1E, 0x20, 0x40, 0x20, 0x1E, 0x00,
100+ 0x7E, 0x20, 0x10, 0x20, 0x7E, 0x00,
101+ 0x42, 0x24, 0x18, 0x24, 0x42, 0x00,
102+ 0x06, 0x08, 0x70, 0x08, 0x06, 0x00,
103+ 0x62, 0x52, 0x4A, 0x46, 0x42, 0x00,
104+ 0x00, 0x7E, 0x42, 0x42, 0x00, 0x00,
105+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
106diff --git a/keyboards/decent/tkl/config.h b/keyboards/decent/tkl/config.h
107new file mode 100644
108index 0000000000000000000000000000000000000000..772d6f4a27bb7c8f0d4fd4e8f254660687cd3a5d
109--- /dev/null
110+++ b/keyboards/decent/tkl/config.h
111@@ -0,0 +1,9 @@
112+// Copyright 2023 QMK
113+// SPDX-License-Identifier: GPL-2.0-or-later
114+
115+#pragma once
116+
117+#define I2C1_SDA_PIN GP26
118+#define I2C1_SCL_PIN GP27
119+
120+#define OLED_FONT_H "atari-font.c"
121diff --git a/keyboards/decent/tkl/keyboard.json b/keyboards/decent/tkl/keyboard.json
122new file mode 100644
123index 0000000000000000000000000000000000000000..96b472c6fc06588e03cb02de7461ff7424e72350
124--- /dev/null
125+++ b/keyboards/decent/tkl/keyboard.json
126@@ -0,0 +1,298 @@
127+{
128+ "manufacturer": "Bertrand Le roy",
129+ "keyboard_name": "DecenTKL",
130+ "maintainer": "bleroy",
131+ "url": "https://github.com/bleroy/3d-junkyard/blob/main/DecenTKL/",
132+ "tags": ["ansi", "tkl", "rgb", "oled", "encoder", "atari"],
133+ "bootloader": "rp2040",
134+ "processor": "RP2040",
135+ "features": {
136+ "encoder": true,
137+ "bootmagic": true,
138+ "rgb_matrix": true,
139+ "oled": true,
140+ "command": false,
141+ "console": false,
142+ "extrakey": true,
143+ "mousekey": false,
144+ "nkro": true
145+ },
146+ "diode_direction": "COL2ROW",
147+ "matrix_pins": {
148+ "cols": ["GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"],
149+ "rows": ["GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20"]
150+ },
151+ "bootmagic": {
152+ "matrix": [0, 6]
153+ },
154+ "usb": {
155+ "device_version": "1.0.0",
156+ "pid": "0x0000",
157+ "vid": "0xFEED"
158+ },
159+ "encoder": {
160+ "rotary": [
161+ {
162+ "pin_a": "GP21",
163+ "pin_b": "GP22",
164+ "resolution": 1
165+ }
166+ ]
167+ },
168+ "ws2812": {
169+ "pin": "GP0",
170+ "driver": "vendor"
171+ },
172+ "layouts": {
173+ "LAYOUT": {
174+ "layout": [
175+ {"matrix": [0, 6], "x": 0.5, "y": 0, "label": "Esc"},
176+ {"matrix": [0, 5], "x": 3.5, "y": 0, "label": "F1"},
177+ {"matrix": [0, 4], "x": 5, "y": 0, "label": "F2"},
178+ {"matrix": [0, 3], "x": 6.5, "y": 0, "label": "F3"},
179+ {"matrix": [0, 2], "x": 8, "y": 0, "label": "F4"},
180+ {"matrix": [0, 1], "x": 9.5, "y": 0, "label": "F5"},
181+ {"matrix": [0, 0], "x": 11, "y": 0, "label": "F6"},
182+ {"matrix": [1, 0], "x": 12.5, "y": 0, "label": "F7"},
183+ {"matrix": [1, 1], "x": 14, "y": 0, "label": "F8"},
184+ {"matrix": [1, 2], "x": 15.5, "y": 0, "label": "F9"},
185+ {"matrix": [1, 3], "x": 17, "y": 0, "label": "F10"},
186+
187+ {"matrix": [2, 6], "x": 0, "y": 1.5, "label": "`"},
188+ {"matrix": [2, 5], "x": 1, "y": 1.5, "label": "1"},
189+ {"matrix": [2, 4], "x": 2, "y": 1.5, "label": "2"},
190+ {"matrix": [2, 3], "x": 3, "y": 1.5, "label": "3"},
191+ {"matrix": [2, 2], "x": 4, "y": 1.5, "label": "4"},
192+ {"matrix": [2, 1], "x": 5, "y": 1.5, "label": "5"},
193+ {"matrix": [2, 0], "x": 6, "y": 1.5, "label": "6"},
194+ {"matrix": [3, 0], "x": 7, "y": 1.5, "label": "7"},
195+ {"matrix": [3, 1], "x": 8, "y": 1.5, "label": "8"},
196+ {"matrix": [3, 2], "x": 9, "y": 1.5, "label": "9"},
197+ {"matrix": [3, 3], "x": 10, "y": 1.5, "label": "0"},
198+ {"matrix": [3, 4], "x": 11, "y": 1.5, "label": "-"},
199+ {"matrix": [3, 5], "x": 12, "y": 1.5, "label": "="},
200+ {"matrix": [3, 6], "x": 13, "y": 1.5, "w": 2, "label": "Backspace"},
201+ {"matrix": [1, 4], "x": 15.5, "y": 1.5, "label": "Insert"},
202+ {"matrix": [1, 5], "x": 16.5, "y": 1.5, "label": "Home"},
203+ {"matrix": [1, 6], "x": 17.5, "y": 1.5, "label": "PgUp"},
204+
205+ {"matrix": [4, 6], "x": 0, "y": 2.5, "w": 1.5, "label": "Tab"},
206+ {"matrix": [4, 5], "x": 1.5, "y": 2.5, "label": "Q"},
207+ {"matrix": [4, 4], "x": 2.5, "y": 2.5, "label": "W"},
208+ {"matrix": [4, 3], "x": 3.5, "y": 2.5, "label": "E"},
209+ {"matrix": [4, 2], "x": 4.5, "y": 2.5, "label": "R"},
210+ {"matrix": [4, 1], "x": 5.5, "y": 2.5, "label": "T"},
211+ {"matrix": [4, 0], "x": 6.5, "y": 2.5, "label": "Y"},
212+ {"matrix": [5, 0], "x": 7.5, "y": 2.5, "label": "U"},
213+ {"matrix": [5, 1], "x": 8.5, "y": 2.5, "label": "I"},
214+ {"matrix": [5, 2], "x": 9.5, "y": 2.5, "label": "O"},
215+ {"matrix": [5, 3], "x": 10.5, "y": 2.5, "label": "P"},
216+ {"matrix": [5, 4], "x": 11.5, "y": 2.5, "label": "["},
217+ {"matrix": [5, 5], "x": 12.5, "y": 2.5, "label": "]"},
218+ {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5, "label": "\\"},
219+ {"matrix": [9, 5], "x": 15.5, "y": 2.5, "label": "Del"},
220+ {"matrix": [9, 6], "x": 16.5, "y": 2.5, "label": "End"},
221+ {"matrix": [7, 6], "x": 17.5, "y": 2.5, "label": "PgDn"},
222+
223+ {"matrix": [6, 6], "x": 0, "y": 3.5, "w": 1.75, "label": "Caps"},
224+ {"matrix": [6, 5], "x": 1.75, "y": 3.5, "label": "A"},
225+ {"matrix": [6, 4], "x": 2.75, "y": 3.5, "label": "S"},
226diff --git a/keyboards/decent/tkl/keymaps/default/keymap.c b/keyboards/decent/tkl/keymaps/default/keymap.c
227new file mode 100644
228index 0000000000000000000000000000000000000000..cd842cdec37e9658a6c8895a5d59c52d990b48dc
229--- /dev/null
230+++ b/keyboards/decent/tkl/keymaps/default/keymap.c
231@@ -0,0 +1,57 @@
232+// Copyright 2023 QMK
233+// SPDX-License-Identifier: GPL-2.0-or-later
234+
235+#include QMK_KEYBOARD_H
236+
237+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
238+ /*
239+ * /─────/ /─────/─────/─────/─────/─────/─────/─────/─────/─────/─────/
240+ * /Esc / /F1 /F2 /F3 /F4 /F5 /F6 /F7 /F8 /F9 /F10 /
241+ * /─────/ /─────/─────/─────/─────/─────/─────/─────/─────/─────/─────/
242+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
243+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│
244+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
245+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│
246+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
247+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
248+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
249+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
250+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
251+ * │Ctrl│GUI │Alt │ │ Alt│ Fn │Menu│Ctrl│ │ ← │ ↓ │ → │
252+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
253+ */
254+ [0] = LAYOUT(
255+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
256+
257+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
258+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
259+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
260+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
261+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
262+ ),
263+ /*
264+ * / / /MyCmp/HomeP/Calc /Media/ ⏮ / ⏭ / ⏯ / ⏹ /Mute / /
265+ *
266+ * │ │💡│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │V+ │
267+ * │ │ │🔆│ │ │ │ │ │ │ │ │ │ │BootL│ │ │ │V- │
268+ * │ │ │🔅│ │ │ │ │ │ │ │ │ │ │
269+ * │ │ │🎨│ │ │ │ │ │ │ │ │ │ │🗘 │
270+ * │ │ │ │ │ │ │ │ │ │㉈ │🗘 │㉏ │
271+ */
272+ [1] = LAYOUT(
273+ _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, _______,
274+
275+ _______, RM_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
276+ _______, _______, RM_VALU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, KC_VOLD,
277+ _______, _______, RM_VALD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
278+ _______, _______, RM_HUEU, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_NEXT,
279+ _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_PREV, RM_SPDU
280+ ),
281+};
282+
283+#if defined(ENCODER_MAP_ENABLE)
284+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
285+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
286+ [1] = { ENCODER_CCW_CW(RM_VALD, RM_VALU) }
287+};
288+#endif
289diff --git a/keyboards/decent/tkl/readme.md b/keyboards/decent/tkl/readme.md
290new file mode 100644
291index 0000000000000000000000000000000000000000..2069268bfcbe82b0e55793c1934da1210943b1bf
292--- /dev/null
293+++ b/keyboards/decent/tkl/readme.md
294@@ -0,0 +1,79 @@
295+# DecenTKL
296+
297+*A TKL keyboard inspired by the language design of Atari XE and ST computers*
298+
299+* Keyboard Maintainer: [Bertrand Le roy](https://github.com/bleroy/3d-junkyard/blob/main/DecenTKL/)
300+* Hardware Supported: DecenTKL (Pi Pico based)
301+* Hardware Availability: Custom built but open-source
302+
303+Make example for this keyboard (after setting up your build environment):
304+
305+ make decent/tkl:default
306+
307+Flashing example for this keyboard:
308+
309+ make decent/tkl:default:flash
310+
311diff --git a/keyboards/decent/tkl/tkl.c b/keyboards/decent/tkl/tkl.c
312new file mode 100644
313index 0000000000000000000000000000000000000000..96f8a9dd5afa1315939648b0bb8d28d444a6626e
314--- /dev/null
315+++ b/keyboards/decent/tkl/tkl.c
316@@ -0,0 +1,72 @@
317+// Copyright 2024 B. Le Roy
318+// SPDX-License-Identifier: GPL-2.0-or-later
319+
320+#include "quantum.h"
321+
322+static void render_logo(void) {
323+ static const char PROGMEM qmk_logo[] = {
324+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
325+ 0x20, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
326+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0x20,
327+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0x20, 0x20,
328+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xBC, 0xBD, 0xBE, 0xBF,
329+ 0x00
330+ };
331+
332+ oled_write_P(qmk_logo, false);
333+ oled_write_pixel(126, 0, 1);
334+ oled_write_pixel(127, 0, 1);
335+ oled_write_pixel(126, 1, 1);
336+}
337+
338+static const char PROGMEM caps_on[] = { 0x9C, 0x9D, 0x9E, 0x9F };
339+static const char PROGMEM caps_off[] = { 0xBC, 0xBD, 0xBE, 0xBF };
340+
341+bool oled_task_kb(void) {
342+ if (!oled_task_user()) {
343+ return false;
344+ }
345+
346+ render_logo();
347+
348+ bool caps = host_keyboard_led_state().caps_lock;
349+
350+ if (caps) {
351+ oled_set_cursor(17, 3);
352+ oled_write_P(caps ? caps_on : caps_off, false);
353+ }
354+ return false;
355+}
356+
357+bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
358+ if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) {
359+ return false;
360+ }
361+
362+ bool caps = host_keyboard_led_state().caps_lock;
363+
364+ if (caps) {
365+ for (uint8_t i = led_min; i < led_max; i++) {
366+ if (g_led_config.flags[i] & LED_FLAG_KEYLIGHT) {
367+ rgb_matrix_set_color(i, RGB_RED);
368+ }
369+ }
370+ }
371+
372+ if (get_highest_layer(layer_state) > 0) {
373+ uint8_t layer = get_highest_layer(layer_state);
374+
375+ for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
376+ for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
377+ uint8_t index = g_led_config.matrix_co[row][col];
378+
379+ if (index >= led_min && index < led_max && index != NO_LED &&
380+ keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
381+ rgb_matrix_set_color(index, RGB_GREEN);
382+ }
383+ }
384+ }
385+ }
386+
387+ return false;
388+}