aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-01-11 05:56:14 +0000
committerQMK Bot <hello@qmk.fm>2021-01-11 05:56:14 +0000
commit0ff2d76f1086945c5e79ee9743516f912987316a (patch)
tree36756ab0ce9b0bc26b333aee43806820773068aa
parentda5ea61adf571799d7737e6f4f0c4706dbade836 (diff)
parent8657f54f9eee97c1905b8fa347497a518f147455 (diff)
downloadqmk_firmware-0ff2d76f1086945c5e79ee9743516f912987316a.tar.gz
qmk_firmware-0ff2d76f1086945c5e79ee9743516f912987316a.zip
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--keyboards/ramonimbao/herringbone/pro/config.h119
-rw-r--r--keyboards/ramonimbao/herringbone/pro/info.json321
-rw-r--r--keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c97
-rw-r--r--keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c97
-rw-r--r--keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c149
-rw-r--r--keyboards/ramonimbao/herringbone/pro/keymaps/via/rules.mk (renamed from keyboards/ramonimbao/herringbone/keymaps/via/rules.mk)0
-rw-r--r--keyboards/ramonimbao/herringbone/pro/pattern.c88
-rw-r--r--keyboards/ramonimbao/herringbone/pro/pattern.h20
-rw-r--r--keyboards/ramonimbao/herringbone/pro/pro.c (renamed from keyboards/ramonimbao/herringbone/herringbone.c)2
-rw-r--r--keyboards/ramonimbao/herringbone/pro/pro.h87
-rw-r--r--keyboards/ramonimbao/herringbone/pro/readme.md23
-rw-r--r--keyboards/ramonimbao/herringbone/pro/rules.mk31
-rw-r--r--keyboards/ramonimbao/herringbone/readme.md21
-rw-r--r--keyboards/ramonimbao/herringbone/rules.mk35
-rw-r--r--keyboards/ramonimbao/herringbone/v1/config.h (renamed from keyboards/ramonimbao/herringbone/config.h)4
-rw-r--r--keyboards/ramonimbao/herringbone/v1/info.json (renamed from keyboards/ramonimbao/herringbone/info.json)0
-rw-r--r--keyboards/ramonimbao/herringbone/v1/keymaps/default/keymap.c (renamed from keyboards/ramonimbao/herringbone/keymaps/default/keymap.c)0
-rw-r--r--keyboards/ramonimbao/herringbone/v1/keymaps/iso/keymap.c (renamed from keyboards/ramonimbao/herringbone/keymaps/iso/keymap.c)0
-rw-r--r--keyboards/ramonimbao/herringbone/v1/keymaps/via/keymap.c (renamed from keyboards/ramonimbao/herringbone/keymaps/via/keymap.c)0
-rw-r--r--keyboards/ramonimbao/herringbone/v1/keymaps/via/rules.mk1
-rw-r--r--keyboards/ramonimbao/herringbone/v1/readme.md23
-rw-r--r--keyboards/ramonimbao/herringbone/v1/rules.mk25
-rw-r--r--keyboards/ramonimbao/herringbone/v1/v1.c17
-rw-r--r--keyboards/ramonimbao/herringbone/v1/v1.h (renamed from keyboards/ramonimbao/herringbone/herringbone.h)0
24 files changed, 1119 insertions, 41 deletions
diff --git a/keyboards/ramonimbao/herringbone/pro/config.h b/keyboards/ramonimbao/herringbone/pro/config.h
new file mode 100644
index 000000000..25249456f
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/config.h
@@ -0,0 +1,119 @@
1/*
2Copyright 2020 Ramon Imbao
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 0xB16B
24#define PRODUCT_ID 0x440B
25#define DEVICE_VER 0x0012
26#define MANUFACTURER Ramon Imbao
27#define PRODUCT Herringbone Pro
28
29/* key matrix size */
30#define MATRIX_ROWS 7
31#define MATRIX_COLS 15
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 { C4, C5, C6, C7, A7, A6, NO_PIN }
44#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, D6, D5, D1, B0, B1, B2, B3, B4, D7 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/* Encoder pin assignment */
51#define ENCODERS_PAD_A { C3 }
52#define ENCODERS_PAD_B { C2 }
53
54#define ENCODER_DIRECTION_FLIP
55
56/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
57#define DEBOUNCE 5
58
59/* define if matrix has ghost (lacks anti-ghosting diodes) */
60//#define MATRIX_HAS_GHOST
61
62/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
63#define LOCKING_SUPPORT_ENABLE
64/* Locking resynchronize hack */
65#define LOCKING_RESYNC_ENABLE
66
67/* Small QoL improvements */
68#define PERMISSIVE_HOLD
69#define IGNORE_MOD_TAP_INTERRUPT
70
71/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
72 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
73 */
74// #define GRAVE_ESC_CTRL_OVERRIDE
75
76/*
77 * Force NKRO
78 *
79 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
80 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
81 * makefile for this to work.)
82 *
83 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
84 * until the next keyboard reset.
85 *
86 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
87 * fully operational during normal computer usage.
88 *
89 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
90 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
91 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
92 * power-up.
93 *
94 */
95//#define FORCE_NKRO
96
97/*
98 * Feature disable options
99 * These options are also useful to firmware size reduction.
100 */
101
102/* disable debug print */
103//#define NO_DEBUG
104
105/* disable print */
106//#define NO_PRINT
107
108/* disable action features */
109//#define NO_ACTION_LAYER
110//#define NO_ACTION_TAPPING
111//#define NO_ACTION_ONESHOT
112
113/* disable these deprecated features by default */
114#define NO_ACTION_MACRO
115#define NO_ACTION_FUNCTION
116
117/* Bootmagic Lite key configuration */
118// #define BOOTMAGIC_LITE_ROW 0
119// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/ramonimbao/herringbone/pro/info.json b/keyboards/ramonimbao/herringbone/pro/info.json
new file mode 100644
index 000000000..9b0b35fec
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/info.json
@@ -0,0 +1,321 @@
1{
2 "keyboard_name": "Herringbone Pro",
3 "url": "",
4 "maintainer": "Ramon Imbao",
5 "width": 18.25,
6 "height": 6.5,
7 "layouts": {
8 "LAYOUT_ansi": {
9 "layout": [
10 {"x": 0, "y": 0},
11
12 {"x": 1.25, "y": 0},
13 {"x": 2.25, "y": 0},
14 {"x": 3.25, "y": 0},
15 {"x": 4.25, "y": 0},
16
17 {"x": 5.5, "y": 0},
18 {"x": 6.5, "y": 0},
19 {"x": 7.5, "y": 0},
20 {"x": 8.5, "y": 0},
21
22 {"x": 9.75, "y": 0},
23 {"x": 10.75, "y": 0},
24 {"x": 11.75, "y": 0},
25 {"x": 12.75, "y": 0},
26
27 {"x": 14, "y": 0},
28
29 {"x": 15.5, "y": 0},
30
31 {"x": 0, "y": 1.25},
32 {"x": 1, "y": 1.25},
33 {"x": 2, "y": 1.25},
34 {"x": 3, "y": 1.25},
35 {"x": 4, "y": 1.25},
36 {"x": 5, "y": 1.25},
37 {"x": 6, "y": 1.25},
38 {"x": 7, "y": 1.25},
39 {"x": 8, "y": 1.25},
40 {"x": 9, "y": 1.25},
41 {"x": 10, "y": 1.25},
42 {"x": 11, "y": 1.25},
43 {"x": 12, "y": 1.25},
44 {"x": 13, "y": 1.25, "w": 2},
45
46 {"x": 15.5, "y": 1.25},
47
48 {"x": 0, "y": 2.25, "w": 1.5},
49 {"x": 1.5, "y": 2.25},
50 {"x": 2.5, "y": 2.25},
51 {"x": 3.5, "y": 2.25},
52 {"x": 4.5, "y": 2.25},
53 {"x": 5.5, "y": 2.25},
54 {"x": 6.5, "y": 2.25},
55 {"x": 7.5, "y": 2.25},
56 {"x": 8.5, "y": 2.25},
57 {"x": 9.5, "y": 2.25},
58 {"x": 10.5, "y": 2.25},
59 {"x": 11.5, "y": 2.25},
60 {"x": 12.5, "y": 2.25},
61 {"x": 13.5, "y": 2.25, "w": 1.5},
62
63 {"x": 15.5, "y": 2.25},
64
65 {"x": 0, "y": 3.25, "w": 1.75},
66 {"x": 1.75, "y": 3.25},
67 {"x": 2.75, "y": 3.25},
68 {"x": 3.75, "y": 3.25},
69 {"x": 4.75, "y": 3.25},
70 {"x": 5.75, "y": 3.25},
71 {"x": 6.75, "y": 3.25},
72 {"x": 7.75, "y": 3.25},
73 {"x": 8.75, "y": 3.25},
74 {"x": 9.75, "y": 3.25},
75 {"x": 10.75, "y": 3.25},
76 {"x": 11.75, "y": 3.25},
77 {"x": 12.75, "y": 3.25, "w": 2.25},
78
79 {"x": 15.5, "y": 3.25},
80
81 {"x": 0, "y": 4.25, "w": 2.25},
82 {"x": 2.25, "y": 4.25},
83 {"x": 3.25, "y": 4.25},
84 {"x": 4.25, "y": 4.25},
85 {"x": 5.25, "y": 4.25},
86 {"x": 6.25, "y": 4.25},
87 {"x": 7.25, "y": 4.25},
88 {"x": 8.25, "y": 4.25},
89 {"x": 9.25, "y": 4.25},
90 {"x": 10.25, "y": 4.25},
91 {"x": 11.25, "y": 4.25},
92 {"x": 12.25, "y": 4.25, "w": 1.75},
93
94 {"x": 14.25, "y": 4.5},
95
96 {"x": 15.5, "y": 4.25},
97
98 {"x": 0, "y": 5.25, "w": 1.25},
99 {"x": 1.25, "y": 5.25, "w": 1.25},
100 {"x": 2.5, "y": 5.25, "w": 1.25},
101 {"x": 3.75, "y": 5.25, "w": 6.25},
102 {"x": 10, "y": 5.25, "w": 1.5},
103 {"x": 11.5, "y": 5.25, "w": 1.5},
104
105 {"x": 13.25, "y": 5.5},
106 {"x": 14.25, "y": 5.5},
107 {"x": 15.25, "y": 5.5}
108 ]
109 },
110 "LAYOUT_iso": {
111 "layout": [
112 {"x": 0, "y": 0},
113
114 {"x": 1.25, "y": 0},
115 {"x": 2.25, "y": 0},
116 {"x": 3.25, "y": 0},
117 {"x": 4.25, "y": 0},
118
119 {"x": 5.5, "y": 0},
120 {"x": 6.5, "y": 0},
121 {"x": 7.5, "y": 0},
122 {"x": 8.5, "y": 0},
123
124 {"x": 9.75, "y": 0},
125 {"x": 10.75, "y": 0},
126 {"x": 11.75, "y": 0},
127 {"x": 12.75, "y": 0},
128
129 {"x": 14, "y": 0},
130
131 {"x": 15.5, "y": 0},
132
133 {"x": 0, "y": 1.25},
134 {"x": 1, "y": 1.25},
135 {"x": 2, "y": 1.25},
136 {"x": 3, "y": 1.25},
137 {"x": 4, "y": 1.25},
138 {"x": 5, "y": 1.25},
139 {"x": 6, "y": 1.25},
140 {"x": 7, "y": 1.25},
141 {"x": 8, "y": 1.25},
142 {"x": 9, "y": 1.25},
143 {"x": 10, "y": 1.25},
144 {"x": 11, "y": 1.25},
145 {"x": 12, "y": 1.25},
146 {"x": 13, "y": 1.25, "w": 2},
147
148 {"x": 15.5, "y": 1.25},
149
150 {"x": 0, "y": 2.25, "w": 1.5},
151 {"x": 1.5, "y": 2.25},
152 {"x": 2.5, "y": 2.25},
153 {"x": 3.5, "y": 2.25},
154 {"x": 4.5, "y": 2.25},
155 {"x": 5.5, "y": 2.25},
156 {"x": 6.5, "y": 2.25},
157 {"x": 7.5, "y": 2.25},
158 {"x": 8.5, "y": 2.25},
159 {"x": 9.5, "y": 2.25},
160 {"x": 10.5, "y": 2.25},
161 {"x": 11.5, "y": 2.25},
162 {"x": 12.5, "y": 2.25},
163
164 {"x": 15.5, "y": 2.25},
165
166 {"x": 0, "y": 3.25, "w": 1.75},
167 {"x": 1.75, "y": 3.25},
168 {"x": 2.75, "y": 3.25},
169 {"x": 3.75, "y": 3.25},
170 {"x": 4.75, "y": 3.25},
171 {"x": 5.75, "y": 3.25},
172 {"x": 6.75, "y": 3.25},
173 {"x": 7.75, "y": 3.25},
174 {"x": 8.75, "y": 3.25},
175 {"x": 9.75, "y": 3.25},
176 {"x": 10.75, "y": 3.25},
177 {"x": 11.75, "y": 3.25},
178 {"x": 12.75, "y": 3.25},
179 {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
180 {"x": 15.5, "y": 3.25},
181
182 {"x": 0, "y": 4.25, "w": 1.25},
183 {"x": 1.25, "y": 4.25},
184 {"x": 2.25, "y": 4.25},
185 {"x": 3.25, "y": 4.25},
186 {"x": 4.25, "y": 4.25},
187 {"x": 5.25, "y": 4.25},
188 {"x": 6.25, "y": 4.25},
189 {"x": 7.25, "y": 4.25},
190 {"x": 8.25, "y": 4.25},
191 {"x": 9.25, "y": 4.25},
192 {"x": 10.25, "y": 4.25},
193 {"x": 11.25, "y": 4.25},
194 {"x": 12.25, "y": 4.25, "w": 1.75},
195
196 {"x": 14.25, "y": 4.5},
197
198 {"x": 15.5, "y": 4.25},
199
200 {"x": 0, "y": 5.25, "w": 1.25},
201 {"x": 1.25, "y": 5.25, "w": 1.25},
202 {"x": 2.5, "y": 5.25, "w": 1.25},
203 {"x": 3.75, "y": 5.25, "w": 6.25},
204 {"x": 10, "y": 5.25, "w": 1.5},
205 {"x": 11.5, "y": 5.25, "w": 1.5},
206
207 {"x": 13.25, "y": 5.5},
208 {"x": 14.25, "y": 5.5},
209 {"x": 15.25, "y": 5.5}
210 ]
211 },
212 "LAYOUT_all": {
213 "layout": [
214 {"x": 0, "y": 0},
215
216 {"x": 1.25, "y": 0},
217 {"x": 2.25, "y": 0},
218 {"x": 3.25, "y": 0},
219 {"x": 4.25, "y": 0},
220
221 {"x": 5.5, "y": 0},
222 {"x": 6.5, "y": 0},
223 {"x": 7.5, "y": 0},
224 {"x": 8.5, "y": 0},
225
226 {"x": 9.75, "y": 0},
227 {"x": 10.75, "y": 0},
228 {"x": 11.75, "y": 0},
229 {"x": 12.75, "y": 0},
230
231 {"x": 14, "y": 0},
232
233 {"x": 15.25, "y": 0},
234 {"x": 16.25, "y": 0},
235 {"x": 17.25, "y": 0},
236
237 {"x": 0, "y": 1.25},
238 {"x": 1, "y": 1.25},
239 {"x": 2, "y": 1.25},
240 {"x": 3, "y": 1.25},
241 {"x": 4, "y": 1.25},
242 {"x": 5, "y": 1.25},
243 {"x": 6, "y": 1.25},
244 {"x": 7, "y": 1.25},
245 {"x": 8, "y": 1.25},
246 {"x": 9, "y": 1.25},
247 {"x": 10, "y": 1.25},
248 {"x": 11, "y": 1.25},
249 {"x": 12, "y": 1.25},
250 {"x": 13, "y": 1.25},
251 {"x": 14, "y": 1.25},
252
253 {"x": 15.5, "y": 1.25},
254
255 {"x": 0, "y": 2.25, "w": 1.5},
256 {"x": 1.5, "y": 2.25},
257 {"x": 2.5, "y": 2.25},
258 {"x": 3.5, "y": 2.25},
259 {"x": 4.5, "y": 2.25},
260 {"x": 5.5, "y": 2.25},
261 {"x": 6.5, "y": 2.25},
262 {"x": 7.5, "y": 2.25},
263 {"x": 8.5, "y": 2.25},
264 {"x": 9.5, "y": 2.25},
265 {"x": 10.5, "y": 2.25},
266 {"x": 11.5, "y": 2.25},
267 {"x": 12.5, "y": 2.25},
268 {"x": 13.5, "y": 2.25, "w": 1.5},
269
270 {"x": 15.5, "y": 2.25},
271
272 {"x": 0, "y": 3.25, "w": 1.75},
273 {"x": 1.75, "y": 3.25},
274 {"x": 2.75, "y": 3.25},
275 {"x": 3.75, "y": 3.25},
276 {"x": 4.75, "y": 3.25},
277 {"x": 5.75, "y": 3.25},
278 {"x": 6.75, "y": 3.25},
279 {"x": 7.75, "y": 3.25},
280 {"x": 8.75, "y": 3.25},
281 {"x": 9.75, "y": 3.25},
282 {"x": 10.75, "y": 3.25},
283 {"x": 11.75, "y": 3.25},
284 {"x": 12.75, "y": 3.25, "w": 2.25},
285
286 {"x": 15.5, "y": 3.25},
287
288 {"x": 0, "y": 4.25, "w": 1.25},
289 {"x": 1.25, "y": 4.25},
290 {"x": 2.25, "y": 4.25},
291 {"x": 3.25, "y": 4.25},
292 {"x": 4.25, "y": 4.25},
293 {"x": 5.25, "y": 4.25},
294 {"x": 6.25, "y": 4.25},
295 {"x": 7.25, "y": 4.25},
296 {"x": 8.25, "y": 4.25},
297 {"x": 9.25, "y": 4.25},
298 {"x": 10.25, "y": 4.25},
299 {"x": 11.25, "y": 4.25},
300 {"x": 12.25, "y": 4.25, "w": 1.75},
301
302 {"x": 14.25, "y": 4.5},
303
304 {"x": 15.5, "y": 4.25},
305
306 {"x": 0, "y": 5.25, "w": 1.25},
307 {"x": 1.25, "y": 5.25, "w": 1.25},
308 {"x": 2.5, "y": 5.25, "w": 1.25},
309 {"x": 3.75, "y": 5.25, "w": 2.25},
310 {"x": 6, "y": 5.25, "w": 1.25},
311 {"x": 7.25, "y": 5.25, "w": 2.75},
312 {"x": 10, "y": 5.25, "w": 1.5},
313 {"x": 11.5, "y": 5.25, "w": 1.5},
314
315 {"x": 13.25, "y": 5.5},
316 {"x": 14.25, "y": 5.5},
317 {"x": 15.25, "y": 5.5}
318 ]
319 }
320 }
321}
diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c
new file mode 100644
index 000000000..17030cc8a
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c
@@ -0,0 +1,97 @@
1/* Copyright 2020 Ramon Imbao
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
18#include "pattern.h"
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_ansi(
22 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
23 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
24 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
25 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
26 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
28 ),
29};
30
31#ifdef OLED_DRIVER_ENABLE
32uint32_t anim_timer = 0;
33uint32_t anim_sleep = 0;
34uint8_t current_frame = 0;
35
36#define FRAME_DURATION 50
37
38void encoder_update_user(uint8_t index, bool clockwise) {
39 if (clockwise) {
40 tap_code(KC_VOLU);
41 anim_sleep = timer_read32();
42 oled_on();
43 } else {
44 tap_code(KC_VOLD);
45 anim_sleep = timer_read32();
46 oled_on();
47 }
48}
49
50static void render_pattern(void) {
51 void animate(void) {
52 oled_set_cursor(4, 0);
53 oled_write_raw_P(pattern_a[current_frame], 96);
54 oled_set_cursor(4, 1);
55 oled_write_raw_P(pattern_b[current_frame], 96);
56 oled_set_cursor(4, 2);
57 oled_write_raw_P(pattern_a[current_frame], 96);
58
59 current_frame = (current_frame + 1) % 32;
60 }
61
62 if (get_current_wpm() != 000) {
63 oled_on();
64 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
65 anim_timer = timer_read32();
66 animate();
67 }
68 anim_sleep = timer_read32();
69 } else {
70 if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
71 oled_off();
72 } else {
73 oled_on();
74 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
75 anim_timer = timer_read32();
76 animate();
77 }
78 }
79 }
80}
81
82void oled_task_user(void) {
83 // Render Herringbone pattern
84 render_pattern();
85 oled_render();
86
87 // Host Keyboard LED Status
88 led_t led_state = host_keyboard_led_state();
89 oled_set_cursor(0, 0);
90 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
91 oled_set_cursor(0, 1);
92 oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
93 oled_set_cursor(0, 2);
94 oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
95 oled_render();
96}
97#endif
diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c
new file mode 100644
index 000000000..cfda38776
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c
@@ -0,0 +1,97 @@
1/* Copyright 2020 Ramon Imbao
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
18#include "pattern.h"
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_iso(
22 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
23 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
24 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_PGUP,
25 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, KC_ENT, KC_PGDN,
26 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, KC_UP, KC_END,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
28 ),
29};
30
31#ifdef OLED_DRIVER_ENABLE
32uint32_t anim_timer = 0;
33uint32_t anim_sleep = 0;
34uint8_t current_frame = 0;
35
36#define FRAME_DURATION 50
37
38void encoder_update_user(uint8_t index, bool clockwise) {
39 if (clockwise) {
40 tap_code(KC_VOLU);
41 anim_sleep = timer_read32();
42 oled_on();
43 } else {
44 tap_code(KC_VOLD);
45 anim_sleep = timer_read32();
46 oled_on();
47 }
48}
49
50static void render_pattern(void) {
51 void animate(void) {
52 oled_set_cursor(4, 0);
53 oled_write_raw_P(pattern_a[current_frame], 96);
54 oled_set_cursor(4, 1);
55 oled_write_raw_P(pattern_b[current_frame], 96);
56 oled_set_cursor(4, 2);
57 oled_write_raw_P(pattern_a[current_frame], 96);
58
59 current_frame = (current_frame + 1) % 32;
60 }
61
62 if (get_current_wpm() != 000) {
63 oled_on();
64 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
65 anim_timer = timer_read32();
66 animate();
67 }
68 anim_sleep = timer_read32();
69 } else {
70 if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
71 oled_off();
72 } else {
73 oled_on();
74 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
75 anim_timer = timer_read32();
76 animate();
77 }
78 }
79 }
80}
81
82void oled_task_user(void) {
83 // Render Herringbone pattern
84 render_pattern();
85 oled_render();
86
87 // Host Keyboard LED Status
88 led_t led_state = host_keyboard_led_state();
89 oled_set_cursor(0, 0);
90 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
91 oled_set_cursor(0, 1);
92 oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
93 oled_set_cursor(0, 2);
94 oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
95 oled_render();
96}
97#endif
diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
new file mode 100644
index 000000000..201078053
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
@@ -0,0 +1,149 @@
1/* Copyright 2020 Ramon Imbao
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
18#include "pattern.h"
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 [0] = LAYOUT_all(
22 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_VOLD, KC_MUTE, KC_VOLU,
23 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
24 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
25 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
26 KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
28 ),
29 [1] = LAYOUT_all(
30 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
33 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
34 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
36 ),
37 [2] = LAYOUT_all(
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
43 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
44 ),
45 [3] = LAYOUT_all(
46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
52 ),
53};
54
55keyevent_t encoder_ccw = {
56 .key = (keypos_t){.row = 6, .col = 0},
57 .pressed = false
58};
59
60keyevent_t encoder_cw = {
61 .key = (keypos_t){.row = 6, .col = 1},
62 .pressed = false
63};
64
65void matrix_scan_user(void) {
66 if (IS_PRESSED(encoder_ccw)) {
67 encoder_ccw.pressed = false;
68 encoder_ccw.time = (timer_read() | 1);
69 action_exec(encoder_ccw);
70 }
71
72 if (IS_PRESSED(encoder_cw)) {
73 encoder_cw.pressed = false;
74 encoder_cw.time = (timer_read() | 1);
75 action_exec(encoder_cw);
76 }
77}
78
79#ifdef OLED_DRIVER_ENABLE
80uint32_t anim_timer = 0;
81uint32_t anim_sleep = 0;
82uint8_t current_frame = 0;
83
84#define FRAME_DURATION 50
85
86void encoder_update_user(uint8_t index, bool clockwise) {
87 if (clockwise) {
88 encoder_cw.pressed = true;
89 encoder_cw.time = (timer_read() | 1);
90 action_exec(encoder_cw);
91 anim_sleep = timer_read32();
92 oled_on();
93 } else {
94 encoder_ccw.pressed = true;
95 encoder_ccw.time = (timer_read() | 1);
96 action_exec(encoder_ccw);
97 anim_sleep = timer_read32();
98 oled_on();
99 }
100}
101
102static void render_pattern(void) {
103 void animate(void) {
104 oled_set_cursor(4, 0);
105 oled_write_raw_P(pattern_a[current_frame], 96);
106 oled_set_cursor(4, 1);
107 oled_write_raw_P(pattern_b[current_frame], 96);
108 oled_set_cursor(4, 2);
109 oled_write_raw_P(pattern_a[current_frame], 96);
110
111 current_frame = (current_frame + 1) % 32;
112 }
113
114 if (get_current_wpm() != 000) {
115 oled_on();
116 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
117 anim_timer = timer_read32();
118 animate();
119 }
120 anim_sleep = timer_read32();
121 } else {
122 if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
123 oled_off();
124 } else {
125 oled_on();
126 if (timer_elapsed32(anim_timer) > FRAME_DURATION) {
127 anim_timer = timer_read32();
128 animate();
129 }
130 }
131 }
132}
133
134void oled_task_user(void) {
135 // Render Herringbone pattern
136 render_pattern();
137 oled_render();
138
139 // Host Keyboard LED Status
140 led_t led_state = host_keyboard_led_state();
141 oled_set_cursor(0, 0);
142 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
143 oled_set_cursor(0, 1);
144 oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
145 oled_set_cursor(0, 2);
146 oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
147 oled_render();
148}
149#endif
diff --git a/keyboards/ramonimbao/herringbone/keymaps/via/rules.mk b/keyboards/ramonimbao/herringbone/pro/keymaps/via/rules.mk
index 1e5b99807..1e5b99807 100644
--- a/keyboards/ramonimbao/herringbone/keymaps/via/rules.mk
+++ b/keyboards/ramonimbao/herringbone/pro/keymaps/via/rules.mk
diff --git a/keyboards/ramonimbao/herringbone/pro/pattern.c b/keyboards/ramonimbao/herringbone/pro/pattern.c
new file mode 100644
index 000000000..135c067b6
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/pattern.c
@@ -0,0 +1,88 @@
1/* Copyright 2020 Ramon Imbao
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 "pattern.h"
18#include "progmem.h"
19
20// I tried doing this with 32x8 but I can't align it perfectly
21const char PROGMEM pattern_a[32][96] = {
22 { 255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127 },
23 { 127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63 },
24 { 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31 },
25 { 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15 },
26 { 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7 },
27 { 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3 },
28 { 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1 },
29 { 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128 },
30 { 128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192 },
31 { 192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224 },
32 { 224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240 },
33 { 240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248 },
34 { 248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252 },
35 { 252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254 },
36 { 254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255 },
37 { 255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255 },
38 { 255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0 },
39 { 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0 },
40 { 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1 },
41 { 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3 },
42 { 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7 },
43 { 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15 },
44 { 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31 },
45 { 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63 },
46 { 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127 },
47 { 127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254 },
48 { 254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252 },
49 { 252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248 },
50 { 248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240 },
51 { 240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224 },
52 { 224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192 },
53 { 192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255,192,224,240,248,252,254,127, 63, 31, 15, 7, 3, 1, 0, 0,255,255,254,252,248,240,224,192,128, 1, 3, 7, 15, 31, 63,127,255 },
54};
55const char PROGMEM pattern_b[32][96] = {
56 { 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192 },
57 { 192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224 },
58 { 224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240 },
59 { 240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248 },
60 { 248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252 },
61 { 252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254 },
62 { 254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255 },
63 { 255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255 },
64 { 255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127 },
65 { 127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63 },
66 { 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31 },
67 { 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15 },
68 { 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7 },
69 { 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3 },
70 { 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1 },
71 { 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128 },
72 { 128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127 },
73 { 127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254 },
74 { 254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252 },
75 { 252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248 },
76 { 248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240 },
77 { 240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224 },
78 { 224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192 },
79 { 192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128 },
80 { 128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0 },
81 { 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0 },
82 { 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1 },
83 { 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3 },
84 { 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7 },
85 { 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15 },
86 { 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31 },
87 { 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63, 31, 15, 7, 3, 1, 0, 0,128,192,224,240,248,252,254,127,128, 1, 3, 7, 15, 31, 63,127,255,255,254,252,248,240,224,192, 63 },
88};
diff --git a/keyboards/ramonimbao/herringbone/pro/pattern.h b/keyboards/ramonimbao/herringbone/pro/pattern.h
new file mode 100644
index 000000000..a564e4abb
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/pattern.h
@@ -0,0 +1,20 @@
1/* Copyright 2020 Ramon Imbao
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
19extern const char pattern_a[32][96];
20extern const char pattern_b[32][96];
diff --git a/keyboards/ramonimbao/herringbone/herringbone.c b/keyboards/ramonimbao/herringbone/pro/pro.c
index c7087ea0a..4c11baefc 100644
--- a/keyboards/ramonimbao/herringbone/herringbone.c
+++ b/keyboards/ramonimbao/herringbone/pro/pro.c
@@ -14,4 +14,4 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#include "herringbone.h" 17#include "pro.h"
diff --git a/keyboards/ramonimbao/herringbone/pro/pro.h b/keyboards/ramonimbao/herringbone/pro/pro.h
new file mode 100644
index 000000000..28494e0dd
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/pro.h
@@ -0,0 +1,87 @@
1/* Copyright 2020 Ramon Imbao
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#define XXX KC_NO
31
32#define LAYOUT_ansi( \
33 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
34 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
35 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
36 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
37 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4e, \
38 k50, k52, k53, k55, k59, k5a, k5c, k5d, k5e \
39) \
40{ \
41 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
42 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
43 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
44 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
45 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, k4e }, \
46 { k50, XXX, k52, k53, XXX, k55, XXX, XXX, XXX, k59, k5a, XXX, k5c, k5d, k5e }, \
47 { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX} \
48}
49
50#define LAYOUT_iso( \
51 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
52 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
53 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
54 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k2d, k3e, \
55 k40, k51, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4e, \
56 k50, k52, k53, k55, k59, k5a, k5c, k5d, k5e \
57) \
58{ \
59 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
60 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
61 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
62 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
63 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, k4e }, \
64 { k50, k51, k52, k53, XXX, k55, XXX, XXX, XXX, k59, k5a, XXX, k5c, k5d, k5e }, \
65 { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
66}
67
68// Split backspace
69// Split space
70// Encoder functionality exposed
71#define LAYOUT_all( \
72 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k60, k0e, k61, \
73 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3c, k1e, \
74 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
75 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
76 k40, k51, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4e, \
77 k50, k52, k53, k54, k55, k57, k59, k5a, k5c, k5d, k5e \
78) \
79{ \
80 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
81 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
82 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
83 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
84 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, k4e }, \
85 { k50, k51, k52, k53, k54, k55, XXX, k57, XXX, k59, k5a, XXX, k5c, k5d, k5e }, \
86 { k60, k61, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
87}
diff --git a/keyboards/ramonimbao/herringbone/pro/readme.md b/keyboards/ramonimbao/herringbone/pro/readme.md
new file mode 100644
index 000000000..abf5fc851
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/readme.md
@@ -0,0 +1,23 @@
1# Herringbone Pro
2
3![Herringbone Pro](https://i.imgur.com/cewklY5l.png)
4
5A through-hole 75% keyboard with a rotary encoder and OLED display!
6
7* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
8* Hardware Supported: ATmega32A
9* Hardware Availability: [Herringbone](https://github.com/ramonimbao/Herringbone)
10
11To get to the bootloader,
12
131. Press and hold the BOOT button
14
152. Press the RESET button
16
173. Release the BOOT button
18
19Make example for this keyboard (after setting up your build environment):
20
21 make ramonimbao/herringbone/pro:default
22
23See 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).
diff --git a/keyboards/ramonimbao/herringbone/pro/rules.mk b/keyboards/ramonimbao/herringbone/pro/rules.mk
new file mode 100644
index 000000000..00c2b41f9
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/pro/rules.mk
@@ -0,0 +1,31 @@
1# MCU name
2MCU = atmega32a
3
4# Processor frequency
5F_CPU = 16000000
6
7# Bootloader selection
8BOOTLOADER = USBasp
9
10# Build Options
11# change yes to no to disable
12#
13BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
14MOUSEKEY_ENABLE = yes # Mouse keys
15EXTRAKEY_ENABLE = yes # Audio control and System control
16CONSOLE_ENABLE = no # Console for debug
17COMMAND_ENABLE = no # Commands for debug and configuration
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
21NKRO_ENABLE = no # USB Nkey Rollover
22BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
23RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
24BLUETOOTH_ENABLE = no # Enable Bluetooth
25AUDIO_ENABLE = no # Audio output
26ENCODER_ENABLE = yes
27OLED_DRIVER_ENABLE = yes
28WPM_ENABLE = yes
29LTO_ENABLE = yes
30
31SRC += pattern.c
diff --git a/keyboards/ramonimbao/herringbone/readme.md b/keyboards/ramonimbao/herringbone/readme.md
index 019b7da4a..b1f745c71 100644
--- a/keyboards/ramonimbao/herringbone/readme.md
+++ b/keyboards/ramonimbao/herringbone/readme.md
@@ -1,14 +1,23 @@
1# Herringbone 1# Herringbone and Herringbone Pro
2 2
3![Herringbone](https://i.imgur.com/SQyS0j8.png) 3Through-hole 75% keyboards. The Pro version has support for rotary knob, OLED display, and split space.
4
5A through-hole 75% keyboard.
6 4
7* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) 5* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
8* Hardware Supported: ATmega32A 6* Hardware Supported: ATmega32A
7* Hardware Availability: [Herringbone](https://github.com/ramonimbao/Herringbone)
8
9To get to the bootloader,
10
111. Press and hold the BOOT button
12
132. Press the RESET button
14
153. Release the BOOT button
9 16
10Make example for this keyboard (after setting up your build environment): 17Make example for these keyboards (after setting up your build environment):
11 18
12 make herringbone:default 19 make ramonimbao/herringbone/v1:default
20
21 make ramonimbao/herringbone/pro:default
13 22
14See 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). 23See 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).
diff --git a/keyboards/ramonimbao/herringbone/rules.mk b/keyboards/ramonimbao/herringbone/rules.mk
index 9fde8b14e..cd0dc7b85 100644
--- a/keyboards/ramonimbao/herringbone/rules.mk
+++ b/keyboards/ramonimbao/herringbone/rules.mk
@@ -1,34 +1 @@
1# MCU name DEFAULT_FOLDER = ramonimbao/herringbone/v1
2MCU = atmega32a
3
4# Processor frequency
5F_CPU = 16000000
6
7# Bootloader selection
8# Teensy halfkay
9# Pro Micro caterina
10# Atmel DFU atmel-dfu
11# LUFA DFU lufa-dfu
12# QMK DFU qmk-dfu
13# ATmega32A bootloadHID
14# ATmega328P USBasp
15BOOTLOADER = USBasp
16
17# Build Options
18# change yes to no to disable
19#
20BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
21MOUSEKEY_ENABLE = yes # Mouse keys
22EXTRAKEY_ENABLE = yes # Audio control and System control
23CONSOLE_ENABLE = no # Console for debug
24COMMAND_ENABLE = no # Commands for debug and configuration
25# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
26SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
27# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
28NKRO_ENABLE = no # USB Nkey Rollover
29BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
30RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
31MIDI_ENABLE = no # MIDI support
32BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
33AUDIO_ENABLE = no # Audio output on port C6
34FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
diff --git a/keyboards/ramonimbao/herringbone/config.h b/keyboards/ramonimbao/herringbone/v1/config.h
index c8aee0f6e..555597092 100644
--- a/keyboards/ramonimbao/herringbone/config.h
+++ b/keyboards/ramonimbao/herringbone/v1/config.h
@@ -91,6 +91,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
91/* Locking resynchronize hack */ 91/* Locking resynchronize hack */
92#define LOCKING_RESYNC_ENABLE 92#define LOCKING_RESYNC_ENABLE
93 93
94/* Small QoL improvements */
95#define PERMISSIVE_HOLD
96#define IGNORE_MOD_TAP_INTERRUPT
97
94/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. 98/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
95 * This is userful for the Windows task manager shortcut (ctrl+shift+esc). 99 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
96 */ 100 */
diff --git a/keyboards/ramonimbao/herringbone/info.json b/keyboards/ramonimbao/herringbone/v1/info.json
index 01f1e9e48..01f1e9e48 100644
--- a/keyboards/ramonimbao/herringbone/info.json
+++ b/keyboards/ramonimbao/herringbone/v1/info.json
diff --git a/keyboards/ramonimbao/herringbone/keymaps/default/keymap.c b/keyboards/ramonimbao/herringbone/v1/keymaps/default/keymap.c
index b9cf45351..b9cf45351 100644
--- a/keyboards/ramonimbao/herringbone/keymaps/default/keymap.c
+++ b/keyboards/ramonimbao/herringbone/v1/keymaps/default/keymap.c
diff --git a/keyboards/ramonimbao/herringbone/keymaps/iso/keymap.c b/keyboards/ramonimbao/herringbone/v1/keymaps/iso/keymap.c
index d6d2b15f1..d6d2b15f1 100644
--- a/keyboards/ramonimbao/herringbone/keymaps/iso/keymap.c
+++ b/keyboards/ramonimbao/herringbone/v1/keymaps/iso/keymap.c
diff --git a/keyboards/ramonimbao/herringbone/keymaps/via/keymap.c b/keyboards/ramonimbao/herringbone/v1/keymaps/via/keymap.c
index 04734d044..04734d044 100644
--- a/keyboards/ramonimbao/herringbone/keymaps/via/keymap.c
+++ b/keyboards/ramonimbao/herringbone/v1/keymaps/via/keymap.c
diff --git a/keyboards/ramonimbao/herringbone/v1/keymaps/via/rules.mk b/keyboards/ramonimbao/herringbone/v1/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/v1/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/ramonimbao/herringbone/v1/readme.md b/keyboards/ramonimbao/herringbone/v1/readme.md
new file mode 100644
index 000000000..eb5546cb7
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/v1/readme.md
@@ -0,0 +1,23 @@
1# Herringbone
2
3![Herringbone](https://i.imgur.com/SQyS0j8l.png)
4
5A through-hole 75% keyboard.
6
7* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
8* Hardware Supported: ATmega32A
9* Hardware Availability: [Herringbone](https://github.com/ramonimbao/Herringbone)
10
11To get to the bootloader,
12
131. Press and hold the BOOT button
14
152. Press the RESET button
16
173. Release the BOOT button
18
19Make example for this keyboard (after setting up your build environment):
20
21 make ramonimbao/herringbone/v1:default
22
23See 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).
diff --git a/keyboards/ramonimbao/herringbone/v1/rules.mk b/keyboards/ramonimbao/herringbone/v1/rules.mk
new file mode 100644
index 000000000..35161556f
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/v1/rules.mk
@@ -0,0 +1,25 @@
1# MCU name
2MCU = atmega32a
3
4# Processor frequency
5F_CPU = 16000000
6
7# Bootloader selection
8BOOTLOADER = USBasp
9
10# Build Options
11# change yes to no to disable
12#
13BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
14MOUSEKEY_ENABLE = yes # Mouse keys
15EXTRAKEY_ENABLE = yes # Audio control and System control
16CONSOLE_ENABLE = no # Console for debug
17COMMAND_ENABLE = no # Commands for debug and configuration
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
21NKRO_ENABLE = no # USB Nkey Rollover
22BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
23RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
24BLUETOOTH_ENABLE = no # Enable Bluetooth
25AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/herringbone/v1/v1.c b/keyboards/ramonimbao/herringbone/v1/v1.c
new file mode 100644
index 000000000..4bdb5fad3
--- /dev/null
+++ b/keyboards/ramonimbao/herringbone/v1/v1.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 Ramon Imbao
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 "v1.h"
diff --git a/keyboards/ramonimbao/herringbone/herringbone.h b/keyboards/ramonimbao/herringbone/v1/v1.h
index 80c411690..80c411690 100644
--- a/keyboards/ramonimbao/herringbone/herringbone.h
+++ b/keyboards/ramonimbao/herringbone/v1/v1.h