d9613e6a3318e4b3d72eb52bbe16ee5c753df9d6

Author
Rys Sommefeldt <rys@pixeltards.com>
Committer
GitHub <noreply@github.com>
Date

Message

[Keyboard] CapsUnlocked CU65 (#11006)

* CapsUnlocked CU65

* Remove spurious in 65_ansi keymap

* Fix key next to Enter in 65_iso

* Reviewed fixes for CU65

Config, layout, copyright, build rules and documentation tweaks

Co-authored-by: Joel Challis <git@zvecr.com>

* KC_NUBS not KC_NUSH on the bottom row

* K104 is 2U backspace

* Small info.json and config.h tweaks

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>

Diff

This diff is truncated to protect this page.

  1diff --git a/keyboards/capsunlocked/cu65/config.h b/keyboards/capsunlocked/cu65/config.h
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..8fac6cd06d8805046fcfed0cd872cc9698ffdd91
  4--- /dev/null
  5+++ b/keyboards/capsunlocked/cu65/config.h
  6@@ -0,0 +1,105 @@
  7+/*
  8+Copyright 2020 CapsUnlocked
  9+
 10+This program is free software: you can redistribute it and/or modify
 11+it under the terms of the GNU General Public License as published by
 12+the Free Software Foundation, either version 2 of the License, or
 13+(at your option) any later version.
 14+
 15+This program is distributed in the hope that it will be useful,
 16+but WITHOUT ANY WARRANTY; without even the implied warranty of
 17+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 18+GNU General Public License for more details.
 19+
 20+You should have received a copy of the GNU General Public License
 21+along with this program.  If not, see <http://www.gnu.org/licenses/>.
 22+*/
 23+
 24+#pragma once
 25+
 26+#include "config_common.h"
 27+
 28+/* USB Device descriptor parameter */
 29+#define VENDOR_ID       0x4355
 30+#define PRODUCT_ID      0x0065
 31+#define DEVICE_VER      0x0001
 32+#define MANUFACTURER    CapsUnlocked
 33+#define PRODUCT         CU65
 34+
 35+/* key matrix size */
 36+#define MATRIX_ROWS 5
 37+#define MATRIX_COLS 16
 38+
 39+/*
 40+ * Keyboard Matrix Assignments
 41+ *
 42+ * Change this to how you wired your keyboard
 43+ * COLS: AVR pins used for columns, left to right
 44+ * ROWS: AVR pins used for rows, top to bottom
 45+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
 46+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
 47+ *
 48+*/
 49+#define MATRIX_ROW_PINS { F1, F4, F5, F6, D3 }
 50+#define MATRIX_COL_PINS { D6, D7, D4, B4, B5, B6, C6, D5, C7, F0, E6, B0, B1, B7, B3, B2 }
 51+#define UNUSED_PINS
 52+
 53+/* COL2ROW, ROW2COL */
 54+#define DIODE_DIRECTION COL2ROW
 55+
 56+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 57+#define DEBOUNCE 5
 58+
 59+/* define if matrix has ghost (lacks anti-ghosting diodes) */
 60+//#define MATRIX_HAS_GHOST
 61+
 62+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
 63+#define LOCKING_SUPPORT_ENABLE
 64+/* Locking resynchronize hack */
 65+#define LOCKING_RESYNC_ENABLE
 66+
 67+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
 68+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
 69+ */
 70+//#define GRAVE_ESC_CTRL_OVERRIDE
 71+
 72+/*
 73+ * Force NKRO
 74+ *
 75+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
 76+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
 77+ * makefile for this to work.)
 78+ *
 79+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
 80+ * until the next keyboard reset.
 81+ *
 82+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
 83+ * fully operational during normal computer usage.
 84+ *
 85+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
 86+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
 87+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
 88+ * power-up.
 89+ *
 90+ */
 91+//#define FORCE_NKRO
 92+
 93+/*
 94+ * Feature disable options
 95+ *  These options are also useful to firmware size reduction.
 96+ */
 97+
 98+/* disable debug print */
 99+//#define NO_DEBUG
100+
101+/* disable print */
102+//#define NO_PRINT
103+
104+/* disable action features */
105+//#define NO_ACTION_LAYER
106diff --git a/keyboards/capsunlocked/cu65/cu65.c b/keyboards/capsunlocked/cu65/cu65.c
107new file mode 100644
108index 0000000000000000000000000000000000000000..2b7f720e1347e8b77559ab54787c0a0603954b85
109--- /dev/null
110+++ b/keyboards/capsunlocked/cu65/cu65.c
111@@ -0,0 +1,14 @@
112+/*
113+Copyright 2020 CapsUnlocked
114+This program is free software: you can redistribute it and/or modify
115+it under the terms of the GNU General Public License as published by
116+the Free Software Foundation, either version 2 of the License, or
117+(at your option) any later version.
118+This program is distributed in the hope that it will be useful,
119+but WITHOUT ANY WARRANTY; without even the implied warranty of
120+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
121+GNU General Public License for more details.
122+You should have received a copy of the GNU General Public License
123+along with this program.  If not, see <http://www.gnu.org/licenses/>.
124+*/
125+#include "cu65.h"
126diff --git a/keyboards/capsunlocked/cu65/cu65.h b/keyboards/capsunlocked/cu65/cu65.h
127new file mode 100644
128index 0000000000000000000000000000000000000000..89b02ed91d72a60ec14e8251b13e8808c32afb0c
129--- /dev/null
130+++ b/keyboards/capsunlocked/cu65/cu65.h
131@@ -0,0 +1,67 @@
132+/*
133+Copyright 2020 CapsUnlocked
134+This program is free software: you can redistribute it and/or modify
135+it under the terms of the GNU General Public License as published by
136+the Free Software Foundation, either version 2 of the License, or
137+(at your option) any later version.
138+This program is distributed in the hope that it will be useful,
139+but WITHOUT ANY WARRANTY; without even the implied warranty of
140+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
141+GNU General Public License for more details.
142+You should have received a copy of the GNU General Public License
143+along with this program.  If not, see <http://www.gnu.org/licenses/>.
144+*/
145+#pragma once
146+
147+#include "quantum.h"
148+
149+/* This a shortcut to help you visually see your layout.
150+ *
151+ * The first section contains all of the arguments representing the physical
152+ * layout of the board and position of the keys.
153+ *
154+ * The second converts the arguments into a two-dimensional array which
155+ * represents the switch matrix.
156+ */
157+
158+#define LAYOUT_all( \
159+	K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
160+	K100,       K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
161+	K200,       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
162+	K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
163+	K400, K401, K402,                         K407,             K410,       K412, K413, K414, K415  \
164+) { \
165+	{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
166+	{ K100, KC_NO,K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
167+	{ K200, KC_NO,K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
168+	{ K300, K301, KC_NO,K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
169+	{ K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 }  \
170+}
171+
172+#define LAYOUT_65_ansi( \
173+	K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,       K014, K015, \
174+	K100,       K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
175+	K200,       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,       K214, K215, \
176+	K300,             K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
177+	K400, K401, K402,                         K407,             K410,       K412, K413, K414, K415  \
178+) { \
179+	{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO,K014, K015 }, \
180+	{ K100, KC_NO,K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
181+	{ K200, KC_NO,K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,KC_NO, K214, K215 }, \
182+	{ K300, KC_NO, KC_NO,K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
183+	{ K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 }  \
184+}
185+
186+#define LAYOUT_65_iso( \
187+	K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,       K014, K015, \
188+	K100,       K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113,       K115, \
189+	K200,       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
190+	K300, K301,       K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
191+	K400, K401, K402,                         K407,             K410,       K412, K413, K414, K415  \
192+) { \
193+	{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO,K014, K015 }, \
194+	{ K100, KC_NO,K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO,K115 }, \
195+	{ K200, KC_NO,K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
196+	{ K300, K301, KC_NO,K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
197+	{ K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 }  \
198+}
199diff --git a/keyboards/capsunlocked/cu65/info.json b/keyboards/capsunlocked/cu65/info.json
200new file mode 100644
201index 0000000000000000000000000000000000000000..fdb187e38470c4c5f5147bae2587dab5a9f40b38
202--- /dev/null
203+++ b/keyboards/capsunlocked/cu65/info.json
204@@ -0,0 +1,15 @@
205+{
206+    "keyboard_name": "CU65",
207+    "url": "",
208+    "maintainer": "qmk",
209+    "width": 16,
210+    "height": 5,
211+    "layouts": {
212+      "LAYOUT_65_ansi": {
213diff --git a/keyboards/capsunlocked/cu65/keymaps/default/keymap.c b/keyboards/capsunlocked/cu65/keymaps/default/keymap.c
214new file mode 100644
215index 0000000000000000000000000000000000000000..1bf11d96de80f2c3e51abd262df226ccbcce6918
216--- /dev/null
217+++ b/keyboards/capsunlocked/cu65/keymaps/default/keymap.c
218@@ -0,0 +1,62 @@
219+/*
220+Copyright 2020 CapsUnlocked
221+
222+This program is free software: you can redistribute it and/or modify
223+it under the terms of the GNU General Public License as published by
224+the Free Software Foundation, either version 2 of the License, or
225+(at your option) any later version.
226+
227+This program is distributed in the hope that it will be useful,
228+but WITHOUT ANY WARRANTY; without even the implied warranty of
229+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
230+GNU General Public License for more details.
231+
232+You should have received a copy of the GNU General Public License
233+along with this program.  If not, see <http://www.gnu.org/licenses/>.
234+*/
235+
236+#include QMK_KEYBOARD_H
237+
238+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
239+    [0] = LAYOUT_65_ansi(
240+    /*
241+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
242+     * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│
243+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
244+     * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │Del│
245+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
246+     * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │Pg+│
247+     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
248+     * │  Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│
249+     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
250+     * │Ctrl│LGUI│LAlt│         Space          │RAlt│ L1 │ │ ← │ ↓ │ → │
251+     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
252+     */
253+        KC_GESC, 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,
254+        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,
255+        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_PGUP,
256+        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_PGDN,
257+        KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                             KC_RALT, MO(1),            KC_LEFT, KC_DOWN, KC_RGHT
258+    ),
259+    [1] = LAYOUT_65_ansi(
260+    /*
261+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
262+     * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │
263+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
264+     * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
265+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
266+     * │      │   │   │   │   │   │   │   │   │   │   │   │        │   │
267+     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
268+     * │        │   │   │   │   │   │   │   │   │   │   │      │   │   │
269+     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
270+     * │    │    │    │                        │    │    │ │   │   │   │
271+     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
272+     */
273+        RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______,
274+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
275+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______,
276+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
277+        _______, _______, _______,                   _______,                            _______, _______,          _______, _______, _______
278+    ),
279+};
280+
281diff --git a/keyboards/capsunlocked/cu65/keymaps/default/readme.md b/keyboards/capsunlocked/cu65/keymaps/default/readme.md
282new file mode 100644
283index 0000000000000000000000000000000000000000..65bed4a3dc5a9b2f4d543bde43d7065d0307ecab
284--- /dev/null
285+++ b/keyboards/capsunlocked/cu65/keymaps/default/readme.md
286@@ -0,0 +1 @@
287+# The default ANSI keymap for CU65
288diff --git a/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c b/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c
289new file mode 100644
290index 0000000000000000000000000000000000000000..a8a32cc785486b87603712c2ffa62882f2afb7cc
291--- /dev/null
292+++ b/keyboards/capsunlocked/cu65/keymaps/iso/keymap.c
293@@ -0,0 +1,61 @@
294+/*
295+Copyright 2020 CapsUnlocked
296+
297+This program is free software: you can redistribute it and/or modify
298+it under the terms of the GNU General Public License as published by
299+the Free Software Foundation, either version 2 of the License, or
300+(at your option) any later version.
301+
302+This program is distributed in the hope that it will be useful,
303+but WITHOUT ANY WARRANTY; without even the implied warranty of
304+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
305+GNU General Public License for more details.
306+
307+You should have received a copy of the GNU General Public License
308+along with this program.  If not, see <http://www.gnu.org/licenses/>.
309+*/
310+
311+#include QMK_KEYBOARD_H
312+
313+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
314+    [0] = LAYOUT_65_iso(
315+    /*
316+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
317+     * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│
318+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
319+     * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │Del│
320+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
321+     * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │Pg+│
322+     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
323+     * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│
324+     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
325+     * │Ctrl│LGUI│LAlt│         Space          │RAlt│ L1 │ │ ← │ ↓ │ → │
326+     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
327+     */
328+        KC_GESC, 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,
329+        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,
330+        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_PGUP,
331+        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_PGDN,
332+        KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                             KC_RALT, MO(1),            KC_LEFT, KC_DOWN, KC_RGHT
333+    ),
334+    [1] = LAYOUT_65_iso(
335+    /*
336+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
337+     * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│       │   │
338+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
339+     * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │   │
340+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    ├───┤
341+     * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │   │
342+     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
343+     * │    │   │   │   │   │   │   │   │   │   │   │   │      │   │   │
344+     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
345+     * │    │    │    │                        │    │    │ │   │   │   │
346+     * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
347+     */
348+        RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______,
349+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
350+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
351+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
352+        _______, _______, _______,                   _______,                            _______, _______,          _______, _______, _______
353+    ),
354+};
355diff --git a/keyboards/capsunlocked/cu65/keymaps/iso/readme.md b/keyboards/capsunlocked/cu65/keymaps/iso/readme.md
356new file mode 100644
357index 0000000000000000000000000000000000000000..2c2ded31f5a0a6cc38e31984f9cf878eab70ba2a
358--- /dev/null
359+++ b/keyboards/capsunlocked/cu65/keymaps/iso/readme.md
360@@ -0,0 +1 @@
361+# The ISO keymap for CU65
362diff --git a/keyboards/capsunlocked/cu65/keymaps/via/keymap.c b/keyboards/capsunlocked/cu65/keymaps/via/keymap.c
363new file mode 100644
364index 0000000000000000000000000000000000000000..1bd833294e64c76419694135a1fcfc5db348b6ad
365--- /dev/null
366+++ b/keyboards/capsunlocked/cu65/keymaps/via/keymap.c
367@@ -0,0 +1,47 @@
368+/* Copyright 2020 CapsUnlocked
369+ *
370+ * This program is free software: you can redistribute it and/or modify
371+ * it under the terms of the GNU General Public License as published by
372+ * the Free Software Foundation, either version 2 of the License, or
373+ * (at your option) any later version.
374+ *
375+ * This program is distributed in the hope that it will be useful,
376+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
377+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
378+ * GNU General Public License for more details.
379+ *
380+ * You should have received a copy of the GNU General Public License
381+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
382+ */
383+#include QMK_KEYBOARD_H
384+
385+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
386+    [0] = LAYOUT_all(
387+        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_BSPC, KC_INS,
388+        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,
389+        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_NUBS, KC_ENT,  KC_PGUP,
390+        KC_LSFT,          KC_NUHS, 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_PGDN,
391+        KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RALT, MO(1),            KC_LEFT, KC_DOWN, KC_RGHT
392+    ),
393+    [1] = LAYOUT_all(
394+        RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______,
395+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
396+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
397+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
398+        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______
399+    ),
400+    [2] = LAYOUT_all(
401+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
402+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
403+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
404+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
405+        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______
406+    ),
407+    [3] = LAYOUT_all(
408+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
409+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
410+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
411+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
412+        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______
413+    ),
414+};
415diff --git a/keyboards/capsunlocked/cu65/keymaps/via/rules.mk b/keyboards/capsunlocked/cu65/keymaps/via/rules.mk
416new file mode 100644
417index 0000000000000000000000000000000000000000..1e5b99807cb7a90b282a3001a38bf303774544ba
418--- /dev/null
419+++ b/keyboards/capsunlocked/cu65/keymaps/via/rules.mk
420@@ -0,0 +1 @@
421+VIA_ENABLE = yes
422diff --git a/keyboards/capsunlocked/cu65/readme.md b/keyboards/capsunlocked/cu65/readme.md
423new file mode 100644
424index 0000000000000000000000000000000000000000..0a51d7b1b3e76b7d3de950bd141383020fc4e02a
425--- /dev/null
426+++ b/keyboards/capsunlocked/cu65/readme.md
427@@ -0,0 +1,13 @@
428+# CU65
429+
430+The CU65 is a customisable 65% that supports hotswap ISO and ANSI layouts on the same PCB.
431+
432+* Keyboard maintainer: [rys](https://github.com/rys)
433+* Hardware supported: CU65 r2
434+* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu65-r2/)
435+
436+Make example for this keyboard (after setting up your build environment):
437+
438+    make capsunlocked/cu65:default
439+
440diff --git a/keyboards/capsunlocked/cu65/rules.mk b/keyboards/capsunlocked/cu65/rules.mk
441new file mode 100644
442index 0000000000000000000000000000000000000000..cf7418e4abb502742792ea530a45e6f0356335ec
443--- /dev/null
444+++ b/keyboards/capsunlocked/cu65/rules.mk
445@@ -0,0 +1,24 @@
446+# MCU name
447+MCU = atmega32u4
448+
449+# Bootloader
450+BOOTLOADER = atmel-dfu
451+
452+# Build Options
453+#   change yes to no to disable
454+#
455+BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
456+MOUSEKEY_ENABLE = yes       # Mouse keys
457+EXTRAKEY_ENABLE = yes       # Audio control and System control
458+CONSOLE_ENABLE = no         # Console for debug
459+COMMAND_ENABLE = no         # Commands for debug and configuration
460+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
461+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
462+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
463+NKRO_ENABLE = no            # USB Nkey Rollover
464+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
465+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
466+BLUETOOTH_ENABLE = no       # Enable Bluetooth
467+AUDIO_ENABLE = no           # Audio output
468+
469+LAYOUTS = 65_ansi 65_iso
470diff --git a/keyboards/capsunlocked/readme.md b/keyboards/capsunlocked/readme.md
471new file mode 100644
472index 0000000000000000000000000000000000000000..b2306e0242361cd7c934b58a0af799d15241918a
473--- /dev/null
474+++ b/keyboards/capsunlocked/readme.md
475@@ -0,0 +1,3 @@
476+# CapsUnlocked keyboards
477+
478+Home of the firmware for CapsUnlocked keyboards!