aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Young <18669334+noroadsleft@users.noreply.github.com>2021-01-22 18:02:40 -0800
committerGitHub <noreply@github.com>2021-01-22 18:02:40 -0800
commit3a7573436ae6ab20973389a4051a8785399539f2 (patch)
tree4e9d11ac68e0744269495f7fae243eb46f120d54
parent7e77c2361fbfba60fabb490a8dae310d5b7309ba (diff)
downloadqmk_firmware-3a7573436ae6ab20973389a4051a8785399539f2.tar.gz
qmk_firmware-3a7573436ae6ab20973389a4051a8785399539f2.zip
Program Yoink! refactor (#11636)
* split config.h for each variant * split rules.mk for each variant * split source and header files for each variant * move keymaps to the appropriate variant * update keyboard readme * update keymap readmes * differentiate Staggered and Ortho USB Device Strings * clean up formatting in info.json * split info.json files for each variant * break up the info.json for readability * correct key positioning and board dimensions * correct key object sequences * add weak encoder function to keyboard level Allows Configurator-compiled firmware to have encoder functionality. * add variant-specific readme files and bootloader instructions
-rw-r--r--keyboards/program_yoink/config.h2
-rw-r--r--keyboards/program_yoink/info.json207
-rw-r--r--keyboards/program_yoink/keymaps/default/readme.md1
-rw-r--r--keyboards/program_yoink/keymaps/ortho_default/readme.md1
-rw-r--r--keyboards/program_yoink/keymaps/ortho_split/readme.md1
-rw-r--r--keyboards/program_yoink/keymaps/split_bar/readme.md1
-rw-r--r--keyboards/program_yoink/ortho/config.h19
-rw-r--r--keyboards/program_yoink/ortho/info.json118
-rw-r--r--keyboards/program_yoink/ortho/keymaps/default/config.h (renamed from keyboards/program_yoink/keymaps/ortho_default/config.h)0
-rw-r--r--keyboards/program_yoink/ortho/keymaps/default/keymap.c (renamed from keyboards/program_yoink/keymaps/ortho_default/keymap.c)0
-rw-r--r--keyboards/program_yoink/ortho/keymaps/default/readme.md1
-rw-r--r--keyboards/program_yoink/ortho/keymaps/default/rules.mk (renamed from keyboards/program_yoink/keymaps/default/rules.mk)0
-rw-r--r--keyboards/program_yoink/ortho/keymaps/ortho_split/config.h (renamed from keyboards/program_yoink/keymaps/ortho_split/config.h)0
-rw-r--r--keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c (renamed from keyboards/program_yoink/keymaps/ortho_split/keymap.c)0
-rw-r--r--keyboards/program_yoink/ortho/keymaps/ortho_split/readme.md1
-rw-r--r--keyboards/program_yoink/ortho/keymaps/ortho_split/rules.mk (renamed from keyboards/program_yoink/keymaps/ortho_default/rules.mk)0
-rw-r--r--keyboards/program_yoink/ortho/ortho.c17
-rw-r--r--keyboards/program_yoink/ortho/ortho.h55
-rw-r--r--keyboards/program_yoink/ortho/readme.md18
-rw-r--r--keyboards/program_yoink/ortho/rules.mk0
-rw-r--r--keyboards/program_yoink/program_yoink.c11
-rw-r--r--keyboards/program_yoink/program_yoink.h69
-rw-r--r--keyboards/program_yoink/readme.md18
-rw-r--r--keyboards/program_yoink/rules.mk8
-rw-r--r--keyboards/program_yoink/staggered/config.h19
-rw-r--r--keyboards/program_yoink/staggered/info.json114
-rw-r--r--keyboards/program_yoink/staggered/keymaps/default/config.h (renamed from keyboards/program_yoink/keymaps/default/config.h)0
-rw-r--r--keyboards/program_yoink/staggered/keymaps/default/keymap.c (renamed from keyboards/program_yoink/keymaps/default/keymap.c)0
-rw-r--r--keyboards/program_yoink/staggered/keymaps/default/readme.md1
-rw-r--r--keyboards/program_yoink/staggered/keymaps/default/rules.mk (renamed from keyboards/program_yoink/keymaps/ortho_split/rules.mk)0
-rw-r--r--keyboards/program_yoink/staggered/keymaps/split_bar/config.h (renamed from keyboards/program_yoink/keymaps/split_bar/config.h)0
-rw-r--r--keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c (renamed from keyboards/program_yoink/keymaps/split_bar/keymap.c)0
-rw-r--r--keyboards/program_yoink/staggered/keymaps/split_bar/readme.md1
-rw-r--r--keyboards/program_yoink/staggered/keymaps/split_bar/rules.mk (renamed from keyboards/program_yoink/keymaps/split_bar/rules.mk)0
-rw-r--r--keyboards/program_yoink/staggered/readme.md20
-rw-r--r--keyboards/program_yoink/staggered/rules.mk0
-rw-r--r--keyboards/program_yoink/staggered/staggered.c17
-rw-r--r--keyboards/program_yoink/staggered/staggered.h55
38 files changed, 489 insertions, 286 deletions
diff --git a/keyboards/program_yoink/config.h b/keyboards/program_yoink/config.h
index d1fc28ef4..9d9715ff5 100644
--- a/keyboards/program_yoink/config.h
+++ b/keyboards/program_yoink/config.h
@@ -21,10 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21 21
22/* USB Device descriptor parameter */ 22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED 23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0xF10B
25#define DEVICE_VER 0x0001 24#define DEVICE_VER 0x0001
26#define MANUFACTURER melonbred 25#define MANUFACTURER melonbred
27#define PRODUCT program_yoink
28 26
29/* key matrix size */ 27/* key matrix size */
30#define MATRIX_ROWS 4 28#define MATRIX_ROWS 4
diff --git a/keyboards/program_yoink/info.json b/keyboards/program_yoink/info.json
deleted file mode 100644
index b34e53609..000000000
--- a/keyboards/program_yoink/info.json
+++ /dev/null
@@ -1,207 +0,0 @@
1{
2 "keyboard_name": "program_yoink",
3 "url": "",
4 "maintainer": "melonbred",
5 "width": 13.75,
6 "height": 4.25,
7 "layouts": {
8 "LAYOUT_default": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":6, "y":0},
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12.75, "y":0},
23 {"x":0, "y":1, "w":1.25},
24 {"x":1.25, "y":1},
25 {"x":2.25, "y":1},
26 {"x":3.25, "y":1},
27 {"x":4.25, "y":1},
28 {"x":5.25, "y":1},
29 {"x":6.25, "y":1},
30 {"x":7.25, "y":1},
31 {"x":8.25, "y":1},
32 {"x":9.25, "y":1},
33 {"x":10.25, "y":1, "w":1.75},
34 {"x":12.75, "y":1},
35 {"x":0, "y":2, "w":1.75},
36 {"x":1.75, "y":2},
37 {"x":2.75, "y":2},
38 {"x":3.75, "y":2},
39 {"x":4.75, "y":2},
40 {"x":5.75, "y":2},
41 {"x":6.75, "y":2},
42 {"x":7.75, "y":2},
43 {"x":8.75, "y":2},
44 {"x":9.75, "y":2, "w":1.25},
45 {"x":12.75, "y":2},
46 {"x":11.25, "y":2.25},
47 {"x":0, "y":3, "w":1.25},
48 {"x":1.25, "y":3, "w":1.25},
49 {"x":2.5, "y":3, "w":6.25},
50 {"x":8.75, "y":3, "w":1.25},
51 {"x":10.25, "y":3.25},
52 {"x":11.25, "y":3.25},
53 {"x":12.25, "y":3.25}]
54 },
55 "LAYOUT_split_bar": {
56 "layout": [
57 {"x":0, "y":0},
58 {"x":1, "y":0},
59 {"x":2, "y":0},
60 {"x":3, "y":0},
61 {"x":4, "y":0},
62 {"x":5, "y":0},
63 {"x":6, "y":0},
64 {"x":7, "y":0},
65 {"x":8, "y":0},
66 {"x":9, "y":0},
67 {"x":10, "y":0},
68 {"x":11, "y":0},
69 {"x":12.75, "y":0},
70 {"x":0, "y":1, "w":1.25},
71 {"x":1.25, "y":1},
72 {"x":2.25, "y":1},
73 {"x":3.25, "y":1},
74 {"x":4.25, "y":1},
75 {"x":5.25, "y":1},
76 {"x":6.25, "y":1},
77 {"x":7.25, "y":1},
78 {"x":8.25, "y":1},
79 {"x":9.25, "y":1},
80 {"x":10.25, "y":1, "w":1.75},
81 {"x":12.75, "y":1},
82 {"x":0, "y":2, "w":1.75},
83 {"x":1.75, "y":2},
84 {"x":2.75, "y":2},
85 {"x":3.75, "y":2},
86 {"x":4.75, "y":2},
87 {"x":5.75, "y":2},
88 {"x":6.75, "y":2},
89 {"x":7.75, "y":2},
90 {"x":8.75, "y":2},
91 {"x":9.75, "y":2, "w":1.25},
92 {"x":12.75, "y":2},
93 {"x":11.25, "y":2.25},
94 {"x":0, "y":3},
95 {"x":1, "y":3},
96 {"x":2, "y":3},
97 {"x":3, "y":3, "w":2.75},
98 {"x":5.75, "y":3, "w":2.25},
99 {"x":8, "y":3},
100 {"x":9, "y":3},
101 {"x":10.25, "y":3.25},
102 {"x":11.25, "y":3.25},
103 {"x":12.25, "y":3.25}]
104 },
105 "LAYOUT_ortho": {
106 "layout": [
107 {"x":0, "y":0},
108 {"x":1, "y":0},
109 {"x":2, "y":0},
110 {"x":3, "y":0},
111 {"x":4, "y":0},
112 {"x":5, "y":0},
113 {"x":6, "y":0},
114 {"x":7, "y":0},
115 {"x":8, "y":0},
116 {"x":9, "y":0},
117 {"x":10, "y":0},
118 {"x":11, "y":0},
119 {"x":12.5, "y":0},
120 {"x":0, "y":1},
121 {"x":1, "y":1},
122 {"x":2, "y":1},
123 {"x":3, "y":1},
124 {"x":4, "y":1},
125 {"x":5, "y":1},
126 {"x":6, "y":1},
127 {"x":7, "y":1},
128 {"x":8, "y":1},
129 {"x":9, "y":1},
130 {"x":10, "y":1},
131 {"x":11, "y":1},
132 {"x":12.5, "y":1},
133 {"x":0, "y":2},
134 {"x":1, "y":2},
135 {"x":2, "y":2},
136 {"x":3, "y":2},
137 {"x":4, "y":2},
138 {"x":5, "y":2},
139 {"x":6, "y":2},
140 {"x":7, "y":2},
141 {"x":8, "y":2},
142 {"x":9, "y":2},
143 {"x":10, "y":2},
144 {"x":12.5, "y":2},
145 {"x":11.25, "y":2.25},
146 {"x":0, "y":3},
147 {"x":1, "y":3},
148 {"x":2, "y":3, "w":7},
149 {"x":9, "y":3},
150 {"x":10.25, "y":3.25},
151 {"x":11.25, "y":3.25},
152 {"x":12.25, "y":3.25}]
153 },
154 "LAYOUT_ortho_split": {
155 "layout": [
156 {"x":0, "y":0},
157 {"x":1, "y":0},
158 {"x":2, "y":0},
159 {"x":3, "y":0},
160 {"x":4, "y":0},
161 {"x":5, "y":0},
162 {"x":6, "y":0},
163 {"x":7, "y":0},
164 {"x":8, "y":0},
165 {"x":9, "y":0},
166 {"x":10, "y":0},
167 {"x":11, "y":0},
168 {"x":12.5, "y":0},
169 {"x":0, "y":1},
170 {"x":1, "y":1},
171 {"x":2, "y":1},
172 {"x":3, "y":1},
173 {"x":4, "y":1},
174 {"x":5, "y":1},
175 {"x":6, "y":1},
176 {"x":7, "y":1},
177 {"x":8, "y":1},
178 {"x":9, "y":1},
179 {"x":10, "y":1},
180 {"x":11, "y":1},
181 {"x":12.5, "y":1},
182 {"x":0, "y":2},
183 {"x":1, "y":2},
184 {"x":2, "y":2},
185 {"x":3, "y":2},
186 {"x":4, "y":2},
187 {"x":5, "y":2},
188 {"x":6, "y":2},
189 {"x":7, "y":2},
190 {"x":8, "y":2},
191 {"x":9, "y":2},
192 {"x":10, "y":2},
193 {"x":12.75, "y":2},
194 {"x":11.25, "y":2.25},
195 {"x":0, "y":3},
196 {"x":1, "y":3},
197 {"x":2, "y":3},
198 {"x":3, "y":3, "w":2.75},
199 {"x":5.75, "y":3, "w":2.25},
200 {"x":8, "y":3},
201 {"x":9, "y":3},
202 {"x":10.25, "y":3.25},
203 {"x":11.25, "y":3.25},
204 {"x":12.25, "y":3.25}]
205 }
206 }
207}
diff --git a/keyboards/program_yoink/keymaps/default/readme.md b/keyboards/program_yoink/keymaps/default/readme.md
deleted file mode 100644
index 4e0a314f4..000000000
--- a/keyboards/program_yoink/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
1# The default keymap for program_yoink
diff --git a/keyboards/program_yoink/keymaps/ortho_default/readme.md b/keyboards/program_yoink/keymaps/ortho_default/readme.md
deleted file mode 100644
index bc7417015..000000000
--- a/keyboards/program_yoink/keymaps/ortho_default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
1# The default keymap for ortho program_yoink
diff --git a/keyboards/program_yoink/keymaps/ortho_split/readme.md b/keyboards/program_yoink/keymaps/ortho_split/readme.md
deleted file mode 100644
index 0a5899ee4..000000000
--- a/keyboards/program_yoink/keymaps/ortho_split/readme.md
+++ /dev/null
@@ -1 +0,0 @@
1# The split space bar keymap for ortho program_yoink
diff --git a/keyboards/program_yoink/keymaps/split_bar/readme.md b/keyboards/program_yoink/keymaps/split_bar/readme.md
deleted file mode 100644
index 4e0a314f4..000000000
--- a/keyboards/program_yoink/keymaps/split_bar/readme.md
+++ /dev/null
@@ -1 +0,0 @@
1# The default keymap for program_yoink
diff --git a/keyboards/program_yoink/ortho/config.h b/keyboards/program_yoink/ortho/config.h
new file mode 100644
index 000000000..7620643f1
--- /dev/null
+++ b/keyboards/program_yoink/ortho/config.h
@@ -0,0 +1,19 @@
1/*
2Copyright 2020 melonbred
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#define PRODUCT_ID 0xF10C
19#define PRODUCT Program Yoink! Ortho
diff --git a/keyboards/program_yoink/ortho/info.json b/keyboards/program_yoink/ortho/info.json
new file mode 100644
index 000000000..0da81298e
--- /dev/null
+++ b/keyboards/program_yoink/ortho/info.json
@@ -0,0 +1,118 @@
1{
2 "keyboard_name": "program_yoink",
3 "url": "",
4 "maintainer": "melonbred",
5 "width": 13.5,
6 "height": 4.25,
7 "layouts": {
8 "LAYOUT_ortho": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":6, "y":0},
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12.5, "y":0},
23
24 {"x":0, "y":1},
25 {"x":1, "y":1},
26 {"x":2, "y":1},
27 {"x":3, "y":1},
28 {"x":4, "y":1},
29 {"x":5, "y":1},
30 {"x":6, "y":1},
31 {"x":7, "y":1},
32 {"x":8, "y":1},
33 {"x":9, "y":1},
34 {"x":10, "y":1},
35 {"x":11, "y":1},
36 {"x":12.5, "y":1},
37
38 {"x":0, "y":2},
39 {"x":1, "y":2},
40 {"x":2, "y":2},
41 {"x":3, "y":2},
42 {"x":4, "y":2},
43 {"x":5, "y":2},
44 {"x":6, "y":2},
45 {"x":7, "y":2},
46 {"x":8, "y":2},
47 {"x":9, "y":2},
48 {"x":10, "y":2},
49 {"x":11.25, "y":2.25},
50 {"x":12.5, "y":2},
51
52 {"x":0, "y":3},
53 {"x":1, "y":3},
54 {"x":2, "y":3, "w":7},
55 {"x":9, "y":3},
56 {"x":10.25, "y":3.25},
57 {"x":11.25, "y":3.25},
58 {"x":12.25, "y":3.25}
59 ]
60 },
61 "LAYOUT_ortho_split": {
62 "layout": [
63 {"x":0, "y":0},
64 {"x":1, "y":0},
65 {"x":2, "y":0},
66 {"x":3, "y":0},
67 {"x":4, "y":0},
68 {"x":5, "y":0},
69 {"x":6, "y":0},
70 {"x":7, "y":0},
71 {"x":8, "y":0},
72 {"x":9, "y":0},
73 {"x":10, "y":0},
74 {"x":11, "y":0},
75 {"x":12.5, "y":0},
76
77 {"x":0, "y":1},
78 {"x":1, "y":1},
79 {"x":2, "y":1},
80 {"x":3, "y":1},
81 {"x":4, "y":1},
82 {"x":5, "y":1},
83 {"x":6, "y":1},
84 {"x":7, "y":1},
85 {"x":8, "y":1},
86 {"x":9, "y":1},
87 {"x":10, "y":1},
88 {"x":11, "y":1},
89 {"x":12.5, "y":1},
90
91 {"x":0, "y":2},
92 {"x":1, "y":2},
93 {"x":2, "y":2},
94 {"x":3, "y":2},
95 {"x":4, "y":2},
96 {"x":5, "y":2},
97 {"x":6, "y":2},
98 {"x":7, "y":2},
99 {"x":8, "y":2},
100 {"x":9, "y":2},
101 {"x":10, "y":2},
102 {"x":11.25, "y":2.25},
103 {"x":12.5, "y":2},
104
105 {"x":0, "y":3},
106 {"x":1, "y":3},
107 {"x":2, "y":3},
108 {"x":3, "y":3, "w":2.75},
109 {"x":5.75, "y":3, "w":2.25},
110 {"x":8, "y":3},
111 {"x":9, "y":3},
112 {"x":10.25, "y":3.25},
113 {"x":11.25, "y":3.25},
114 {"x":12.25, "y":3.25}
115 ]
116 }
117 }
118}
diff --git a/keyboards/program_yoink/keymaps/ortho_default/config.h b/keyboards/program_yoink/ortho/keymaps/default/config.h
index ea7075aec..ea7075aec 100644
--- a/keyboards/program_yoink/keymaps/ortho_default/config.h
+++ b/keyboards/program_yoink/ortho/keymaps/default/config.h
diff --git a/keyboards/program_yoink/keymaps/ortho_default/keymap.c b/keyboards/program_yoink/ortho/keymaps/default/keymap.c
index 6f20f22dd..6f20f22dd 100644
--- a/keyboards/program_yoink/keymaps/ortho_default/keymap.c
+++ b/keyboards/program_yoink/ortho/keymaps/default/keymap.c
diff --git a/keyboards/program_yoink/ortho/keymaps/default/readme.md b/keyboards/program_yoink/ortho/keymaps/default/readme.md
new file mode 100644
index 000000000..7598e7886
--- /dev/null
+++ b/keyboards/program_yoink/ortho/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for the Program Yoink! Ortho
diff --git a/keyboards/program_yoink/keymaps/default/rules.mk b/keyboards/program_yoink/ortho/keymaps/default/rules.mk
index ab1e43818..ab1e43818 100644
--- a/keyboards/program_yoink/keymaps/default/rules.mk
+++ b/keyboards/program_yoink/ortho/keymaps/default/rules.mk
diff --git a/keyboards/program_yoink/keymaps/ortho_split/config.h b/keyboards/program_yoink/ortho/keymaps/ortho_split/config.h
index ea7075aec..ea7075aec 100644
--- a/keyboards/program_yoink/keymaps/ortho_split/config.h
+++ b/keyboards/program_yoink/ortho/keymaps/ortho_split/config.h
diff --git a/keyboards/program_yoink/keymaps/ortho_split/keymap.c b/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c
index 6217124bf..6217124bf 100644
--- a/keyboards/program_yoink/keymaps/ortho_split/keymap.c
+++ b/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c
diff --git a/keyboards/program_yoink/ortho/keymaps/ortho_split/readme.md b/keyboards/program_yoink/ortho/keymaps/ortho_split/readme.md
new file mode 100644
index 000000000..36a1385a3
--- /dev/null
+++ b/keyboards/program_yoink/ortho/keymaps/ortho_split/readme.md
@@ -0,0 +1 @@
# The split space bar keymap for the Program Yoink! Ortho
diff --git a/keyboards/program_yoink/keymaps/ortho_default/rules.mk b/keyboards/program_yoink/ortho/keymaps/ortho_split/rules.mk
index ab1e43818..ab1e43818 100644
--- a/keyboards/program_yoink/keymaps/ortho_default/rules.mk
+++ b/keyboards/program_yoink/ortho/keymaps/ortho_split/rules.mk
diff --git a/keyboards/program_yoink/ortho/ortho.c b/keyboards/program_yoink/ortho/ortho.c
new file mode 100644
index 000000000..a8e1b732a
--- /dev/null
+++ b/keyboards/program_yoink/ortho/ortho.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 melonbred
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "ortho.h"
diff --git a/keyboards/program_yoink/ortho/ortho.h b/keyboards/program_yoink/ortho/ortho.h
new file mode 100644
index 000000000..c906d2e24
--- /dev/null
+++ b/keyboards/program_yoink/ortho/ortho.h
@@ -0,0 +1,55 @@
1/* Copyright 2020 melonbred
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "program_yoink.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define XXX KC_NO
30
31#define LAYOUT_ortho( \
32 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
33 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
34 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
35 K30, K31, K35, K39, K3A, K3B, K3C \
36) \
37{ \
38 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
39 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
40 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
41 { K30, K31, XXX, XXX, XXX, K35, XXX, XXX, XXX, K39, K3A, K3B, K3C } \
42}
43
44#define LAYOUT_ortho_split( \
45 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
46 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
47 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
48 K30, K31, K32, K34, K36, K38, K39, K3A, K3B, K3C \
49) \
50{ \
51 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
52 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
53 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
54 { K30, K31, K32, XXX, K34, XXX, K36, XXX, K38, K39, K3A, K3B, K3C } \
55}
diff --git a/keyboards/program_yoink/ortho/readme.md b/keyboards/program_yoink/ortho/readme.md
new file mode 100644
index 000000000..c77154db6
--- /dev/null
+++ b/keyboards/program_yoink/ortho/readme.md
@@ -0,0 +1,18 @@
1# Program Yoink! Ortho
2
3Program Yoink is a 12u main cluster board accompanied by a macro column with optional encoder support and arrow keys.
4
5* Keyboard Maintainer: [melonbred](https://github.com/melonbred)
6* Hardware Supported: Program Yoink! Ortho PCB (ATmega32u2)
7* Hardware Availability: [P3D Store](https://p3dstore.com/products/yoink-gb)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make program_yoink/ortho:default
12
13To reset the board into bootloader mode, do one of the following:
14
15* Tap the Reset switch mounted on the bottom side of the PCB
16* Hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings)
17
18See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/program_yoink/ortho/rules.mk b/keyboards/program_yoink/ortho/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/program_yoink/ortho/rules.mk
diff --git a/keyboards/program_yoink/program_yoink.c b/keyboards/program_yoink/program_yoink.c
index e549c98e9..a974d7f6f 100644
--- a/keyboards/program_yoink/program_yoink.c
+++ b/keyboards/program_yoink/program_yoink.c
@@ -15,3 +15,14 @@
15 */ 15 */
16 16
17#include "program_yoink.h" 17#include "program_yoink.h"
18
19__attribute__ ((weak))
20void encoder_update_user(uint8_t index, bool clockwise) {
21 if (index == 0) {
22 if (clockwise) {
23 tap_code(KC_VOLU);
24 } else {
25 tap_code(KC_VOLD);
26 }
27 }
28}
diff --git a/keyboards/program_yoink/program_yoink.h b/keyboards/program_yoink/program_yoink.h
index 5aca12c26..d6a1d33b5 100644
--- a/keyboards/program_yoink/program_yoink.h
+++ b/keyboards/program_yoink/program_yoink.h
@@ -18,67 +18,8 @@
18 18
19#include "quantum.h" 19#include "quantum.h"
20 20
21/* This is a shortcut to help you visually see your layout. 21#if defined(KEYBOARD_program_yoink_staggered)
22 * 22 #include "staggered.h"
23 * The first section contains all of the arguments representing the physical 23#elif defined(KEYBOARD_program_yoink_ortho)
24 * layout of the board and position of the keys. 24 #include "ortho.h"
25 * 25#endif
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define XXX KC_NO
30
31#define LAYOUT_default( \
32 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
33 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \
34 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, \
35 K30, K31, K34, K38, K39, K3A, K3C \
36) \
37{ \
38 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
39 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \
40 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, XXX, K2C }, \
41 { K30, K31, XXX, XXX, K34, XXX, XXX, XXX, K38, K39, K3A, XXX, K3C } \
42}
43
44#define LAYOUT_split_bar( \
45 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
46 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \
47 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, \
48 K30, K31, K32, K33, K35, K37, K38, K39, K3A, K3C \
49) \
50{ \
51 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
52 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \
53 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, XXX, K2C }, \
54 { K30, K31, K32, K33, XXX, K35, XXX, K37, K38, K39, K3A, XXX, K3C } \
55}
56
57#define LAYOUT_ortho( \
58 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
59 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
60 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
61 K30, K31, K35, K39, K3A, K3B, K3C \
62) \
63{ \
64 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
65 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
66 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
67 { K30, K31, XXX, XXX, XXX, K35, XXX, XXX, XXX, K39, K3A, K3B, K3C } \
68}
69
70#define LAYOUT_ortho_split( \
71 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
72 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
73 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
74 K30, K31, K32, K34, K36, K38, K39, K3A, K3B, K3C \
75) \
76{ \
77 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
78 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
79 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
80 { K30, K31, K32, XXX, K34, XXX, K36, XXX, K38, K39, K3A, K3B, K3C } \
81}
82
83
84
diff --git a/keyboards/program_yoink/readme.md b/keyboards/program_yoink/readme.md
index 6fa3bf4f7..4a1a867ec 100644
--- a/keyboards/program_yoink/readme.md
+++ b/keyboards/program_yoink/readme.md
@@ -1,15 +1,21 @@
1# program_yoink 1# Program Yoink!
2 2
3![program_yoink](https://i.imgur.com/2bBLKJrl.jpeg) 3![Program Yoink! Staggered](https://i.imgur.com/2bBLKJrl.jpeg)
4 4
5Program Yoink is a 12u main cluster board accompanied by a macro column with optional encoder support and arrow keys. 5Program Yoink is a 12u main cluster board accompanied by a macro column with optional encoder support and arrow keys.
6 6
7* Keyboard Maintainer: [melonbred](https://github.com/yourusername) 7* Keyboard Maintainer: [melonbred](https://github.com/melonbred)
8* Hardware Supported: The PCBs, controllers supported 8* Hardware Supported: [Program Yoink! Staggered](staggered/) and [Ortho](ortho/) PCBs (ATmega32u2)
9* Hardware Availability: Links to where you can find this hardware 9* Hardware Availability: [P3D Store](https://p3dstore.com/products/yoink-gb)
10 10
11Make example for this keyboard (after setting up your build environment): 11Make example for this keyboard (after setting up your build environment):
12 12
13 make program_yoink:default 13 make program_yoink/staggered:default
14 make program_yoink/ortho:default
15
16To reset the board into bootloader mode, do one of the following:
17
18* Tap the Reset switch mounted on the bottom side of the PCB
19* Hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings)
14 20
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 21See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/program_yoink/rules.mk b/keyboards/program_yoink/rules.mk
index 4384a0f01..51bb37c86 100644
--- a/keyboards/program_yoink/rules.mk
+++ b/keyboards/program_yoink/rules.mk
@@ -7,11 +7,11 @@ BOOTLOADER = atmel-dfu
7# Build Options 7# Build Options
8# change yes to no to disable 8# change yes to no to disable
9# 9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration 10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys 11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control 12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug 13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration 14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
@@ -20,4 +20,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth 21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output 22AUDIO_ENABLE = no # Audio output
23ENCODER_ENABLE = yes # Enable rotary encoder 23ENCODER_ENABLE = yes # Enable rotary encoder
24
25DEFAULT_FOLDER = program_yoink/staggered
diff --git a/keyboards/program_yoink/staggered/config.h b/keyboards/program_yoink/staggered/config.h
new file mode 100644
index 000000000..a0da03152
--- /dev/null
+++ b/keyboards/program_yoink/staggered/config.h
@@ -0,0 +1,19 @@
1/*
2Copyright 2020 melonbred
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#define PRODUCT_ID 0xF10B
19#define PRODUCT Program Yoink! Staggered
diff --git a/keyboards/program_yoink/staggered/info.json b/keyboards/program_yoink/staggered/info.json
new file mode 100644
index 000000000..4e5eb2159
--- /dev/null
+++ b/keyboards/program_yoink/staggered/info.json
@@ -0,0 +1,114 @@
1{
2 "keyboard_name": "program_yoink",
3 "url": "",
4 "maintainer": "melonbred",
5 "width": 13.5,
6 "height": 4.25,
7 "layouts": {
8 "LAYOUT_default": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":6, "y":0},
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12.5, "y":0},
23
24 {"x":0, "y":1, "w":1.25},
25 {"x":1.25, "y":1},
26 {"x":2.25, "y":1},
27 {"x":3.25, "y":1},
28 {"x":4.25, "y":1},
29 {"x":5.25, "y":1},
30 {"x":6.25, "y":1},
31 {"x":7.25, "y":1},
32 {"x":8.25, "y":1},
33 {"x":9.25, "y":1},
34 {"x":10.25, "y":1, "w":1.75},
35 {"x":12.5, "y":1},
36
37 {"x":0, "y":2, "w":1.75},
38 {"x":1.75, "y":2},
39 {"x":2.75, "y":2},
40 {"x":3.75, "y":2},
41 {"x":4.75, "y":2},
42 {"x":5.75, "y":2},
43 {"x":6.75, "y":2},
44 {"x":7.75, "y":2},
45 {"x":8.75, "y":2},
46 {"x":9.75, "y":2, "w":1.25},
47 {"x":11.25, "y":2.25},
48 {"x":12.5, "y":2},
49
50 {"x":0, "y":3, "w":1.25},
51 {"x":1.25, "y":3, "w":1.25},
52 {"x":2.5, "y":3, "w":6.25},
53 {"x":8.75, "y":3, "w":1.25},
54 {"x":10.25, "y":3.25},
55 {"x":11.25, "y":3.25},
56 {"x":12.25, "y":3.25}
57 ]
58 },
59 "LAYOUT_split_bar": {
60 "layout": [
61 {"x":0, "y":0},
62 {"x":1, "y":0},
63 {"x":2, "y":0},
64 {"x":3, "y":0},
65 {"x":4, "y":0},
66 {"x":5, "y":0},
67 {"x":6, "y":0},
68 {"x":7, "y":0},
69 {"x":8, "y":0},
70 {"x":9, "y":0},
71 {"x":10, "y":0},
72 {"x":11, "y":0},
73 {"x":12.5, "y":0},
74
75 {"x":0, "y":1, "w":1.25},
76 {"x":1.25, "y":1},
77 {"x":2.25, "y":1},
78 {"x":3.25, "y":1},
79 {"x":4.25, "y":1},
80 {"x":5.25, "y":1},
81 {"x":6.25, "y":1},
82 {"x":7.25, "y":1},
83 {"x":8.25, "y":1},
84 {"x":9.25, "y":1},
85 {"x":10.25, "y":1, "w":1.75},
86 {"x":12.5, "y":1},
87
88 {"x":0, "y":2, "w":1.75},
89 {"x":1.75, "y":2},
90 {"x":2.75, "y":2},
91 {"x":3.75, "y":2},
92 {"x":4.75, "y":2},
93 {"x":5.75, "y":2},
94 {"x":6.75, "y":2},
95 {"x":7.75, "y":2},
96 {"x":8.75, "y":2},
97 {"x":9.75, "y":2, "w":1.25},
98 {"x":11.25, "y":2.25},
99 {"x":12.5, "y":2},
100
101 {"x":0, "y":3},
102 {"x":1, "y":3},
103 {"x":2, "y":3},
104 {"x":3, "y":3, "w":2.75},
105 {"x":5.75, "y":3, "w":2.25},
106 {"x":8, "y":3},
107 {"x":9, "y":3},
108 {"x":10.25, "y":3.25},
109 {"x":11.25, "y":3.25},
110 {"x":12.25, "y":3.25}
111 ]
112 }
113 }
114}
diff --git a/keyboards/program_yoink/keymaps/default/config.h b/keyboards/program_yoink/staggered/keymaps/default/config.h
index c4b4470e9..c4b4470e9 100644
--- a/keyboards/program_yoink/keymaps/default/config.h
+++ b/keyboards/program_yoink/staggered/keymaps/default/config.h
diff --git a/keyboards/program_yoink/keymaps/default/keymap.c b/keyboards/program_yoink/staggered/keymaps/default/keymap.c
index 5aa0c95e6..5aa0c95e6 100644
--- a/keyboards/program_yoink/keymaps/default/keymap.c
+++ b/keyboards/program_yoink/staggered/keymaps/default/keymap.c
diff --git a/keyboards/program_yoink/staggered/keymaps/default/readme.md b/keyboards/program_yoink/staggered/keymaps/default/readme.md
new file mode 100644
index 000000000..b225f4bed
--- /dev/null
+++ b/keyboards/program_yoink/staggered/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for the Program Yoink! Staggered
diff --git a/keyboards/program_yoink/keymaps/ortho_split/rules.mk b/keyboards/program_yoink/staggered/keymaps/default/rules.mk
index ab1e43818..ab1e43818 100644
--- a/keyboards/program_yoink/keymaps/ortho_split/rules.mk
+++ b/keyboards/program_yoink/staggered/keymaps/default/rules.mk
diff --git a/keyboards/program_yoink/keymaps/split_bar/config.h b/keyboards/program_yoink/staggered/keymaps/split_bar/config.h
index 842b3b801..842b3b801 100644
--- a/keyboards/program_yoink/keymaps/split_bar/config.h
+++ b/keyboards/program_yoink/staggered/keymaps/split_bar/config.h
diff --git a/keyboards/program_yoink/keymaps/split_bar/keymap.c b/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c
index 89865dad3..89865dad3 100644
--- a/keyboards/program_yoink/keymaps/split_bar/keymap.c
+++ b/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c
diff --git a/keyboards/program_yoink/staggered/keymaps/split_bar/readme.md b/keyboards/program_yoink/staggered/keymaps/split_bar/readme.md
new file mode 100644
index 000000000..db383d07a
--- /dev/null
+++ b/keyboards/program_yoink/staggered/keymaps/split_bar/readme.md
@@ -0,0 +1 @@
# The split space bar keymap for the Program Yoink! Staggered
diff --git a/keyboards/program_yoink/keymaps/split_bar/rules.mk b/keyboards/program_yoink/staggered/keymaps/split_bar/rules.mk
index ab1e43818..ab1e43818 100644
--- a/keyboards/program_yoink/keymaps/split_bar/rules.mk
+++ b/keyboards/program_yoink/staggered/keymaps/split_bar/rules.mk
diff --git a/keyboards/program_yoink/staggered/readme.md b/keyboards/program_yoink/staggered/readme.md
new file mode 100644
index 000000000..1a1b7bb49
--- /dev/null
+++ b/keyboards/program_yoink/staggered/readme.md
@@ -0,0 +1,20 @@
1# Program Yoink! Staggered
2
3![Program Yoink! Staggered](https://i.imgur.com/2bBLKJrl.jpeg)
4
5Program Yoink is a 12u main cluster board accompanied by a macro column with optional encoder support and arrow keys.
6
7* Keyboard Maintainer: [melonbred](https://github.com/melonbred)
8* Hardware Supported: Program Yoink! Staggered PCB (ATmega32u2)
9* Hardware Availability: [P3D Store](https://p3dstore.com/products/yoink-gb)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make program_yoink/staggered:default
14
15To reset the board into bootloader mode, do one of the following:
16
17* Tap the Reset switch mounted on the bottom side of the PCB
18* Hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings)
19
20See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/program_yoink/staggered/rules.mk b/keyboards/program_yoink/staggered/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/program_yoink/staggered/rules.mk
diff --git a/keyboards/program_yoink/staggered/staggered.c b/keyboards/program_yoink/staggered/staggered.c
new file mode 100644
index 000000000..1bdb4a216
--- /dev/null
+++ b/keyboards/program_yoink/staggered/staggered.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 melonbred
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "staggered.h"
diff --git a/keyboards/program_yoink/staggered/staggered.h b/keyboards/program_yoink/staggered/staggered.h
new file mode 100644
index 000000000..1b35e28da
--- /dev/null
+++ b/keyboards/program_yoink/staggered/staggered.h
@@ -0,0 +1,55 @@
1/* Copyright 2020 melonbred
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "program_yoink.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define XXX KC_NO
30
31#define LAYOUT_default( \
32 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
33 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \
34 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, \
35 K30, K31, K34, K38, K39, K3A, K3C \
36) \
37{ \
38 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
39 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \
40 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, XXX, K2C }, \
41 { K30, K31, XXX, XXX, K34, XXX, XXX, XXX, K38, K39, K3A, XXX, K3C } \
42}
43
44#define LAYOUT_split_bar( \
45 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
46 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \
47 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, \
48 K30, K31, K32, K33, K35, K37, K38, K39, K3A, K3C \
49) \
50{ \
51 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
52 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \
53 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, XXX, K2C }, \
54 { K30, K31, K32, K33, XXX, K35, XXX, K37, K38, K39, K3A, XXX, K3C } \
55}