aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/handwired/dygma/raise/ansi/ansi.c81
-rw-r--r--keyboards/handwired/dygma/raise/ansi/info.json1115
-rw-r--r--keyboards/handwired/dygma/raise/ansi/rules.mk0
-rw-r--r--keyboards/handwired/dygma/raise/config.h34
-rw-r--r--keyboards/handwired/dygma/raise/halconf.h21
-rw-r--r--keyboards/handwired/dygma/raise/iso/info.json1115
-rw-r--r--keyboards/handwired/dygma/raise/iso/iso.c79
-rw-r--r--keyboards/handwired/dygma/raise/iso/rules.mk0
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/ansi/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/default/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/iso/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/iso/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/leds.c101
-rw-r--r--keyboards/handwired/dygma/raise/leds.h25
-rw-r--r--keyboards/handwired/dygma/raise/matrix.c104
-rw-r--r--keyboards/handwired/dygma/raise/mcuconf.h25
-rw-r--r--keyboards/handwired/dygma/raise/raise.c22
-rw-r--r--keyboards/handwired/dygma/raise/raise.h83
-rw-r--r--keyboards/handwired/dygma/raise/readme.md55
-rw-r--r--keyboards/handwired/dygma/raise/rules.mk30
-rw-r--r--keyboards/handwired/dygma/raise/wire-protocol-constants.h51
23 files changed, 3073 insertions, 0 deletions
diff --git a/keyboards/handwired/dygma/raise/ansi/ansi.c b/keyboards/handwired/dygma/raise/ansi/ansi.c
new file mode 100644
index 000000000..652b6551d
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/ansi/ansi.c
@@ -0,0 +1,81 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18
19// "led_map" is taken from kaleidoscope
20// LHK = Left Hand Keys
21// LPH = "Leds per hand", which isn't _actually_ the number of leds, but instead
22// is just used for indexing
23#define LHK 33
24#define LPH 72
25
26const uint8_t led_map[DRIVER_LED_TOTAL] = {
27 // left side - 32 keys includes LP: key 19 is missing for ANSI layout
28 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 0xff, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 68, 69,
29
30 // right side - 36 keys includes LP
31 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 15 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 7 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
32 20 + LPH, 21 + LPH, 22 + LPH, 23 + LPH, 24 + LPH, 25 + LPH, 26 + LPH, 27 + LPH, 28 + LPH, 29 + LPH, 30 + LPH, 31 + LPH, 32 + LPH, 33 + LPH, 68 + LPH, 69 + LPH,
33
34 // left under glow - 30
35 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
36
37 // right underglow - 32
38 34 + LPH, 35 + LPH, 36 + LPH, 37 + LPH, 38 + LPH, 39 + LPH, 40 + LPH, 41 + LPH, 42 + LPH, 43 + LPH, 44 + LPH, 45 + LPH, 46 + LPH, 47 + LPH, 48 + LPH, 49 + LPH, 50 + LPH, 51 + LPH,
39 52 + LPH, 53 + LPH, 54 + LPH, 55 + LPH, 56 + LPH, 57 + LPH, 58 + LPH, 59 + LPH, 60 + LPH, 61 + LPH, 62 + LPH, 63 + LPH, 64 + LPH, 65 + LPH, 0xff
40};
41
42// taken from "key_led_map" and reformatted
43// ISO & ANSI (ANSI has no LED at 20, but this key can never be pressed so we can have just one map).
44led_config_t g_led_config = { {
45 // left hand
46 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , NO_LED } ,
47 { 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , NO_LED } ,
48 { 13 , 14 , 15 , 16 , 17 , 18 , NO_LED , NO_LED } ,
49 { 19 , 20 , 21 , 22 , 23 , 24 , 25 , NO_LED } ,
50 { 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
51
52 // right hand
53 { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
54 { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
55 { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
56 { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
57 { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
58 }, {
59 // generated from the svg image of the keyboard, see create-led-config.js
60 {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
61 {115, 10}, {84, 16}, {92, 16}, {98, 16}, {104, 16}, {110, 16}, {116, 16}, {85, 22},
62 {0, 0},
63 {94, 22}, {100, 22}, {106, 22}, {112, 22}, {118, 22}, {83, 28}, {90, 28}, {98, 28}, {106, 28}, {116, 28}, {111, 34},
64 {118, 34}, {168, 3}, {159, 3}, {153, 3}, {147, 3}, {141, 3}, {135, 3}, {129, 3}, {168, 16}, {162, 10}, {156, 10},
65 {150, 10}, {144, 10}, {139, 10}, {133, 10}, {127, 10}, {170, 10}, {159, 16}, {153, 16}, {147, 16}, {141, 16}, {135, 16},
66 {129, 16}, {166, 22}, {154, 22}, {148, 22}, {142, 22}, {136, 22}, {130, 22}, {170, 28}, {163, 28}, {156, 28}, {149, 28},
67 {140, 28}, {131, 28}, {136, 34}, {128, 34}, {78, 13}, {78, 6}, {80, 0}, {87, 0}, {95, 0}, {103, 0}, {111, 0}, {119, 0},
68 {122, 3}, {121, 9}, {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61},
69 {103, 64}, {96, 64}, {88, 64}, {81, 63}, {76, 60}, {75, 52}, {75, 46}, {74, 38}, {74, 32}, {75, 27}, {77, 21}, {175, 10},
70 {175, 4}, {172, 0}, {164, 0}, {157, 0}, {149, 0}, {142, 0}, {134, 0}, {127, 0}, {123, 3}, {122, 8}, {122, 15}, {124, 21},
71 {124, 27}, {124, 33}, {126, 38}, {131, 42}, {134, 48}, {135, 55}, {137, 61}, {143, 63}, {150, 63}, {158, 63}, {166, 63},
72 {173, 63}, {177, 59}, {178, 49}, {179, 40}, {179, 31}, {177, 25}, {175, 20}, {175, 15}, {123, 54}
73 }, {
74 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
75 0,
76 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
77 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
78 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4
80 }
81};
diff --git a/keyboards/handwired/dygma/raise/ansi/info.json b/keyboards/handwired/dygma/raise/ansi/info.json
new file mode 100644
index 000000000..f7f9a07c1
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/ansi/info.json
@@ -0,0 +1,1115 @@
1{
2 "keyboard_name": "Dygma Raise",
3 "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
4 "maintainer": "ibash",
5 "layouts": {
6 "LAYOUT_all": {
7 "layout": [
8 {
9 "label": "esc",
10 "x": 0,
11 "y": 0
12 },
13 {
14 "label": "1",
15 "x": 1,
16 "y": 0
17 },
18 {
19 "label": "2",
20 "x": 2,
21 "y": 0
22 },
23 {
24 "label": "3",
25 "x": 3,
26 "y": 0
27 },
28 {
29 "label": "4",
30 "x": 4,
31 "y": 0
32 },
33 {
34 "label": "5",
35 "x": 5,
36 "y": 0
37 },
38 {
39 "label": "6",
40 "x": 6,
41 "y": 0
42 },
43 {
44 "label": "7",
45 "x": 8.75,
46 "y": 0
47 },
48 {
49 "label": "8",
50 "x": 9.75,
51 "y": 0
52 },
53 {
54 "label": "9",
55 "x": 10.75,
56 "y": 0
57 },
58 {
59 "label": "0",
60 "x": 11.75,
61 "y": 0
62 },
63 {
64 "label": "-",
65 "x": 12.75,
66 "y": 0
67 },
68 {
69 "label": "+",
70 "x": 13.75,
71 "y": 0
72 },
73 {
74 "label": "backspace",
75 "w": 2,
76 "x": 14.75,
77 "y": 0
78 },
79 {
80 "label": "tab",
81 "w": 1.5,
82 "x": 0,
83 "y": 1
84 },
85 {
86 "label": "Q",
87 "x": 1.5,
88 "y": 1
89 },
90 {
91 "label": "W",
92 "x": 2.5,
93 "y": 1
94 },
95 {
96 "label": "E",
97 "x": 3.5,
98 "y": 1
99 },
100 {
101 "label": "R",
102 "x": 4.5,
103 "y": 1
104 },
105 {
106 "label": "T",
107 "x": 5.5,
108 "y": 1
109 },
110 {
111 "label": "Y",
112 "x": 8.25,
113 "y": 1
114 },
115 {
116 "label": "U",
117 "x": 9.25,
118 "y": 1
119 },
120 {
121 "label": "I",
122 "x": 10.25,
123 "y": 1
124 },
125 {
126 "label": "O",
127 "x": 11.25,
128 "y": 1
129 },
130 {
131 "label": "P",
132 "x": 12.25,
133 "y": 1
134 },
135 {
136 "label": "[",
137 "x": 13.25,
138 "y": 1
139 },
140 {
141 "label": "]",
142 "x": 14.25,
143 "y": 1
144 },
145 {
146 "label": "enter",
147 "h": 2,
148 "w": 1.25,
149 "x": 15.5,
150 "y": 1
151 },
152 {
153 "label": "caps",
154 "w": 1.75,
155 "x": 0,
156 "y": 2
157 },
158 {
159 "label": "A",
160 "x": 1.75,
161 "y": 2
162 },
163 {
164 "label": "S",
165 "x": 2.75,
166 "y": 2
167 },
168 {
169 "label": "D",
170 "x": 3.75,
171 "y": 2
172 },
173 {
174 "label": "F",
175 "x": 4.75,
176 "y": 2
177 },
178 {
179 "label": "G",
180 "x": 5.75,
181 "y": 2
182 },
183 {
184 "label": "H",
185 "x": 8.5,
186 "y": 2
187 },
188 {
189 "label": "J",
190 "x": 9.5,
191 "y": 2
192 },
193 {
194 "label": "K",
195 "x": 10.5,
196 "y": 2
197 },
198 {
199 "label": "L",
200 "x": 11.5,
201 "y": 2
202 },
203 {
204 "label": ";",
205 "x": 12.5,
206 "y": 2
207 },
208 {
209 "label": "'",
210 "x": 13.5,
211 "y": 2
212 },
213 {
214 "label": "#",
215 "x": 14.5,
216 "y": 2
217 },
218 {
219 "label": "shift",
220 "w": 1.25,
221 "x": 0,
222 "y": 3
223 },
224 {
225 "label": "\\",
226 "x": 1.25,
227 "y": 3
228 },
229 {
230 "label": "Z",
231 "x": 2.25,
232 "y": 3
233 },
234 {
235 "label": "X",
236 "x": 3.25,
237 "y": 3
238 },
239 {
240 "label": "C",
241 "x": 4.25,
242 "y": 3
243 },
244 {
245 "label": "V",
246 "x": 5.25,
247 "y": 3
248 },
249 {
250 "label": "B",
251 "x": 6.25,
252 "y": 3
253 },
254 {
255 "label": "N",
256 "x": 9,
257 "y": 3
258 },
259 {
260 "label": "M",
261 "x": 10,
262 "y": 3
263 },
264 {
265 "label": ",",
266 "x": 11,
267 "y": 3
268 },
269 {
270 "label": ".",
271 "x": 12,
272 "y": 3
273 },
274 {
275 "label": "/",
276 "x": 13,
277 "y": 3
278 },
279 {
280 "label": "shift",
281 "w": 2.75,
282 "x": 14,
283 "y": 3
284 },
285 {
286 "label": "ctrl",
287 "w": 1.25,
288 "x": 0,
289 "y": 4
290 },
291 {
292 "label": "os",
293 "w": 1.25,
294 "x": 1.25,
295 "y": 4
296 },
297 {
298 "label": "alt",
299 "w": 1.25,
300 "x": 2.5,
301 "y": 4
302 },
303 {
304 "label": "...",
305 "w": 1.5,
306 "x": 3.75,
307 "y": 4
308 },
309 {
310 "label": "\u2014",
311 "w": 1.5,
312 "x": 5.25,
313 "y": 4
314 },
315 {
316 "label": "\u2014",
317 "w": 1.5,
318 "x": 8.75,
319 "y": 4
320 },
321 {
322 "label": "...",
323 "w": 1.5,
324 "x": 10.25,
325 "y": 4
326 },
327 {
328 "label": "alt",
329 "w": 1.25,
330 "x": 11.75,
331 "y": 4
332 },
333 {
334 "label": "fn",
335 "w": 1.25,
336 "x": 13,
337 "y": 4
338 },
339 {
340 "label": "os",
341 "w": 1.25,
342 "x": 14.25,
343 "y": 4
344 },
345 {
346 "label": "ctrl",
347 "w": 1.25,
348 "x": 15.5,
349 "y": 4
350 },
351 {
352 "label": "..",
353 "w": 1.5,
354 "x": 3.75,
355 "y": 5
356 },
357 {
358 "label": ".",
359 "w": 1.5,
360 "x": 5.25,
361 "y": 5
362 },
363 {
364 "label": ".",
365 "w": 1.5,
366 "x": 8.75,
367 "y": 5
368 },
369 {
370 "label": "..",
371 "w": 1.5,
372 "x": 10.25,
373 "y": 5
374 }
375 ]
376 },
377 "LAYOUT_ansi": {
378 "layout": [
379 {
380 "label": "esc",
381 "x": 0,
382 "y": 0
383 },
384 {
385 "label": "1",
386 "x": 1,
387 "y": 0
388 },
389 {
390 "label": "2",
391 "x": 2,
392 "y": 0
393 },
394 {
395 "label": "3",
396 "x": 3,
397 "y": 0
398 },
399 {
400 "label": "4",
401 "x": 4,
402 "y": 0
403 },
404 {
405 "label": "5",
406 "x": 5,
407 "y": 0
408 },
409 {
410 "label": "6",
411 "x": 6,
412 "y": 0
413 },
414 {
415 "label": "7",
416 "x": 8.75,
417 "y": 0
418 },
419 {
420 "label": "8",
421 "x": 9.75,
422 "y": 0
423 },
424 {
425 "label": "9",
426 "x": 10.75,
427 "y": 0
428 },
429 {
430 "label": "0",
431 "x": 11.75,
432 "y": 0
433 },
434 {
435 "label": "-",
436 "x": 12.75,
437 "y": 0
438 },
439 {
440 "label": "+",
441 "x": 13.75,
442 "y": 0
443 },
444 {
445 "label": "backspace",
446 "w": 2,
447 "x": 14.75,
448 "y": 0
449 },
450 {
451 "label": "tab",
452 "w": 1.5,
453 "x": 0,
454 "y": 1
455 },
456 {
457 "label": "Q",
458 "x": 1.5,
459 "y": 1
460 },
461 {
462 "label": "W",
463 "x": 2.5,
464 "y": 1
465 },
466 {
467 "label": "E",
468 "x": 3.5,
469 "y": 1
470 },
471 {
472 "label": "R",
473 "x": 4.5,
474 "y": 1
475 },
476 {
477 "label": "T",
478 "x": 5.5,
479 "y": 1
480 },
481 {
482 "label": "Y",
483 "x": 8.25,
484 "y": 1
485 },
486 {
487 "label": "U",
488 "x": 9.25,
489 "y": 1
490 },
491 {
492 "label": "I",
493 "x": 10.25,
494 "y": 1
495 },
496 {
497 "label": "O",
498 "x": 11.25,
499 "y": 1
500 },
501 {
502 "label": "P",
503 "x": 12.25,
504 "y": 1
505 },
506 {
507 "label": "{",
508 "x": 13.25,
509 "y": 1
510 },
511 {
512 "label": "}",
513 "x": 14.25,
514 "y": 1
515 },
516 {
517 "label": "\\",
518 "w": 1.5,
519 "x": 15.25,
520 "y": 1
521 },
522 {
523 "label": "caps",
524 "w": 1.75,
525 "x": 0,
526 "y": 2
527 },
528 {
529 "label": "A",
530 "x": 1.75,
531 "y": 2
532 },
533 {
534 "label": "S",
535 "x": 2.75,
536 "y": 2
537 },
538 {
539 "label": "D",
540 "x": 3.75,
541 "y": 2
542 },
543 {
544 "label": "F",
545 "x": 4.75,
546 "y": 2
547 },
548 {
549 "label": "G",
550 "x": 5.75,
551 "y": 2
552 },
553 {
554 "label": "H",
555 "x": 8.5,
556 "y": 2
557 },
558 {
559 "label": "J",
560 "x": 9.5,
561 "y": 2
562 },
563 {
564 "label": "K",
565 "x": 10.5,
566 "y": 2
567 },
568 {
569 "label": "L",
570 "x": 11.5,
571 "y": 2
572 },
573 {
574 "label": ";",
575 "x": 12.5,
576 "y": 2
577 },
578 {
579 "label": "'",
580 "x": 13.5,
581 "y": 2
582 },
583 {
584 "label": "enter",
585 "w": 2.25,
586 "x": 14.5,
587 "y": 2
588 },
589 {
590 "label": "shift",
591 "w": 2.25,
592 "x": 0,
593 "y": 3
594 },
595 {
596 "label": "Z",
597 "x": 2.25,
598 "y": 3
599 },
600 {
601 "label": "X",
602 "x": 3.25,
603 "y": 3
604 },
605 {
606 "label": "C",
607 "x": 4.25,
608 "y": 3
609 },
610 {
611 "label": "V",
612 "x": 5.25,
613 "y": 3
614 },
615 {
616 "label": "B",
617 "x": 6.25,
618 "y": 3
619 },
620 {
621 "label": "N",
622 "x": 9,
623 "y": 3
624 },
625 {
626 "label": "M",
627 "x": 10,
628 "y": 3
629 },
630 {
631 "label": ",",
632 "x": 11,
633 "y": 3
634 },
635 {
636 "label": ".",
637 "x": 12,
638 "y": 3
639 },
640 {
641 "label": "/",
642 "x": 13,
643 "y": 3
644 },
645 {
646 "label": "shift",
647 "w": 2.75,
648 "x": 14,
649 "y": 3
650 },
651 {
652 "label": "ctrl",
653 "w": 1.25,
654 "x": 0,
655 "y": 4
656 },
657 {
658 "label": "os",
659 "w": 1.25,
660 "x": 1.25,
661 "y": 4
662 },
663 {
664 "label": "alt",
665 "w": 1.25,
666 "x": 2.5,
667 "y": 4
668 },
669 {
670 "label": "...",
671 "w": 1.5,
672 "x": 3.75,
673 "y": 4
674 },
675 {
676 "label": "\u2014",
677 "w": 1.5,
678 "x": 5.25,
679 "y": 4
680 },
681 {
682 "label": "\u2014",
683 "w": 1.5,
684 "x": 8.75,
685 "y": 4
686 },
687 {
688 "label": "...",
689 "w": 1.5,
690 "x": 10.25,
691 "y": 4
692 },
693 {
694 "label": "alt",
695 "w": 1.25,
696 "x": 11.75,
697 "y": 4
698 },
699 {
700 "label": "fn",
701 "w": 1.25,
702 "x": 13,
703 "y": 4
704 },
705 {
706 "label": "os",
707 "w": 1.25,
708 "x": 14.25,
709 "y": 4
710 },
711 {
712 "label": "ctrl",
713 "w": 1.25,
714 "x": 15.5,
715 "y": 4
716 },
717 {
718 "label": "..",
719 "w": 1.5,
720 "x": 3.75,
721 "y": 5
722 },
723 {
724 "label": ".",
725 "w": 1.5,
726 "x": 5.25,
727 "y": 5
728 },
729 {
730 "label": ".",
731 "w": 1.5,
732 "x": 8.75,
733 "y": 5
734 },
735 {
736 "label": "..",
737 "w": 1.5,
738 "x": 10.25,
739 "y": 5
740 }
741 ]
742 },
743 "LAYOUT_iso": {
744 "layout": [
745 {
746 "label": "esc",
747 "x": 0,
748 "y": 0
749 },
750 {
751 "label": "1",
752 "x": 1,
753 "y": 0
754 },
755 {
756 "label": "2",
757 "x": 2,
758 "y": 0
759 },
760 {
761 "label": "3",
762 "x": 3,
763 "y": 0
764 },
765 {
766 "label": "4",
767 "x": 4,
768 "y": 0
769 },
770 {
771 "label": "5",
772 "x": 5,
773 "y": 0
774 },
775 {
776 "label": "6",
777 "x": 6,
778 "y": 0
779 },
780 {
781 "label": "7",
782 "x": 8.75,
783 "y": 0
784 },
785 {
786 "label": "8",
787 "x": 9.75,
788 "y": 0
789 },
790 {
791 "label": "9",
792 "x": 10.75,
793 "y": 0
794 },
795 {
796 "label": "0",
797 "x": 11.75,
798 "y": 0
799 },
800 {
801 "label": "-",
802 "x": 12.75,
803 "y": 0
804 },
805 {
806 "label": "+",
807 "x": 13.75,
808 "y": 0
809 },
810 {
811 "label": "backspace",
812 "w": 2,
813 "x": 14.75,
814 "y": 0
815 },
816 {
817 "label": "tab",
818 "w": 1.5,
819 "x": 0,
820 "y": 1
821 },
822 {
823 "label": "Q",
824 "x": 1.5,
825 "y": 1
826 },
827 {
828 "label": "W",
829 "x": 2.5,
830 "y": 1
831 },
832 {
833 "label": "E",
834 "x": 3.5,
835 "y": 1
836 },
837 {
838 "label": "R",
839 "x": 4.5,
840 "y": 1
841 },
842 {
843 "label": "T",
844 "x": 5.5,
845 "y": 1
846 },
847 {
848 "label": "Y",
849 "x": 8.25,
850 "y": 1
851 },
852 {
853 "label": "U",
854 "x": 9.25,
855 "y": 1
856 },
857 {
858 "label": "I",
859 "x": 10.25,
860 "y": 1
861 },
862 {
863 "label": "O",
864 "x": 11.25,
865 "y": 1
866 },
867 {
868 "label": "P",
869 "x": 12.25,
870 "y": 1
871 },
872 {
873 "label": "[",
874 "x": 13.25,
875 "y": 1
876 },
877 {
878 "label": "]",
879 "x": 14.25,
880 "y": 1
881 },
882 {
883 "label": "enter",
884 "h": 2,
885 "w": 1.25,
886 "x": 15.5,
887 "y": 1
888 },
889 {
890 "label": "caps",
891 "w": 1.75,
892 "x": 0,
893 "y": 2
894 },
895 {
896 "label": "A",
897 "x": 1.75,
898 "y": 2
899 },
900 {
901 "label": "S",
902 "x": 2.75,
903 "y": 2
904 },
905 {
906 "label": "D",
907 "x": 3.75,
908 "y": 2
909 },
910 {
911 "label": "F",
912 "x": 4.75,
913 "y": 2
914 },
915 {
916 "label": "G",
917 "x": 5.75,
918 "y": 2
919 },
920 {
921 "label": "H",
922 "x": 8.5,
923 "y": 2
924 },
925 {
926 "label": "J",
927 "x": 9.5,
928 "y": 2
929 },
930 {
931 "label": "K",
932 "x": 10.5,
933 "y": 2
934 },
935 {
936 "label": "L",
937 "x": 11.5,
938 "y": 2
939 },
940 {
941 "label": ";",
942 "x": 12.5,
943 "y": 2
944 },
945 {
946 "label": "'",
947 "x": 13.5,
948 "y": 2
949 },
950 {
951 "label": "#",
952 "x": 14.5,
953 "y": 2
954 },
955 {
956 "label": "shift",
957 "w": 1.25,
958 "x": 0,
959 "y": 3
960 },
961 {
962 "label": "\\",
963 "x": 1.25,
964 "y": 3
965 },
966 {
967 "label": "Z",
968 "x": 2.25,
969 "y": 3
970 },
971 {
972 "label": "X",
973 "x": 3.25,
974 "y": 3
975 },
976 {
977 "label": "C",
978 "x": 4.25,
979 "y": 3
980 },
981 {
982 "label": "V",
983 "x": 5.25,
984 "y": 3
985 },
986 {
987 "label": "B",
988 "x": 6.25,
989 "y": 3
990 },
991 {
992 "label": "N",
993 "x": 9,
994 "y": 3
995 },
996 {
997 "label": "M",
998 "x": 10,
999 "y": 3
1000 },
1001 {
1002 "label": ",",
1003 "x": 11,
1004 "y": 3
1005 },
1006 {
1007 "label": ".",
1008 "x": 12,
1009 "y": 3
1010 },
1011 {
1012 "label": "/",
1013 "x": 13,
1014 "y": 3
1015 },
1016 {
1017 "label": "shift",
1018 "w": 2.75,
1019 "x": 14,
1020 "y": 3
1021 },
1022 {
1023 "label": "ctrl",
1024 "w": 1.25,
1025 "x": 0,
1026 "y": 4
1027 },
1028 {
1029 "label": "os",
1030 "w": 1.25,
1031 "x": 1.25,
1032 "y": 4
1033 },
1034 {
1035 "label": "alt",
1036 "w": 1.25,
1037 "x": 2.5,
1038 "y": 4
1039 },
1040 {
1041 "label": "...",
1042 "w": 1.5,
1043 "x": 3.75,
1044 "y": 4
1045 },
1046 {
1047 "label": "\u2014",
1048 "w": 1.5,
1049 "x": 5.25,
1050 "y": 4
1051 },
1052 {
1053 "label": "\u2014",
1054 "w": 1.5,
1055 "x": 8.75,
1056 "y": 4
1057 },
1058 {
1059 "label": "...",
1060 "w": 1.5,
1061 "x": 10.25,
1062 "y": 4
1063 },
1064 {
1065 "label": "alt",
1066 "w": 1.25,
1067 "x": 11.75,
1068 "y": 4
1069 },
1070 {
1071 "label": "fn",
1072 "w": 1.25,
1073 "x": 13,
1074 "y": 4
1075 },
1076 {
1077 "label": "os",
1078 "w": 1.25,
1079 "x": 14.25,
1080 "y": 4
1081 },
1082 {
1083 "label": "ctrl",
1084 "w": 1.25,
1085 "x": 15.5,
1086 "y": 4
1087 },
1088 {
1089 "label": "..",
1090 "w": 1.5,
1091 "x": 3.75,
1092 "y": 5
1093 },
1094 {
1095 "label": ".",
1096 "w": 1.5,
1097 "x": 5.25,
1098 "y": 5
1099 },
1100 {
1101 "label": ".",
1102 "w": 1.5,
1103 "x": 8.75,
1104 "y": 5
1105 },
1106 {
1107 "label": "..",
1108 "w": 1.5,
1109 "x": 10.25,
1110 "y": 5
1111 }
1112 ]
1113 }
1114 }
1115}
diff --git a/keyboards/handwired/dygma/raise/ansi/rules.mk b/keyboards/handwired/dygma/raise/ansi/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/ansi/rules.mk
diff --git a/keyboards/handwired/dygma/raise/config.h b/keyboards/handwired/dygma/raise/config.h
new file mode 100644
index 000000000..674fd592c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/config.h
@@ -0,0 +1,34 @@
1/* Copyright 2021 Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "config_common.h"
19
20/* USB Device descriptor parameter */
21#define VENDOR_ID 0x1209
22#define PRODUCT_ID 0x2201
23#define DEVICE_VER 0x0001
24#define MANUFACTURER Dygma
25#define PRODUCT Raise
26
27/* key matrix size */
28// rows are doubled for split
29#define MATRIX_ROWS 10
30#define MATRIX_COLS 8
31/* The scanners already debounce for us */
32#define DEBOUNCE 0
33
34#define DRIVER_LED_TOTAL 132
diff --git a/keyboards/handwired/dygma/raise/halconf.h b/keyboards/handwired/dygma/raise/halconf.h
new file mode 100644
index 000000000..ebe78c3be
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/halconf.h
@@ -0,0 +1,21 @@
1/* Copyright (C) 2021 QMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#define HAL_USE_I2C TRUE
20
21#include_next <halconf.h>
diff --git a/keyboards/handwired/dygma/raise/iso/info.json b/keyboards/handwired/dygma/raise/iso/info.json
new file mode 100644
index 000000000..f7f9a07c1
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/iso/info.json
@@ -0,0 +1,1115 @@
1{
2 "keyboard_name": "Dygma Raise",
3 "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
4 "maintainer": "ibash",
5 "layouts": {
6 "LAYOUT_all": {
7 "layout": [
8 {
9 "label": "esc",
10 "x": 0,
11 "y": 0
12 },
13 {
14 "label": "1",
15 "x": 1,
16 "y": 0
17 },
18 {
19 "label": "2",
20 "x": 2,
21 "y": 0
22 },
23 {
24 "label": "3",
25 "x": 3,
26 "y": 0
27 },
28 {
29 "label": "4",
30 "x": 4,
31 "y": 0
32 },
33 {
34 "label": "5",
35 "x": 5,
36 "y": 0
37 },
38 {
39 "label": "6",
40 "x": 6,
41 "y": 0
42 },
43 {
44 "label": "7",
45 "x": 8.75,
46 "y": 0
47 },
48 {
49 "label": "8",
50 "x": 9.75,
51 "y": 0
52 },
53 {
54 "label": "9",
55 "x": 10.75,
56 "y": 0
57 },
58 {
59 "label": "0",
60 "x": 11.75,
61 "y": 0
62 },
63 {
64 "label": "-",
65 "x": 12.75,
66 "y": 0
67 },
68 {
69 "label": "+",
70 "x": 13.75,
71 "y": 0
72 },
73 {
74 "label": "backspace",
75 "w": 2,
76 "x": 14.75,
77 "y": 0
78 },
79 {
80 "label": "tab",
81 "w": 1.5,
82 "x": 0,
83 "y": 1
84 },
85 {
86 "label": "Q",
87 "x": 1.5,
88 "y": 1
89 },
90 {
91 "label": "W",
92 "x": 2.5,
93 "y": 1
94 },
95 {
96 "label": "E",
97 "x": 3.5,
98 "y": 1
99 },
100 {
101 "label": "R",
102 "x": 4.5,
103 "y": 1
104 },
105 {
106 "label": "T",
107 "x": 5.5,
108 "y": 1
109 },
110 {
111 "label": "Y",
112 "x": 8.25,
113 "y": 1
114 },
115 {
116 "label": "U",
117 "x": 9.25,
118 "y": 1
119 },
120 {
121 "label": "I",
122 "x": 10.25,
123 "y": 1
124 },
125 {
126 "label": "O",
127 "x": 11.25,
128 "y": 1
129 },
130 {
131 "label": "P",
132 "x": 12.25,
133 "y": 1
134 },
135 {
136 "label": "[",
137 "x": 13.25,
138 "y": 1
139 },
140 {
141 "label": "]",
142 "x": 14.25,
143 "y": 1
144 },
145 {
146 "label": "enter",
147 "h": 2,
148 "w": 1.25,
149 "x": 15.5,
150 "y": 1
151 },
152 {
153 "label": "caps",
154 "w": 1.75,
155 "x": 0,
156 "y": 2
157 },
158 {
159 "label": "A",
160 "x": 1.75,
161 "y": 2
162 },
163 {
164 "label": "S",
165 "x": 2.75,
166 "y": 2
167 },
168 {
169 "label": "D",
170 "x": 3.75,
171 "y": 2
172 },
173 {
174 "label": "F",
175 "x": 4.75,
176 "y": 2
177 },
178 {
179 "label": "G",
180 "x": 5.75,
181 "y": 2
182 },
183 {
184 "label": "H",
185 "x": 8.5,
186 "y": 2
187 },
188 {
189 "label": "J",
190 "x": 9.5,
191 "y": 2
192 },
193 {
194 "label": "K",
195 "x": 10.5,
196 "y": 2
197 },
198 {
199 "label": "L",
200 "x": 11.5,
201 "y": 2
202 },
203 {
204 "label": ";",
205 "x": 12.5,
206 "y": 2
207 },
208 {
209 "label": "'",
210 "x": 13.5,
211 "y": 2
212 },
213 {
214 "label": "#",
215 "x": 14.5,
216 "y": 2
217 },
218 {
219 "label": "shift",
220 "w": 1.25,
221 "x": 0,
222 "y": 3
223 },
224 {
225 "label": "\\",
226 "x": 1.25,
227 "y": 3
228 },
229 {
230 "label": "Z",
231 "x": 2.25,
232 "y": 3
233 },
234 {
235 "label": "X",
236 "x": 3.25,
237 "y": 3
238 },
239 {
240 "label": "C",
241 "x": 4.25,
242 "y": 3
243 },
244 {
245 "label": "V",
246 "x": 5.25,
247 "y": 3
248 },
249 {
250 "label": "B",
251 "x": 6.25,
252 "y": 3
253 },
254 {
255 "label": "N",
256 "x": 9,
257 "y": 3
258 },
259 {
260 "label": "M",
261 "x": 10,
262 "y": 3
263 },
264 {
265 "label": ",",
266 "x": 11,
267 "y": 3
268 },
269 {
270 "label": ".",
271 "x": 12,
272 "y": 3
273 },
274 {
275 "label": "/",
276 "x": 13,
277 "y": 3
278 },
279 {
280 "label": "shift",
281 "w": 2.75,
282 "x": 14,
283 "y": 3
284 },
285 {
286 "label": "ctrl",
287 "w": 1.25,
288 "x": 0,
289 "y": 4
290 },
291 {
292 "label": "os",
293 "w": 1.25,
294 "x": 1.25,
295 "y": 4
296 },
297 {
298 "label": "alt",
299 "w": 1.25,
300 "x": 2.5,
301 "y": 4
302 },
303 {
304 "label": "...",
305 "w": 1.5,
306 "x": 3.75,
307 "y": 4
308 },
309 {
310 "label": "\u2014",
311 "w": 1.5,
312 "x": 5.25,
313 "y": 4
314 },
315 {
316 "label": "\u2014",
317 "w": 1.5,
318 "x": 8.75,
319 "y": 4
320 },
321 {
322 "label": "...",
323 "w": 1.5,
324 "x": 10.25,
325 "y": 4
326 },
327 {
328 "label": "alt",
329 "w": 1.25,
330 "x": 11.75,
331 "y": 4
332 },
333 {
334 "label": "fn",
335 "w": 1.25,
336 "x": 13,
337 "y": 4
338 },
339 {
340 "label": "os",
341 "w": 1.25,
342 "x": 14.25,
343 "y": 4
344 },
345 {
346 "label": "ctrl",
347 "w": 1.25,
348 "x": 15.5,
349 "y": 4
350 },
351 {
352 "label": "..",
353 "w": 1.5,
354 "x": 3.75,
355 "y": 5
356 },
357 {
358 "label": ".",
359 "w": 1.5,
360 "x": 5.25,
361 "y": 5
362 },
363 {
364 "label": ".",
365 "w": 1.5,
366 "x": 8.75,
367 "y": 5
368 },
369 {
370 "label": "..",
371 "w": 1.5,
372 "x": 10.25,
373 "y": 5
374 }
375 ]
376 },
377 "LAYOUT_ansi": {
378 "layout": [
379 {
380 "label": "esc",
381 "x": 0,
382 "y": 0
383 },
384 {
385 "label": "1",
386 "x": 1,
387 "y": 0
388 },
389 {
390 "label": "2",
391 "x": 2,
392 "y": 0
393 },
394 {
395 "label": "3",
396 "x": 3,
397 "y": 0
398 },
399 {
400 "label": "4",
401 "x": 4,
402 "y": 0
403 },
404 {
405 "label": "5",
406 "x": 5,
407 "y": 0
408 },
409 {
410 "label": "6",
411 "x": 6,
412 "y": 0
413 },
414 {
415 "label": "7",
416 "x": 8.75,
417 "y": 0
418 },
419 {
420 "label": "8",
421 "x": 9.75,
422 "y": 0
423 },
424 {
425 "label": "9",
426 "x": 10.75,
427 "y": 0
428 },
429 {
430 "label": "0",
431 "x": 11.75,
432 "y": 0
433 },
434 {
435 "label": "-",
436 "x": 12.75,
437 "y": 0
438 },
439 {
440 "label": "+",
441 "x": 13.75,
442 "y": 0
443 },
444 {
445 "label": "backspace",
446 "w": 2,
447 "x": 14.75,
448 "y": 0
449 },
450 {
451 "label": "tab",
452 "w": 1.5,
453 "x": 0,
454 "y": 1
455 },
456 {
457 "label": "Q",
458 "x": 1.5,
459 "y": 1
460 },
461 {
462 "label": "W",
463 "x": 2.5,
464 "y": 1
465 },
466 {
467 "label": "E",
468 "x": 3.5,
469 "y": 1
470 },
471 {
472 "label": "R",
473 "x": 4.5,
474 "y": 1
475 },
476 {
477 "label": "T",
478 "x": 5.5,
479 "y": 1
480 },
481 {
482 "label": "Y",
483 "x": 8.25,
484 "y": 1
485 },
486 {
487 "label": "U",
488 "x": 9.25,
489 "y": 1
490 },
491 {
492 "label": "I",
493 "x": 10.25,
494 "y": 1
495 },
496 {
497 "label": "O",
498 "x": 11.25,
499 "y": 1
500 },
501 {
502 "label": "P",
503 "x": 12.25,
504 "y": 1
505 },
506 {
507 "label": "{",
508 "x": 13.25,
509 "y": 1
510 },
511 {
512 "label": "}",
513 "x": 14.25,
514 "y": 1
515 },
516 {
517 "label": "\\",
518 "w": 1.5,
519 "x": 15.25,
520 "y": 1
521 },
522 {
523 "label": "caps",
524 "w": 1.75,
525 "x": 0,
526 "y": 2
527 },
528 {
529 "label": "A",
530 "x": 1.75,
531 "y": 2
532 },
533 {
534 "label": "S",
535 "x": 2.75,
536 "y": 2
537 },
538 {
539 "label": "D",
540 "x": 3.75,
541 "y": 2
542 },
543 {
544 "label": "F",
545 "x": 4.75,
546 "y": 2
547 },
548 {
549 "label": "G",
550 "x": 5.75,
551 "y": 2
552 },
553 {
554 "label": "H",
555 "x": 8.5,
556 "y": 2
557 },
558 {
559 "label": "J",
560 "x": 9.5,
561 "y": 2
562 },
563 {
564 "label": "K",
565 "x": 10.5,
566 "y": 2
567 },
568 {
569 "label": "L",
570 "x": 11.5,
571 "y": 2
572 },
573 {
574 "label": ";",
575 "x": 12.5,
576 "y": 2
577 },
578 {
579 "label": "'",
580 "x": 13.5,
581 "y": 2
582 },
583 {
584 "label": "enter",
585 "w": 2.25,
586 "x": 14.5,
587 "y": 2
588 },
589 {
590 "label": "shift",
591 "w": 2.25,
592 "x": 0,
593 "y": 3
594 },
595 {
596 "label": "Z",
597 "x": 2.25,
598 "y": 3
599 },
600 {
601 "label": "X",
602 "x": 3.25,
603 "y": 3
604 },
605 {
606 "label": "C",
607 "x": 4.25,
608 "y": 3
609 },
610 {
611 "label": "V",
612 "x": 5.25,
613 "y": 3
614 },
615 {
616 "label": "B",
617 "x": 6.25,
618 "y": 3
619 },
620 {
621 "label": "N",
622 "x": 9,
623 "y": 3
624 },
625 {
626 "label": "M",
627 "x": 10,
628 "y": 3
629 },
630 {
631 "label": ",",
632 "x": 11,
633 "y": 3
634 },
635 {
636 "label": ".",
637 "x": 12,
638 "y": 3
639 },
640 {
641 "label": "/",
642 "x": 13,
643 "y": 3
644 },
645 {
646 "label": "shift",
647 "w": 2.75,
648 "x": 14,
649 "y": 3
650 },
651 {
652 "label": "ctrl",
653 "w": 1.25,
654 "x": 0,
655 "y": 4
656 },
657 {
658 "label": "os",
659 "w": 1.25,
660 "x": 1.25,
661 "y": 4
662 },
663 {
664 "label": "alt",
665 "w": 1.25,
666 "x": 2.5,
667 "y": 4
668 },
669 {
670 "label": "...",
671 "w": 1.5,
672 "x": 3.75,
673 "y": 4
674 },
675 {
676 "label": "\u2014",
677 "w": 1.5,
678 "x": 5.25,
679 "y": 4
680 },
681 {
682 "label": "\u2014",
683 "w": 1.5,
684 "x": 8.75,
685 "y": 4
686 },
687 {
688 "label": "...",
689 "w": 1.5,
690 "x": 10.25,
691 "y": 4
692 },
693 {
694 "label": "alt",
695 "w": 1.25,
696 "x": 11.75,
697 "y": 4
698 },
699 {
700 "label": "fn",
701 "w": 1.25,
702 "x": 13,
703 "y": 4
704 },
705 {
706 "label": "os",
707 "w": 1.25,
708 "x": 14.25,
709 "y": 4
710 },
711 {
712 "label": "ctrl",
713 "w": 1.25,
714 "x": 15.5,
715 "y": 4
716 },
717 {
718 "label": "..",
719 "w": 1.5,
720 "x": 3.75,
721 "y": 5
722 },
723 {
724 "label": ".",
725 "w": 1.5,
726 "x": 5.25,
727 "y": 5
728 },
729 {
730 "label": ".",
731 "w": 1.5,
732 "x": 8.75,
733 "y": 5
734 },
735 {
736 "label": "..",
737 "w": 1.5,
738 "x": 10.25,
739 "y": 5
740 }
741 ]
742 },
743 "LAYOUT_iso": {
744 "layout": [
745 {
746 "label": "esc",
747 "x": 0,
748 "y": 0
749 },
750 {
751 "label": "1",
752 "x": 1,
753 "y": 0
754 },
755 {
756 "label": "2",
757 "x": 2,
758 "y": 0
759 },
760 {
761 "label": "3",
762 "x": 3,
763 "y": 0
764 },
765 {
766 "label": "4",
767 "x": 4,
768 "y": 0
769 },
770 {
771 "label": "5",
772 "x": 5,
773 "y": 0
774 },
775 {
776 "label": "6",
777 "x": 6,
778 "y": 0
779 },
780 {
781 "label": "7",
782 "x": 8.75,
783 "y": 0
784 },
785 {
786 "label": "8",
787 "x": 9.75,
788 "y": 0
789 },
790 {
791 "label": "9",
792 "x": 10.75,
793 "y": 0
794 },
795 {
796 "label": "0",
797 "x": 11.75,
798 "y": 0
799 },
800 {
801 "label": "-",
802 "x": 12.75,
803 "y": 0
804 },
805 {
806 "label": "+",
807 "x": 13.75,
808 "y": 0
809 },
810 {
811 "label": "backspace",
812 "w": 2,
813 "x": 14.75,
814 "y": 0
815 },
816 {
817 "label": "tab",
818 "w": 1.5,
819 "x": 0,
820 "y": 1
821 },
822 {
823 "label": "Q",
824 "x": 1.5,
825 "y": 1
826 },
827 {
828 "label": "W",
829 "x": 2.5,
830 "y": 1
831 },
832 {
833 "label": "E",
834 "x": 3.5,
835 "y": 1
836 },
837 {
838 "label": "R",
839 "x": 4.5,
840 "y": 1
841 },
842 {
843 "label": "T",
844 "x": 5.5,
845 "y": 1
846 },
847 {
848 "label": "Y",
849 "x": 8.25,
850 "y": 1
851 },
852 {
853 "label": "U",
854 "x": 9.25,
855 "y": 1
856 },
857 {
858 "label": "I",
859 "x": 10.25,
860 "y": 1
861 },
862 {
863 "label": "O",
864 "x": 11.25,
865 "y": 1
866 },
867 {
868 "label": "P",
869 "x": 12.25,
870 "y": 1
871 },
872 {
873 "label": "[",
874 "x": 13.25,
875 "y": 1
876 },
877 {
878 "label": "]",
879 "x": 14.25,
880 "y": 1
881 },
882 {
883 "label": "enter",
884 "h": 2,
885 "w": 1.25,
886 "x": 15.5,
887 "y": 1
888 },
889 {
890 "label": "caps",
891 "w": 1.75,
892 "x": 0,
893 "y": 2
894 },
895 {
896 "label": "A",
897 "x": 1.75,
898 "y": 2
899 },
900 {
901 "label": "S",
902 "x": 2.75,
903 "y": 2
904 },
905 {
906 "label": "D",
907 "x": 3.75,
908 "y": 2
909 },
910 {
911 "label": "F",
912 "x": 4.75,
913 "y": 2
914 },
915 {
916 "label": "G",
917 "x": 5.75,
918 "y": 2
919 },
920 {
921 "label": "H",
922 "x": 8.5,
923 "y": 2
924 },
925 {
926 "label": "J",
927 "x": 9.5,
928 "y": 2
929 },
930 {
931 "label": "K",
932 "x": 10.5,
933 "y": 2
934 },
935 {
936 "label": "L",
937 "x": 11.5,
938 "y": 2
939 },
940 {
941 "label": ";",
942 "x": 12.5,
943 "y": 2
944 },
945 {
946 "label": "'",
947 "x": 13.5,
948 "y": 2
949 },
950 {
951 "label": "#",
952 "x": 14.5,
953 "y": 2
954 },
955 {
956 "label": "shift",
957 "w": 1.25,
958 "x": 0,
959 "y": 3
960 },
961 {
962 "label": "\\",
963 "x": 1.25,
964 "y": 3
965 },
966 {
967 "label": "Z",
968 "x": 2.25,
969 "y": 3
970 },
971 {
972 "label": "X",
973 "x": 3.25,
974 "y": 3
975 },
976 {
977 "label": "C",
978 "x": 4.25,
979 "y": 3
980 },
981 {
982 "label": "V",
983 "x": 5.25,
984 "y": 3
985 },
986 {
987 "label": "B",
988 "x": 6.25,
989 "y": 3
990 },
991 {
992 "label": "N",
993 "x": 9,
994 "y": 3
995 },
996 {
997 "label": "M",
998 "x": 10,
999 "y": 3
1000 },
1001 {
1002 "label": ",",
1003 "x": 11,
1004 "y": 3
1005 },
1006 {
1007 "label": ".",
1008 "x": 12,
1009 "y": 3
1010 },
1011 {
1012 "label": "/",
1013 "x": 13,
1014 "y": 3
1015 },
1016 {
1017 "label": "shift",
1018 "w": 2.75,
1019 "x": 14,
1020 "y": 3
1021 },
1022 {
1023 "label": "ctrl",
1024 "w": 1.25,
1025 "x": 0,
1026 "y": 4
1027 },
1028 {
1029 "label": "os",
1030 "w": 1.25,
1031 "x": 1.25,
1032 "y": 4
1033 },
1034 {
1035 "label": "alt",
1036 "w": 1.25,
1037 "x": 2.5,
1038 "y": 4
1039 },
1040 {
1041 "label": "...",
1042 "w": 1.5,
1043 "x": 3.75,
1044 "y": 4
1045 },
1046 {
1047 "label": "\u2014",
1048 "w": 1.5,
1049 "x": 5.25,
1050 "y": 4
1051 },
1052 {
1053 "label": "\u2014",
1054 "w": 1.5,
1055 "x": 8.75,
1056 "y": 4
1057 },
1058 {
1059 "label": "...",
1060 "w": 1.5,
1061 "x": 10.25,
1062 "y": 4
1063 },
1064 {
1065 "label": "alt",
1066 "w": 1.25,
1067 "x": 11.75,
1068 "y": 4
1069 },
1070 {
1071 "label": "fn",
1072 "w": 1.25,
1073 "x": 13,
1074 "y": 4
1075 },
1076 {
1077 "label": "os",
1078 "w": 1.25,
1079 "x": 14.25,
1080 "y": 4
1081 },
1082 {
1083 "label": "ctrl",
1084 "w": 1.25,
1085 "x": 15.5,
1086 "y": 4
1087 },
1088 {
1089 "label": "..",
1090 "w": 1.5,
1091 "x": 3.75,
1092 "y": 5
1093 },
1094 {
1095 "label": ".",
1096 "w": 1.5,
1097 "x": 5.25,
1098 "y": 5
1099 },
1100 {
1101 "label": ".",
1102 "w": 1.5,
1103 "x": 8.75,
1104 "y": 5
1105 },
1106 {
1107 "label": "..",
1108 "w": 1.5,
1109 "x": 10.25,
1110 "y": 5
1111 }
1112 ]
1113 }
1114 }
1115}
diff --git a/keyboards/handwired/dygma/raise/iso/iso.c b/keyboards/handwired/dygma/raise/iso/iso.c
new file mode 100644
index 000000000..ec2607d06
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/iso/iso.c
@@ -0,0 +1,79 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18
19// "led_map" is taken from kaleidoscope
20// LHK = Left Hand Keys
21// LPH = "Leds per hand", which isn't _actually_ the number of leds, but instead
22// is just used for indexing
23#define LHK 33
24#define LPH 72
25
26const uint8_t led_map[DRIVER_LED_TOTAL] = {
27 // left side - 33 keys
28 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 68, 69,
29
30 // right side - 36 keys
31 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 15 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 7 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
32 20 + LPH, 21 + LPH, 22 + LPH, 23 + LPH, 24 + LPH, 25 + LPH, 26 + LPH, 27 + LPH, 28 + LPH, 29 + LPH, 30 + LPH, 31 + LPH, 32 + LPH, 33 + LPH, 68 + LPH, 69 + LPH,
33
34 // left under glow - 30 keys
35 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
36
37 // right underglow - 32 keys
38 34 + LPH, 35 + LPH, 36 + LPH, 37 + LPH, 38 + LPH, 39 + LPH, 40 + LPH, 41 + LPH, 42 + LPH, 43 + LPH, 44 + LPH, 45 + LPH, 46 + LPH, 47 + LPH, 48 + LPH, 49 + LPH, 50 + LPH, 51 + LPH,
39 52 + LPH, 53 + LPH, 54 + LPH, 55 + LPH, 56 + LPH, 57 + LPH, 58 + LPH, 59 + LPH, 60 + LPH, 61 + LPH, 62 + LPH, 63 + LPH, 64 + LPH, 65 + LPH, 0xff
40};
41
42// taken from "key_led_map" and reformatted
43// ISO & ANSI (ANSI has no LED at 20, but this key can never be pressed so we can have just one map).
44led_config_t g_led_config = { {
45 // left hand
46 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , NO_LED } ,
47 { 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , NO_LED } ,
48 { 13 , 14 , 15 , 16 , 17 , 18 , NO_LED , NO_LED } ,
49 { 19 , 20 , 21 , 22 , 23 , 24 , 25 , NO_LED } ,
50 { 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
51
52 // right hand
53 { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
54 { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
55 { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
56 { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
57 { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
58 }, {
59 // generated from the svg image of the keyboard, see create-led-config.js
60 {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
61 {115, 10}, {84, 16}, {92, 16}, {98, 16}, {104, 16}, {110, 16}, {116, 16}, {82, 22}, {88, 22}, {94, 22}, {100, 22},
62 {106, 22}, {112, 22}, {118, 22}, {83, 28}, {90, 28}, {98, 28}, {106, 28}, {116, 28}, {111, 34}, {118, 34}, {168, 3},
63 {159, 3}, {153, 3}, {147, 3}, {141, 3}, {135, 3}, {129, 3}, {170, 13}, {162, 10}, {156, 10}, {150, 10}, {144, 10},
64 {139, 10}, {133, 10}, {127, 10}, {164, 16}, {158, 16}, {152, 16}, {146, 16}, {140, 16}, {134, 16}, {128, 16}, {166, 22},
65 {154, 22}, {148, 22}, {142, 22}, {136, 22}, {130, 22}, {170, 28}, {163, 28}, {156, 28}, {149, 28}, {140, 28}, {131, 28},
66 {136, 34}, {128, 34}, {78, 13}, {78, 6}, {80, 0}, {87, 0}, {95, 0}, {103, 0}, {111, 0}, {119, 0}, {122, 3}, {121, 9},
67 {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61}, {103, 64}, {96, 64},
68 {88, 64}, {81, 63}, {76, 60}, {75, 52}, {75, 46}, {74, 38}, {74, 32}, {75, 27}, {77, 21}, {175, 10}, {175, 4}, {172, 0},
69 {164, 0}, {157, 0}, {149, 0}, {142, 0}, {134, 0}, {127, 0}, {123, 3}, {122, 8}, {122, 15}, {124, 21}, {124, 27}, {124, 33},
70 {126, 38}, {131, 42}, {134, 48}, {135, 55}, {137, 61}, {143, 63}, {150, 63}, {158, 63}, {166, 63}, {173, 63}, {177, 59},
71 {178, 49}, {179, 40}, {179, 31}, {177, 25}, {175, 20}, {175, 15}, {123, 54}
72
73 }, {
74 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
75 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2,
76 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
77 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4
78 }
79};
diff --git a/keyboards/handwired/dygma/raise/iso/rules.mk b/keyboards/handwired/dygma/raise/iso/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/iso/rules.mk
diff --git a/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c b/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c
new file mode 100644
index 000000000..427b9ddb1
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright (C) 2021 Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19enum {
20 QWERTY,
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24[QWERTY] = LAYOUT_ansi(
25 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,
26 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,
27 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,
28 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
29 KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
30 KC_BSPC, KC_ENT, KC_NO, KC_DEL
31)
32};
33
34/* template for new layouts:
35LAYOUT(
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______
42)
43*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md b/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md
new file mode 100644
index 000000000..ceafd78f4
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md
@@ -0,0 +1 @@
# The ansi keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/keymaps/default/keymap.c b/keyboards/handwired/dygma/raise/keymaps/default/keymap.c
new file mode 100644
index 000000000..c766fb720
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright (C) 2021 Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19enum {
20 QWERTY,
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24[QWERTY] = LAYOUT_all(
25 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,
26 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_ENT,
27 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_NUHS,
28 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
29 KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
30 KC_BSPC, KC_ENT, KC_NO, KC_DEL
31)
32};
33
34/* template for new layouts:
35LAYOUT(
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______
42)
43*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/default/readme.md b/keyboards/handwired/dygma/raise/keymaps/default/readme.md
new file mode 100644
index 000000000..1103cb349
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c b/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c
new file mode 100644
index 000000000..2fd0b49b0
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright (C) 2021 Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19enum {
20 QWERTY,
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24[QWERTY] = LAYOUT_iso(
25 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,
26 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_ENT,
27 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_NUHS,
28 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
29 KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
30 KC_BSPC, KC_ENT, KC_NO, KC_DEL
31)
32};
33
34/* template for new layouts:
35LAYOUT(
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______
42)
43*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/iso/readme.md b/keyboards/handwired/dygma/raise/keymaps/iso/readme.md
new file mode 100644
index 000000000..5f8924ae2
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/iso/readme.md
@@ -0,0 +1 @@
# The iso keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/leds.c b/keyboards/handwired/dygma/raise/leds.c
new file mode 100644
index 000000000..3f6037cbf
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/leds.c
@@ -0,0 +1,101 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18#include "i2c_master.h"
19#include "led_tables.h"
20#include "rgb_matrix.h"
21#include <string.h>
22#include "raise.h"
23#include "wire-protocol-constants.h"
24#include "print.h"
25#include "leds.h"
26
27struct __attribute__((packed)) cRGB {
28 uint8_t r;
29 uint8_t g;
30 uint8_t b;
31};
32
33#define LEDS_PER_HAND 72
34#define LED_BANKS 9
35#define LEDS_PER_BANK 8
36#define LED_BYTES_PER_BANK (sizeof(cRGB) * LEDS_PER_BANK)
37
38// shifting << 1 is because drivers/chibios/i2c_master.h expects the address
39// shifted.
40// 0x58 and 0x59 are the addresses defined in dygma/raise/Hand.h
41#define I2C_ADDR_LEFT (0x58 << 1)
42#define I2C_ADDR_RIGHT (0x59 << 1)
43#define I2C_ADDR(hand) ((hand) ? I2C_ADDR_RIGHT : I2C_ADDR_LEFT)
44#define LEFT 0
45#define RIGHT 1
46
47static cRGB led_state[2 * LEDS_PER_HAND];
48
49void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b) {
50 uint8_t buf[] = {TWI_CMD_LED_SET_ALL_TO, b, g, r};
51 i2c_transmit(I2C_ADDR(LEFT), buf, sizeof(buf), I2C_TIMEOUT);
52 wait_us(10);
53 i2c_transmit(I2C_ADDR(RIGHT), buf, sizeof(buf), I2C_TIMEOUT);
54 wait_us(10);
55}
56
57void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b) {
58 int sled = led_map[led];
59 uint8_t buf[] = {TWI_CMD_LED_SET_ONE_TO, sled & 0x1f, b, g, r};
60 int hand = (sled >= LEDS_PER_HAND) ? RIGHT : LEFT;
61 i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), I2C_TIMEOUT);
62 wait_us(10);
63}
64
65static void set_color(int index, uint8_t r, uint8_t g, uint8_t b) {
66 int sled = led_map[index];
67
68 led_state[sled].r = r;
69 led_state[sled].g = g;
70 led_state[sled].b = b;
71}
72
73static void set_color_all(uint8_t r, uint8_t g, uint8_t b) {
74 for (int i = 0; i < DRIVER_LED_TOTAL; i++) set_color(i, r, g, b);
75}
76
77static void init(void) {}
78
79static void flush(void) {
80 uint8_t command[1 + LED_BYTES_PER_BANK];
81
82 // SUBTLE(ibash) alternate hands when transmitting led data, otherwise the
83 // mcu in the hand seems to have trouble keeping up with the i2c
84 // transmission
85 for (int bank = 0; bank < LED_BANKS; bank++) {
86 for (int hand = 0; hand < 2; hand++) {
87 int addr = I2C_ADDR(hand);
88 int i = (hand * LEDS_PER_HAND) + (bank * LEDS_PER_BANK);
89 uint8_t *bank_data = (uint8_t *)&led_state[i];
90
91 command[0] = TWI_CMD_LED_BASE + bank;
92 memcpy(&command[1], bank_data, LED_BYTES_PER_BANK);
93 i2c_transmit(addr, command, sizeof(command), I2C_TIMEOUT);
94
95 // delay to prevent issues with the i2c bus
96 wait_us(10);
97 }
98 }
99}
100
101const rgb_matrix_driver_t rgb_matrix_driver = {.init = init, .flush = flush, .set_color = set_color, .set_color_all = set_color_all};
diff --git a/keyboards/handwired/dygma/raise/leds.h b/keyboards/handwired/dygma/raise/leds.h
new file mode 100644
index 000000000..8d70ed70b
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/leds.h
@@ -0,0 +1,25 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20#include "rgb_matrix.h"
21
22extern const uint8_t led_map[DRIVER_LED_TOTAL];
23
24void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b);
25void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b);
diff --git a/keyboards/handwired/dygma/raise/matrix.c b/keyboards/handwired/dygma/raise/matrix.c
new file mode 100644
index 000000000..bbcf697a5
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/matrix.c
@@ -0,0 +1,104 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include "quantum.h"
17#include "i2c_master.h"
18#include <string.h>
19#include "wire-protocol-constants.h"
20
21// shifting << 1 is because drivers/chibios/i2c_master.h expects the address
22// shifted.
23// 0x58 and 0x59 are the addresses defined in dygma/raise/Hand.h
24#define I2C_ADDR_LEFT (0x58 << 1)
25#define I2C_ADDR_RIGHT (0x59 << 1)
26#define I2C_ADDR(hand) ((hand) ? I2C_ADDR_RIGHT : I2C_ADDR_LEFT)
27#define LEFT 0
28#define RIGHT 1
29
30/* If no key events have occurred, the scanners will time out on reads.
31 * So we don't want to be too permissive here. */
32// TODO(ibash) not convinced this is needed...
33#define MY_I2C_TIMEOUT 10
34#define ROWS_PER_HAND (MATRIX_ROWS / 2)
35
36typedef enum { CHANGED, OFFLINE, UNCHANGED } read_hand_t;
37
38static read_hand_t last_state[2] = {OFFLINE, OFFLINE};
39
40static read_hand_t i2c_read_hand(int hand, matrix_row_t current_matrix[]) {
41 // dygma raise firmware says online is true iff we get the number of
42 // expected bytes (e.g. 6 bytes or ROWS_PER_HAND + 1).
43 // In the case where no keys are pressed the keyscanner will send the same 0
44 // byte over and over. -- so this case is set.
45 //
46 // On the stm32 side if we don't get as many bytes as expecetd the
47 // i2c_receive times out -- so online can be defined as getting
48 // "I2C_STATUS_SUCCESS".
49
50 uint8_t buf[ROWS_PER_HAND + 1];
51 i2c_status_t ret = i2c_receive(I2C_ADDR(hand), buf, sizeof(buf), MY_I2C_TIMEOUT);
52 if (ret != I2C_STATUS_SUCCESS) {
53 return OFFLINE;
54 }
55
56 if (buf[0] != TWI_REPLY_KEYDATA) {
57 return UNCHANGED;
58 }
59
60 int start_row = hand ? ROWS_PER_HAND : 0;
61 matrix_row_t *out = &current_matrix[start_row];
62 memcpy(out, &buf[1], ROWS_PER_HAND);
63
64 return CHANGED;
65}
66
67static int i2c_set_keyscan_interval(int hand, int delay) {
68 uint8_t buf[] = {TWI_CMD_KEYSCAN_INTERVAL, delay};
69 i2c_status_t ret = i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), MY_I2C_TIMEOUT);
70 return ret;
71}
72
73void matrix_init_custom(void) {
74 i2c_init();
75
76 // ref: https://github.com/Dygmalab/Kaleidoscope/blob/7bac53de106c42ffda889e6854abc06cf43a3c6f/src/kaleidoscope/device/dygma/Raise.cpp#L83
77 // ref: https://github.com/Dygmalab/Kaleidoscope/blob/7bac53de106c42ffda889e6854abc06cf43a3c6f/src/kaleidoscope/device/dygma/raise/Hand.cpp#L73
78 i2c_set_keyscan_interval(LEFT, 50);
79 i2c_set_keyscan_interval(RIGHT, 50);
80}
81
82bool matrix_scan_custom(matrix_row_t current_matrix[]) {
83 // HACK(ibash) without the delay between the two calls to i2c_read_hand, the
84 // second call to i2c_read_hand breaks. I observed that the i2s start isn't
85 // sent, or maybe it is, but the address matcher in the attiny can't recognize
86 // it. In any case, a short delay fixes it.
87 read_hand_t left_state = i2c_read_hand(LEFT, current_matrix);
88 wait_us(10);
89 read_hand_t right_state = i2c_read_hand(RIGHT, current_matrix);
90
91
92 if ((last_state[LEFT] == OFFLINE && left_state != OFFLINE) || (last_state[RIGHT] == OFFLINE && right_state != OFFLINE)) {
93 // reinitialize both sides
94 i2c_set_keyscan_interval(LEFT, 50);
95 i2c_set_keyscan_interval(RIGHT, 50);
96 }
97
98 last_state[LEFT] = left_state;
99 last_state[RIGHT] = right_state;
100
101 bool matrix_has_changed = left_state == CHANGED || right_state == CHANGED;
102
103 return matrix_has_changed;
104}
diff --git a/keyboards/handwired/dygma/raise/mcuconf.h b/keyboards/handwired/dygma/raise/mcuconf.h
new file mode 100644
index 000000000..fba1cace2
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/mcuconf.h
@@ -0,0 +1,25 @@
1/* Copyright 2021 Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include_next <mcuconf.h>
20
21#undef STM32_I2C_USE_I2C1
22#define STM32_I2C_USE_I2C1 TRUE
23
24#undef STM32_I2C_BUSY_TIMEOUT
25#define STM32_I2C_BUSY_TIMEOUT 5
diff --git a/keyboards/handwired/dygma/raise/raise.c b/keyboards/handwired/dygma/raise/raise.c
new file mode 100644
index 000000000..d9023093b
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/raise.c
@@ -0,0 +1,22 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#include "raise.h"
18
19void keyboard_post_init_kb(void) {
20 set_all_leds_to(0, 0, 0);
21 keyboard_post_init_user();
22}
diff --git a/keyboards/handwired/dygma/raise/raise.h b/keyboards/handwired/dygma/raise/raise.h
new file mode 100644
index 000000000..6310fc3d0
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/raise.h
@@ -0,0 +1,83 @@
1/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#include "leds.h"
22
23#define XXX KC_NO
24
25#define LAYOUT_all( \
26 L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
27 L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
28 L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
29 L30, L31, L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
30 L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
31 L46, L47, R47, R46 \
32) { \
33 { L00, L01, L02, L03, L04, L05, L06, XXX }, \
34 { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
35 { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
36 { L30, L31, L32, L33, L34, L35, L36, XXX }, \
37 { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
38 { R00, R01, R02, R03, R04, R05, R06, XXX }, \
39 { R10, R11, R12, R13, R14, R15, R16, R17 }, \
40 { R20, R21, R22, R23, R24, R25, R26, XXX }, \
41 { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
42 { R40, R41, R42, R43, R44, R45, R46, R47 } \
43}
44
45#define LAYOUT_ansi( \
46 L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
47 L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
48 L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
49 L31 , L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
50 L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
51 L46, L47, R47, R46 \
52) { \
53 { L00, L01, L02, L03, L04, L05, L06, XXX }, \
54 { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
55 { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
56 { XXX, L31, L32, L33, L34, L35, L36, XXX }, \
57 { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
58 { R00, R01, R02, R03, R04, R05, R06, XXX }, \
59 { R10, R11, R12, R13, R14, R15, R16, R17 }, \
60 { R20, R21, R22, R23, R24, R25, R26, XXX }, \
61 { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
62 { R40, R41, R42, R43, R44, R45, R46, R47 } \
63}
64
65#define LAYOUT_iso( \
66 L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
67 L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
68 L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
69 L30, L31, L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
70 L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
71 L46, L47, R47, R46 \
72) { \
73 { L00, L01, L02, L03, L04, L05, L06, XXX }, \
74 { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
75 { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
76 { L30, L31, L32, L33, L34, L35, L36, XXX }, \
77 { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
78 { R00, R01, R02, R03, R04, R05, R06, XXX }, \
79 { R10, R11, R12, R13, R14, R15, R16, R17 }, \
80 { R20, R21, R22, R23, R24, R25, R26, XXX }, \
81 { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
82 { R40, R41, R42, R43, R44, R45, R46, R47 } \
83}
diff --git a/keyboards/handwired/dygma/raise/readme.md b/keyboards/handwired/dygma/raise/readme.md
new file mode 100644
index 000000000..219ea5f3c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/readme.md
@@ -0,0 +1,55 @@
1# Raise
2
3![](https://cdn.shopify.com/s/files/1/0374/9448/9228/files/Dygma-Raise-Hero2.png)
4
5* Keyboard Maintainer: [ibash](https://github.com/ibash)
6* Hardware Supported: [F411 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1) with the [Dygma Raise](http://www.dygma.com)
7* Hardware Availability: See below
8
9
10Make example for this keyboard (after setting up your build environment):
11
12 make handwired/dygma/raise/ansi:default
13
14Flashing example for this keyboard:
15
16 make handwired/dygma/raise/ansi:default:flash
17
18See 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).
19
20## Hardware
21
22QMK does not currently support the [Dygma Neuron](https://dygma.com/products/neuron-black) because QMK does not support SAMD21 which the Neuron has.
23Instead this code uses a [STM32 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1) to create a Neuron replacement.
24
25## Required Hardware
26
271. [STM32 Blackpill from WeAct Studio](https://github.com/WeActTC/MiniSTM32F4x1) (via [aliexpress](https://www.aliexpress.com/item/1005001456186625.html) or [adafruit](https://www.adafruit.com/product/4877)).
28
292. 2x USB-C breakouts (via [keeb](https://keeb.io/collections/diy-parts/products/usb-c-breakout-board) or [adafruit](https://www.adafruit.com/product/4090)).
30
313. 2x 2.7KΩ resistors (via [digikey](https://www.digikey.com/en/products/detail/yageo/CFR-25JB-52-2K7/684)).
32
334. Breadboard or PCB proto board, wires, solder, etc.
34
35## Wiring
36
37Briefly each raise hand uses I2C to communicate with the Neuron:
38
391. USB D+ is the I2C clock line.
402. USB D- is the I2C data line.
413. The resistors are pullup resistors for the I2C lines.
424. Each hand draws power from the USB port.
43
44![](https://i.imgur.com/ai9rcHal.png)
45
46<p float="left">
47 <img src="https://i.imgur.com/GvXfnpf.jpg" width="200">
48 <img src="https://i.imgur.com/kFKFjrU.jpg" width="200">
49</p>
50
51We are also prototyping a [custom pcb](https://www.reddit.com/r/DygmaLab/comments/ojgm95/pcb_for_running_qmk_on_the_raise/?utm_source=share&utm_medium=web2x&context=3).
52
53<p>
54 <img src="https://i.imgur.com/xfzIxkW.png" width="200">
55</p>
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk
new file mode 100644
index 000000000..a316e1af1
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/rules.mk
@@ -0,0 +1,30 @@
1# MCU name
2MCU = STM32F411
3
4# Bootloader selection
5BOOTLOADER = stm32-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = no # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # USB Nkey Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19RGB_MATRIX_ENABLE = yes
20RGB_MATRIX_DRIVER = custom
21CUSTOM_MATRIX = lite
22
23# TODO(ibash) we don't actually need to enable raw, but there's some side effect
24# in the usb driver this triggers that allows mousekeys to work. The same side
25# effect happens if console or midi is enabled -- so something to do with
26# alternate usb endpoints.
27RAW_ENABLE = yes
28
29QUANTUM_LIB_SRC += i2c_master.c
30SRC += leds.c matrix.c
diff --git a/keyboards/handwired/dygma/raise/wire-protocol-constants.h b/keyboards/handwired/dygma/raise/wire-protocol-constants.h
new file mode 100644
index 000000000..67c4ca0b2
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/wire-protocol-constants.h
@@ -0,0 +1,51 @@
1/* KeyboardioScanner
2 * Copyright (C) 2015-2018 Keyboard.io, Inc
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23#pragma once
24
25#define TWI_CMD_NONE 0x00
26#define TWI_CMD_VERSION 0x01
27#define TWI_CMD_KEYSCAN_INTERVAL 0x02
28#define TWI_CMD_LED_SET_ALL_TO 0x03
29#define TWI_CMD_LED_SET_ONE_TO 0x04
30#define TWI_CMD_COLS_USE_PULLUPS 0x05
31#define TWI_CMD_LED_SPI_FREQUENCY 0x06
32
33#define LED_SPI_FREQUENCY_4MHZ 0x07
34#define LED_SPI_FREQUENCY_2MHZ 0x06
35#define LED_SPI_FREQUENCY_1MHZ 0x05
36#define LED_SPI_FREQUENCY_512KHZ 0x04
37#define LED_SPI_FREQUENCY_256KHZ 0x03
38#define LED_SPI_FREQUENCY_128KHZ 0x02
39#define LED_SPI_FREQUENCY_64KHZ 0x01
40#define LED_SPI_OFF 0x00
41
42
43// 512KHZ seems to be the sweet spot in early testing
44// so make it the default
45#define LED_SPI_FREQUENCY_DEFAULT LED_SPI_FREQUENCY_512KHZ
46
47
48#define TWI_CMD_LED_BASE 0x80
49
50#define TWI_REPLY_NONE 0x00
51#define TWI_REPLY_KEYDATA 0x01