616dc7dd5d1bf6e512db9a0c7f3dfcdc42fc9db1
- Author
- Garret G <45295190+The-Royal@users.noreply.github.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/keyboards/45_ats/45_ats.c b/keyboards/45_ats/45_ats.c
2new file mode 100644
3index 0000000000000000000000000000000000000000..0a2c069abd908a55793b12f1fed7afac1843256e
4--- /dev/null
5+++ b/keyboards/45_ats/45_ats.c
6@@ -0,0 +1,19 @@
7+ /*
8+ Copyright 2020 Alec Penland
9+ Copyright 2020 Garret Gartner
10+
11+ This program is free software: you can redistribute it and/or modify
12+ it under the terms of the GNU General Public License as published by
13+ the Free Software Foundation, either version 2 of the License, or
14+ (at your option) any later version.
15+
16+ This program is distributed in the hope that it will be useful,
17+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19+ GNU General Public License for more details.
20+
21+ You should have received a copy of the GNU General Public License
22+ along with this program. If not, see <http://www.gnu.org/licenses/>.
23+ */
24+
25+#include "45_ats.h"
26diff --git a/keyboards/45_ats/45_ats.h b/keyboards/45_ats/45_ats.h
27new file mode 100644
28index 0000000000000000000000000000000000000000..42d1940e6f9267ea322c1704a507bdc73c5ca565
29--- /dev/null
30+++ b/keyboards/45_ats/45_ats.h
31@@ -0,0 +1,59 @@
32+ /*
33+ Copyright 2020 Alec Penland
34+ Copyright 2020 Garret Gartner
35+
36+ This program is free software: you can redistribute it and/or modify
37+ it under the terms of the GNU General Public License as published by
38+ the Free Software Foundation, either version 2 of the License, or
39+ (at your option) any later version.
40+
41+ This program is distributed in the hope that it will be useful,
42+ but WITHOUT ANY WARRANTY; without even the implied warranty of
43+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44+ GNU General Public License for more details.
45+
46+ You should have received a copy of the GNU General Public License
47+ along with this program. If not, see <http://www.gnu.org/licenses/>.
48+ */
49+
50+#pragma once
51+
52+#include "quantum.h"
53+
54+#define xxx KC_NO
55+
56+#define LAYOUT_split_space( \
57+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
58+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1D, \
59+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
60+ k30, k31, k32, k33, k36, k38, k39, k3A, k3B, k3D \
61+) { \
62+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
63+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, xxx, k1D }, \
64+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
65+ { k30, k31, k32, k33, xxx, xxx, k36, xxx, k38, k39, k3A, k3B, xxx, k3D } \
66+}
67+
68+#define LAYOUT_625_space( \
69+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
70+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1D, \
71+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
72+ k30, k31, k32, k36, k39, k3A, k3B, k3D \
73+) { \
74+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
75+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, xxx, k1D }, \
76+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
77+ { k30, k31, k32, xxx, xxx, xxx, k36, xxx, xxx, k39, k3A, k3B, xxx, k3D } \
78+}
79+
80+#define LAYOUT_600_space( \
81+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
82+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1D, \
83+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
84+ k30, k31, k32, k36, k38, k39, k3A, k3B, k3D \
85+) { \
86+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
87+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, xxx, k1D }, \
88+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, xxx, k2D }, \
89+ { k30, k31, k32, xxx, xxx, xxx, k36, xxx, k38, k39, k3A, k3B, xxx, k3D } \
90+}
91diff --git a/keyboards/45_ats/config.h b/keyboards/45_ats/config.h
92new file mode 100644
93index 0000000000000000000000000000000000000000..4733095bc1343dd30b158f20a4864dd5d638868f
94--- /dev/null
95+++ b/keyboards/45_ats/config.h
96@@ -0,0 +1,52 @@
97+ /*
98+ Copyright 2020 Alec Penland
99+ Copyright 2020 Garret Gartner
100+
101+ This program is free software: you can redistribute it and/or modify
102+ it under the terms of the GNU General Public License as published by
103+ the Free Software Foundation, either version 2 of the License, or
104+ (at your option) any later version.
105+
106+ This program is distributed in the hope that it will be useful,
107+ but WITHOUT ANY WARRANTY; without even the implied warranty of
108+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
109+ GNU General Public License for more details.
110+
111+ You should have received a copy of the GNU General Public License
112+ along with this program. If not, see <http://www.gnu.org/licenses/>.
113+ */
114+
115+#pragma once
116+
117+#include "config_common.h"
118+
119+/* USB Device descriptor parameter */
120+#define VENDOR_ID 0xAB13
121+#define PRODUCT_ID 0x4511
122+#define DEVICE_VER 0x0001
123+#define MANUFACTURER Abec13
124+#define PRODUCT 45ATS
125+
126+/* key matrix size */
127+#define MATRIX_ROWS 4
128+#define MATRIX_COLS 14
129+
130+#define ENCODERS_PAD_A { B4 }
131+#define ENCODERS_PAD_B { B5 }
132+
133+/* key matrix pins */
134+#define MATRIX_ROW_PINS { D3, D5, D7, D6 }
135+#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, B7, F6, F5, F4, C7, F7, C6, B6, D4 }
136+#define UNUSED_PINS
137+
138+/* COL2ROW or ROW2COL */
139+#define DIODE_DIRECTION COL2ROW
140+
141+/* Set 0 if debouncing isn't needed */
142+#define DEBOUNCE 5
143+
144+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
145+#define LOCKING_SUPPORT_ENABLE
146+
147+/* Locking resynchronize hack */
148+#define LOCKING_RESYNC_ENABLE
149diff --git a/keyboards/45_ats/info.json b/keyboards/45_ats/info.json
150new file mode 100644
151index 0000000000000000000000000000000000000000..ead5090a54fbefd999c0969ed682d5748c738971
152--- /dev/null
153+++ b/keyboards/45_ats/info.json
154@@ -0,0 +1,169 @@
155+{
156+ "keyboard_name": "45-ATS",
157+ "url": "",
158+ "maintainer": "The-Royal",
159+ "width": 14.25,
160+ "height": 4.25,
161+ "layouts": {
162+ "LAYOUT_split_space": {
163+ "layout": [
164+ {"label":"", "x":0, "y":0},
165+ {"label":"", "x":1, "y":0},
166+ {"label":"", "x":2, "y":0},
167+ {"label":"", "x":3, "y":0},
168+ {"label":"", "x":4, "y":0},
169+ {"label":"", "x":5, "y":0},
170+ {"label":"", "x":6, "y":0},
171+ {"label":"", "x":7, "y":0},
172+ {"label":"", "x":8, "y":0},
173+ {"label":"", "x":9, "y":0},
174+ {"label":"", "x":10, "y":0},
175+ {"label":"", "x":11, "y":0},
176+ {"label":"", "x":12, "y":0},
177+ {"label":"", "x":13.5, "y":0},
178+ {"label":"", "x":0, "y":1, "w":1.25},
179+ {"label":"", "x":1.25, "y":1},
180+ {"label":"", "x":2.25, "y":1},
181+ {"label":"", "x":3.25, "y":1},
182+ {"label":"", "x":4.25, "y":1},
183+ {"label":"", "x":5.25, "y":1},
184+ {"label":"", "x":6.25, "y":1},
185+ {"label":"", "x":7.25, "y":1},
186+ {"label":"", "x":8.25, "y":1},
187+ {"label":"", "x":9.25, "y":1},
188+ {"label":"", "x":10.25, "y":1},
189+ {"label":"", "x":11.25, "y":1, "w":1.75},
190+ {"label":"", "x":13.5, "y":1},
191+ {"label":"", "x":0, "y":2, "w":1.75},
192+ {"label":"", "x":1.75, "y":2},
193+ {"label":"", "x":2.75, "y":2},
194+ {"label":"", "x":3.75, "y":2},
195+ {"label":"", "x":4.75, "y":2},
196+ {"label":"", "x":5.75, "y":2},
197+ {"label":"", "x":6.75, "y":2},
198+ {"label":"", "x":7.75, "y":2},
199+ {"label":"", "x":8.75, "y":2},
200+ {"label":"", "x":9.75, "y":2},
201+ {"label":"", "x":10.75, "y":2, "w":1.25},
202+ {"label":"", "x":12.25, "y":2.25},
203+ {"label":"", "x":13.5, "y":2},
204+ {"label":"", "x":0, "y":3, "w":1.25},
205+ {"label":"", "x":1.25, "y":3},
206+ {"label":"", "x":2.25, "y":3, "w":1.25},
207+ {"label":"", "x":3.5, "y":3, "w":2.75},
208+ {"label":"", "x":6.25, "y":3, "w":2.25},
209+ {"label":"", "x":8.5, "y":3, "w":1.25},
210+ {"label":"", "x":9.75, "y":3, "w":1.25},
211+ {"label":"", "x":11.25, "y":3.25},
212+ {"label":"", "x":12.25, "y":3.25},
213+ {"label":"", "x":13.25, "y":3.25}
214+ ]
215+ },
216+ "LAYOUT_625_space": {
217+ "layout": [
218+ {"label":"", "x":0, "y":0},
219+ {"label":"", "x":1, "y":0},
220+ {"label":"", "x":2, "y":0},
221+ {"label":"", "x":3, "y":0},
222+ {"label":"", "x":4, "y":0},
223+ {"label":"", "x":5, "y":0},
224+ {"label":"", "x":6, "y":0},
225+ {"label":"", "x":7, "y":0},
226+ {"label":"", "x":8, "y":0},
227+ {"label":"", "x":9, "y":0},
228+ {"label":"", "x":10, "y":0},
229+ {"label":"", "x":11, "y":0},
230+ {"label":"", "x":12, "y":0},
231+ {"label":"", "x":13.5, "y":0},
232+ {"label":"", "x":0, "y":1, "w":1.25},
233+ {"label":"", "x":1.25, "y":1},
234+ {"label":"", "x":2.25, "y":1},
235+ {"label":"", "x":3.25, "y":1},
236+ {"label":"", "x":4.25, "y":1},
237+ {"label":"", "x":5.25, "y":1},
238+ {"label":"", "x":6.25, "y":1},
239+ {"label":"", "x":7.25, "y":1},
240+ {"label":"", "x":8.25, "y":1},
241+ {"label":"", "x":9.25, "y":1},
242+ {"label":"", "x":10.25, "y":1},
243+ {"label":"", "x":11.25, "y":1, "w":1.75},
244+ {"label":"", "x":13.5, "y":1},
245+ {"label":"", "x":0, "y":2, "w":1.75},
246+ {"label":"", "x":1.75, "y":2},
247+ {"label":"", "x":2.75, "y":2},
248+ {"label":"", "x":3.75, "y":2},
249+ {"label":"", "x":4.75, "y":2},
250+ {"label":"", "x":5.75, "y":2},
251+ {"label":"", "x":6.75, "y":2},
252+ {"label":"", "x":7.75, "y":2},
253+ {"label":"", "x":8.75, "y":2},
254diff --git a/keyboards/45_ats/keymaps/default/config.h b/keyboards/45_ats/keymaps/default/config.h
255new file mode 100644
256index 0000000000000000000000000000000000000000..faba80d278f86017aec0ccb11a01c21ef3eb33ec
257--- /dev/null
258+++ b/keyboards/45_ats/keymaps/default/config.h
259@@ -0,0 +1,25 @@
260+ /*
261+ Copyright 2020 Alec Penland
262+ Copyright 2020 Garret Gartner
263+
264+ This program is free software: you can redistribute it and/or modify
265+ it under the terms of the GNU General Public License as published by
266+ the Free Software Foundation, either version 2 of the License, or
267+ (at your option) any later version.
268+
269+ This program is distributed in the hope that it will be useful,
270+ but WITHOUT ANY WARRANTY; without even the implied warranty of
271+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
272+ GNU General Public License for more details.
273+
274+ You should have received a copy of the GNU General Public License
275+ along with this program. If not, see <http://www.gnu.org/licenses/>.
276+ */
277+
278+#pragma once
279+
280+#define TAPPING_TERM 175
281+
282+#define PERMISSIVE_HOLD
283+
284+#define MOD_TAP_INTERUPT
285diff --git a/keyboards/45_ats/keymaps/default/keymap.c b/keyboards/45_ats/keymaps/default/keymap.c
286new file mode 100644
287index 0000000000000000000000000000000000000000..28941b173ff6bebf2c63398dc5bef0226f52abd0
288--- /dev/null
289+++ b/keyboards/45_ats/keymaps/default/keymap.c
290@@ -0,0 +1,107 @@
291+ /*
292+ Copyright 2020 Alec Penland
293+ Copyright 2020 Garret Gartner
294+
295+ This program is free software: you can redistribute it and/or modify
296+ it under the terms of the GNU General Public License as published by
297+ the Free Software Foundation, either version 2 of the License, or
298+ (at your option) any later version.
299+
300+ This program is distributed in the hope that it will be useful,
301+ but WITHOUT ANY WARRANTY; without even the implied warranty of
302+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
303+ GNU General Public License for more details.
304+
305+ You should have received a copy of the GNU General Public License
306+ along with this program. If not, see <http://www.gnu.org/licenses/>.
307+ */
308+
309+#include QMK_KEYBOARD_H
310+
311+// Layer names
312+enum ats_layers{
313+ // - Base layer:
314+ _BASE,
315+ // - Symbols, numbers, and functions:
316+ _FN,
317+ // - Alternate Function layer:
318+ _LN
319+};
320+
321+#define RS_SLS RSFT_T(KC_SLSH)
322+
323+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
324+ /* Default QWERTY layer
325+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
326+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│
327+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
328+ * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│
329+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
330+ * │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│
331+ * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘
332+ * │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┐
333+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
334+ * └───┴───┴───┘
335+ */
336+ [_BASE] = LAYOUT_split_space(
337+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_PGUP,
338+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, KC_ENT, KC_PGDN,
339+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RS_SLS, KC_UP, KC_CAPS,
340+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPACE, KC_RALT, MO(_LN), KC_LEFT, KC_DOWN, KC_RIGHT
341+ ),
342+ /* Main Numbers, Symbols & Function Layer (MOMENTARY)
343+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
344+ * │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│
345+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
346+ * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│
347+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
348+ * │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┐ │ │
349+ * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
350+ * │ │ │ │ │ │ │ │ ┌───┼───┼───┐
351+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │
352+ * └───┴───┴───┘
353+ */
354+ [_FN] = LAYOUT_split_space(
355+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_HOME,
356+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER, KC_END,
357+ _______, KC_LPRN, KC_RPRN, KC_SCLN, KC_DOT, _______, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_EQL, _______, _______,
358+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
359+ ),
360+
361+ /* ALTERNATE Function layer (MOMENTARY)
362+ * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
363+ * │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│
364+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
365+ * │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│
366+ * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
367+ * │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┐ │ │
368+ * ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
369+ * │RSET│ │ │ │ │ │ │ ┌───┼───┼───┐
370+ * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │
371+ * └───┴───┴───┘
372+ */
373+ [_LN] = LAYOUT_split_space(
374+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLU,
375+ KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_MPLY, KC_VOLD,
376+ KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
377+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
378+ )
379+};
380+
381+//function for layer indicator LED
382+layer_state_t layer_state_set_user(layer_state_t state) {
383+ writePin(D0, layer_state_cmp(state, 0));
384+ writePin(D1, layer_state_cmp(state, 1));
385+ writePin(D2, layer_state_cmp(state, 2));
386+ return state;
387+}
388+
389+void encoder_update_user(uint8_t index, bool clockwise) {
390diff --git a/keyboards/45_ats/keymaps/via/keymap.c b/keyboards/45_ats/keymaps/via/keymap.c
391new file mode 100644
392index 0000000000000000000000000000000000000000..28941b173ff6bebf2c63398dc5bef0226f52abd0
393--- /dev/null
394+++ b/keyboards/45_ats/keymaps/via/keymap.c
395@@ -0,0 +1,107 @@
396+ /*
397+ Copyright 2020 Alec Penland
398+ Copyright 2020 Garret Gartner
399+
400+ This program is free software: you can redistribute it and/or modify
401+ it under the terms of the GNU General Public License as published by
402+ the Free Software Foundation, either version 2 of the License, or
403+ (at your option) any later version.
404+
405+ This program is distributed in the hope that it will be useful,
406+ but WITHOUT ANY WARRANTY; without even the implied warranty of
407+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
408+ GNU General Public License for more details.
409+
410+ You should have received a copy of the GNU General Public License
411+ along with this program. If not, see <http://www.gnu.org/licenses/>.
412+ */
413+
414+#include QMK_KEYBOARD_H
415+
416+// Layer names
417+enum ats_layers{
418+ // - Base layer:
419+ _BASE,
420+ // - Symbols, numbers, and functions:
421+ _FN,
422+ // - Alternate Function layer:
423+ _LN
424+};
425+
426+#define RS_SLS RSFT_T(KC_SLSH)
427+
428+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
429+ /* Default QWERTY layer
430+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
431+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │Del│BkS│ │PgU│
432+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
433+ * │Tab │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ' │Enter │ │PgD│
434+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
435+ * │LShift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │Sft/│ ┌───┐ │CAP│
436+ * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ ↑ │ └───┘
437+ * │LCtl│OS │LAlt│ Fn │ Space │RAlt│ Ln │ ┌───┼───┼───┐
438+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
439+ * └───┴───┴───┘
440+ */
441+ [_BASE] = LAYOUT_split_space(
442+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_PGUP,
443+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, KC_ENT, KC_PGDN,
444+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RS_SLS, KC_UP, KC_CAPS,
445+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPACE, KC_RALT, MO(_LN), KC_LEFT, KC_DOWN, KC_RIGHT
446+ ),
447+ /* Main Numbers, Symbols & Function Layer (MOMENTARY)
448+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
449+ * │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ [ │ ] │ \ │ │ │Hme│
450+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
451+ * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │End│
452+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
453+ * │ │ ( │ ) │ ; │ . │ │ - │ + │ * │ / │ = │ ┌───┐ │ │
454+ * ├────┬─┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
455+ * │ │ │ │ │ │ │ │ ┌───┼───┼───┐
456+ * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │
457+ * └───┴───┴───┘
458+ */
459+ [_FN] = LAYOUT_split_space(
460+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_HOME,
461+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER, KC_END,
462+ _______, KC_LPRN, KC_RPRN, KC_SCLN, KC_DOT, _______, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_EQL, _______, _______,
463+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
464+ ),
465+
466+ /* ALTERNATE Function layer (MOMENTARY)
467+ * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
468+ * │ PWR│F1 │F2 │F3 │F4 │F5 │F6 │ │ │ │ │PRV│NXT│ │VL+│
469+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ ├───┤
470+ * │ SLP │F7 │F8 │F9 │F10│F11│F12│ │ │ │ │ PLAY │ │VL-│
471+ * ├─────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┘ ├───┤
472+ * │ WAKE │ │ │ │ │ │ │ │ │ │ │ ┌───┐ │ │
473+ * ├────┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬───┘ │ │ └───┘
474+ * │RSET│ │ │ │ │ │ │ ┌───┼───┼───┐
475+ * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │
476+ * └───┴───┴───┘
477+ */
478+ [_LN] = LAYOUT_split_space(
479+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLU,
480+ KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_MPLY, KC_VOLD,
481+ KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
482+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
483+ )
484+};
485+
486+//function for layer indicator LED
487+layer_state_t layer_state_set_user(layer_state_t state) {
488+ writePin(D0, layer_state_cmp(state, 0));
489+ writePin(D1, layer_state_cmp(state, 1));
490+ writePin(D2, layer_state_cmp(state, 2));
491+ return state;
492+}
493+
494+void encoder_update_user(uint8_t index, bool clockwise) {
495diff --git a/keyboards/45_ats/keymaps/via/readme.md b/keyboards/45_ats/keymaps/via/readme.md
496new file mode 100644
497index 0000000000000000000000000000000000000000..702a497dd869dec231cb434baf02f1db8e0c5e5f
498--- /dev/null
499+++ b/keyboards/45_ats/keymaps/via/readme.md
500@@ -0,0 +1,3 @@
501+# 45-ATS VIA Firmware
502+
503+This keymap is to enable the use of VIA on the 45-ATS Keyboard.
504diff --git a/keyboards/45_ats/keymaps/via/rules.mk b/keyboards/45_ats/keymaps/via/rules.mk
505new file mode 100644
506index 0000000000000000000000000000000000000000..1e5b99807cb7a90b282a3001a38bf303774544ba
507--- /dev/null
508+++ b/keyboards/45_ats/keymaps/via/rules.mk
509@@ -0,0 +1 @@
510+VIA_ENABLE = yes
511diff --git a/keyboards/45_ats/readme.md b/keyboards/45_ats/readme.md
512new file mode 100644
513index 0000000000000000000000000000000000000000..7d778df083b25f96e7345dfdab518faab978b862
514--- /dev/null
515+++ b/keyboards/45_ats/readme.md
516@@ -0,0 +1,16 @@
517+# 45-ATS
518+
519+
520+
521+A Premium and Beautiful 45% (And-Then-Some) Keyboard. Concept and Design by [Abec13](https://www.reddit.com/user/abec13).
522+
523+- Keyboard Designer: [Abec13](https://reddit.com/u/abec13/)
524+- Keyboard Maintainer: [The-Royal](https://github.com/the-royal)
525+- Hardware Supported: 45-ATS v1.0 PCB
526+- Hardware Availability: Through Group Buy - Dec. 2019
527+
528+Make example for this keyboard (after setting up your build environment):
529+
530+ make 45_ats:default
531+
532diff --git a/keyboards/45_ats/rules.mk b/keyboards/45_ats/rules.mk
533new file mode 100644
534index 0000000000000000000000000000000000000000..db96f0afc8cf5a31f87af53fb749b78fd2c9a09e
535--- /dev/null
536+++ b/keyboards/45_ats/rules.mk
537@@ -0,0 +1,22 @@
538+# MCU name
539+MCU = atmega32u4
540+
541+# Bootloader selection
542+BOOTLOADER = atmel-dfu
543+
544+# Build Options
545+# change yes to no to disable
546+#
547+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
548+MOUSEKEY_ENABLE = yes # Mouse keys
549+EXTRAKEY_ENABLE = yes # Audio control and System control
550+CONSOLE_ENABLE = yes # Console for debug
551+COMMAND_ENABLE = yes # Commands for debug and configuration
552+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
553+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
554+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
555+NKRO_ENABLE = no # USB Nkey Rollover
556+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
557+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
558+BLUETOOTH_ENABLE = no # Enable Bluetooth
559+AUDIO_ENABLE = no # Audio output