aboutsummaryrefslogtreecommitdiff
path: root/keyboards/marksard
diff options
context:
space:
mode:
authormarksard <38324387+marksard@users.noreply.github.com>2020-09-04 20:14:34 +0900
committerGitHub <noreply@github.com>2020-09-04 04:14:34 -0700
commit6e32dd123ff0ff49768f43c97bbc10836ff8a629 (patch)
tree02e1288b9873a41af13707447985d4318372b9d4 /keyboards/marksard
parent82a830196f5a71ced413af302ce4dd12ec034782 (diff)
downloadqmk_firmware-6e32dd123ff0ff49768f43c97bbc10836ff8a629.tar.gz
qmk_firmware-6e32dd123ff0ff49768f43c97bbc10836ff8a629.zip
[Keyboard] add rhymestone by marksard (#9708)
* Keyboard: add treeadstone48 * rename layout defines * Use of pragma once * move common include code * fixed info.json * change keymap layout from kc to normal * fix alpha revision keymap * fixed info.json * remove USE_Link_Time_Optimization * Add keyboard the Rhymestone * fixed by PR review * fixed by review * Update keyboards/rhymestone/readme.md fixed * Fixed possible changes to oled_write_P * Change the name of the layout definition * Update keyboards/rhymestone/info.json * Update keyboards/rhymestone/keymaps/default/keymap.c * Update keyboards/rhymestone/keymaps/default/keymap.c * Update keyboards/rhymestone/keymaps/default/keymap.c * Update keyboards/rhymestone/keymaps/default/keymap.c * Update keyboards/rhymestone/keymaps/switch_tester/keymap.c * Update keyboards/rhymestone/keymaps/switch_tester/keymap.c * Update keyboards/rhymestone/rev1/rev1.h * add empty rules.mk in rev1 * Update from other review * Update keyboards/rhymestone/rules.mk * fixed other review * move rhymestone to marksard directory * move rhymestone to marksard directory (Commit the necessary modifications) * remove
Diffstat (limited to 'keyboards/marksard')
-rw-r--r--keyboards/marksard/rhymestone/common/glcdfont.c233
-rw-r--r--keyboards/marksard/rhymestone/common/oled_helper.c87
-rw-r--r--keyboards/marksard/rhymestone/common/oled_helper.h32
-rw-r--r--keyboards/marksard/rhymestone/info.json213
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/config.h27
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/keymap.c226
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/rules.mk9
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c76
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md3
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk7
-rw-r--r--keyboards/marksard/rhymestone/readme.md18
-rw-r--r--keyboards/marksard/rhymestone/rev1/config.h152
-rw-r--r--keyboards/marksard/rhymestone/rev1/rev1.c108
-rw-r--r--keyboards/marksard/rhymestone/rev1/rev1.h89
-rw-r--r--keyboards/marksard/rhymestone/rev1/rules.mk0
-rw-r--r--keyboards/marksard/rhymestone/rules.mk27
16 files changed, 1307 insertions, 0 deletions
diff --git a/keyboards/marksard/rhymestone/common/glcdfont.c b/keyboards/marksard/rhymestone/common/glcdfont.c
new file mode 100644
index 000000000..d9438aa5a
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/glcdfont.c
@@ -0,0 +1,233 @@
1// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
2// See gfxfont.h for newer custom bitmap font info.
3
4#include "progmem.h"
5
6// Standard ASCII 5x7 font
7
8static const unsigned char font[] PROGMEM = {
9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
11 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
12 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
13 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
14 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
15 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
16 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
17 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
18 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
19 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
20 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
21 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
22 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
23 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
24 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
25 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
26 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
27 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
28 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
29 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
30 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
31 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
32 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
33 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
34 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
35 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
36 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
37 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
38 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
39 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
40 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
43 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
44 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
45 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
46 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
47 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
48 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
49 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
50 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
51 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
52 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
53 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
54 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
55 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
56 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
57 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
58 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
59 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
60 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
61 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
62 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
63 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
64 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
65 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
66 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
67 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
68 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
69 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
70 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
71 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
72 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
73 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
74 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
75 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
76 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
77 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
78 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
79 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
80 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
81 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
82 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
83 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
84 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
85 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
86 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
87 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
88 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
89 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
90 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
91 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
92 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
93 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
94 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
95 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
96 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
97 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
98 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
99 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
100 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
101 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
102 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
103 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
104 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
105 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
106 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
107 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
108 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
109 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
110 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
111 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
112 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
113 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
114 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
115 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
116 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
117 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
118 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
119 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
120 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
121 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
122 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
123 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
124 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
125 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
126 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
127 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
128 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
129 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
130 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
131 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
132 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
133 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
134 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
135 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
136 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
137 0x00, 0x00, 0xD8, 0xDE, 0xDE, 0xDE,
138 0x1E, 0x1E, 0x1E, 0x1E, 0xFE, 0xFE,
139 0xFE, 0xFE, 0x00, 0xF0, 0xFF, 0xFF,
140 0xFF, 0xE3, 0xE0, 0xE0, 0xE0, 0xE0,
141 0xE0, 0xE0, 0x00, 0x80, 0xE0, 0xE0,
142 0xE0, 0x00, 0x00, 0x00, 0x00, 0xE0,
143 0xE0, 0xE0, 0xE0, 0x00, 0xE0, 0xE0,
144 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
145 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
146 0xE0, 0xE0, 0xE0, 0x00, 0xC0, 0xE0,
147 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
148 0xE0, 0xE0, 0xE0, 0x00, 0x80, 0xE0,
149 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
150 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFC,
151 0xFC, 0xFC, 0xFC, 0xE0, 0xE0, 0x80,
152 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
153 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00,
154 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
155 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x80,
156 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
157 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x80, 0xFE, 0xFF, 0xFF, 0x7F, 0x0F,
170 0x0E, 0x0E, 0xCE, 0xFF, 0xFF, 0xFF,
171 0x7F, 0x80, 0xFE, 0xFF, 0xFF, 0x3F,
172 0x01, 0x01, 0x01, 0x81, 0xFF, 0xFF,
173 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF,
174 0x8F, 0x80, 0x80, 0x80, 0xF8, 0xFF,
175 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0xFF,
176 0x1F, 0x01, 0x01, 0xE1, 0xFF, 0xFF,
177 0xFF, 0x0F, 0x01, 0x01, 0xF1, 0xFF,
178 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF,
179 0xFF, 0x9D, 0x9D, 0x9D, 0x9D, 0x9F,
180 0x9F, 0x9F, 0x1F, 0x80, 0x9F, 0x9F,
181 0x9F, 0x9F, 0x9D, 0x9D, 0xDD, 0xFD,
182 0xFD, 0xFD, 0x39, 0xC0, 0xFF, 0xFF,
183 0xFF, 0x9F, 0x81, 0x01, 0xF1, 0xFF,
184 0xFF, 0xFF, 0x87, 0x81, 0x81, 0x81,
185 0xF9, 0xFF, 0xFF, 0xFF, 0x03, 0xFC,
186 0xFF, 0xFF, 0x3F, 0x01, 0x01, 0x01,
187 0x01, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0,
188 0xFF, 0xFF, 0xFF, 0x9F, 0x9D, 0x9D,
189 0x9D, 0x9D, 0x9F, 0x9F, 0x1F, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
202 0x00, 0x00, 0x07, 0x07, 0x07, 0x07,
203 0x00, 0x07, 0x07, 0x07, 0x07, 0x00,
204 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
205 0x07, 0x60, 0x73, 0x77, 0x77, 0x77,
206 0x77, 0x77, 0x77, 0x7F, 0x7F, 0x7F,
207 0x1F, 0x00, 0x07, 0x07, 0x07, 0x07,
208 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
209 0x03, 0x00, 0x00, 0x00, 0x07, 0x07,
210 0x07, 0x01, 0x00, 0x07, 0x07, 0x07,
211 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
212 0x07, 0x00, 0x00, 0x07, 0x07, 0x07,
213 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
214 0x07, 0x03, 0x00, 0x03, 0x07, 0x07,
215 0x07, 0x07, 0x07, 0x00, 0x03, 0x07,
216 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
217 0x07, 0x07, 0x03, 0x00, 0x07, 0x07,
218 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
219 0x07, 0x07, 0x07, 0x07, 0x00, 0x03,
220 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
221 0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233};
diff --git a/keyboards/marksard/rhymestone/common/oled_helper.c b/keyboards/marksard/rhymestone/common/oled_helper.c
new file mode 100644
index 000000000..537650025
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/oled_helper.c
@@ -0,0 +1,87 @@
1#ifdef OLED_DRIVER_ENABLE
2#include QMK_KEYBOARD_H
3#include <stdio.h>
4#include <string.h>
5
6void render_logo(void) {
7
8 static const char PROGMEM logo_buf[]={
9 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
10 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
11 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
12 0};
13
14 oled_write_P(logo_buf, false);
15}
16
17void render_lock_status(void) {
18
19 // Host Keyboard LED Status
20 led_t led_state = host_keyboard_led_state();
21
22 oled_write_P(PSTR("Lock:"), false);
23 if (led_state.num_lock) {
24 oled_write_P(PSTR("Num "), false);
25 }
26 if (led_state.caps_lock) {
27 oled_write_P(PSTR("Caps "), false);
28 }
29 if (led_state.scroll_lock) {
30 oled_write_P(PSTR("Scrl"), false);
31 }
32
33 oled_write_P(PSTR("\n"), false);
34}
35
36static char keylog_buf[24] = "Key state ready.\n";
37const char code_to_name[60] = {
38 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
39 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
40 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
41 '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
42 'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
43 ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
44
45void update_key_status(uint16_t keycode, keyrecord_t *record) {
46
47 if (!record->event.pressed) return;
48
49 char name = (keycode < 60) ? code_to_name[keycode] : ' ';
50 snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c\n",
51 record->event.key.row, record->event.key.col,
52 (uint16_t)keycode, name);
53}
54
55void render_key_status(void) {
56
57 oled_write(keylog_buf, false);
58}
59
60#ifdef RGBLIGHT_ENABLE
61extern rgblight_config_t rgblight_config;
62
63static char led_buf[24] = "LED state ready.\n";
64rgblight_config_t rgblight_config_bak;
65void update_led_status(void) {
66
67 if (rgblight_config_bak.enable != rgblight_config.enable ||
68 rgblight_config_bak.mode != rgblight_config.mode ||
69 rgblight_config_bak.hue != rgblight_config.hue ||
70 rgblight_config_bak.sat != rgblight_config.sat ||
71 rgblight_config_bak.val != rgblight_config.val
72 ) {
73 snprintf(led_buf, sizeof(led_buf) - 1, "LED%c:%2d hsv:%2d %2d %2d\n",
74 rgblight_config.enable ? '*' : '.', (uint8_t)rgblight_config.mode,
75 (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP),
76 (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP),
77 (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP));
78 rgblight_config_bak = rgblight_config;
79 }
80}
81
82void render_led_status(void) {
83
84 oled_write(led_buf, false);
85}
86#endif
87#endif
diff --git a/keyboards/marksard/rhymestone/common/oled_helper.h b/keyboards/marksard/rhymestone/common/oled_helper.h
new file mode 100644
index 000000000..02f7b94fa
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/oled_helper.h
@@ -0,0 +1,32 @@
1#ifdef OLED_DRIVER_ENABLE
2
3void render_logo(void);
4void render_lock_status(void);
5void update_key_status(uint16_t keycode, keyrecord_t *record);
6void render_key_status(void);
7
8#define RENDER_LOGO() render_logo()
9#define RENDER_LOCK_STATUS() render_lock_status()
10#define UPDATE_KEY_STATUS(a, b) update_key_status(a, b)
11#define RENDER_KEY_STATUS() render_key_status()
12
13#ifdef RGBLIGHT_ENABLE
14 void update_led_status(void);
15 void render_led_status(void);
16 #define UPDATE_LED_STATUS() update_led_status()
17 #define RENDER_LED_STATUS() render_led_status()
18#else
19 #define UPDATE_LED_STATUS()
20 #define RENDER_LED_STATUS()
21#endif
22
23#else
24
25#define RENDER_LOGO()
26#define RENDER_LOCK_STATUS()
27#define UPDATE_KEY_STATUS(a, b)
28#define RENDER_KEY_STATUS()
29#define UPDATE_LED_STATUS()
30#define RENDER_LED_STATUS()
31
32#endif
diff --git a/keyboards/marksard/rhymestone/info.json b/keyboards/marksard/rhymestone/info.json
new file mode 100644
index 000000000..2c1ba9b37
--- /dev/null
+++ b/keyboards/marksard/rhymestone/info.json
@@ -0,0 +1,213 @@
1{
2 "keyboard_name": "Rhymestone",
3 "url": "https://github.com/marksard/Keyboards",
4 "maintainer": "marksard",
5 "width": 11,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_4x10": {
9 "layout": [
10 {
11 "label": "Q",
12 "x": 0,
13 "y": 0
14 },
15 {
16 "label": "W",
17 "x": 1,
18 "y": 0
19 },
20 {
21 "label": "E",
22 "x": 2,
23 "y": 0
24 },
25 {
26 "label": "R",
27 "x": 3,
28 "y": 0
29 },
30 {
31 "label": "T",
32 "x": 4,
33 "y": 0
34 },
35 {
36 "label": "Y",
37 "x": 6,
38 "y": 0
39 },
40 {
41 "label": "U",
42 "x": 7,
43 "y": 0
44 },
45 {
46 "label": "I",
47 "x": 8,
48 "y": 0
49 },
50 {
51 "label": "O",
52 "x": 9,
53 "y": 0
54 },
55 {
56 "label": "P",
57 "x": 10,
58 "y": 0
59 },
60 {
61 "label": "A",
62 "x": 0,
63 "y": 1
64 },
65 {
66 "label": "S",
67 "x": 1,
68 "y": 1
69 },
70 {
71 "label": "D",
72 "x": 2,
73 "y": 1
74 },
75 {
76 "label": "F",
77 "x": 3,
78 "y": 1
79 },
80 {
81 "label": "G",
82 "x": 4,
83 "y": 1
84 },
85 {
86 "label": "H",
87 "x": 6,
88 "y": 1
89 },
90 {
91 "label": "J",
92 "x": 7,
93 "y": 1
94 },
95 {
96 "label": "K",
97 "x": 8,
98 "y": 1
99 },
100 {
101 "label": "L",
102 "x": 9,
103 "y": 1
104 },
105 {
106 "label": "Enter",
107 "x": 10,
108 "y": 1
109 },
110 {
111 "label": "Z",
112 "x": 0,
113 "y": 2
114 },
115 {
116 "label": "X",
117 "x": 1,
118 "y": 2
119 },
120 {
121 "label": "C",
122 "x": 2,
123 "y": 2
124 },
125 {
126 "label": "V",
127 "x": 3,
128 "y": 2
129 },
130 {
131 "label": "B",
132 "x": 4,
133 "y": 2
134 },
135 {
136 "label": "N",
137 "x": 6,
138 "y": 2
139 },
140 {
141 "label": "M",
142 "x": 7,
143 "y": 2
144 },
145 {
146 "label": ",",
147 "x": 8,
148 "y": 2
149 },
150 {
151 "label": ".",
152 "x": 9,
153 "y": 2
154 },
155 {
156 "label": "/",
157 "x": 10,
158 "y": 2
159 },
160 {
161 "label": "Ctrl",
162 "x": 0,
163 "y": 3
164 },
165 {
166 "label": "Win",
167 "x": 1,
168 "y": 3
169 },
170 {
171 "label": "Alt",
172 "x": 2,
173 "y": 3
174 },
175 {
176 "label": "Lower",
177 "x": 3,
178 "y": 3
179 },
180 {
181 "label": "backspace",
182 "x": 4,
183 "y": 3
184 },
185 {
186 "label": "space",
187 "x": 6,
188 "y": 3
189 },
190 {
191 "label": "Upper",
192 "x": 7,
193 "y": 3
194 },
195 {
196 "label": "Alt",
197 "x": 8,
198 "y": 3
199 },
200 {
201 "label": "App",
202 "x": 9,
203 "y": 3
204 },
205 {
206 "label": "Ctrl",
207 "x": 10,
208 "y": 3
209 }
210 ]
211 }
212 }
213}
diff --git a/keyboards/marksard/rhymestone/keymaps/default/config.h b/keyboards/marksard/rhymestone/keymaps/default/config.h
new file mode 100644
index 000000000..95f2d039b
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/config.h
@@ -0,0 +1,27 @@
1/* Copyright 2020 marksard
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// place overrides here
20
21// If you use the HashTwenty(alpha), please enable USE_HASHTWENTY
22// #define USE_HASHTWENTY
23
24// If you plug in the USB on the right side, please enable MASTER_RIGHT
25// #define MASTER_RIGHT
26
27#define OLED_FONT_H "keyboards/rhymestone/common/glcdfont.c"
diff --git a/keyboards/marksard/rhymestone/keymaps/default/keymap.c b/keyboards/marksard/rhymestone/keymaps/default/keymap.c
new file mode 100644
index 000000000..2d695f76b
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/keymap.c
@@ -0,0 +1,226 @@
1/* Copyright 2020 marksard
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 QMK_KEYBOARD_H
17#include "./common/oled_helper.h"
18
19enum layer_number {
20 _BASE,
21 _LOWER,
22 _RAISE,
23 _ADJUST,
24};
25
26enum custom_keycodes {
27 LOWER = SAFE_RANGE,
28 RAISE,
29 ADJUST,
30 KANJI,
31 RGBRST
32};
33
34// Base layer mod tap
35#define KC_Z_SF LSFT_T(KC_Z)
36#define KC_SLSF RSFT_T(KC_SLSH)
37
38// Lower layer mod tap
39#define KC_11SF LSFT_T(KC_F11)
40#define KC_GRSF RSFT_T(KC_GRV)
41
42const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 [_BASE] = LAYOUT_ortho_4x10(
44 //,---------------------------------------------------------------------------------------------------.
45 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
46 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
47 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
48 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
49 KC_Z_SF, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSF,
50 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
51 KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RGUI, KC_APP, KC_RCTL
52 //,---------------------------------------------------------------------------------------------------.
53 ),
54
55 [_LOWER] = LAYOUT_ortho_4x10(
56 //,---------------------------------------------------------------------------------------------------.
57 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
58 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
59 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT,
60 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
61 KC_11SF, KC_F12, KC_ESC, KC_TAB, KANJI, KC_DEL, XXXXXXX, XXXXXXX, KC_RO, KC_GRSF,
62 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
63 _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______
64 //,---------------------------------------------------------------------------------------------------.
65 ),
66
67 [_RAISE] = LAYOUT_ortho_4x10(
68 //,---------------------------------------------------------------------------------------------------.
69 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
70 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
71 KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RSFT,
72 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
73 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_SLSF,
74 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
75 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
76 //,---------------------------------------------------------------------------------------------------.
77 ),
78
79 [_ADJUST] = LAYOUT_ortho_4x10(
80 //,---------------------------------------------------------------------------------------------------.
81 RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
82 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
83 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
84 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
85 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX,
86 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
87 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
88 //,---------------------------------------------------------------------------------------------------.
89 )
90};
91
92#define L_BASE _BASE
93#define L_LOWER (1<<_LOWER)
94#define L_RAISE (1<<_RAISE)
95#define L_ADJUST (1<<_ADJUST)
96#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
97
98#ifdef OLED_DRIVER_ENABLE
99#include <stdio.h>
100#include <string.h>
101
102typedef struct {
103 uint8_t state;
104 char name[8];
105}LAYER_DISPLAY_NAME;
106
107#define LAYER_DISPLAY_MAX 5
108const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
109 {L_BASE, "Base"},
110 {L_BASE + 1, "Base"},
111 {L_LOWER, "Lower"},
112 {L_RAISE, "Raise"},
113 {L_ADJUST_TRI, "Adjust"}
114};
115
116static inline const char* get_leyer_status(void) {
117
118 for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) {
119 if (layer_state == 0 && layer_display_name[i].state == default_layer_state) {
120
121 return layer_display_name[i].name;
122 } else if (layer_state != 0 && layer_display_name[i].state == layer_state) {
123
124 return layer_display_name[i].name;
125 }
126 }
127
128 return "?";
129}
130
131static char layer_status_buf[24] = "Layer state ready.\n";
132static inline void update_keymap_status(void) {
133
134 snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n",
135 keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status());
136}
137
138static inline void render_keymap_status(void) {
139
140 oled_write(layer_status_buf, false);
141}
142
143#define UPDATE_KEYMAP_STATUS() update_keymap_status()
144
145static inline void render_status(void) {
146
147 UPDATE_LED_STATUS();
148 RENDER_LED_STATUS();
149 render_keymap_status();
150 RENDER_LOCK_STATUS();
151 RENDER_KEY_STATUS();
152}
153
154oled_rotation_t oled_init_user(oled_rotation_t rotation) {
155
156 if (is_keyboard_master())
157 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
158 return rotation;
159}
160
161void oled_task_user(void) {
162
163 if (is_keyboard_master()) {
164 render_status();
165 } else {
166 render_logo();
167 }
168}
169
170#else
171
172#define UPDATE_KEYMAP_STATUS()
173
174#endif
175
176bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177
178 UPDATE_KEY_STATUS(keycode, record);
179
180 bool result = false;
181 switch (keycode) {
182 case LOWER:
183 if (record->event.pressed) {
184 layer_on(_LOWER);
185 } else {
186 layer_off(_LOWER);
187 }
188
189 update_tri_layer(_LOWER, _RAISE, _ADJUST);
190 break;
191 case RAISE:
192 if (record->event.pressed) {
193 layer_on(_RAISE);
194 } else {
195 layer_off(_RAISE);
196 }
197
198 update_tri_layer(_LOWER, _RAISE, _ADJUST);
199 break;
200 case KANJI:
201 if (record->event.pressed) {
202 if (keymap_config.swap_lalt_lgui == false) {
203 register_code(KC_LANG2);
204 } else {
205 register_code16(A(KC_GRV));
206 }
207 } else {
208 unregister_code(KC_LANG2);
209 }
210 break;
211 #ifdef RGBLIGHT_ENABLE
212 case RGBRST:
213 if (record->event.pressed) {
214 eeconfig_update_rgblight_default();
215 rgblight_enable();
216 }
217 break;
218 #endif
219 default:
220 result = true;
221 break;
222 }
223
224 UPDATE_KEYMAP_STATUS();
225 return result;
226}
diff --git a/keyboards/marksard/rhymestone/keymaps/default/rules.mk b/keyboards/marksard/rhymestone/keymaps/default/rules.mk
new file mode 100644
index 000000000..c86cab8cc
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/rules.mk
@@ -0,0 +1,9 @@
1MOUSEKEY_ENABLE = yes # Mouse keys
2TAP_DANCE_ENABLE = no
3
4RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
5OLED_DRIVER_ENABLE = no
6LTO_ENABLE = yes
7
8# If you want to change the display of OLED, you need to change here
9SRC += ./common/oled_helper.c \
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
new file mode 100644
index 000000000..1d4e78af8
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
@@ -0,0 +1,76 @@
1/* Copyright 2020 marksard
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 QMK_KEYBOARD_H
17
18enum layer_number {
19 _BASE,
20 _ADJUST,
21};
22
23enum custom_keycodes {
24 LOWER = SAFE_RANGE,
25 ADJUST,
26 RGBRST
27};
28
29// Layer Mode aliases
30#define KC_LTAD LT(_ADJUST, KC_NO)
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 [_BASE] = LAYOUT_ortho_4x10(
34 //,---------------------------------------------------------------------------------------------------.
35 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
36 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
37 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
38 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
39 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
40 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
41 KC_LTAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
42 //,---------------------------------------------------------------------------------------------------.
43 ),
44
45 [_ADJUST] = LAYOUT_ortho_4x10(
46 //,---------------------------------------------------------------------------------------------------.
47 RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
48 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
49 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
50 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
51 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
52 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
53 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
54 //,---------------------------------------------------------------------------------------------------.
55 )
56};
57
58bool process_record_user(uint16_t keycode, keyrecord_t *record) {
59
60 bool result = false;
61 switch (keycode) {
62 #ifdef RGBLIGHT_ENABLE
63 case RGBRST:
64 if (record->event.pressed) {
65 eeconfig_update_rgblight_default();
66 rgblight_enable();
67 }
68 break;
69 #endif
70 default:
71 result = true;
72 break;
73 }
74
75 return result;
76}
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md b/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md
new file mode 100644
index 000000000..f85906a83
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md
@@ -0,0 +1,3 @@
1# The switch tester keymap for Rhymestone
2
3This keymap is Switch Tester and RGB_MATRIX Light demo.
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk
new file mode 100644
index 000000000..78824da30
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk
@@ -0,0 +1,7 @@
1MOUSEKEY_ENABLE = no # Mouse keys
2TAP_DANCE_ENABLE = no
3
4RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
5OLED_DRIVER_ENABLE = no
6LTO_ENABLE = yes
7RGB_MATRIX_ENABLE = WS2812
diff --git a/keyboards/marksard/rhymestone/readme.md b/keyboards/marksard/rhymestone/readme.md
new file mode 100644
index 000000000..721e8beb3
--- /dev/null
+++ b/keyboards/marksard/rhymestone/readme.md
@@ -0,0 +1,18 @@
1# Rhymestone
2
3![Rhymestone](https://github.com/marksard/Keyboards/blob/7950099e0679a6626dc9f77a70b8c6616d7030cf/_image/_rhymestone.jpg)
4
5This is 40 keys split Ortholinear keyboard.
6
7* Keyboard Maintainer: [marksard](https://github.com/marksard)
8* Hardware Supported: Rhymestone PCB (with Pro Micro)
9* Hardware Availability: [marksard keyboards](https://github.com/marksard/Keyboards/blob/master/rhymestone/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make marksard/rhymestone:default
14
15See 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).
16
17[Build guide](https://github.com/marksard/Keyboards/blob/master/rhymestone/documents/rhymestone_buildguide.md)
18[Firmware](https://github.com/marksard/qmk_firmware/tree/my_customize/keyboards/rhymestone)
diff --git a/keyboards/marksard/rhymestone/rev1/config.h b/keyboards/marksard/rhymestone/rev1/config.h
new file mode 100644
index 000000000..9a1bf0a1d
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/config.h
@@ -0,0 +1,152 @@
1/*
2Copyright 2020 marksard
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0xDFA1
25#define DEVICE_VER 0x0020
26#define MANUFACTURER marksard
27#define PRODUCT Rhymestone
28
29/* key matrix size */
30#define MATRIX_ROWS 8
31#define MATRIX_COLS 5
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/*
51 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
52 */
53#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
54
55// #define BACKLIGHT_PIN B7
56// #define BACKLIGHT_BREATHING
57// #define BACKLIGHT_LEVELS 3
58
59#define RGB_DI_PIN D3
60
61#ifdef RGBLIGHT_ENABLE
62// #ifdef RGB_DI_PIN
63 #define RGBLED_NUM 40
64 #define RGBLED_SPLIT {20, 20}
65 #define RGBLIGHT_HUE_STEP 8
66 #define RGBLIGHT_SAT_STEP 8
67 #define RGBLIGHT_VAL_STEP 8
68 #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
69 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
70/*== all animations enable ==*/
71// #define RGBLIGHT_ANIMATIONS
72/*== or choose animations ==*/
73// #define RGBLIGHT_EFFECT_BREATHING
74 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
75 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
76// #define RGBLIGHT_EFFECT_SNAKE
77 #define RGBLIGHT_EFFECT_KNIGHT
78// #define RGBLIGHT_EFFECT_CHRISTMAS
79 #define RGBLIGHT_EFFECT_STATIC_GRADIENT
80// #define RGBLIGHT_EFFECT_RGB_TEST
81// #define RGBLIGHT_EFFECT_ALTERNATING
82/*== customize breathing effect ==*/
83 /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
84 #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
85 /*==== use exp() and sin() ====*/
86 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
87 #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
88#endif
89
90#ifdef RGB_MATRIX_ENABLE
91 #define RGBLED_NUM 40 // Number of LEDs
92 #define DRIVER_LED_TOTAL RGBLED_NUM
93 #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
94 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
95 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
96 #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
97 // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
98 // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
99 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
100 #define RGB_MATRIX_HUE_STEP 8
101 #define RGB_MATRIX_SAT_STEP 8
102 #define RGB_MATRIX_VAL_STEP 8
103 #define RGB_MATRIX_SPD_STEP 10
104
105// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
106// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
107// #define DISABLE_RGB_MATRIX_BREATHING
108// #define DISABLE_RGB_MATRIX_BAND_SAT
109// #define DISABLE_RGB_MATRIX_BAND_VAL
110// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
111// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
112// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
113// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
114// #define DISABLE_RGB_MATRIX_CYCLE_ALL
115// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
116// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
117// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
118// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
119// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
120// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
121// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
122// #define DISABLE_RGB_MATRIX_DUAL_BEACON
123// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
124// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
125// #define DISABLE_RGB_MATRIX_RAINDROPS
126// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
127
128 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
129// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
130// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
131
132// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
133
134// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
135// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
136// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
137// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
138// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
139// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
140// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
141// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
142
143// #define DISABLE_RGB_MATRIX_SPLASH
144// #define DISABLE_RGB_MATRIX_MULTISPLASH
145// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
146// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
147
148 #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP
149#endif
150
151/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
152#define DEBOUNCE 5
diff --git a/keyboards/marksard/rhymestone/rev1/rev1.c b/keyboards/marksard/rhymestone/rev1/rev1.c
new file mode 100644
index 000000000..a4dadd55c
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rev1.c
@@ -0,0 +1,108 @@
1/* Copyright 2020 marksard
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 "rev1.h"
18
19// Optional override functions below.
20// You can leave any or all of these undefined.
21// These are only required if you want to perform custom actions.
22
23#ifdef RGB_MATRIX_ENABLE
24led_config_t g_led_config = { {
25 { 10, 11, 12, 13, 0 },
26 { 9, 18, 19, 14, 1 },
27 { 8, 17, 16, 15, 2 },
28 { 7, 6, 5, 4, 3 },
29 { 30, 31, 32, 33, 20 },
30 { 29, 38, 39, 34, 21 },
31 { 28, 37, 36, 35, 22 },
32 { 27, 26, 25, 24, 23 }
33}, {
34 { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
35 { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
36 { 0, 43 }, { 0, 21 }, { 0, 0 },
37 { 25, 0 }, { 50, 0 }, { 75, 0 },
38 { 75, 21 }, { 75, 43 },
39 { 50, 43 }, { 25, 43 },
40 { 25, 21 }, { 50, 21 },
41 { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
42 { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
43 { 225, 43 }, { 225, 21 }, { 225, 0 },
44 { 200, 0 }, { 175, 0 }, { 150, 0 },
45 { 150, 21 }, { 150, 43 },
46 { 175, 43 }, { 200, 43 },
47 { 200, 21 }, { 150, 21 }
48}, {
49 4, 4, 4, 1,
50 1, 1, 1, 1,
51 4, 4, 4, 4,
52 4, 4, 4, 4,
53 4, 4, 4, 4,
54 4, 4, 4, 1,
55 1, 1, 1, 1,
56 4, 4, 4, 4,
57 4, 4, 4, 4,
58 4, 4, 4, 4
59} };
60#endif
61
62__attribute__((weak))
63void matrix_init_user(void) {}
64
65void matrix_init_kb(void) {
66
67#ifdef RGB_MATRIX_ENABLE
68 // if (!is_keyboard_master()) {
69 // g_led_config = (led_config_t){ {
70 // { 30, 31, 32, 33, 20 },
71 // { 29, 38, 39, 34, 21 },
72 // { 28, 37, 36, 35, 22 },
73 // { 27, 26, 25, 24, 23 },
74 // { 10, 11, 12, 13, 0 },
75 // { 9, 18, 19, 14, 1 },
76 // { 8, 17, 16, 15, 2 },
77 // { 7, 6, 5, 4, 3 }
78 // }, {
79 // { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
80 // { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
81 // { 225, 43 }, { 225, 21 }, { 225, 0 },
82 // { 200, 0 }, { 175, 0 }, { 150, 0 },
83 // { 150, 21 }, { 150, 43 },
84 // { 175, 43 }, { 200, 43 },
85 // { 200, 21 }, { 150, 21 },
86 // { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
87 // { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
88 // { 0, 43 }, { 0, 21 }, { 0, 0 },
89 // { 25, 0 }, { 50, 0 }, { 75, 0 },
90 // { 75, 21 }, { 75, 43 },
91 // { 50, 43 }, { 25, 43 },
92 // { 25, 21 }, { 50, 21 }
93 // }, {
94 // 4, 4, 4, 1,
95 // 1, 1, 1, 1,
96 // 4, 4, 4, 4,
97 // 4, 4, 4, 4,
98 // 4, 4, 4, 4,
99 // 4, 4, 4, 1,
100 // 1, 1, 1, 1,
101 // 4, 4, 4, 4,
102 // 4, 4, 4, 4,
103 // 4, 4, 4, 4
104 // } };
105 // }
106#endif
107 matrix_init_user();
108}
diff --git a/keyboards/marksard/rhymestone/rev1/rev1.h b/keyboards/marksard/rhymestone/rev1/rev1.h
new file mode 100644
index 000000000..855e288df
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rev1.h
@@ -0,0 +1,89 @@
1/* Copyright 2020 marksard
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
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29
30#ifndef FLIP_HALF
31// Standard Keymap
32// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
33#define LAYOUT_ortho_4x10( \
34 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
35 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
36 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
37 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
38 ) \
39 { \
40 { L00, L01, L02, L03, L04 }, \
41 { L10, L11, L12, L13, L14 }, \
42 { L20, L21, L22, L23, L24 }, \
43 { L30, L31, L32, L33, L34 }, \
44 { R04, R03, R02, R01, R00 }, \
45 { R14, R13, R12, R11, R10 }, \
46 { R24, R23, R22, R21, R20 }, \
47 { R34, R33, R32, R31, R30 }, \
48 }
49#else
50// Keymap with right side flipped
51// (TRRS jack on both halves are to the right)
52#define LAYOUT_ortho_4x10( \
53 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
54 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
55 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
56 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
57 ) \
58 { \
59 { L04, L03, L02, L01, L00 }, \
60 { L14, L13, L12, L11, L10 }, \
61 { L24, L23, L22, L21, L20 }, \
62 { L34, L33, L32, L31, L30 }, \
63 { R04, R03, R02, R01, R00 }, \
64 { R14, R13, R12, R11, R10 }, \
65 { R24, R23, R22, R21, R20 }, \
66 { R34, R33, R32, R31, R30 }, \
67 }
68#endif
69
70#ifdef USE_HASHTWENTY // The HashTwenty is Alpha version of The Rhymestone
71#undef LAYOUT_ortho_4x10
72// HashTwenty layout
73#define LAYOUT_ortho_4x10( \
74 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
75 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
76 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
77 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
78 ) \
79 { \
80 { L04, L03, L02, L01, L00 }, \
81 { L14, L13, L12, L11, L10 }, \
82 { L24, L23, L22, L21, L20 }, \
83 { L34, L33, L32, L31, L30 }, \
84 { R00, R01, R02, R03, R04 }, \
85 { R10, R11, R12, R13, R14 }, \
86 { R20, R21, R22, R23, R24 }, \
87 { R30, R31, R32, R33, R34 }, \
88 }
89#endif
diff --git a/keyboards/marksard/rhymestone/rev1/rules.mk b/keyboards/marksard/rhymestone/rev1/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rules.mk
diff --git a/keyboards/marksard/rhymestone/rules.mk b/keyboards/marksard/rhymestone/rules.mk
new file mode 100644
index 000000000..1f58665ef
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rules.mk
@@ -0,0 +1,27 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = no # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23SPLIT_KEYBOARD = yes
24
25DEFAULT_FOLDER = marksard/rhymestone/rev1
26
27LAYOUTS = ortho_4x10