616dc7dd5d1bf6e512db9a0c7f3dfcdc42fc9db1

Author
Garret G <45295190+The-Royal@users.noreply.github.com>
Committer
GitHub <noreply@github.com>
Date

Message

[Keyboard] 45-ATS (#10104)

* add ats folder

* fix duplicate matrix key

* fix matrix issues

* fix missing comma in info.json

* clean up info.json

* rm game layer toggle in via keymap

* update via keymap rules.mk

* Update info.json

* clear up layout graphics

* Apply suggestions from code review

* Update 45_ats.c

* Update 45_ats.h

* Update config.h

* Update config.h

* Update keyboards/45_ats/keymaps/default/config.h

* Update keymap.c

* Update keyboards/45_ats/keymaps/default/keymap.c

* Update keymap.c

* Update keyboards/45_ats/keymaps/via/keymap.c

* Apply suggestions from code review

* Update keyboards/45_ats/config.h

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+![45ats](https://i.imgur.com/Paqx5zGl.png)
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