summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanh Son Tran <62438883+trnthsn@users.noreply.github.com>2025-10-08 10:41:48 +0700
committerGitHub <noreply@github.com>2025-10-07 20:41:48 -0700
commita8711b2b0a59cd052419b2ae9a13355d012e12ac (patch)
treed1bb21abe38fbe83f93a40498c62ee1ddd19b444
parent338a7ed6d50465daf93f613da7e783ac00163096 (diff)
[Keyboard] Add support Tyson65 (#25697)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com> Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Trần Thanh Sơn <son.tt1@teko.vn>
-rw-r--r--keyboards/trnthsn/tyson65/config.h9
-rw-r--r--keyboards/trnthsn/tyson65/halconf.h7
-rw-r--r--keyboards/trnthsn/tyson65/info.json353
-rw-r--r--keyboards/trnthsn/tyson65/keymaps/default/keymap.c41
-rw-r--r--keyboards/trnthsn/tyson65/mcuconf.h9
-rw-r--r--keyboards/trnthsn/tyson65/readme.md28
-rw-r--r--keyboards/trnthsn/tyson65/stm32f072/keyboard.json4
-rw-r--r--keyboards/trnthsn/tyson65/stm32f103/keyboard.json4
8 files changed, 455 insertions, 0 deletions
diff --git a/keyboards/trnthsn/tyson65/config.h b/keyboards/trnthsn/tyson65/config.h
new file mode 100644
index 0000000000..8ab8c1a85f
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/config.h
@@ -0,0 +1,9 @@
1// Copyright 2025 Tyson.Keebs
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#define WS2812_SPI_DRIVER SPID2
7#define WS2812_SPI_MOSI_PAL_MODE 0
8#define WS2812_SPI_SCK_PAL_MODE 0
9#define WS2812_SPI_SCK_PIN B13
diff --git a/keyboards/trnthsn/tyson65/halconf.h b/keyboards/trnthsn/tyson65/halconf.h
new file mode 100644
index 0000000000..7056539285
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/halconf.h
@@ -0,0 +1,7 @@
1// Copyright 2025 Tyson.Keebs
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#define HAL_USE_SPI TRUE
7#include_next <halconf.h>
diff --git a/keyboards/trnthsn/tyson65/info.json b/keyboards/trnthsn/tyson65/info.json
new file mode 100644
index 0000000000..1828c6f832
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/info.json
@@ -0,0 +1,353 @@
1{
2 "manufacturer": "Tyson.Keebs",
3 "keyboard_name": "Tyson65",
4 "maintainer": "trnthsn",
5 "diode_direction": "COL2ROW",
6 "features": {
7 "bootmagic": true,
8 "extrakey": true,
9 "mousekey": true,
10 "nkro": true,
11 "rgblight": true
12 },
13 "matrix_pins": {
14 "cols": ["A10", "A9", "A8", "B14", "B12", "B11", "B10", "B1", "A15", "B8", "B7", "B6", "B5", "B4", "B3"],
15 "rows": ["B0", "A7", "A6", "B9", "A4"]
16 },
17 "rgblight": {
18 "animations": {
19 "alternating": true,
20 "breathing": true,
21 "christmas": true,
22 "knight": true,
23 "rainbow_mood": true,
24 "rainbow_swirl": true,
25 "snake": true,
26 "static_gradient": true,
27 "twinkle": true
28 },
29 "default": {
30 "animation": "rainbow_swirl"
31 },
32 "led_count": 30,
33 "sleep": true
34 },
35 "ws2812": {
36 "pin": "B15",
37 "driver": "spi"
38 },
39 "indicators": {
40 "caps_lock": "A5"
41 },
42 "usb": {
43 "vid": "0x5453",
44 "pid": "0x6533",
45 "device_version": "0.0.1"
46 },
47 "layout_aliases": {
48 "LAYOUT_all": "LAYOUT_65_ansi_blocker_tsangan_split_bs"
49 },
50 "community_layouts": ["65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs", "65_iso_blocker_tsangan", "65_iso_blocker_tsangan_split_bs"],
51 "layouts": {
52 "LAYOUT_65_ansi_blocker_tsangan": {
53 "layout": [
54 {"matrix": [0, 0], "x": 0, "y": 0},
55 {"matrix": [0, 1], "x": 1, "y": 0},
56 {"matrix": [0, 2], "x": 2, "y": 0},
57 {"matrix": [0, 3], "x": 3, "y": 0},
58 {"matrix": [0, 4], "x": 4, "y": 0},
59 {"matrix": [0, 5], "x": 5, "y": 0},
60 {"matrix": [0, 6], "x": 6, "y": 0},
61 {"matrix": [0, 7], "x": 7, "y": 0},
62 {"matrix": [0, 8], "x": 8, "y": 0},
63 {"matrix": [0, 9], "x": 9, "y": 0},
64 {"matrix": [0, 10], "x": 10, "y": 0},
65 {"matrix": [0, 11], "x": 11, "y": 0},
66 {"matrix": [0, 12], "x": 12, "y": 0},
67 {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
68 {"matrix": [0, 14], "x": 15, "y": 0},
69
70 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
71 {"matrix": [1, 1], "x": 1.5, "y": 1},
72 {"matrix": [1, 2], "x": 2.5, "y": 1},
73 {"matrix": [1, 3], "x": 3.5, "y": 1},
74 {"matrix": [1, 4], "x": 4.5, "y": 1},
75 {"matrix": [1, 5], "x": 5.5, "y": 1},
76 {"matrix": [1, 6], "x": 6.5, "y": 1},
77 {"matrix": [1, 7], "x": 7.5, "y": 1},
78 {"matrix": [1, 8], "x": 8.5, "y": 1},
79 {"matrix": [1, 9], "x": 9.5, "y": 1},
80 {"matrix": [1, 10], "x": 10.5, "y": 1},
81 {"matrix": [1, 11], "x": 11.5, "y": 1},
82 {"matrix": [1, 12], "x": 12.5, "y": 1},
83 {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
84 {"matrix": [1, 14], "x": 15, "y": 1},
85
86 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
87 {"matrix": [2, 1], "x": 1.75, "y": 2},
88 {"matrix": [2, 2], "x": 2.75, "y": 2},
89 {"matrix": [2, 3], "x": 3.75, "y": 2},
90 {"matrix": [2, 4], "x": 4.75, "y": 2},
91 {"matrix": [2, 5], "x": 5.75, "y": 2},
92 {"matrix": [2, 6], "x": 6.75, "y": 2},
93 {"matrix": [2, 7], "x": 7.75, "y": 2},
94 {"matrix": [2, 8], "x": 8.75, "y": 2},
95 {"matrix": [2, 9], "x": 9.75, "y": 2},
96 {"matrix": [2, 10], "x": 10.75, "y": 2},
97 {"matrix": [2, 11], "x": 11.75, "y": 2},
98 {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
99 {"matrix": [2, 14], "x": 15, "y": 2},
100
101 {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
102 {"matrix": [3, 2], "x": 2.25, "y": 3},
103 {"matrix": [3, 3], "x": 3.25, "y": 3},
104 {"matrix": [3, 4], "x": 4.25, "y": 3},
105 {"matrix": [3, 5], "x": 5.25, "y": 3},
106 {"matrix": [3, 6], "x": 6.25, "y": 3},
107 {"matrix": [3, 7], "x": 7.25, "y": 3},
108 {"matrix": [3, 8], "x": 8.25, "y": 3},
109 {"matrix": [3, 9], "x": 9.25, "y": 3},
110 {"matrix": [3, 10], "x": 10.25, "y": 3},
111 {"matrix": [3, 11], "x": 11.25, "y": 3},
112 {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
113 {"matrix": [3, 13], "x": 14, "y": 3},
114 {"matrix": [3, 14], "x": 15, "y": 3},
115
116 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
117 {"matrix": [4, 1], "x": 1.5, "y": 4},
118 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
119 {"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
120 {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
121 {"matrix": [4, 12], "x": 13, "y": 4},
122 {"matrix": [4, 13], "x": 14, "y": 4},
123 {"matrix": [4, 14], "x": 15, "y": 4}
124 ]
125 },
126 "LAYOUT_65_ansi_blocker_tsangan_split_bs": {
127 "layout": [
128 {"matrix": [0, 0], "x": 0, "y": 0},
129 {"matrix": [0, 1], "x": 1, "y": 0},
130 {"matrix": [0, 2], "x": 2, "y": 0},
131 {"matrix": [0, 3], "x": 3, "y": 0},
132 {"matrix": [0, 4], "x": 4, "y": 0},
133 {"matrix": [0, 5], "x": 5, "y": 0},
134 {"matrix": [0, 6], "x": 6, "y": 0},
135 {"matrix": [0, 7], "x": 7, "y": 0},
136 {"matrix": [0, 8], "x": 8, "y": 0},
137 {"matrix": [0, 9], "x": 9, "y": 0},
138 {"matrix": [0, 10], "x": 10, "y": 0},
139 {"matrix": [0, 11], "x": 11, "y": 0},
140 {"matrix": [0, 12], "x": 12, "y": 0},
141 {"matrix": [2, 12], "x": 13, "y": 0},
142 {"matrix": [0, 13], "x": 14, "y": 0},
143 {"matrix": [0, 14], "x": 15, "y": 0},
144
145 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
146 {"matrix": [1, 1], "x": 1.5, "y": 1},
147 {"matrix": [1, 2], "x": 2.5, "y": 1},
148 {"matrix": [1, 3], "x": 3.5, "y": 1},
149 {"matrix": [1, 4], "x": 4.5, "y": 1},
150 {"matrix": [1, 5], "x": 5.5, "y": 1},
151 {"matrix": [1, 6], "x": 6.5, "y": 1},
152 {"matrix": [1, 7], "x": 7.5, "y": 1},
153 {"matrix": [1, 8], "x": 8.5, "y": 1},
154 {"matrix": [1, 9], "x": 9.5, "y": 1},
155 {"matrix": [1, 10], "x": 10.5, "y": 1},
156 {"matrix": [1, 11], "x": 11.5, "y": 1},
157 {"matrix": [1, 12], "x": 12.5, "y": 1},
158 {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
159 {"matrix": [1, 14], "x": 15, "y": 1},
160
161 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
162 {"matrix": [2, 1], "x": 1.75, "y": 2},
163 {"matrix": [2, 2], "x": 2.75, "y": 2},
164 {"matrix": [2, 3], "x": 3.75, "y": 2},
165 {"matrix": [2, 4], "x": 4.75, "y": 2},
166 {"matrix": [2, 5], "x": 5.75, "y": 2},
167 {"matrix": [2, 6], "x": 6.75, "y": 2},
168 {"matrix": [2, 7], "x": 7.75, "y": 2},
169 {"matrix": [2, 8], "x": 8.75, "y": 2},
170 {"matrix": [2, 9], "x": 9.75, "y": 2},
171 {"matrix": [2, 10], "x": 10.75, "y": 2},
172 {"matrix": [2, 11], "x": 11.75, "y": 2},
173 {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
174 {"matrix": [2, 14], "x": 15, "y": 2},
175
176 {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
177 {"matrix": [3, 2], "x": 2.25, "y": 3},
178 {"matrix": [3, 3], "x": 3.25, "y": 3},
179 {"matrix": [3, 4], "x": 4.25, "y": 3},
180 {"matrix": [3, 5], "x": 5.25, "y": 3},
181 {"matrix": [3, 6], "x": 6.25, "y": 3},
182 {"matrix": [3, 7], "x": 7.25, "y": 3},
183 {"matrix": [3, 8], "x": 8.25, "y": 3},
184 {"matrix": [3, 9], "x": 9.25, "y": 3},
185 {"matrix": [3, 10], "x": 10.25, "y": 3},
186 {"matrix": [3, 11], "x": 11.25, "y": 3},
187 {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
188 {"matrix": [3, 13], "x": 14, "y": 3},
189 {"matrix": [3, 14], "x": 15, "y": 3},
190
191 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
192 {"matrix": [4, 1], "x": 1.5, "y": 4},
193 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
194 {"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
195 {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
196 {"matrix": [4, 12], "x": 13, "y": 4},
197 {"matrix": [4, 13], "x": 14, "y": 4},
198 {"matrix": [4, 14], "x": 15, "y": 4}
199 ]
200 },
201 "LAYOUT_65_iso_blocker_tsangan": {
202 "layout": [
203 {"matrix": [0, 0], "x": 0, "y": 0},
204 {"matrix": [0, 1], "x": 1, "y": 0},
205 {"matrix": [0, 2], "x": 2, "y": 0},
206 {"matrix": [0, 3], "x": 3, "y": 0},
207 {"matrix": [0, 4], "x": 4, "y": 0},
208 {"matrix": [0, 5], "x": 5, "y": 0},
209 {"matrix": [0, 6], "x": 6, "y": 0},
210 {"matrix": [0, 7], "x": 7, "y": 0},
211 {"matrix": [0, 8], "x": 8, "y": 0},
212 {"matrix": [0, 9], "x": 9, "y": 0},
213 {"matrix": [0, 10], "x": 10, "y": 0},
214 {"matrix": [0, 11], "x": 11, "y": 0},
215 {"matrix": [0, 12], "x": 12, "y": 0},
216 {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
217 {"matrix": [0, 14], "x": 15, "y": 0},
218
219 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
220 {"matrix": [1, 1], "x": 1.5, "y": 1},
221 {"matrix": [1, 2], "x": 2.5, "y": 1},
222 {"matrix": [1, 3], "x": 3.5, "y": 1},
223 {"matrix": [1, 4], "x": 4.5, "y": 1},
224 {"matrix": [1, 5], "x": 5.5, "y": 1},
225 {"matrix": [1, 6], "x": 6.5, "y": 1},
226 {"matrix": [1, 7], "x": 7.5, "y": 1},
227 {"matrix": [1, 8], "x": 8.5, "y": 1},
228 {"matrix": [1, 9], "x": 9.5, "y": 1},
229 {"matrix": [1, 10], "x": 10.5, "y": 1},
230 {"matrix": [1, 11], "x": 11.5, "y": 1},
231 {"matrix": [1, 12], "x": 12.5, "y": 1},
232 {"matrix": [1, 14], "x": 15, "y": 1},
233
234 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
235 {"matrix": [2, 1], "x": 1.75, "y": 2},
236 {"matrix": [2, 2], "x": 2.75, "y": 2},
237 {"matrix": [2, 3], "x": 3.75, "y": 2},
238 {"matrix": [2, 4], "x": 4.75, "y": 2},
239 {"matrix": [2, 5], "x": 5.75, "y": 2},
240 {"matrix": [2, 6], "x": 6.75, "y": 2},
241 {"matrix": [2, 7], "x": 7.75, "y": 2},
242 {"matrix": [2, 8], "x": 8.75, "y": 2},
243 {"matrix": [2, 9], "x": 9.75, "y": 2},
244 {"matrix": [2, 10], "x": 10.75, "y": 2},
245 {"matrix": [2, 11], "x": 11.75, "y": 2},
246 {"matrix": [1, 13], "x": 12.75, "y": 2},
247 {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
248 {"matrix": [2, 14], "x": 15, "y": 2},
249
250 {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
251 {"matrix": [3, 1], "x": 1.25, "y": 3},
252 {"matrix": [3, 2], "x": 2.25, "y": 3},
253 {"matrix": [3, 3], "x": 3.25, "y": 3},
254 {"matrix": [3, 4], "x": 4.25, "y": 3},
255 {"matrix": [3, 5], "x": 5.25, "y": 3},
256 {"matrix": [3, 6], "x": 6.25, "y": 3},
257 {"matrix": [3, 7], "x": 7.25, "y": 3},
258 {"matrix": [3, 8], "x": 8.25, "y": 3},
259 {"matrix": [3, 9], "x": 9.25, "y": 3},
260 {"matrix": [3, 10], "x": 10.25, "y": 3},
261 {"matrix": [3, 11], "x": 11.25, "y": 3},
262 {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
263 {"matrix": [3, 13], "x": 14, "y": 3},
264 {"matrix": [3, 14], "x": 15, "y": 3},
265
266 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
267 {"matrix": [4, 1], "x": 1.5, "y": 4},
268 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
269 {"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
270 {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
271 {"matrix": [4, 12], "x": 13, "y": 4},
272 {"matrix": [4, 13], "x": 14, "y": 4},
273 {"matrix": [4, 14], "x": 15, "y": 4}
274 ]
275 },
276 "LAYOUT_65_iso_blocker_tsangan_split_bs": {
277 "layout": [
278 {"matrix": [0, 0], "x": 0, "y": 0},
279 {"matrix": [0, 1], "x": 1, "y": 0},
280 {"matrix": [0, 2], "x": 2, "y": 0},
281 {"matrix": [0, 3], "x": 3, "y": 0},
282 {"matrix": [0, 4], "x": 4, "y": 0},
283 {"matrix": [0, 5], "x": 5, "y": 0},
284 {"matrix": [0, 6], "x": 6, "y": 0},
285 {"matrix": [0, 7], "x": 7, "y": 0},
286 {"matrix": [0, 8], "x": 8, "y": 0},
287 {"matrix": [0, 9], "x": 9, "y": 0},
288 {"matrix": [0, 10], "x": 10, "y": 0},
289 {"matrix": [0, 11], "x": 11, "y": 0},
290 {"matrix": [0, 12], "x": 12, "y": 0},
291 {"matrix": [2, 12], "x": 13, "y": 0},
292 {"matrix": [0, 13], "x": 14, "y": 0},
293 {"matrix": [0, 14], "x": 15, "y": 0},
294
295 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
296 {"matrix": [1, 1], "x": 1.5, "y": 1},
297 {"matrix": [1, 2], "x": 2.5, "y": 1},
298 {"matrix": [1, 3], "x": 3.5, "y": 1},
299 {"matrix": [1, 4], "x": 4.5, "y": 1},
300 {"matrix": [1, 5], "x": 5.5, "y": 1},
301 {"matrix": [1, 6], "x": 6.5, "y": 1},
302 {"matrix": [1, 7], "x": 7.5, "y": 1},
303 {"matrix": [1, 8], "x": 8.5, "y": 1},
304 {"matrix": [1, 9], "x": 9.5, "y": 1},
305 {"matrix": [1, 10], "x": 10.5, "y": 1},
306 {"matrix": [1, 11], "x": 11.5, "y": 1},
307 {"matrix": [1, 12], "x": 12.5, "y": 1},
308 {"matrix": [1, 14], "x": 15, "y": 1},
309
310 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
311 {"matrix": [2, 1], "x": 1.75, "y": 2},
312 {"matrix": [2, 2], "x": 2.75, "y": 2},
313 {"matrix": [2, 3], "x": 3.75, "y": 2},
314 {"matrix": [2, 4], "x": 4.75, "y": 2},
315 {"matrix": [2, 5], "x": 5.75, "y": 2},
316 {"matrix": [2, 6], "x": 6.75, "y": 2},
317 {"matrix": [2, 7], "x": 7.75, "y": 2},
318 {"matrix": [2, 8], "x": 8.75, "y": 2},
319 {"matrix": [2, 9], "x": 9.75, "y": 2},
320 {"matrix": [2, 10], "x": 10.75, "y": 2},
321 {"matrix": [2, 11], "x": 11.75, "y": 2},
322 {"matrix": [1, 13], "x": 12.75, "y": 2},
323 {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
324 {"matrix": [2, 14], "x": 15, "y": 2},
325
326 {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
327 {"matrix": [3, 1], "x": 1.25, "y": 3},
328 {"matrix": [3, 2], "x": 2.25, "y": 3},
329 {"matrix": [3, 3], "x": 3.25, "y": 3},
330 {"matrix": [3, 4], "x": 4.25, "y": 3},
331 {"matrix": [3, 5], "x": 5.25, "y": 3},
332 {"matrix": [3, 6], "x": 6.25, "y": 3},
333 {"matrix": [3, 7], "x": 7.25, "y": 3},
334 {"matrix": [3, 8], "x": 8.25, "y": 3},
335 {"matrix": [3, 9], "x": 9.25, "y": 3},
336 {"matrix": [3, 10], "x": 10.25, "y": 3},
337 {"matrix": [3, 11], "x": 11.25, "y": 3},
338 {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
339 {"matrix": [3, 13], "x": 14, "y": 3},
340 {"matrix": [3, 14], "x": 15, "y": 3},
341
342 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
343 {"matrix": [4, 1], "x": 1.5, "y": 4},
344 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
345 {"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
346 {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
347 {"matrix": [4, 12], "x": 13, "y": 4},
348 {"matrix": [4, 13], "x": 14, "y": 4},
349 {"matrix": [4, 14], "x": 15, "y": 4}
350 ]
351 }
352 }
353}
diff --git a/keyboards/trnthsn/tyson65/keymaps/default/keymap.c b/keyboards/trnthsn/tyson65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b84bab6b63
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
1// Copyright 2025 Tyson.Keebs
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include QMK_KEYBOARD_H
5
6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7 // ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
8 // │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Del│
9 // ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
10 // │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
11 // ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
12 // │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
13 // ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
14 // │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
15 // ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
16 // │Ctrl │GUI│ Alt │ │ Fn │ │ ← │ ↓ │ → │
17 // └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
18
19
20 [0] = LAYOUT_all(
21 KC_ESC, 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_BSPC, KC_DEL,
22 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_PGUP,
23 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, KC_PGDN,
24 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, KC_END,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27 [1] = LAYOUT_all(
28 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, UG_TOGG, _______, _______, _______, _______, _______, _______, _______, _______,
31 MO(2) , _______, _______, _______, _______, _______, _______, UG_NEXT, UG_VALD, UG_VALU, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______
33 ),
34 [2] = LAYOUT_all(
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______
40 ),
41};
diff --git a/keyboards/trnthsn/tyson65/mcuconf.h b/keyboards/trnthsn/tyson65/mcuconf.h
new file mode 100644
index 0000000000..d131af9fdf
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/mcuconf.h
@@ -0,0 +1,9 @@
1// Copyright 2025 Tyson.Keebs
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include_next <mcuconf.h>
7
8#undef STM32_SPI_USE_SPI2
9#define STM32_SPI_USE_SPI2 TRUE
diff --git a/keyboards/trnthsn/tyson65/readme.md b/keyboards/trnthsn/tyson65/readme.md
new file mode 100644
index 0000000000..b22bf95d18
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/readme.md
@@ -0,0 +1,28 @@
1# Tyson65
2
3![trnthsn/tyson65](https://live.staticflickr.com/65535/54831930681_bf79fb1761_c.jpg)
4
5A 65% keyboard PCB compatible with various keyboard cases. Supports a middle USB Type-C connector, 5 JST SH1.0 and 2 JST ZH1.25 positions for a daughter board.
6
7* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn)
8* Hardware Supported: STM32, Tyson65
9* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make trnthsn/tyson65/stm32f103:default
14
15Flashing example for this keyboard:
16
17 make trnthsn/tyson65/stm32f103:default:flash
18
19
20See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
21
22## Bootloader
23
24Enter the bootloader in 3 ways:
25
26* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
27* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
28* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/trnthsn/tyson65/stm32f072/keyboard.json b/keyboards/trnthsn/tyson65/stm32f072/keyboard.json
new file mode 100644
index 0000000000..8bba6f5d5d
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/stm32f072/keyboard.json
@@ -0,0 +1,4 @@
1{
2 "processor": "STM32F072",
3 "bootloader": "stm32-dfu"
4}
diff --git a/keyboards/trnthsn/tyson65/stm32f103/keyboard.json b/keyboards/trnthsn/tyson65/stm32f103/keyboard.json
new file mode 100644
index 0000000000..4dc77604c4
--- /dev/null
+++ b/keyboards/trnthsn/tyson65/stm32f103/keyboard.json
@@ -0,0 +1,4 @@
1{
2 "processor": "STM32F103",
3 "bootloader": "uf2boot"
4}