summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormechlovin <57231893+mechlovin@users.noreply.github.com>2024-01-15 02:31:41 +0700
committerGitHub <noreply@github.com>2024-01-14 11:31:41 -0800
commitde6ae3408c798ab38ed09b6c91ae1684121f5ca2 (patch)
treed809ca68d2608a5258a504a0da954efcfe7de139
parent1bebaa310abb637cbca146b6d7859f3efe503cfd (diff)
[Keyboard] Add Olly JF Rev.2 (#21775)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--keyboards/mechlovin/olly/jf/info.json677
-rw-r--r--keyboards/mechlovin/olly/jf/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/olly/jf/readme.md12
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/info.json675
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md (renamed from keyboards/mechlovin/olly/jf/keymaps/default/readme.md)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h (renamed from keyboards/mechlovin/olly/jf/keymaps/via/config.h)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/via/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk (renamed from keyboards/mechlovin/olly/jf/keymaps/via/rules.mk)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/matrix.c (renamed from keyboards/mechlovin/olly/jf/matrix.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md (renamed from keyboards/mechlovin/olly/jf/matrix_diagram.md)2
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/readme.md27
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/rev1.c (renamed from keyboards/mechlovin/olly/jf/jf.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/rules.mk4
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/config.h (renamed from keyboards/mechlovin/olly/jf/config.h)29
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/halconf.h25
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/info.json702
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md37
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/mcuconf.h27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/readme.md27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/rev2.c92
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/rules.mk1
-rw-r--r--keyboards/mechlovin/olly/jf/rules.mk19
34 files changed, 1820 insertions, 705 deletions
diff --git a/keyboards/mechlovin/olly/jf/info.json b/keyboards/mechlovin/olly/jf/info.json
index cb0ab92fb4..b67551a111 100644
--- a/keyboards/mechlovin/olly/jf/info.json
+++ b/keyboards/mechlovin/olly/jf/info.json
@@ -1,686 +1,37 @@
1{ 1{
2 "keyboard_name": "Olly JF",
3 "manufacturer": "Mechlovin.Studio", 2 "manufacturer": "Mechlovin.Studio",
4 "url": "", 3 "url": "",
5 "maintainer": "Mechlovin' Studio", 4 "maintainer": "Mechlovin' Studio",
6 "usb": { 5 "usb": {
7 "vid": "0x4D4C", 6 "vid": "0x4D4C"
8 "pid": "0xD180",
9 "device_version": "0.0.1"
10 }, 7 },
11 "backlight": { 8 "features": {
12 "pin": "D4", 9 "nkro": false,
13 "breathing": true 10 "bootmagic": true,
14 }, 11 "command": false,
15 "indicators": { 12 "console": false,
16 "caps_lock": "B0", 13 "extrakey": true,
17 "num_lock": "B1", 14 "mousekey": true,
18 "scroll_lock": "B2" 15 "rgblight": true
19 }, 16 },
17 "diode_direction": "ROW2COL",
20 "rgblight": { 18 "rgblight": {
21 "led_count": 27, 19 "led_count": 27,
22 "sleep": true, 20 "sleep": true,
23 "animations": { 21 "animations": {
22 "alternating": true,
24 "breathing": true, 23 "breathing": true,
24 "christmas": true,
25 "knight": true,
25 "rainbow_mood": true, 26 "rainbow_mood": true,
26 "rainbow_swirl": true, 27 "rainbow_swirl": true,
28 "rgb_test": true,
27 "snake": true, 29 "snake": true,
28 "knight": true,
29 "christmas": true,
30 "static_gradient": true, 30 "static_gradient": true,
31 "rgb_test": true,
32 "alternating": true,
33 "twinkle": true 31 "twinkle": true
34 } 32 }
35 }, 33 },
36 "ws2812": {
37 "pin": "B3"
38 },
39 "bootmagic": { 34 "bootmagic": {
40 "matrix": [1, 14] 35 "matrix": [1, 14]
41 },
42 "processor": "atmega32a",
43 "bootloader": "usbasploader",
44 "layouts": {
45 "LAYOUT_all": {
46 "layout": [
47 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
48
49 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
50 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
51 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
52 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
53
54 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
55 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
56 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
57 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
58
59 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
60 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
61 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
62 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
63
64 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
65
66 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
67 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
68 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
69 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
70
71 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
72 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
73 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
74 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
75 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
76 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
77 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
78 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
79 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
80 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
81 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
82 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
83 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
84 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
85 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
86
87 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
88
89 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
90 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
91 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
92 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
93
94 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
95 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
96 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
97 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
98 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
99 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
100 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
101 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
102 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
103 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
104 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
105 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
106 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
107 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
108
109 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
110
111 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
112 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
113 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
114 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
115
116 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
117 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
118 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
119 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
120 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
121 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
122 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
123 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
124 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
125 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
126 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
127 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
128 {"label": "Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25},
129 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
130
131 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
132 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
133 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
134 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
135
136 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
137 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
138 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
139 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
140 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
141 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
142 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
143 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
144 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
145 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
146 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
147 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
148 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
149 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
150
151 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
152
153 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
154 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
155 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
156 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
157
158 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
159 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
160 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
161 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
162 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
163 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
164 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
165
166 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
167 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
168 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
169
170 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
171 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
172 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
173 ]
174 },
175 "LAYOUT_ansi": {
176 "layout": [
177 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
178
179 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
180 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
181 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
182 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
183
184 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
185 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
186 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
187 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
188
189 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
190 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
191 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
192 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
193
194 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
195
196 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
197 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
198 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
199 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
200
201 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
202 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
203 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
204 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
205 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
206 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
207 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
208 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
209 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
210 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
211 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
212 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
213 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
214 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
215
216 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
217
218 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
219 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
220 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
221 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
222
223 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
224 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
225 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
226 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
227 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
228 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
229 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
230 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
231 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
232 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
233 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
234 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
235 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
236 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
237
238 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
239
240 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
241 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
242 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
243 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
244
245 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
246 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
247 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
248 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
249 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
250 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
251 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
252 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
253 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
254 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
255 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
256 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
257 {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
258
259 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
260 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
261 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
262 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
263
264 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
265 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
266 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
267 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
268 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
269 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
270 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
271 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
272 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
273 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
274 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
275 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
276
277 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
278
279 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
280 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
281 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
282 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
283
284 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
285 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
286 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
287 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
288 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
289 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
290 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
291
292 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
293 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
294 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
295
296 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
297 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
298 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
299 ]
300 },
301 "LAYOUT_ansi_split_bs_rshift": {
302 "layout": [
303 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
304
305 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
306 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
307 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
308 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
309
310 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
311 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
312 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
313 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
314
315 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
316 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
317 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
318 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
319
320 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
321
322 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
323 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
324 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
325 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
326
327 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
328 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
329 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
330 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
331 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
332 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
333 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
334 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
335 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
336 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
337 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
338 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
339 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
340 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
341 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
342
343 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
344
345 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
346 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
347 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
348 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
349
350 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
351 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
352 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
353 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
354 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
355 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
356 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
357 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
358 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
359 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
360 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
361 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
362 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
363 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
364
365 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
366
367 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
368 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
369 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
370 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
371
372 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
373 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
374 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
375 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
376 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
377 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
378 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
379 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
380 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
381 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
382 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
383 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
384 {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
385
386 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
387 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
388 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
389 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
390
391 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
392 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
393 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
394 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
395 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
396 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
397 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
398 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
399 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
400 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
401 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
402 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
403 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
404
405 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
406
407 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
408 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
409 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
410 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
411
412 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
413 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
414 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
415 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
416 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
417 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
418 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
419
420 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
421 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
422 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
423
424 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
425 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
426 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
427 ]
428 },
429 "LAYOUT_iso": {
430 "layout": [
431 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
432
433 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
434 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
435 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
436 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
437
438 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
439 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
440 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
441 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
442
443 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
444 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
445 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
446 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
447
448 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
449
450 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
451 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
452 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
453 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
454
455 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
456 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
457 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
458 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
459 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
460 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
461 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
462 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
463 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
464 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
465 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
466 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
467 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
468 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
469
470 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
471
472 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
473 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
474 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
475 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
476
477 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
478 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
479 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
480 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
481 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
482 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
483 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
484 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
485 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
486 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
487 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
488 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
489 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
490
491 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
492
493 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
494 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
495 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
496 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
497
498 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
499 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
500 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
501 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
502 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
503 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
504 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
505 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
506 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
507 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
508 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
509 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
510 {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
511 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
512
513 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
514 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
515 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
516 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
517
518 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
519 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
520 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
521 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
522 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
523 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
524 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
525 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
526 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
527 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
528 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
529 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
530 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
531
532 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
533
534 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
535 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
536 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
537 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
538
539 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
540 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
541 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
542 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
543 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
544 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
545 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
546
547 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
548 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
549 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
550
551 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
552 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
553 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
554 ]
555 },
556 "LAYOUT_iso_split_bs_rshift": {
557 "layout": [
558 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
559
560 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
561 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
562 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
563 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
564
565 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
566 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
567 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
568 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
569
570 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
571 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
572 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
573 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
574
575 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
576
577 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
578 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
579 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
580 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
581
582 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
583 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
584 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
585 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
586 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
587 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
588 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
589 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
590 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
591 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
592 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
593 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
594 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
595 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
596 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
597
598 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
599
600 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
601 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
602 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
603 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
604
605 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
606 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
607 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
608 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
609 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
610 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
611 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
612 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
613 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
614 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
615 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
616 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
617 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
618
619 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
620
621 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
622 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
623 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
624 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
625
626 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
627 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
628 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
629 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
630 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
631 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
632 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
633 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
634 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
635 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
636 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
637 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
638 {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
639 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
640
641 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
642 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
643 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
644 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
645
646 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
647 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
648 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
649 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
650 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
651 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
652 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
653 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
654 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
655 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
656 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
657 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
658 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
659 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
660
661 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
662
663 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
664 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
665 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
666 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
667
668 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
669 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
670 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
671 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
672 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
673 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
674 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
675
676 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
677 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
678 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
679
680 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
681 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
682 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
683 ]
684 }
685 } 36 }
686} 37}
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/readme.md b/keyboards/mechlovin/olly/jf/keymaps/via/readme.md
deleted file mode 100644
index 0453b5aef0..0000000000
--- a/keyboards/mechlovin/olly/jf/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
1# The VIA keymap for Olly JF \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/readme.md b/keyboards/mechlovin/olly/jf/readme.md
index fe9cf38cad..c40a8dfd5e 100644
--- a/keyboards/mechlovin/olly/jf/readme.md
+++ b/keyboards/mechlovin/olly/jf/readme.md
@@ -18,7 +18,11 @@ Flashing example for this keyboard:
18 18
19See 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). 19See 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).
20 20
21**Reset Key:** 3 ways to put the Olly JF into bootloader: 21## Bootloader
22By keycode: Press the key mapped to `QK_BOOT` if it is available. 22
23By Bootloader: hold ESC key while plugging in (jump to bootloader) 23Enter the bootloader in 4 ways:
24By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file 24
25* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
26* **Bootloader reset**: hold ESC (0,0) key while plugging in (jump to bootloader)
27* **Bootmagic reset**: hold Insert (1,14) key while pluging in (jump to bootloader and reset EEPROM)
28* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev1/info.json b/keyboards/mechlovin/olly/jf/rev1/info.json
new file mode 100644
index 0000000000..0b6aec094f
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/info.json
@@ -0,0 +1,675 @@
1{
2 "keyboard_name": "Olly JF Rev1",
3 "usb": {
4 "pid": "0xD180",
5 "device_version": "0.0.1"
6 },
7 "features": {
8 "backlight": true
9 },
10 "matrix_pins": {
11 "cols": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null],
12 "rows": ["D5", "D6", "A5", "A4", "A3", "A6"],
13 "custom_lite": true
14 },
15 "matrix_size": {
16 "cols": 19,
17 "rows": 6
18 },
19 "backlight": {
20 "pin": "D4",
21 "breathing": true
22 },
23 "indicators": {
24 "caps_lock": "B0",
25 "num_lock": "B1",
26 "scroll_lock": "B2"
27 },
28 "ws2812": {
29 "pin": "B3"
30 },
31 "processor": "atmega32a",
32 "bootloader": "usbasploader",
33 "layouts": {
34 "LAYOUT_all": {
35 "layout": [
36 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
37
38 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
39 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
40 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
41 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
42
43 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
44 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
45 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
46 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
47
48 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
49 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
50 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
51 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
52
53 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
54
55 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
56 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
57 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
58 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
59
60 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
61 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
62 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
63 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
64 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
65 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
66 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
67 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
68 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
69 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
70 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
71 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
72 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
73 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
74 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
75
76 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
77
78 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
79 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
80 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
81 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
82
83 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
84 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
85 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
86 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
87 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
88 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
89 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
90 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
91 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
92 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
93 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
94 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
95 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
96 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
97
98 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
99
100 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
101 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
102 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
103 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
104
105 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
106 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
107 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
108 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
109 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
110 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
111 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
112 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
113 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
114 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
115 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
116 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
117 {"label": "Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25},
118 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
119
120 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
121 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
122 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
123 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
124
125 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
126 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
127 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
128 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
129 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
130 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
131 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
132 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
133 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
134 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
135 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
136 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
137 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
138 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
139
140 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
141
142 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
143 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
144 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
145 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
146
147 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
148 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
149 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
150 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
151 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
152 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
153 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
154
155 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
156 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
157 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
158
159 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
160 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
161 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
162 ]
163 },
164 "LAYOUT_ansi": {
165 "layout": [
166 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
167
168 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
169 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
170 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
171 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
172
173 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
174 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
175 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
176 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
177
178 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
179 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
180 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
181 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
182
183 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
184
185 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
186 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
187 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
188 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
189
190 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
191 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
192 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
193 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
194 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
195 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
196 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
197 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
198 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
199 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
200 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
201 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
202 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
203 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
204
205 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
206
207 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
208 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
209 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
210 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
211
212 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
213 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
214 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
215 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
216 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
217 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
218 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
219 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
220 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
221 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
222 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
223 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
224 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
225 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
226
227 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
228
229 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
230 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
231 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
232 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
233
234 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
235 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
236 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
237 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
238 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
239 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
240 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
241 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
242 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
243 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
244 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
245 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
246 {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
247
248 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
249 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
250 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
251 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
252
253 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
254 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
255 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
256 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
257 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
258 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
259 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
260 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
261 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
262 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
263 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
264 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
265
266 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
267
268 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
269 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
270 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
271 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
272
273 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
274 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
275 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
276 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
277 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
278 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
279 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
280
281 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
282 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
283 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
284
285 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
286 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
287 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
288 ]
289 },
290 "LAYOUT_ansi_split_bs_rshift": {
291 "layout": [
292 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
293
294 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
295 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
296 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
297 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
298
299 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
300 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
301 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
302 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
303
304 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
305 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
306 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
307 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
308
309 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
310
311 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
312 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
313 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
314 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
315
316 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
317 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
318 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
319 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
320 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
321 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
322 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
323 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
324 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
325 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
326 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
327 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
328 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
329 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
330 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
331
332 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
333
334 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
335 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
336 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
337 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
338
339 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
340 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
341 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
342 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
343 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
344 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
345 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
346 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
347 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
348 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
349 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
350 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
351 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
352 {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
353
354 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
355
356 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
357 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
358 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
359 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
360
361 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
362 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
363 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
364 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
365 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
366 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
367 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
368 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
369 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
370 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
371 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
372 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
373 {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
374
375 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
376 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
377 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
378 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
379
380 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
381 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
382 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
383 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
384 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
385 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
386 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
387 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
388 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
389 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
390 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
391 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
392 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
393
394 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
395
396 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
397 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
398 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
399 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
400
401 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
402 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
403 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
404 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
405 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
406 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
407 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
408
409 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
410 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
411 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
412
413 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
414 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
415 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
416 ]
417 },
418 "LAYOUT_iso": {
419 "layout": [
420 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
421
422 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
423 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
424 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
425 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
426
427 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
428 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
429 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
430 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
431
432 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
433 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
434 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
435 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
436
437 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
438
439 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
440 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
441 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
442 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
443
444 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
445 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
446 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
447 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
448 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
449 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
450 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
451 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
452 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
453 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
454 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
455 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
456 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
457 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
458
459 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
460
461 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
462 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
463 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
464 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
465
466 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
467 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
468 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
469 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
470 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
471 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
472 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
473 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
474 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
475 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
476 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
477 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
478 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
479
480 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
481
482 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
483 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
484 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
485 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
486
487 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
488 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
489 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
490 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
491 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
492 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
493 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
494 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
495 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
496 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
497 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
498 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
499 {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
500 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
501
502 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
503 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
504 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
505 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
506
507 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
508 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
509 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
510 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
511 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
512 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
513 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
514 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
515 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
516 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
517 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
518 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
519 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
520
521 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
522
523 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
524 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
525 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
526 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
527
528 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
529 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
530 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
531 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
532 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
533 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
534 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
535
536 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
537 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
538 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
539
540 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
541 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
542 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
543 ]
544 },
545 "LAYOUT_iso_split_bs_rshift": {
546 "layout": [
547 {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
548
549 {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
550 {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
551 {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
552 {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
553
554 {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
555 {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
556 {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
557 {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
558
559 {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
560 {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
561 {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
562 {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
563
564 {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
565
566 {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
567 {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
568 {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
569 {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
570
571 {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
572 {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
573 {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
574 {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
575 {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
576 {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
577 {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
578 {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
579 {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
580 {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
581 {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
582 {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
583 {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
584 {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
585 {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
586
587 {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
588
589 {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
590 {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
591 {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
592 {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
593
594 {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
595 {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
596 {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
597 {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
598 {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
599 {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
600 {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
601 {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
602 {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
603 {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
604 {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
605 {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
606 {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
607
608 {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
609
610 {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
611 {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
612 {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
613 {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
614
615 {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
616 {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
617 {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
618 {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
619 {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
620 {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
621 {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
622 {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
623 {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
624 {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
625 {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
626 {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
627 {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
628 {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
629
630 {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
631 {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
632 {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
633 {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
634
635 {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
636 {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
637 {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
638 {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
639 {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
640 {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
641 {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
642 {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
643 {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
644 {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
645 {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
646 {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
647 {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
648 {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
649
650 {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
651
652 {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
653 {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
654 {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
655 {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
656
657 {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
658 {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
659 {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
660 {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
661 {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
662 {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
663 {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
664
665 {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
666 {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
667 {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
668
669 {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
670 {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
671 {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
672 ]
673 }
674 }
675}
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c
index 6209811cf2..6209811cf2 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/readme.md b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md
index 0dad971bdc..0dad971bdc 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default/readme.md
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c
index f646d8aa81..f646d8aa81 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c
index 3807ab0f14..3807ab0f14 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c
index c97f1dbd80..c97f1dbd80 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c
index f72820394b..f72820394b 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/config.h b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h
index 01d7e4bc38..01d7e4bc38 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/config.h
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c
index 15f626d7ab..15f626d7ab 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk
diff --git a/keyboards/mechlovin/olly/jf/matrix.c b/keyboards/mechlovin/olly/jf/rev1/matrix.c
index c01879c9a5..c01879c9a5 100644
--- a/keyboards/mechlovin/olly/jf/matrix.c
+++ b/keyboards/mechlovin/olly/jf/rev1/matrix.c
diff --git a/keyboards/mechlovin/olly/jf/matrix_diagram.md b/keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md
index 6cc49f8b93..63e5476501 100644
--- a/keyboards/mechlovin/olly/jf/matrix_diagram.md
+++ b/keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md
@@ -1,4 +1,4 @@
1# Matrix Diagram for Mechlovin.Studio Olly JF 1# Matrix Diagram for Mechlovin.Studio Olly JF Rev. 1
2 2
3``` 3```
4┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐ 4┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐
diff --git a/keyboards/mechlovin/olly/jf/rev1/readme.md b/keyboards/mechlovin/olly/jf/rev1/readme.md
new file mode 100644
index 0000000000..f6c114fee6
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/readme.md
@@ -0,0 +1,27 @@
1# Mechlovin Olly JF Rev. 1
2
3![jf](https://i.imgur.com/IrfTGE7h.png)
4
5Olly JF PCB, compatible Duck Jetfire keyboard.
6
7* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/)
8* Hardware Supported: Jetfire Korean Kustom
9* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/olly/jf/rev1:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/olly/jf/rev1:default:flash
18
19See 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).
20
21## Bootloader
22
23Enter the bootloader in 3 ways:
24
25By keycode: Press the key mapped to `QK_BOOT` if it is available.
26By Bootloader: hold ESC key while plugging in (jump to bootloader)
27By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/jf.c b/keyboards/mechlovin/olly/jf/rev1/rev1.c
index 3d18d7bb5a..3d18d7bb5a 100644
--- a/keyboards/mechlovin/olly/jf/jf.c
+++ b/keyboards/mechlovin/olly/jf/rev1/rev1.c
diff --git a/keyboards/mechlovin/olly/jf/rev1/rules.mk b/keyboards/mechlovin/olly/jf/rev1/rules.mk
new file mode 100644
index 0000000000..4442aba67d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/rules.mk
@@ -0,0 +1,4 @@
1# Processor frequency
2F_CPU = 16000000
3
4SRC += matrix.c
diff --git a/keyboards/mechlovin/olly/jf/config.h b/keyboards/mechlovin/olly/jf/rev2/config.h
index 35480dc83c..e1389b1e9a 100644
--- a/keyboards/mechlovin/olly/jf/config.h
+++ b/keyboards/mechlovin/olly/jf/rev2/config.h
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright 2021 mechlovin 2Copyright 2023 Mechlovin'
3 3
4This program is free software: you can redistribute it and/or modify 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 5it under the terms of the GNU General Public License as published by
@@ -17,22 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18#pragma once 18#pragma once
19 19
20#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_SDA
20 21
21/* key matrix size */ 22#define I2C_DRIVER I2CD2
22#define MATRIX_ROWS 6 23#define I2C1_SCL_PIN B10
23#define MATRIX_COLS 19 24#define I2C1_SDA_PIN B11
25#define LED_MATRIX_LED_COUNT 114
24 26
25/* 27#define I2C1_CLOCK_SPEED 400000
26 * Keyboard Matrix Assignments 28#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
27 * 29
28 * Change this to how you wired your keyboard 30#define WEAR_LEVELING_BACKING_SIZE 4096
29 * COLS: AVR pins used for columns, left to right 31#define WEAR_LEVELING_LOGICAL_SIZE 2048
30 * ROWS: AVR pins used for rows, top to bottom
31 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
32 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
33 *
34 */
35#define MATRIX_ROW_PINS { D5, D6, A5, A4, A3, A6}
36
37/* COL2ROW, ROW2COL */
38#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/olly/jf/rev2/halconf.h b/keyboards/mechlovin/olly/jf/rev2/halconf.h
new file mode 100644
index 0000000000..090c0b3d3b
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/halconf.h
@@ -0,0 +1,25 @@
1/* Copyright 2023 QMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 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#define HAL_USE_I2C TRUE
20
21#define HAL_USE_SPI TRUE
22
23
24#include_next <halconf.h>
25
diff --git a/keyboards/mechlovin/olly/jf/rev2/info.json b/keyboards/mechlovin/olly/jf/rev2/info.json
new file mode 100644
index 0000000000..da86fbb075
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/info.json
@@ -0,0 +1,702 @@
1{
2 "keyboard_name": "Olly JF Rev2",
3 "bootloader": "stm32duino",
4 "features": {
5 "command": true,
6 "console": true,
7 "led_matrix": true,
8 "nkro": true
9 },
10 "led_matrix": {
11 "animations": {
12 "alphas_mods": true,
13 "band": true,
14 "band_pinwheel": true,
15 "band_spiral": true,
16 "breathing": true,
17 "cycle_left_right": true,
18 "cycle_out_in": true,
19 "cycle_up_down": true,
20 "dual_beacon": true,
21 "solid_multisplash": true,
22 "solid_reactive_cross": true,
23 "solid_reactive_multicross": true,
24 "solid_reactive_multinexus": true,
25 "solid_reactive_multiwide": true,
26 "solid_reactive_nexus": true,
27 "solid_reactive_simple": true,
28 "solid_reactive_wide": true,
29 "solid_splash": true,
30 "wave_left_right": true,
31 "wave_up_down": true
32 },
33 "driver": "is31fl3731",
34 "layout": [
35 {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
36 {"matrix": [0, 2], "x": 24, "y": 0, "flags": 4},
37 {"matrix": [0, 3], "x": 37, "y": 0, "flags": 4},
38 {"matrix": [0, 4], "x": 49, "y": 0, "flags": 4},
39 {"matrix": [0, 5], "x": 62, "y": 0, "flags": 4},
40 {"matrix": [0, 6], "x": 74, "y": 0, "flags": 4},
41 {"matrix": [0, 7], "x": 87, "y": 0, "flags": 4},
42 {"matrix": [0, 8], "x": 99, "y": 0, "flags": 4},
43 {"matrix": [0, 9], "x": 122, "y": 0, "flags": 4},
44 {"matrix": [0, 10], "x": 124, "y": 0, "flags": 4},
45 {"matrix": [0, 11], "x": 137, "y": 0, "flags": 4},
46 {"matrix": [0, 12], "x": 140, "y": 0, "flags": 4},
47 {"matrix": [0, 13], "x": 162, "y": 0, "flags": 4},
48 {"matrix": [0, 14], "x": 174, "y": 0, "flags": 4},
49 {"matrix": [0, 15], "x": 186, "y": 0, "flags": 4},
50 {"matrix": [0, 16], "x": 199, "y": 0, "flags": 4},
51 {"matrix": [0, 17], "x": 211, "y": 0, "flags": 4},
52 {"matrix": [0, 18], "x": 224, "y": 0, "flags": 4},
53 {"matrix": [1, 0], "x": 0, "y": 13, "flags": 4},
54 {"matrix": [1, 1], "x": 12, "y": 13, "flags": 4},
55 {"matrix": [1, 2], "x": 24, "y": 13, "flags": 4},
56 {"matrix": [1, 3], "x": 37, "y": 13, "flags": 4},
57 {"matrix": [1, 4], "x": 49, "y": 13, "flags": 4},
58 {"matrix": [1, 5], "x": 62, "y": 13, "flags": 4},
59 {"matrix": [1, 6], "x": 74, "y": 13, "flags": 4},
60 {"matrix": [1, 7], "x": 87, "y": 13, "flags": 4},
61 {"matrix": [1, 8], "x": 99, "y": 13, "flags": 4},
62 {"matrix": [1, 9], "x": 122, "y": 13, "flags": 4},
63 {"matrix": [1, 10], "x": 124, "y": 13, "flags": 4},
64 {"matrix": [1, 11], "x": 137, "y": 13, "flags": 4},
65 {"matrix": [1, 12], "x": 140, "y": 13, "flags": 4},
66 {"matrix": [1, 13], "x": 162, "y": 13, "flags": 4},
67 {"matrix": [1, 14], "x": 174, "y": 13, "flags": 4},
68 {"matrix": [1, 15], "x": 186, "y": 13, "flags": 4},
69 {"matrix": [1, 16], "x": 199, "y": 13, "flags": 4},
70 {"matrix": [1, 17], "x": 211, "y": 13, "flags": 4},
71 {"matrix": [1, 18], "x": 224, "y": 13, "flags": 4},
72 {"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
73 {"matrix": [2, 1], "x": 12, "y": 25, "flags": 4},
74 {"matrix": [2, 2], "x": 24, "y": 25, "flags": 4},
75 {"matrix": [2, 3], "x": 37, "y": 25, "flags": 4},
76 {"matrix": [2, 4], "x": 49, "y": 25, "flags": 4},
77 {"matrix": [2, 5], "x": 62, "y": 25, "flags": 4},
78 {"matrix": [2, 6], "x": 74, "y": 25, "flags": 4},
79 {"matrix": [2, 7], "x": 87, "y": 25, "flags": 4},
80 {"matrix": [2, 8], "x": 99, "y": 25, "flags": 4},
81 {"matrix": [2, 9], "x": 122, "y": 25, "flags": 4},
82 {"matrix": [2, 10], "x": 124, "y": 25, "flags": 4},
83 {"matrix": [2, 11], "x": 137, "y": 25, "flags": 4},
84 {"matrix": [2, 12], "x": 140, "y": 25, "flags": 4},
85 {"matrix": [2, 13], "x": 162, "y": 25, "flags": 4},
86 {"matrix": [2, 14], "x": 174, "y": 25, "flags": 4},
87 {"matrix": [2, 15], "x": 186, "y": 25, "flags": 4},
88 {"matrix": [2, 16], "x": 199, "y": 25, "flags": 4},
89 {"matrix": [2, 17], "x": 211, "y": 25, "flags": 4},
90 {"matrix": [2, 18], "x": 224, "y": 25, "flags": 4},
91 {"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
92 {"matrix": [3, 1], "x": 12, "y": 38, "flags": 4},
93 {"matrix": [3, 2], "x": 24, "y": 38, "flags": 4},
94 {"matrix": [3, 3], "x": 37, "y": 38, "flags": 4},
95 {"matrix": [3, 4], "x": 49, "y": 38, "flags": 4},
96 {"matrix": [3, 5], "x": 62, "y": 38, "flags": 4},
97 {"matrix": [3, 6], "x": 74, "y": 38, "flags": 4},
98 {"matrix": [3, 7], "x": 87, "y": 38, "flags": 4},
99 {"matrix": [3, 8], "x": 99, "y": 38, "flags": 4},
100 {"matrix": [3, 9], "x": 122, "y": 38, "flags": 4},
101 {"matrix": [3, 10], "x": 124, "y": 38, "flags": 4},
102 {"matrix": [3, 11], "x": 137, "y": 38, "flags": 4},
103 {"matrix": [3, 12], "x": 140, "y": 38, "flags": 4},
104 {"matrix": [3, 13], "x": 162, "y": 38, "flags": 4},
105 {"matrix": [3, 15], "x": 186, "y": 38, "flags": 4},
106 {"matrix": [3, 16], "x": 199, "y": 38, "flags": 4},
107 {"matrix": [3, 17], "x": 211, "y": 38, "flags": 4},
108 {"matrix": [3, 18], "x": 224, "y": 38, "flags": 4},
109 {"matrix": [4, 0], "x": 0, "y": 51, "flags": 4},
110 {"matrix": [4, 1], "x": 12, "y": 51, "flags": 4},
111 {"matrix": [4, 2], "x": 24, "y": 51, "flags": 4},
112 {"matrix": [4, 3], "x": 37, "y": 51, "flags": 4},
113 {"matrix": [4, 4], "x": 49, "y": 51, "flags": 4},
114 {"matrix": [4, 5], "x": 62, "y": 51, "flags": 4},
115 {"matrix": [4, 6], "x": 74, "y": 51, "flags": 4},
116 {"matrix": [4, 7], "x": 87, "y": 51, "flags": 4},
117 {"matrix": [4, 8], "x": 99, "y": 51, "flags": 4},
118 {"matrix": [4, 9], "x": 122, "y": 51, "flags": 4},
119 {"matrix": [4, 10], "x": 124, "y": 51, "flags": 4},
120 {"matrix": [4, 11], "x": 137, "y": 51, "flags": 4},
121 {"matrix": [4, 12], "x": 140, "y": 51, "flags": 4},
122 {"matrix": [4, 13], "x": 162, "y": 51, "flags": 4},
123 {"matrix": [4, 14], "x": 174, "y": 51, "flags": 4},
124 {"matrix": [4, 15], "x": 186, "y": 51, "flags": 4},
125 {"matrix": [4, 16], "x": 199, "y": 51, "flags": 4},
126 {"matrix": [4, 17], "x": 211, "y": 51, "flags": 4},
127 {"matrix": [4, 18], "x": 224, "y": 51, "flags": 4},
128 {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4},
129 {"matrix": [5, 1], "x": 12, "y": 64, "flags": 4},
130 {"matrix": [5, 3], "x": 37, "y": 64, "flags": 4},
131 {"matrix": [5, 6], "x": 74, "y": 64, "flags": 4},
132 {"matrix": [5, 10], "x": 124, "y": 64, "flags": 4},
133 {"matrix": [5, 11], "x": 137, "y": 64, "flags": 4},
134 {"matrix": [5, 12], "x": 140, "y": 64, "flags": 4},
135 {"matrix": [5, 13], "x": 162, "y": 64, "flags": 4},
136 {"matrix": [5, 14], "x": 174, "y": 64, "flags": 4},
137 {"matrix": [5, 15], "x": 186, "y": 64, "flags": 4},
138 {"matrix": [5, 16], "x": 199, "y": 64, "flags": 4},
139 {"matrix": [5, 17], "x": 211, "y": 64, "flags": 4},
140 {"matrix": [5, 18], "x": 224, "y": 64, "flags": 4}
141 ]
142 },
143 "matrix_pins": {
144 "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "A8", "A15", "B3", "B4", "C15", "C14", "C13", "B9", "B8", "B7", "B6"],
145 "rows": ["B0", "B1", "B2", "B15", "B14", "B13"]
146 },
147 "processor": "STM32F103",
148 "usb": {
149 "device_version": "0.0.2",
150 "pid": "0xD182"
151 },
152 "ws2812": {
153 "driver": "spi",
154 "pin": "B5"
155 },
156 "layouts": {
157 "LAYOUT_all": {
158 "layout": [
159 {"matrix": [0, 0], "x": 0, "y": 0},
160 {"matrix": [0, 2], "x": 1.5, "y": 0},
161 {"matrix": [0, 3], "x": 2.5, "y": 0},
162 {"matrix": [0, 4], "x": 3.5, "y": 0},
163 {"matrix": [0, 5], "x": 4.5, "y": 0},
164 {"matrix": [0, 6], "x": 6, "y": 0},
165 {"matrix": [0, 7], "x": 7, "y": 0},
166 {"matrix": [0, 8], "x": 8, "y": 0},
167 {"matrix": [0, 9], "x": 9, "y": 0},
168 {"matrix": [0, 10], "x": 10.5, "y": 0},
169 {"matrix": [0, 11], "x": 11.5, "y": 0},
170 {"matrix": [0, 12], "x": 12.5, "y": 0},
171 {"matrix": [0, 13], "x": 13.5, "y": 0},
172 {"matrix": [0, 14], "x": 15.25, "y": 0},
173 {"matrix": [0, 15], "x": 16.5, "y": 0},
174 {"matrix": [0, 16], "x": 17.5, "y": 0},
175 {"matrix": [0, 17], "x": 18.5, "y": 0},
176 {"matrix": [0, 18], "x": 19.5, "y": 0},
177 {"matrix": [1, 0], "x": 0, "y": 1.5},
178 {"matrix": [1, 1], "x": 1, "y": 1.5},
179 {"matrix": [1, 2], "x": 2, "y": 1.5},
180 {"matrix": [1, 3], "x": 3, "y": 1.5},
181 {"matrix": [1, 4], "x": 4, "y": 1.5},
182 {"matrix": [1, 5], "x": 5, "y": 1.5},
183 {"matrix": [1, 6], "x": 6, "y": 1.5},
184 {"matrix": [1, 7], "x": 7, "y": 1.5},
185 {"matrix": [1, 8], "x": 8, "y": 1.5},
186 {"matrix": [1, 9], "x": 9, "y": 1.5},
187 {"matrix": [1, 10], "x": 10, "y": 1.5},
188 {"matrix": [1, 11], "x": 11, "y": 1.5},
189 {"matrix": [1, 12], "x": 12, "y": 1.5},
190 {"matrix": [1, 13], "x": 13, "y": 1.5},
191 {"matrix": [2, 13], "x": 14, "y": 1.5},
192 {"matrix": [1, 14], "x": 15.25, "y": 1.5},
193 {"matrix": [1, 15], "x": 16.5, "y": 1.5},
194 {"matrix": [1, 16], "x": 17.5, "y": 1.5},
195 {"matrix": [1, 17], "x": 18.5, "y": 1.5},
196 {"matrix": [1, 18], "x": 19.5, "y": 1.5},
197 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
198 {"matrix": [2, 1], "x": 1.5, "y": 2.5},
199 {"matrix": [2, 2], "x": 2.5, "y": 2.5},
200 {"matrix": [2, 3], "x": 3.5, "y": 2.5},
201 {"matrix": [2, 4], "x": 4.5, "y": 2.5},
202 {"matrix": [2, 5], "x": 5.5, "y": 2.5},
203 {"matrix": [2, 6], "x": 6.5, "y": 2.5},
204 {"matrix": [2, 7], "x": 7.5, "y": 2.5},
205 {"matrix": [2, 8], "x": 8.5, "y": 2.5},
206 {"matrix": [2, 9], "x": 9.5, "y": 2.5},
207 {"matrix": [2, 10], "x": 10.5, "y": 2.5},
208 {"matrix": [2, 11], "x": 11.5, "y": 2.5},
209 {"matrix": [2, 12], "x": 12.5, "y": 2.5},
210 {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
211 {"matrix": [2, 14], "x": 15.25, "y": 2.5},
212 {"matrix": [2, 15], "x": 16.5, "y": 2.5},
213 {"matrix": [2, 16], "x": 17.5, "y": 2.5},
214 {"matrix": [2, 17], "x": 18.5, "y": 2.5},
215 {"matrix": [2, 18], "x": 19.5, "y": 2.5},
216 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
217 {"matrix": [3, 1], "x": 1.75, "y": 3.5},
218 {"matrix": [3, 2], "x": 2.75, "y": 3.5},
219 {"matrix": [3, 3], "x": 3.75, "y": 3.5},
220 {"matrix": [3, 4], "x": 4.75, "y": 3.5},
221 {"matrix": [3, 5], "x": 5.75, "y": 3.5},
222 {"matrix": [3, 6], "x": 6.75, "y": 3.5},
223 {"matrix": [3, 7], "x": 7.75, "y": 3.5},
224 {"matrix": [3, 8], "x": 8.75, "y": 3.5},
225 {"matrix": [3, 9], "x": 9.75, "y": 3.5},
226 {"matrix": [3, 10], "x": 10.75, "y": 3.5},
227 {"matrix": [3, 11], "x": 11.75, "y": 3.5},
228 {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
229 {"matrix": [3, 15], "x": 16.5, "y": 3.5},
230 {"matrix": [3, 16], "x": 17.5, "y": 3.5},
231 {"matrix": [3, 17], "x": 18.5, "y": 3.5},
232 {"matrix": [3, 18], "x": 19.5, "y": 3.5},
233 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
234 {"matrix": [4, 1], "x": 1.25, "y": 4.5},
235 {"matrix": [4, 2], "x": 2.25, "y": 4.5},
236 {"matrix": [4, 3], "x": 3.25, "y": 4.5},
237 {"matrix": [4, 4], "x": 4.25, "y": 4.5},
238 {"matrix": [4, 5], "x": 5.25, "y": 4.5},
239 {"matrix": [4, 6], "x": 6.25, "y": 4.5},
240 {"matrix": [4, 7], "x": 7.25, "y": 4.5},
241 {"matrix": [4, 8], "x": 8.25, "y": 4.5},
242 {"matrix": [4, 9], "x": 9.25, "y": 4.5},
243 {"matrix": [4, 10], "x": 10.25, "y": 4.5},
244 {"matrix": [4, 11], "x": 11.25, "y": 4.5},
245 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
246 {"matrix": [4, 13], "x": 14, "y": 4.5},
247 {"matrix": [4, 14], "x": 15.25, "y": 4.75},
248 {"matrix": [4, 15], "x": 16.5, "y": 4.5},
249 {"matrix": [4, 16], "x": 17.5, "y": 4.5},
250 {"matrix": [4, 17], "x": 18.5, "y": 4.5},
251 {"matrix": [4, 18], "x": 19.5, "y": 4.5},
252 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
253 {"matrix": [5, 1], "x": 1.5, "y": 5.5},
254 {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
255 {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
256 {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
257 {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
258 {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
259 {"matrix": [5, 13], "x": 14.25, "y": 5.75},
260 {"matrix": [5, 14], "x": 15.25, "y": 5.75},
261 {"matrix": [5, 15], "x": 16.25, "y": 5.75},
262 {"matrix": [5, 16], "x": 17.5, "y": 5.5},
263 {"matrix": [5, 17], "x": 18.5, "y": 5.5},
264 {"matrix": [5, 18], "x": 19.5, "y": 5.5}
265 ]
266 },
267 "LAYOUT_ansi": {
268 "layout": [
269 {"matrix": [0, 0], "x": 0, "y": 0},
270 {"matrix": [0, 2], "x": 1.5, "y": 0},
271 {"matrix": [0, 3], "x": 2.5, "y": 0},
272 {"matrix": [0, 4], "x": 3.5, "y": 0},
273 {"matrix": [0, 5], "x": 4.5, "y": 0},
274 {"matrix": [0, 6], "x": 6, "y": 0},
275 {"matrix": [0, 7], "x": 7, "y": 0},
276 {"matrix": [0, 8], "x": 8, "y": 0},
277 {"matrix": [0, 9], "x": 9, "y": 0},
278 {"matrix": [0, 10], "x": 10.5, "y": 0},
279 {"matrix": [0, 11], "x": 11.5, "y": 0},
280 {"matrix": [0, 12], "x": 12.5, "y": 0},
281 {"matrix": [0, 13], "x": 13.5, "y": 0},
282 {"matrix": [0, 14], "x": 15.25, "y": 0},
283 {"matrix": [0, 15], "x": 16.5, "y": 0},
284 {"matrix": [0, 16], "x": 17.5, "y": 0},
285 {"matrix": [0, 17], "x": 18.5, "y": 0},
286 {"matrix": [0, 18], "x": 19.5, "y": 0},
287 {"matrix": [1, 0], "x": 0, "y": 1.5},
288 {"matrix": [1, 1], "x": 1, "y": 1.5},
289 {"matrix": [1, 2], "x": 2, "y": 1.5},
290 {"matrix": [1, 3], "x": 3, "y": 1.5},
291 {"matrix": [1, 4], "x": 4, "y": 1.5},
292 {"matrix": [1, 5], "x": 5, "y": 1.5},
293 {"matrix": [1, 6], "x": 6, "y": 1.5},
294 {"matrix": [1, 7], "x": 7, "y": 1.5},
295 {"matrix": [1, 8], "x": 8, "y": 1.5},
296 {"matrix": [1, 9], "x": 9, "y": 1.5},
297 {"matrix": [1, 10], "x": 10, "y": 1.5},
298 {"matrix": [1, 11], "x": 11, "y": 1.5},
299 {"matrix": [1, 12], "x": 12, "y": 1.5},
300 {"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
301 {"matrix": [1, 14], "x": 15.25, "y": 1.5},
302 {"matrix": [1, 15], "x": 16.5, "y": 1.5},
303 {"matrix": [1, 16], "x": 17.5, "y": 1.5},
304 {"matrix": [1, 17], "x": 18.5, "y": 1.5},
305 {"matrix": [1, 18], "x": 19.5, "y": 1.5},
306 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
307 {"matrix": [2, 1], "x": 1.5, "y": 2.5},
308 {"matrix": [2, 2], "x": 2.5, "y": 2.5},
309 {"matrix": [2, 3], "x": 3.5, "y": 2.5},
310 {"matrix": [2, 4], "x": 4.5, "y": 2.5},
311 {"matrix": [2, 5], "x": 5.5, "y": 2.5},
312 {"matrix": [2, 6], "x": 6.5, "y": 2.5},
313 {"matrix": [2, 7], "x": 7.5, "y": 2.5},
314 {"matrix": [2, 8], "x": 8.5, "y": 2.5},
315 {"matrix": [2, 9], "x": 9.5, "y": 2.5},
316 {"matrix": [2, 10], "x": 10.5, "y": 2.5},
317 {"matrix": [2, 11], "x": 11.5, "y": 2.5},
318 {"matrix": [2, 12], "x": 12.5, "y": 2.5},
319 {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
320 {"matrix": [2, 14], "x": 15.25, "y": 2.5},
321 {"matrix": [2, 15], "x": 16.5, "y": 2.5},
322 {"matrix": [2, 16], "x": 17.5, "y": 2.5},
323 {"matrix": [2, 17], "x": 18.5, "y": 2.5},
324 {"matrix": [2, 18], "x": 19.5, "y": 2.5},
325 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
326 {"matrix": [3, 1], "x": 1.75, "y": 3.5},
327 {"matrix": [3, 2], "x": 2.75, "y": 3.5},
328 {"matrix": [3, 3], "x": 3.75, "y": 3.5},
329 {"matrix": [3, 4], "x": 4.75, "y": 3.5},
330 {"matrix": [3, 5], "x": 5.75, "y": 3.5},
331 {"matrix": [3, 6], "x": 6.75, "y": 3.5},
332 {"matrix": [3, 7], "x": 7.75, "y": 3.5},
333 {"matrix": [3, 8], "x": 8.75, "y": 3.5},
334 {"matrix": [3, 9], "x": 9.75, "y": 3.5},
335 {"matrix": [3, 10], "x": 10.75, "y": 3.5},
336 {"matrix": [3, 11], "x": 11.75, "y": 3.5},
337 {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
338 {"matrix": [3, 15], "x": 16.5, "y": 3.5},
339 {"matrix": [3, 16], "x": 17.5, "y": 3.5},
340 {"matrix": [3, 17], "x": 18.5, "y": 3.5},
341 {"matrix": [3, 18], "x": 19.5, "y": 3.5},
342 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
343 {"matrix": [4, 2], "x": 2.25, "y": 4.5},
344 {"matrix": [4, 3], "x": 3.25, "y": 4.5},
345 {"matrix": [4, 4], "x": 4.25, "y": 4.5},
346 {"matrix": [4, 5], "x": 5.25, "y": 4.5},
347 {"matrix": [4, 6], "x": 6.25, "y": 4.5},
348 {"matrix": [4, 7], "x": 7.25, "y": 4.5},
349 {"matrix": [4, 8], "x": 8.25, "y": 4.5},
350 {"matrix": [4, 9], "x": 9.25, "y": 4.5},
351 {"matrix": [4, 10], "x": 10.25, "y": 4.5},
352 {"matrix": [4, 11], "x": 11.25, "y": 4.5},
353 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
354 {"matrix": [4, 14], "x": 15.25, "y": 4.75},
355 {"matrix": [4, 15], "x": 16.5, "y": 4.5},
356 {"matrix": [4, 16], "x": 17.5, "y": 4.5},
357 {"matrix": [4, 17], "x": 18.5, "y": 4.5},
358 {"matrix": [4, 18], "x": 19.5, "y": 4.5},
359 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
360 {"matrix": [5, 1], "x": 1.5, "y": 5.5},
361 {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
362 {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
363 {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
364 {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
365 {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
366 {"matrix": [5, 13], "x": 14.25, "y": 5.75},
367 {"matrix": [5, 14], "x": 15.25, "y": 5.75},
368 {"matrix": [5, 15], "x": 16.25, "y": 5.75},
369 {"matrix": [5, 16], "x": 17.5, "y": 5.5},
370 {"matrix": [5, 17], "x": 18.5, "y": 5.5},
371 {"matrix": [5, 18], "x": 19.5, "y": 5.5}
372 ]
373 },
374 "LAYOUT_ansi_split_bs_rshift": {
375 "layout": [
376 {"matrix": [0, 0], "x": 0, "y": 0},
377 {"matrix": [0, 2], "x": 1.5, "y": 0},
378 {"matrix": [0, 3], "x": 2.5, "y": 0},
379 {"matrix": [0, 4], "x": 3.5, "y": 0},
380 {"matrix": [0, 5], "x": 4.5, "y": 0},
381 {"matrix": [0, 6], "x": 6, "y": 0},
382 {"matrix": [0, 7], "x": 7, "y": 0},
383 {"matrix": [0, 8], "x": 8, "y": 0},
384 {"matrix": [0, 9], "x": 9, "y": 0},
385 {"matrix": [0, 10], "x": 10.5, "y": 0},
386 {"matrix": [0, 11], "x": 11.5, "y": 0},
387 {"matrix": [0, 12], "x": 12.5, "y": 0},
388 {"matrix": [0, 13], "x": 13.5, "y": 0},
389 {"matrix": [0, 14], "x": 15.25, "y": 0},
390 {"matrix": [0, 15], "x": 16.5, "y": 0},
391 {"matrix": [0, 16], "x": 17.5, "y": 0},
392 {"matrix": [0, 17], "x": 18.5, "y": 0},
393 {"matrix": [0, 18], "x": 19.5, "y": 0},
394 {"matrix": [1, 0], "x": 0, "y": 1.5},
395 {"matrix": [1, 1], "x": 1, "y": 1.5},
396 {"matrix": [1, 2], "x": 2, "y": 1.5},
397 {"matrix": [1, 3], "x": 3, "y": 1.5},
398 {"matrix": [1, 4], "x": 4, "y": 1.5},
399 {"matrix": [1, 5], "x": 5, "y": 1.5},
400 {"matrix": [1, 6], "x": 6, "y": 1.5},
401 {"matrix": [1, 7], "x": 7, "y": 1.5},
402 {"matrix": [1, 8], "x": 8, "y": 1.5},
403 {"matrix": [1, 9], "x": 9, "y": 1.5},
404 {"matrix": [1, 10], "x": 10, "y": 1.5},
405 {"matrix": [1, 11], "x": 11, "y": 1.5},
406 {"matrix": [1, 12], "x": 12, "y": 1.5},
407 {"matrix": [1, 13], "x": 13, "y": 1.5},
408 {"matrix": [2, 13], "x": 14, "y": 1.5},
409 {"matrix": [1, 14], "x": 15.25, "y": 1.5},
410 {"matrix": [1, 15], "x": 16.5, "y": 1.5},
411 {"matrix": [1, 16], "x": 17.5, "y": 1.5},
412 {"matrix": [1, 17], "x": 18.5, "y": 1.5},
413 {"matrix": [1, 18], "x": 19.5, "y": 1.5},
414 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
415 {"matrix": [2, 1], "x": 1.5, "y": 2.5},
416 {"matrix": [2, 2], "x": 2.5, "y": 2.5},
417 {"matrix": [2, 3], "x": 3.5, "y": 2.5},
418 {"matrix": [2, 4], "x": 4.5, "y": 2.5},
419 {"matrix": [2, 5], "x": 5.5, "y": 2.5},
420 {"matrix": [2, 6], "x": 6.5, "y": 2.5},
421 {"matrix": [2, 7], "x": 7.5, "y": 2.5},
422 {"matrix": [2, 8], "x": 8.5, "y": 2.5},
423 {"matrix": [2, 9], "x": 9.5, "y": 2.5},
424 {"matrix": [2, 10], "x": 10.5, "y": 2.5},
425 {"matrix": [2, 11], "x": 11.5, "y": 2.5},
426 {"matrix": [2, 12], "x": 12.5, "y": 2.5},
427 {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
428 {"matrix": [2, 14], "x": 15.25, "y": 2.5},
429 {"matrix": [2, 15], "x": 16.5, "y": 2.5},
430 {"matrix": [2, 16], "x": 17.5, "y": 2.5},
431 {"matrix": [2, 17], "x": 18.5, "y": 2.5},
432 {"matrix": [2, 18], "x": 19.5, "y": 2.5},
433 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
434 {"matrix": [3, 1], "x": 1.75, "y": 3.5},
435 {"matrix": [3, 2], "x": 2.75, "y": 3.5},
436 {"matrix": [3, 3], "x": 3.75, "y": 3.5},
437 {"matrix": [3, 4], "x": 4.75, "y": 3.5},
438 {"matrix": [3, 5], "x": 5.75, "y": 3.5},
439 {"matrix": [3, 6], "x": 6.75, "y": 3.5},
440 {"matrix": [3, 7], "x": 7.75, "y": 3.5},
441 {"matrix": [3, 8], "x": 8.75, "y": 3.5},
442 {"matrix": [3, 9], "x": 9.75, "y": 3.5},
443 {"matrix": [3, 10], "x": 10.75, "y": 3.5},
444 {"matrix": [3, 11], "x": 11.75, "y": 3.5},
445 {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
446 {"matrix": [3, 15], "x": 16.5, "y": 3.5},
447 {"matrix": [3, 16], "x": 17.5, "y": 3.5},
448 {"matrix": [3, 17], "x": 18.5, "y": 3.5},
449 {"matrix": [3, 18], "x": 19.5, "y": 3.5},
450 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
451 {"matrix": [4, 2], "x": 2.25, "y": 4.5},
452 {"matrix": [4, 3], "x": 3.25, "y": 4.5},
453 {"matrix": [4, 4], "x": 4.25, "y": 4.5},
454 {"matrix": [4, 5], "x": 5.25, "y": 4.5},
455 {"matrix": [4, 6], "x": 6.25, "y": 4.5},
456 {"matrix": [4, 7], "x": 7.25, "y": 4.5},
457 {"matrix": [4, 8], "x": 8.25, "y": 4.5},
458 {"matrix": [4, 9], "x": 9.25, "y": 4.5},
459 {"matrix": [4, 10], "x": 10.25, "y": 4.5},
460 {"matrix": [4, 11], "x": 11.25, "y": 4.5},
461 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
462 {"matrix": [4, 13], "x": 14, "y": 4.5},
463 {"matrix": [4, 14], "x": 15.25, "y": 4.75},
464 {"matrix": [4, 15], "x": 16.5, "y": 4.5},
465 {"matrix": [4, 16], "x": 17.5, "y": 4.5},
466 {"matrix": [4, 17], "x": 18.5, "y": 4.5},
467 {"matrix": [4, 18], "x": 19.5, "y": 4.5},
468 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
469 {"matrix": [5, 1], "x": 1.5, "y": 5.5},
470 {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
471 {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
472 {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
473 {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
474 {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
475 {"matrix": [5, 13], "x": 14.25, "y": 5.75},
476 {"matrix": [5, 14], "x": 15.25, "y": 5.75},
477 {"matrix": [5, 15], "x": 16.25, "y": 5.75},
478 {"matrix": [5, 16], "x": 17.5, "y": 5.5},
479 {"matrix": [5, 17], "x": 18.5, "y": 5.5},
480 {"matrix": [5, 18], "x": 19.5, "y": 5.5}
481 ]
482 },
483 "LAYOUT_iso": {
484 "layout": [
485 {"matrix": [0, 0], "x": 0, "y": 0},
486 {"matrix": [0, 2], "x": 1.5, "y": 0},
487 {"matrix": [0, 3], "x": 2.5, "y": 0},
488 {"matrix": [0, 4], "x": 3.5, "y": 0},
489 {"matrix": [0, 5], "x": 4.5, "y": 0},
490 {"matrix": [0, 6], "x": 6, "y": 0},
491 {"matrix": [0, 7], "x": 7, "y": 0},
492 {"matrix": [0, 8], "x": 8, "y": 0},
493 {"matrix": [0, 9], "x": 9, "y": 0},
494 {"matrix": [0, 10], "x": 10.5, "y": 0},
495 {"matrix": [0, 11], "x": 11.5, "y": 0},
496 {"matrix": [0, 12], "x": 12.5, "y": 0},
497 {"matrix": [0, 13], "x": 13.5, "y": 0},
498 {"matrix": [0, 14], "x": 15.25, "y": 0},
499 {"matrix": [0, 15], "x": 16.5, "y": 0},
500 {"matrix": [0, 16], "x": 17.5, "y": 0},
501 {"matrix": [0, 17], "x": 18.5, "y": 0},
502 {"matrix": [0, 18], "x": 19.5, "y": 0},
503 {"matrix": [1, 0], "x": 0, "y": 1.5},
504 {"matrix": [1, 1], "x": 1, "y": 1.5},
505 {"matrix": [1, 2], "x": 2, "y": 1.5},
506 {"matrix": [1, 3], "x": 3, "y": 1.5},
507 {"matrix": [1, 4], "x": 4, "y": 1.5},
508 {"matrix": [1, 5], "x": 5, "y": 1.5},
509 {"matrix": [1, 6], "x": 6, "y": 1.5},
510 {"matrix": [1, 7], "x": 7, "y": 1.5},
511 {"matrix": [1, 8], "x": 8, "y": 1.5},
512 {"matrix": [1, 9], "x": 9, "y": 1.5},
513 {"matrix": [1, 10], "x": 10, "y": 1.5},
514 {"matrix": [1, 11], "x": 11, "y": 1.5},
515 {"matrix": [1, 12], "x": 12, "y": 1.5},
516 {"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
517 {"matrix": [1, 14], "x": 15.25, "y": 1.5},
518 {"matrix": [1, 15], "x": 16.5, "y": 1.5},
519 {"matrix": [1, 16], "x": 17.5, "y": 1.5},
520 {"matrix": [1, 17], "x": 18.5, "y": 1.5},
521 {"matrix": [1, 18], "x": 19.5, "y": 1.5},
522 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
523 {"matrix": [2, 1], "x": 1.5, "y": 2.5},
524 {"matrix": [2, 2], "x": 2.5, "y": 2.5},
525 {"matrix": [2, 3], "x": 3.5, "y": 2.5},
526 {"matrix": [2, 4], "x": 4.5, "y": 2.5},
527 {"matrix": [2, 5], "x": 5.5, "y": 2.5},
528 {"matrix": [2, 6], "x": 6.5, "y": 2.5},
529 {"matrix": [2, 7], "x": 7.5, "y": 2.5},
530 {"matrix": [2, 8], "x": 8.5, "y": 2.5},
531 {"matrix": [2, 9], "x": 9.5, "y": 2.5},
532 {"matrix": [2, 10], "x": 10.5, "y": 2.5},
533 {"matrix": [2, 11], "x": 11.5, "y": 2.5},
534 {"matrix": [2, 12], "x": 12.5, "y": 2.5},
535 {"matrix": [3, 13], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
536 {"matrix": [2, 14], "x": 15.25, "y": 2.5},
537 {"matrix": [2, 15], "x": 16.5, "y": 2.5},
538 {"matrix": [2, 16], "x": 17.5, "y": 2.5},
539 {"matrix": [2, 17], "x": 18.5, "y": 2.5},
540 {"matrix": [2, 18], "x": 19.5, "y": 2.5},
541 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
542 {"matrix": [3, 1], "x": 1.75, "y": 3.5},
543 {"matrix": [3, 2], "x": 2.75, "y": 3.5},
544 {"matrix": [3, 3], "x": 3.75, "y": 3.5},
545 {"matrix": [3, 4], "x": 4.75, "y": 3.5},
546 {"matrix": [3, 5], "x": 5.75, "y": 3.5},
547 {"matrix": [3, 6], "x": 6.75, "y": 3.5},
548 {"matrix": [3, 7], "x": 7.75, "y": 3.5},
549 {"matrix": [3, 8], "x": 8.75, "y": 3.5},
550 {"matrix": [3, 9], "x": 9.75, "y": 3.5},
551 {"matrix": [3, 10], "x": 10.75, "y": 3.5},
552 {"matrix": [3, 11], "x": 11.75, "y": 3.5},
553 {"matrix": [3, 12], "x": 12.75, "y": 3.5},
554 {"matrix": [3, 15], "x": 16.5, "y": 3.5},
555 {"matrix": [3, 16], "x": 17.5, "y": 3.5},
556 {"matrix": [3, 17], "x": 18.5, "y": 3.5},
557 {"matrix": [3, 18], "x": 19.5, "y": 3.5},
558 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
559 {"matrix": [4, 1], "x": 1.25, "y": 4.5},
560 {"matrix": [4, 2], "x": 2.25, "y": 4.5},
561 {"matrix": [4, 3], "x": 3.25, "y": 4.5},
562 {"matrix": [4, 4], "x": 4.25, "y": 4.5},
563 {"matrix": [4, 5], "x": 5.25, "y": 4.5},
564 {"matrix": [4, 6], "x": 6.25, "y": 4.5},
565 {"matrix": [4, 7], "x": 7.25, "y": 4.5},
566 {"matrix": [4, 8], "x": 8.25, "y": 4.5},
567 {"matrix": [4, 9], "x": 9.25, "y": 4.5},
568 {"matrix": [4, 10], "x": 10.25, "y": 4.5},
569 {"matrix": [4, 11], "x": 11.25, "y": 4.5},
570 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
571 {"matrix": [4, 14], "x": 15.25, "y": 4.75},
572 {"matrix": [4, 15], "x": 16.5, "y": 4.5},
573 {"matrix": [4, 16], "x": 17.5, "y": 4.5},
574 {"matrix": [4, 17], "x": 18.5, "y": 4.5},
575 {"matrix": [4, 18], "x": 19.5, "y": 4.5},
576 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
577 {"matrix": [5, 1], "x": 1.5, "y": 5.5},
578 {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
579 {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
580 {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
581 {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
582 {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
583 {"matrix": [5, 13], "x": 14.25, "y": 5.75},
584 {"matrix": [5, 14], "x": 15.25, "y": 5.75},
585 {"matrix": [5, 15], "x": 16.25, "y": 5.75},
586 {"matrix": [5, 16], "x": 17.5, "y": 5.5},
587 {"matrix": [5, 17], "x": 18.5, "y": 5.5},
588 {"matrix": [5, 18], "x": 19.5, "y": 5.5}
589 ]
590 },
591 "LAYOUT_iso_split_bs_rshift": {
592 "layout": [
593 {"matrix": [0, 0], "x": 0, "y": 0},
594 {"matrix": [0, 2], "x": 1.5, "y": 0},
595 {"matrix": [0, 3], "x": 2.5, "y": 0},
596 {"matrix": [0, 4], "x": 3.5, "y": 0},
597 {"matrix": [0, 5], "x": 4.5, "y": 0},
598 {"matrix": [0, 6], "x": 6, "y": 0},
599 {"matrix": [0, 7], "x": 7, "y": 0},
600 {"matrix": [0, 8], "x": 8, "y": 0},
601 {"matrix": [0, 9], "x": 9, "y": 0},
602 {"matrix": [0, 10], "x": 10.5, "y": 0},
603 {"matrix": [0, 11], "x": 11.5, "y": 0},
604 {"matrix": [0, 12], "x": 12.5, "y": 0},
605 {"matrix": [0, 13], "x": 13.5, "y": 0},
606 {"matrix": [0, 14], "x": 15.25, "y": 0},
607 {"matrix": [0, 15], "x": 16.5, "y": 0},
608 {"matrix": [0, 16], "x": 17.5, "y": 0},
609 {"matrix": [0, 17], "x": 18.5, "y": 0},
610 {"matrix": [0, 18], "x": 19.5, "y": 0},
611 {"matrix": [1, 0], "x": 0, "y": 1.5},
612 {"matrix": [1, 1], "x": 1, "y": 1.5},
613 {"matrix": [1, 2], "x": 2, "y": 1.5},
614 {"matrix": [1, 3], "x": 3, "y": 1.5},
615 {"matrix": [1, 4], "x": 4, "y": 1.5},
616 {"matrix": [1, 5], "x": 5, "y": 1.5},
617 {"matrix": [1, 6], "x": 6, "y": 1.5},
618 {"matrix": [1, 7], "x": 7, "y": 1.5},
619 {"matrix": [1, 8], "x": 8, "y": 1.5},
620 {"matrix": [1, 9], "x": 9, "y": 1.5},
621 {"matrix": [1, 10], "x": 10, "y": 1.5},
622 {"matrix": [1, 11], "x": 11, "y": 1.5},
623 {"matrix": [1, 12], "x": 12, "y": 1.5},
624 {"matrix": [1, 13], "x": 13, "y": 1.5},
625 {"matrix": [2, 13], "x": 14, "y": 1.5},
626 {"matrix": [1, 14], "x": 15.25, "y": 1.5},
627 {"matrix": [1, 15], "x": 16.5, "y": 1.5},
628 {"matrix": [1, 16], "x": 17.5, "y": 1.5},
629 {"matrix": [1, 17], "x": 18.5, "y": 1.5},
630 {"matrix": [1, 18], "x": 19.5, "y": 1.5},
631 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
632 {"matrix": [2, 1], "x": 1.5, "y": 2.5},
633 {"matrix": [2, 2], "x": 2.5, "y": 2.5},
634 {"matrix": [2, 3], "x": 3.5, "y": 2.5},
635 {"matrix": [2, 4], "x": 4.5, "y": 2.5},
636 {"matrix": [2, 5], "x": 5.5, "y": 2.5},
637 {"matrix": [2, 6], "x": 6.5, "y": 2.5},
638 {"matrix": [2, 7], "x": 7.5, "y": 2.5},
639 {"matrix": [2, 8], "x": 8.5, "y": 2.5},
640 {"matrix": [2, 9], "x": 9.5, "y": 2.5},
641 {"matrix": [2, 10], "x": 10.5, "y": 2.5},
642 {"matrix": [2, 11], "x": 11.5, "y": 2.5},
643 {"matrix": [2, 12], "x": 12.5, "y": 2.5},
644 {"matrix": [3, 13], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
645 {"matrix": [2, 14], "x": 15.25, "y": 2.5},
646 {"matrix": [2, 15], "x": 16.5, "y": 2.5},
647 {"matrix": [2, 16], "x": 17.5, "y": 2.5},
648 {"matrix": [2, 17], "x": 18.5, "y": 2.5},
649 {"matrix": [2, 18], "x": 19.5, "y": 2.5},
650 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
651 {"matrix": [3, 1], "x": 1.75, "y": 3.5},
652 {"matrix": [3, 2], "x": 2.75, "y": 3.5},
653 {"matrix": [3, 3], "x": 3.75, "y": 3.5},
654 {"matrix": [3, 4], "x": 4.75, "y": 3.5},
655 {"matrix": [3, 5], "x": 5.75, "y": 3.5},
656 {"matrix": [3, 6], "x": 6.75, "y": 3.5},
657 {"matrix": [3, 7], "x": 7.75, "y": 3.5},
658 {"matrix": [3, 8], "x": 8.75, "y": 3.5},
659 {"matrix": [3, 9], "x": 9.75, "y": 3.5},
660 {"matrix": [3, 10], "x": 10.75, "y": 3.5},
661 {"matrix": [3, 11], "x": 11.75, "y": 3.5},
662 {"matrix": [3, 12], "x": 12.75, "y": 3.5},
663 {"matrix": [3, 15], "x": 16.5, "y": 3.5},
664 {"matrix": [3, 16], "x": 17.5, "y": 3.5},
665 {"matrix": [3, 17], "x": 18.5, "y": 3.5},
666 {"matrix": [3, 18], "x": 19.5, "y": 3.5},
667 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
668 {"matrix": [4, 1], "x": 1.25, "y": 4.5},
669 {"matrix": [4, 2], "x": 2.25, "y": 4.5},
670 {"matrix": [4, 3], "x": 3.25, "y": 4.5},
671 {"matrix": [4, 4], "x": 4.25, "y": 4.5},
672 {"matrix": [4, 5], "x": 5.25, "y": 4.5},
673 {"matrix": [4, 6], "x": 6.25, "y": 4.5},
674 {"matrix": [4, 7], "x": 7.25, "y": 4.5},
675 {"matrix": [4, 8], "x": 8.25, "y": 4.5},
676 {"matrix": [4, 9], "x": 9.25, "y": 4.5},
677 {"matrix": [4, 10], "x": 10.25, "y": 4.5},
678 {"matrix": [4, 11], "x": 11.25, "y": 4.5},
679 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
680 {"matrix": [4, 13], "x": 14, "y": 4.5},
681 {"matrix": [4, 14], "x": 15.25, "y": 4.75},
682 {"matrix": [4, 15], "x": 16.5, "y": 4.5},
683 {"matrix": [4, 16], "x": 17.5, "y": 4.5},
684 {"matrix": [4, 17], "x": 18.5, "y": 4.5},
685 {"matrix": [4, 18], "x": 19.5, "y": 4.5},
686 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
687 {"matrix": [5, 1], "x": 1.5, "y": 5.5},
688 {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
689 {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
690 {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
691 {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
692 {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
693 {"matrix": [5, 13], "x": 14.25, "y": 5.75},
694 {"matrix": [5, 14], "x": 15.25, "y": 5.75},
695 {"matrix": [5, 15], "x": 16.25, "y": 5.75},
696 {"matrix": [5, 16], "x": 17.5, "y": 5.5},
697 {"matrix": [5, 17], "x": 18.5, "y": 5.5},
698 {"matrix": [5, 18], "x": 19.5, "y": 5.5}
699 ]
700 }
701 }
702} \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e2a5ef0d0d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
21 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_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
24 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
26 )
27};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c
new file mode 100644
index 0000000000..2cc1518fee
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c
@@ -0,0 +1,28 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20 [0] = LAYOUT_ansi(
21 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
22 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 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_P4, KC_P5, KC_P6, KC_PPLS,
25 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_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
27 )
28};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..b28913c49b
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c
@@ -0,0 +1,28 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20 [0] = LAYOUT_ansi_split_bs_rshift(
21 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
22 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_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 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_P4, KC_P5, KC_P6, KC_PPLS,
25 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
27 )
28};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..9a59431a64
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c
@@ -0,0 +1,28 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20 [0] = LAYOUT_iso(
21 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
22 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
23 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_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 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_P4, KC_P5, KC_P6, KC_PPLS,
25 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_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
27 )
28};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..196b855ceb
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c
@@ -0,0 +1,28 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19
20 [0] = LAYOUT_iso_split_bs_rshift(
21 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
22 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_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
23 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_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 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_P4, KC_P5, KC_P6, KC_PPLS,
25 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
27 )
28};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..477d7bac2a
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c
@@ -0,0 +1,27 @@
1/* Copyright 2023 Mechlovin'
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 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_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
21 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_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
24 KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
26 )
27};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md b/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md
new file mode 100644
index 0000000000..776bba84f8
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md
@@ -0,0 +1,37 @@
1# Matrix Diagram for Mechlovin.Studio Olly JF Rev. 2
2
3```
4┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐
5│00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D ││0E ││0F │0G │0H │0I │
6└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┘└───┴───┴───┴───┘
7┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐ ┌───────┐
8│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │2D ││1E ││1F │1G │1H │1I │ │1D │ 2u Backspace
9├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └─┬─────┤ ┌───┐
10│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │3C ││2E ││2F │2G │2H │2I │ │ │ │ │
11├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘├───┼───┼───┼───┤ ┌──┴┐3D │ │3I │ 2u Numpad Plus
12│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3F │3G │3H │3I │ │3C │ │ │ │
13├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ├───┼───┼───┼───┤ └───┴────┘ ├───┤
14│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │┌───┐│4F │4G │4H │4I │ ISO Enter │ │
15├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬────┼───┘│4E │└───┼───┼───┼───┤ │5I │ 2u Numpad Enter
16│50 │51 │53 │56 │5A │5B │5C │┌───┼───┼───┐│5G │5H │5I │ │ │
17└─────┴───┴─────┴────────────────────────┴────┴────┴────┘│5D │5E │5F │└───┴───┴───┘ └───┘
18 └───┴───┴───┘
19┌────────┐ ┌──────────┐ ┌───────┐
20│40 │ 2.25u LShift 2.75u RShift │4C │ │5G │ 2u Numpad Zero
21└────────┘ └──────────┘ └───────┘
22┌────┬────┬────┬────────────────────────┬─────┬─────┬───┐
23│50 │51 │53 │56 │5A │5B │5C │
24└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
25┌────┬────┬────┬────────────────────────┬─────┬───┬─────┐
26│50 │51 │53 │56 │5A │5B │5C │
27└────┴────┴────┴────────────────────────┴─────┴───┴─────┘
28┌────┬────┬────┬────────────────────────┬─────┬────┬────┐
29│50 │51 │53 │56 │5A │5B │5C │
30└────┴────┴────┴────────────────────────┴─────┴────┴────┘
31┌────┬────┬────┬────────────────────────┬─────┬─────┬───┐
32│50 │51 │53 │56 │5A │5B │5C │
33└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
34┌─────┬───┬─────┬──────────────────────────┬─────┬──────┐
35│50 │51 │53 │56 │5B │5C │ RWKL
36└─────┴───┴─────┴──────────────────────────┴─────┴──────┘
37```
diff --git a/keyboards/mechlovin/olly/jf/rev2/mcuconf.h b/keyboards/mechlovin/olly/jf/rev2/mcuconf.h
new file mode 100644
index 0000000000..b987f486b9
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/mcuconf.h
@@ -0,0 +1,27 @@
1/* Copyright 2023 QMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 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
18#pragma once
19
20#include_next <mcuconf.h>
21
22
23#undef STM32_SPI_USE_SPI1
24#define STM32_SPI_USE_SPI1 TRUE
25
26#undef STM32_I2C_USE_I2C2
27#define STM32_I2C_USE_I2C2 TRUE
diff --git a/keyboards/mechlovin/olly/jf/rev2/readme.md b/keyboards/mechlovin/olly/jf/rev2/readme.md
new file mode 100644
index 0000000000..b165c35778
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/readme.md
@@ -0,0 +1,27 @@
1# Mechlovin Olly jf/rev2
2
3![jf/rev2](https://i.imgur.com/IrfTGE7h.png)
4
5Olly jf/rev2 PCB, compatible Duck Jetfire keyboard.
6
7* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/)
8* Hardware Supported: Jetfire Korean Kustom
9* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/olly/jf/rev2:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/olly/jf/rev2:default:flash
18
19See 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).
20
21## Bootloader
22
23Enter the bootloader in 3 ways:
24
25By keycode: Press the key mapped to `QK_BOOT` if it is available.
26By Bootloader: hold ESC key while plugging in (jump to bootloader)
27By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev2/rev2.c b/keyboards/mechlovin/olly/jf/rev2/rev2.c
new file mode 100644
index 0000000000..04cf3b836d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/rev2.c
@@ -0,0 +1,92 @@
1/* Copyright 2023 Mechlovin'
2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation, either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 */
15
16#include "quantum.h"
17
18void board_init(void) {
19 AFIO->MAPR |= AFIO_MAPR_SPI1_REMAP;
20}
21
22const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
23/* Refer to IS31 manual for these locations
24 * driver
25 * | LED address
26 * | | */
27 { 0, C1_8 }, { 0, C3_8 }, { 0, C4_8 }, { 0, C5_8 }, { 0, C6_8 }, { 0, C7_8 }, { 0, C8_8 }, { 0, C9_8 }, { 0, C1_9 }, { 0, C2_9 }, { 0, C3_9 }, { 0, C4_9 }, { 0, C5_9 }, { 0, C6_9 }, { 0, C7_9 }, { 0, C8_9 }, { 0, C9_9 }, { 0, C1_16 },
28 { 0, C1_7 }, { 0, C2_7 }, { 0, C3_7 }, { 0, C4_7 }, { 0, C5_7 }, { 0, C6_7 }, { 0, C7_7 }, { 0, C8_7 }, { 0, C9_7 }, { 0, C1_10 }, { 0, C2_10 }, { 0, C3_10 }, { 0, C4_10 }, { 0, C5_10 }, { 0, C6_10 }, { 0, C7_10 }, { 0, C8_10 }, { 0, C9_10 }, { 0, C2_16 },
29 { 0, C1_6 }, { 0, C2_6 }, { 0, C3_6 }, { 0, C4_6 }, { 0, C5_6 }, { 0, C6_6 }, { 0, C7_6 }, { 0, C8_6 }, { 0, C9_6 }, { 0, C1_11 }, { 0, C2_11 }, { 0, C3_11 }, { 0, C4_11 }, { 0, C5_11 }, { 0, C6_11 }, { 0, C7_11 }, { 0, C8_11 }, { 0, C9_11 }, { 0, C3_16 },
30 { 0, C1_5 }, { 0, C2_5 }, { 0, C3_5 }, { 0, C4_5 }, { 0, C5_5 }, { 0, C6_5 }, { 0, C7_5 }, { 0, C8_5 }, { 0, C9_5 }, { 0, C1_12 }, { 0, C2_12 }, { 0, C3_12 }, { 0, C4_12 }, { 0, C5_12 }, { 0, C7_12 }, { 0, C8_12 }, { 0, C9_12 }, { 0, C4_16 },
31 { 0, C1_4 }, { 0, C2_4 }, { 0, C3_4 }, { 0, C4_4 }, { 0, C5_4 }, { 0, C6_4 }, { 0, C7_4 }, { 0, C8_4 }, { 0, C9_4 }, { 0, C1_13 }, { 0, C2_13 }, { 0, C3_13 }, { 0, C4_13 }, { 0, C5_13 }, { 0, C6_13 }, { 0, C7_13 }, { 0, C8_13 }, { 0, C9_13 }, { 0, C5_16 },
32 { 0, C1_3 }, { 0, C2_3 }, { 0, C4_3 }, { 0, C7_3 }, { 0, C2_14 }, { 0, C3_14 }, { 0, C4_14 }, { 0, C5_14 }, { 0, C6_14 }, { 0, C7_14 }, { 0, C8_15 }, { 0, C9_15 }, { 0, C7_16 },
33 { 0, C2_1 }, { 0, C1_1 }, { 0, C9_1 }, // Lock LED Indicator
34 { 0, C7_15 }, { 0, C6_15 }, { 0, C9_16 }, { 0, C8_16 }, { 0, C1_15 }, // Layer LED Indicator
35};
36
37
38
39bool led_matrix_indicators_kb(void) {
40 if (!led_matrix_indicators_user()) { return false; }
41 if (host_keyboard_led_state().caps_lock) {
42 led_matrix_set_value(106, 0xFF);
43 led_matrix_set_value(56, 0xFF);
44 } else {
45 led_matrix_set_value(106, 0x00);
46 }
47 if (host_keyboard_led_state().num_lock) {
48 led_matrix_set_value(107, 0xFF);
49 led_matrix_set_value(33, 0xFF);
50 } else {
51 led_matrix_set_value(107, 0x00);
52 }
53 if (host_keyboard_led_state().scroll_lock) {
54 led_matrix_set_value(108, 0xFF);
55 } else {
56 led_matrix_set_value(108, 0x00);
57 }
58 // if on layer 0, turn on L1 LED, otherwise off.
59 if (layer_state_is(0)) {
60 led_matrix_set_value(109, 0xFF);
61 } else {
62 led_matrix_set_value(109, 0x00);
63 }
64 // if on layer 1, turn on L2 LED, otherwise off.
65 if (layer_state_is(1)) {
66 led_matrix_set_value(110, 0xFF);
67 } else {
68 led_matrix_set_value(110, 0x00);
69 }
70
71 // if on layer 2, turn on L3 LED, otherwise off.
72 if (layer_state_is(2)) {
73 led_matrix_set_value(111, 0xFF);
74 } else {
75 led_matrix_set_value(111, 0x00);
76 }
77
78 // if on layer 3, turn on L4 LED, otherwise off.
79 if (layer_state_is(3)) {
80 led_matrix_set_value(112, 0xFF);
81 } else {
82 led_matrix_set_value(112, 0x00);
83 }
84 // if on layer 4, turn on L5 LED, otherwise off.
85 if (layer_state_is(4)) {
86 led_matrix_set_value(113, 0xFF);
87 } else {
88 led_matrix_set_value(114, 0x00);
89 }
90
91 return true;
92}
diff --git a/keyboards/mechlovin/olly/jf/rev2/rules.mk b/keyboards/mechlovin/olly/jf/rev2/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/mechlovin/olly/jf/rules.mk b/keyboards/mechlovin/olly/jf/rules.mk
index 1d15495eef..fa0eceeb8a 100644
--- a/keyboards/mechlovin/olly/jf/rules.mk
+++ b/keyboards/mechlovin/olly/jf/rules.mk
@@ -1,18 +1 @@
1# Processor frequency DEFAULT_FOLDER = mechlovin/olly/jf/rev1
2F_CPU = 16000000
3
4# Build Options
5# change yes to no to disable
6#
7BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
8MOUSEKEY_ENABLE = yes # Mouse keys
9EXTRAKEY_ENABLE = yes # Audio control and System control
10CONSOLE_ENABLE = no # Console for debug
11COMMAND_ENABLE = no # Commands for debug and configuration
12NKRO_ENABLE = no # Enable N-Key Rollover
13BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
14RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
15AUDIO_ENABLE = no # Audio output
16CUSTOM_MATRIX = lite
17
18SRC += matrix.c