summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jael're <drashna@live.com>2021-08-24 07:32:31 -0700
committerDrashna Jael're <drashna@live.com>2021-08-24 07:32:31 -0700
commite3b68ddfe890868ac732f28ddcc1f111c69a0bfb (patch)
tree67a7cb0831cfeda29efc7bad5be6d0e894821d36
parentc9c60d227e38abdf08ca86bcdad3a0cac2579e3f (diff)
parent097e85e930ae7e7f8ffd67717ed944a38111de6c (diff)
downloadqmk_firmware-e3b68ddfe890868ac732f28ddcc1f111c69a0bfb.tar.gz
qmk_firmware-e3b68ddfe890868ac732f28ddcc1f111c69a0bfb.zip
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--CODE_OF_CONDUCT.md24
-rw-r--r--keyboards/boardsource/technik_s/technik_s.c18
-rw-r--r--keyboards/kb_elmo/qez/config.h44
-rw-r--r--keyboards/kb_elmo/qez/info.json128
-rw-r--r--keyboards/kb_elmo/qez/keymaps/default/keymap.c37
-rw-r--r--keyboards/kb_elmo/qez/keymaps/via/keymap.c43
-rw-r--r--keyboards/kb_elmo/qez/keymaps/via/rules.mk2
-rw-r--r--keyboards/kb_elmo/qez/qez.c17
-rw-r--r--keyboards/kb_elmo/qez/qez.h57
-rw-r--r--keyboards/kb_elmo/qez/readme.md24
-rw-r--r--keyboards/kb_elmo/qez/rules.mk22
-rw-r--r--keyboards/keychron/q1/config.h22
-rw-r--r--keyboards/keychron/q1/q1.c127
-rw-r--r--keyboards/keychron/q1/q1.h7
-rw-r--r--keyboards/keychron/q1/rev_0100/config.h7
-rw-r--r--keyboards/keychron/q1/rev_0100/info.json2
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c6
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c4
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q1/rev_0100/readme.md22
-rw-r--r--keyboards/keychron/q1/rev_0100/rev_0100.c143
-rw-r--r--keyboards/keychron/q1/rev_0100/rules.mk8
-rw-r--r--keyboards/keychron/q1/rev_0102/config.h31
-rw-r--r--keyboards/keychron/q1/rev_0102/info.json101
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c64
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c64
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q1/rev_0102/readme.md1
-rw-r--r--keyboards/keychron/q1/rev_0102/rev_0102.c143
-rw-r--r--keyboards/keychron/q1/rev_0102/rev_0102.h37
-rw-r--r--keyboards/keychron/q1/rev_0102/rules.mk25
-rw-r--r--keyboards/keyprez/bison/info.json64
-rw-r--r--keyboards/keyprez/rhino/info.json106
-rw-r--r--keyboards/ocean/gin_v2/info.json74
-rw-r--r--keyboards/wuque/serneity65/config.h50
-rw-r--r--keyboards/wuque/serneity65/info.json389
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c34
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_ansi/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c35
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c34
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c34
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_space/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/default/keymap.c34
-rw-r--r--keyboards/wuque/serneity65/keymaps/default/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/via/keymap.c48
-rw-r--r--keyboards/wuque/serneity65/keymaps/via/readme.md1
-rw-r--r--keyboards/wuque/serneity65/keymaps/via/rules.mk2
-rw-r--r--keyboards/wuque/serneity65/readme.md24
-rw-r--r--keyboards/wuque/serneity65/rules.mk25
-rw-r--r--keyboards/wuque/serneity65/serneity65.c71
-rw-r--r--keyboards/wuque/serneity65/serneity65.h159
-rw-r--r--secrets.tar.encbin10256 -> 0 bytes
54 files changed, 2135 insertions, 288 deletions
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index c9e3e0586a..0000000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Code Of Conduct
-
-QMK strives to be an inclusive, tolerant, and welcoming community. We encourage participation from anyone regardless of age, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, political belief, race, religion, or sexual identity and orientation.
-
-> “A gentle word turns away wrath, but a harsh word stirs up anger."
-
-Our users, contributors, and collaborators are expected to treat each other with kindness and respect, to assume good intentions, and to gently correct, where possible, rather than react with escalation. While our goal is to be as accurate as possible, kindness and understanding are more valuable than correctness. Some examples of behavior we will not tolerate include, but is not limited to:
-
-* The use of sexualized language or imagery
-* Unwelcome advances, sexual or otherwise
-* Deliberate intimidation, stalking, or following
-* Insults or derogatory comments, or personal or political attacks
-* Publishing others’ private information without explicit permission
-* Sustained disruption of talks or other events
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-* Advocating for, or encouraging, any of the above behaviour
-
-# Reporting
-
-If someone is violating this Code of Conduct, please email hello@qmk.fm or reach out to one of the Collaborators to bring it to our attention. All complaints will be reviewed and investigated.
-
-QMK will seek to use the least punitive means available to resolve an issue. If the circumstances require asking an offender to leave, we will do that.
-
-Reports will be taken and kept in strict confidence. You will not be required to confront an offender directly.
diff --git a/keyboards/boardsource/technik_s/technik_s.c b/keyboards/boardsource/technik_s/technik_s.c
index 63c77928ae..a1fe68d1a3 100644
--- a/keyboards/boardsource/technik_s/technik_s.c
+++ b/keyboards/boardsource/technik_s/technik_s.c
@@ -17,22 +17,22 @@
#include "technik_s.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
- {11,12,13,14,15,16,17,18,19,20,21,22},
- {23,24,25,26,27,28,29,30,31,32,33},
- {34,35,36,37,38,39,40,41,42,43,44,45},
- {46,47,48,49,50,51,52,53,54,55}
+ {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
+ {22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32},
+ {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44},
+ {45, 46, 47, 48, 49, 50, 51, 52, 53, 54}
}, {
- {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0},
- {10.5, 1}, {9.5, 1}, {8.5, 1}, {7.5, 1}, {6.5, 1}, {5.5, 1}, {4.5, 1}, {3.5, 1}, {2.5, 1}, {1.5, 1}, {0.5, 1},
- {11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2},
- {11, 3}, {10, 3}, {9, 3}, {8, 3}, {6.5, 3}, {5, 3}, {3.5, 3}, {2, 3}, {1, 3}, {0, 3},
+ {220, 17}, {172, 17}, {112, 17}, { 50, 17}, { 4, 17}, { 4, 56}, { 50, 56}, {112, 56}, {172, 56}, {220, 56},
+ { 0, 0}, { 20, 0}, { 40, 0}, { 61, 0}, { 81, 0}, {101, 0}, {122, 0}, {142, 0}, {162, 0}, {183, 0}, {203, 0}, {224, 0},
+ { 10, 21}, { 30, 21}, { 51, 21}, { 71, 21}, { 91, 21}, {112, 21}, {132, 21}, {152, 21}, {173, 21}, {193, 21}, {214, 21},
+ { 0, 42}, { 20, 42}, { 40, 42}, { 61, 42}, { 81, 42}, {101, 42}, {122, 42}, {142, 42}, {162, 42}, {183, 42}, {203, 42}, {224, 42},
+ { 0, 64}, { 20, 64}, { 40, 64}, { 68, 64}, { 97, 64}, {126, 64}, {154, 64}, {183, 64}, {203, 64}, {224, 64}
}, {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 1, 4, 4, 1, 1, 1, 1
-
} };
#endif
diff --git a/keyboards/kb_elmo/qez/config.h b/keyboards/kb_elmo/qez/config.h
new file mode 100644
index 0000000000..055ebe2a4b
--- /dev/null
+++ b/keyboards/kb_elmo/qez/config.h
@@ -0,0 +1,44 @@
+/*
+Copyright 2021 kb-elmo<mail@elmo.space>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xA68C
+#define PRODUCT_ID 0x675F
+#define DEVICE_VER 0x0001
+#define MANUFACTURER kb_elmo
+#define PRODUCT QEZ
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 10
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { C6, C4, B1, B0 }
+#define MATRIX_COL_PINS { C7, B7, B6, B5, B4, B3, D6, D5, D4, D3 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter */
+#define DEBOUNCE 5
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN C5
diff --git a/keyboards/kb_elmo/qez/info.json b/keyboards/kb_elmo/qez/info.json
new file mode 100644
index 0000000000..82b8d20444
--- /dev/null
+++ b/keyboards/kb_elmo/qez/info.json
@@ -0,0 +1,128 @@
+{
+ "keyboard_name": "qez",
+ "url": "",
+ "maintainer": "kb-elmo<mail@elmo.space>",
+ "width": 10.25,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_split_space": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0, "w":1.25},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2, "w":1.5},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3, "w":2.25},
+ {"x":5.25, "y":3, "w":2},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3}
+ ]
+ },
+ "LAYOUT_triple_space": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0, "w":1.25},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2, "w":1.5},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3, "w":2.5},
+ {"x":4.5, "y":3, "w":1.5},
+ {"x":6, "y":3, "w":2.25},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3}
+ ]
+ },
+ "LAYOUT_full_space": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0, "w":1.25},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2, "w":1.5},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3, "w":6.25},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kb_elmo/qez/keymaps/default/keymap.c b/keyboards/kb_elmo/qez/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d3198af01b
--- /dev/null
+++ b/keyboards/kb_elmo/qez/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_space(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ LT(1,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LT(2,KC_DOT),
+ KC_LCTL, KC_LGUI, KC_LALT, LSFT_T(KC_SPC), KC_BSPC, KC_RALT, MO(1), MO(2)
+ ),
+ [1] = LAYOUT_split_space(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, KC_ESC, KC_MINS, KC_EQL, KC_TRNS, KC_SCLN, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_split_space(
+ KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kb_elmo/qez/keymaps/via/keymap.c b/keyboards/kb_elmo/qez/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0866c99508
--- /dev/null
+++ b/keyboards/kb_elmo/qez/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_space(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ LT(1,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LT(2,KC_DOT),
+ KC_LCTL, KC_LGUI, KC_LALT, LSFT_T(KC_SPC), KC_BSPC, KC_RALT, MO(1), MO(2)
+ ),
+ [1] = LAYOUT_split_space(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, KC_ESC, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_split_space(
+ KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_split_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kb_elmo/qez/keymaps/via/rules.mk b/keyboards/kb_elmo/qez/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kb_elmo/qez/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kb_elmo/qez/qez.c b/keyboards/kb_elmo/qez/qez.c
new file mode 100644
index 0000000000..68808fad8e
--- /dev/null
+++ b/keyboards/kb_elmo/qez/qez.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qez.h"
diff --git a/keyboards/kb_elmo/qez/qez.h b/keyboards/kb_elmo/qez/qez.h
new file mode 100644
index 0000000000..1bf9cde248
--- /dev/null
+++ b/keyboards/kb_elmo/qez/qez.h
@@ -0,0 +1,57 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_split_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k21, k31, k32, k33, k36, k37, k38, k39 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { ___, k31, k32, k33, ___, ___, k36, k37, k38, k39 } \
+}
+
+#define LAYOUT_triple_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k21, k31, k33, k35, k36, k38, k39 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { ___, k31, ___, k33, ___, k35, k36, ___, k38, k39 } \
+}
+
+#define LAYOUT_full_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k21, k31, k35, k38, k39 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { ___, k31, k32, ___, ___, k35, ___, k37, k38, k39 } \
+}
diff --git a/keyboards/kb_elmo/qez/readme.md b/keyboards/kb_elmo/qez/readme.md
new file mode 100644
index 0000000000..5deb4044a1
--- /dev/null
+++ b/keyboards/kb_elmo/qez/readme.md
@@ -0,0 +1,24 @@
+# QEZ
+
+![qez](https://i.imgur.com/x00N9f3l.jpg)
+
+A seamless gasketmounted QAZ-like 40% keyboard
+
+* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo)
+* Hardware Supported: QEZ rev.1 PCB
+* Hardware Availability: [Open source project](https://github.com/kb-elmo/QEZ)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kb_elmo/qez:default
+
+Flashing example for this keyboard:
+
+ make kb_elmo/qez:default:flash
+
+See 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).
+
+## Bootloader
+
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "RESET" on the back of the PCB \ No newline at end of file
diff --git a/keyboards/kb_elmo/qez/rules.mk b/keyboards/kb_elmo/qez/rules.mk
new file mode 100644
index 0000000000..b48dcad7d2
--- /dev/null
+++ b/keyboards/kb_elmo/qez/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
index fb6a70c869..2a8665c1b4 100644
--- a/keyboards/keychron/q1/config.h
+++ b/keyboards/keychron/q1/config.h
@@ -32,15 +32,11 @@
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-/* RGB LED Matrix Configuration */
+/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1011111
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 23
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {0,1} }
@@ -49,3 +45,19 @@
/* NKRO */
#define FORCE_NKRO
+
+/* Disable a single effect */
+#define DISABLE_RGB_MATRIX_ALPHAS_MODS
+#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define DISABLE_RGB_MATRIX_BAND_SAT
+#define DISABLE_RGB_MATRIX_BAND_VAL
+#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define DISABLE_RGB_MATRIX_HUE_BREATHING
+#define DISABLE_RGB_MATRIX_HUE_PENDULUM
+#define DISABLE_RGB_MATRIX_HUE_WAVE \ No newline at end of file
diff --git a/keyboards/keychron/q1/q1.c b/keyboards/keychron/q1/q1.c
index 6beb96e7eb..a316c1fdcf 100644
--- a/keyboards/keychron/q1/q1.c
+++ b/keyboards/keychron/q1/q1.c
@@ -16,6 +16,7 @@
#include "q1.h"
+
const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
@@ -32,129 +33,3 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
-
- {0, A_1, C_1, B_1},
- {0, A_3, C_3, B_3},
- {0, A_4, C_4, B_4},
- {0, A_5, C_5, B_5},
- {0, A_6, C_6, B_6},
- {0, A_7, C_7, B_7},
- {0, A_8, C_8, B_8},
- {0, A_9, C_9, B_9},
- {0, A_10, C_10, B_10},
- {0, A_11, C_11, B_11},
- {0, A_12, C_12, B_12},
- {0, A_13, C_13, B_13},
- {0, A_14, C_14, B_14},
- {0, A_15, C_15, B_15},
- {0, A_16, C_16, B_16},
-
- {0, D_1, F_1, E_1},
- {0, D_2, F_2, E_2},
- {0, D_3, F_3, E_3},
- {0, D_4, F_4, E_4},
- {0, D_5, F_5, E_5},
- {0, D_6, F_6, E_6},
- {0, D_7, F_7, E_7},
- {0, D_8, F_8, E_8},
- {0, D_9, F_9, E_9},
- {0, D_10, F_10, E_10},
- {0, D_11, F_11, E_11},
- {0, D_12, F_12, E_12},
- {0, D_13, F_13, E_13},
- {0, D_14, F_14, E_14},
- {0, D_16, F_16, E_16},
-
- {0, G_1, I_1, H_1},
- {0, G_2, I_2, H_2},
- {0, G_3, I_3, H_3},
- {0, G_4, I_4, H_4},
- {0, G_5, I_5, H_5},
- {0, G_6, I_6, H_6},
- {0, G_7, I_7, H_7},
- {0, G_8, I_8, H_8},
- {0, G_9, I_9, H_9},
- {0, G_10, I_10, H_10},
- {0, G_11, I_11, H_11},
- {0, G_12, I_12, H_12},
- {0, G_13, I_13, H_13},
- {0, G_14, I_14, H_14},
- {0, G_16, I_16, H_16},
-
- {0, J_1, L_1, K_1},
- {0, J_2, L_2, K_2},
- {0, J_3, L_3, K_3},
- {0, J_4, L_4, K_4},
- {0, J_5, L_5, K_5},
- {0, J_6, L_6, K_6},
- {0, J_7, L_7, K_7},
- {0, J_8, L_8, K_8},
- {0, J_9, L_9, K_9},
- {0, J_10, L_10, K_10},
- {0, J_11, L_11, K_11},
- {0, J_12, L_12, K_12},
- {0, J_14, L_14, K_14},
- {0, J_16, L_16, K_16},
- {1, A_1, C_1, B_1},
-
- {1, A_3, C_3, B_3},
- {1, A_4, C_4, B_4},
- {1, A_5, C_5, B_5},
- {1, A_6, C_6, B_6},
- {1, A_7, C_7, B_7},
- {1, A_8, C_8, B_8},
- {1, A_9, C_9, B_9},
- {1, A_10, C_10, B_10},
- {1, A_11, C_11, B_11},
- {1, A_12, C_12, B_12},
- {1, A_14, C_14, B_14},
- {1, A_15, C_15, B_15},
-
- {1, D_1, F_1, E_1},
- {1, D_2, F_2, E_2},
- {1, D_3, F_3, E_3},
- {1, D_7, F_7, E_7},
- {1, D_11, F_11, E_11},
- {1, D_12, F_12, E_12},
- {1, D_13, F_13, E_13},
- {1, D_14, F_14, E_14},
- {1, D_15, F_15, E_15},
- {1, D_16, F_16, E_16}
-
-};
-
-led_config_t g_led_config = {
- {
- { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
- { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
- { 72, 73, 74, NO_LED, NO_LED, NO_LED,75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 }
- },
- {
- {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
- {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
- {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26},
- {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39},
- {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52},
- {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
- },
- {
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
-
- }
-};
diff --git a/keyboards/keychron/q1/q1.h b/keyboards/keychron/q1/q1.h
index 1e92a062ad..eb9a7d69a7 100644
--- a/keyboards/keychron/q1/q1.h
+++ b/keyboards/keychron/q1/q1.h
@@ -18,6 +18,9 @@
#include "quantum.h"
-#if defined(KEYBOARD_keychron_q1_rev_0100)
+
+#if defined(KEYBOARD_keychron_q1_rev_0100)
# include "rev_0100.h"
-#endif
+#elif defined(KEYBOARD_keychron_q1_rev_0102)
+# include "rev_0102.h"
+#endif \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/config.h b/keyboards/keychron/q1/rev_0100/config.h
index 5b910f7381..435f386a59 100644
--- a/keyboards/keychron/q1/rev_0100/config.h
+++ b/keyboards/keychron/q1/rev_0100/config.h
@@ -19,8 +19,13 @@
/* USB Device descriptor parameter */
#define PRODUCT_ID 0x0100
-#define DEVICE_VER 0x0001
+#define DEVICE_VER 0x0100
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 23
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/info.json b/keyboards/keychron/q1/rev_0100/info.json
index 4d101eac70..215c7b0508 100644
--- a/keyboards/keychron/q1/rev_0100/info.json
+++ b/keyboards/keychron/q1/rev_0100/info.json
@@ -1,7 +1,7 @@
{
"keyboard_name": "Keychron Q1",
"url": "https://github.com/Keychron",
- "maintainer": "lokher",
+ "maintainer": "lalalademaxiya1",
"width": 16.25,
"height": 6.25,
"layouts": {
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
index fa6f791759..e000dd7dd7 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
@@ -24,18 +24,16 @@ enum layers{
WIN_FN
};
-
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_HOME,
+ 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_HOME,
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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -63,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
+}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
index 4108ade04f..e000dd7dd7 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
@@ -24,11 +24,9 @@ enum layers{
WIN_FN
};
-
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
@@ -63,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
+}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
index 96d2d189b2..bee21da528 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
+++ b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/readme.md b/keyboards/keychron/q1/rev_0100/readme.md
index 0131794c18..5cf488f048 100644
--- a/keyboards/keychron/q1/rev_0100/readme.md
+++ b/keyboards/keychron/q1/rev_0100/readme.md
@@ -1,21 +1 @@
-# Keychron Q1
-
-![Keychron Q1](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/pf-823ebdc7--1073.jpg)
-
-A customizable 75% keyboard.
-
-* Keyboard Maintainer: [Keychron](https://github.com/keychron)
-* Hardware Supported: Keychron Q1, Atmega32u4
-* Hardware Availability: [Keychron](https://www.keychron.com)
-
-Make example for this keyboard (after setting up your build environment):
-
- make keychron/q1/rev_0100:default
-
-Flashing example for this keyboard:
-
- make keychron/q1/rev_0100:default:flash
-
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
-
-See 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).
+# The ANSI variant of the Keychron Q1 \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/rev_0100.c b/keyboards/keychron/q1/rev_0100/rev_0100.c
new file mode 100644
index 0000000000..abc4f2716c
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/rev_0100.c
@@ -0,0 +1,143 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+
+const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {0, I_5, G_5, H_5},
+ {0, I_6, G_6, H_6},
+ {0, I_7, G_7, H_7},
+ {0, I_8, G_8, H_8},
+ {0, I_9, G_9, H_9},
+ {0, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_14, G_14, H_14},
+ {0, I_16, G_16, H_16},
+
+ {0, L_1, J_1, K_1},
+ {0, L_2, J_2, K_2},
+ {0, L_3, J_3, K_3},
+ {0, L_4, J_4, K_4},
+ {0, L_5, J_5, K_5},
+ {0, L_6, J_6, K_6},
+ {0, L_7, J_7, K_7},
+ {0, L_8, J_8, K_8},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_14, J_14, K_14},
+ {0, L_16, J_16, K_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+ { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+ { 72, 73, 74, NO_LED, NO_LED, NO_LED, 75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 }
+ },
+ {
+ {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
+ {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
+ {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26},
+ {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39},
+ {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+
+ }
+};
diff --git a/keyboards/keychron/q1/rev_0100/rules.mk b/keyboards/keychron/q1/rev_0100/rules.mk
index a6c318ac26..9615d19b51 100644
--- a/keyboards/keychron/q1/rev_0100/rules.mk
+++ b/keyboards/keychron/q1/rev_0100/rules.mk
@@ -8,10 +8,10 @@ BOOTLOADER = atmel-dfu
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/keychron/q1/rev_0102/config.h b/keyboards/keychron/q1/rev_0102/config.h
new file mode 100644
index 0000000000..a537ab4e0d
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0102
+#define DEVICE_VER 0x0100
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 24
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/info.json b/keyboards/keychron/q1/rev_0102/info.json
new file mode 100644
index 0000000000..cac67830b4
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/info.json
@@ -0,0 +1,101 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "width": 16.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"Insert", "x":15.25, "y":0},
+
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"@", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Page Up", "x":15.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"Page Down", "x":15.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"\"", "x":11.75, "y":3.25},
+ {"label":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Home", "x":15.25, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25},
+ {"label":"Fn", "x":11, "y":5.25},
+ {"label":"Ctrl", "x":12, "y":5.25},
+ {"label":"\u2190", "x":13.25, "y":5.5},
+ {"label":"\u2193", "x":14.25, "y":5.5},
+ {"label":"\u2192", "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b4a7d64427
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_HOME,
+ 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_HOME,
+ 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b4a7d64427
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_HOME,
+ 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_HOME,
+ 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/readme.md b/keyboards/keychron/q1/rev_0102/readme.md
new file mode 100644
index 0000000000..777ce04773
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q1 \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.c b/keyboards/keychron/q1/rev_0102/rev_0102.c
new file mode 100644
index 0000000000..722284aaaf
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rev_0102.c
@@ -0,0 +1,143 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+
+const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {0, I_5, G_5, H_5},
+ {0, I_6, G_6, H_6},
+ {0, I_7, G_7, H_7},
+ {0, I_8, G_8, H_8},
+ {0, I_9, G_9, H_9},
+ {0, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_16, G_16, H_16},
+
+ {0, L_1, J_1, K_1},
+ {0, L_2, J_2, K_2},
+ {0, L_3, J_3, K_3},
+ {0, L_4, J_4, K_4},
+ {0, L_5, J_5, K_5},
+ {0, L_6, J_6, K_6},
+ {0, L_7, J_7, K_7},
+ {0, L_8, J_8, K_8},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_14, J_14, K_14},
+ {0, I_14, G_14, H_14},
+ {0, L_16, J_16, K_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
+ { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
+ { 73, 74, 75, NO_LED, NO_LED, NO_LED, 76, NO_LED, NO_LED, NO_LED, 77, 78, 79, 80, 82 }
+ },
+ {
+ {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
+ {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
+ {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {224,26},
+ {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {180,39}, {195,26}, {224,39},
+ {0,52}, {15,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {180,52}, {210,52},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+
+ }
+};
diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.h b/keyboards/keychron/q1/rev_0102/rev_0102.h
new file mode 100644
index 0000000000..a13ffa56c0
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rev_0102.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define xxx KC_NO
+
+#define LAYOUT_iso_83( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \
+) { \
+ { K00, xxx, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/keychron/q1/rev_0102/rules.mk b/keyboards/keychron/q1/rev_0102/rules.mk
new file mode 100644
index 0000000000..9b17251584
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3733 \ No newline at end of file
diff --git a/keyboards/keyprez/bison/info.json b/keyboards/keyprez/bison/info.json
index 58de9b1ae8..2d1670be5e 100644
--- a/keyboards/keyprez/bison/info.json
+++ b/keyboards/keyprez/bison/info.json
@@ -77,14 +77,14 @@
{"label": "Home", "x": 16, "y": 3},
{"label": "End", "x": 17, "y": 3},
- {"label": "OS", "x": 1.75, "y": 4},
- {"label": "Alt", "x": 2.75, "y": 4},
- {"label": "Lower", "x": 3.75, "y": 4},
- {"label": "BS", "x": 4.75, "y": 4, "w": 1.5},
- {"label": "", "x": 7.75, "y": 4, "w": 1.5},
- {"label": "Raise", "x": 9.25, "y": 4},
- {"label": "Alt", "x": 10.25, "y": 4},
- {"label": "OS", "x": 11.25, "y": 4}
+ {"label": "OS", "x": 3.75, "y": 4},
+ {"label": "Alt", "x": 4.75, "y": 4},
+ {"label": "Lower", "x": 5.75, "y": 4},
+ {"label": "BS", "x": 6.75, "y": 4, "w": 1.5},
+ {"label": "", "x": 9.75, "y": 4, "w": 1.5},
+ {"label": "Raise", "x": 11.25, "y": 4},
+ {"label": "Alt", "x": 12.25, "y": 4},
+ {"label": "OS", "x": 13.25, "y": 4}
]
},
@@ -152,14 +152,14 @@
{"label": "Home", "x": 16, "y": 3},
{"label": "End", "x": 17, "y": 3},
- {"label": "OS", "x": 1.75, "y": 4},
- {"label": "Alt", "x": 2.75, "y": 4},
- {"label": "Lower", "x": 3.75, "y": 4},
- {"label": "BS", "x": 4.75, "y": 4, "w": 1.5},
- {"label": "", "x": 7.75, "y": 4, "w": 1.5},
- {"label": "Raise", "x": 9.25, "y": 4},
- {"label": "Alt", "x": 10.25, "y": 4},
- {"label": "OS", "x": 11.25, "y": 4}
+ {"label": "OS", "x": 3.75, "y": 4},
+ {"label": "Alt", "x": 4.75, "y": 4},
+ {"label": "Lower", "x": 5.75, "y": 4},
+ {"label": "BS", "x": 6.75, "y": 4, "w": 1.5},
+ {"label": "", "x": 9.75, "y": 4, "w": 1.5},
+ {"label": "Raise", "x": 11.25, "y": 4},
+ {"label": "Alt", "x": 12.25, "y": 4},
+ {"label": "OS", "x": 13.25, "y": 4}
]
},
@@ -227,14 +227,14 @@
{"label": "/", "x": 14, "y": 3},
{"label": "Enter", "x": 15, "y": 3},
- {"label": "OS", "x": 1.75, "y": 4},
- {"label": "Alt", "x": 2.75, "y": 4},
- {"label": "Lower", "x": 3.75, "y": 4},
- {"label": "BS", "x": 4.75, "y": 4, "w": 1.5},
- {"label": "", "x": 7.75, "y": 4, "w": 1.5},
- {"label": "Raise", "x": 9.25, "y": 4},
- {"label": "Alt", "x": 10.25, "y": 4},
- {"label": "FN", "x": 11.25, "y": 4}
+ {"label": "OS", "x": 3.75, "y": 4},
+ {"label": "Alt", "x": 4.75, "y": 4},
+ {"label": "Lower", "x": 5.75, "y": 4},
+ {"label": "BS", "x": 6.75, "y": 4, "w": 1.5},
+ {"label": "", "x": 9.75, "y": 4, "w": 1.5},
+ {"label": "Raise", "x": 11.25, "y": 4},
+ {"label": "Alt", "x": 12.25, "y": 4},
+ {"label": "FN", "x": 13.25, "y": 4}
]
},
@@ -294,14 +294,14 @@
{"label": "/", "x": 14, "y": 3},
{"label": "Enter", "x": 15, "y": 3},
- {"label": "OS", "x": 1.75, "y": 4},
- {"label": "Alt", "x": 2.75, "y": 4},
- {"label": "Lower", "x": 3.75, "y": 4},
- {"label": "BS", "x": 4.75, "y": 4, "w": 1.5},
- {"label": "", "x": 7.75, "y": 4, "w": 1.5},
- {"label": "Raise", "x": 9.25, "y": 4},
- {"label": "Alt", "x": 10.25, "y": 4},
- {"label": "FN", "x": 11.25, "y": 4}
+ {"label": "OS", "x": 3.75, "y": 4},
+ {"label": "Alt", "x": 4.75, "y": 4},
+ {"label": "Lower", "x": 5.75, "y": 4},
+ {"label": "BS", "x": 6.75, "y": 4, "w": 1.5},
+ {"label": "", "x": 9.75, "y": 4, "w": 1.5},
+ {"label": "Raise", "x": 11.25, "y": 4},
+ {"label": "Alt", "x": 12.25, "y": 4},
+ {"label": "FN", "x": 13.25, "y": 4}
]
}
}
diff --git a/keyboards/keyprez/rhino/info.json b/keyboards/keyprez/rhino/info.json
index 5bf37e06b6..84c720ef2d 100644
--- a/keyboards/keyprez/rhino/info.json
+++ b/keyboards/keyprez/rhino/info.json
@@ -2,25 +2,12 @@
"keyboard_name": "rhino",
"url": "",
"maintainer": "Christian Sandven",
- "width": 14,
- "height": 4,
+ "width": 15,
+ "height": 5,
"layouts": {
"LAYOUT_ortho_2x2u": {
"layout": [
- {"x": 0, "y": 0, "w": 1.5},
- {"x": 1.5, "y": 0},
- {"x": 2.5, "y": 0},
- {"x": 3.5, "y": 0},
- {"x": 4.5, "y": 0},
- {"x": 5.5, "y": 0},
- {"x": 6.5, "y": 0},
- {"x": 7.5, "y": 0},
- {"x": 8.5, "y": 0},
- {"x": 9.5, "y": 0},
- {"x": 10.5, "y": 0},
- {"x": 11.5, "y": 0},
{"x": 12.5, "y": 0},
- {"x": 13.5, "y": 0, "w": 1.5},
{"x": 0, "y": 1, "w": 1.5},
{"x": 1.5, "y": 1},
@@ -52,6 +39,21 @@
{"x": 12.5, "y": 2},
{"x": 13.5, "y": 2, "w": 1.5},
+ {"x": 0, "y": 3, "w": 1.5},
+ {"x": 1.5, "y": 3},
+ {"x": 2.5, "y": 3},
+ {"x": 3.5, "y": 3},
+ {"x": 4.5, "y": 3},
+ {"x": 5.5, "y": 3},
+ {"x": 6.5, "y": 3},
+ {"x": 7.5, "y": 3},
+ {"x": 8.5, "y": 3},
+ {"x": 9.5, "y": 3},
+ {"x": 10.5, "y": 3},
+ {"x": 11.5, "y": 3},
+ {"x": 12.5, "y": 3},
+ {"x": 13.5, "y": 3, "w": 1.5},
+
{"x": 1.5, "y": 4},
{"x": 2.5, "y": 4},
{"x": 3.5, "y": 4},
@@ -67,20 +69,7 @@
"LAYOUT_ergo_2x2u": {
"layout": [
- {"x": 0, "y": 0, "w": 1.5},
- {"x": 1.5, "y": 0},
- {"x": 2.5, "y": 0},
- {"x": 3.5, "y": 0},
- {"x": 4.5, "y": 0},
- {"x": 5.5, "y": 0},
- {"x": 6.5, "y": 0, "h": 1.5},
- {"x": 7.5, "y": 0, "h": 1.5},
- {"x": 8.5, "y": 0},
- {"x": 9.5, "y": 0},
- {"x": 10.5, "y": 0},
- {"x": 11.5, "y": 0},
{"x": 12.5, "y": 0},
- {"x": 13.5, "y": 0, "w": 1.5},
{"x": 0, "y": 1, "w": 1.5},
{"x": 1.5, "y": 1},
@@ -88,8 +77,8 @@
{"x": 3.5, "y": 1},
{"x": 4.5, "y": 1},
{"x": 5.5, "y": 1},
- {"x": 6.5, "y": 1.5, "h": 1.5},
- {"x": 7.5, "y": 1.5, "h": 1.5},
+ {"x": 6.5, "y": 1, "h": 1.5},
+ {"x": 7.5, "y": 1, "h": 1.5},
{"x": 8.5, "y": 1},
{"x": 9.5, "y": 1},
{"x": 10.5, "y": 1},
@@ -103,6 +92,8 @@
{"x": 3.5, "y": 2},
{"x": 4.5, "y": 2},
{"x": 5.5, "y": 2},
+ {"x": 6.5, "y": 2.5, "h": 1.5},
+ {"x": 7.5, "y": 2.5, "h": 1.5},
{"x": 8.5, "y": 2},
{"x": 9.5, "y": 2},
{"x": 10.5, "y": 2},
@@ -110,6 +101,19 @@
{"x": 12.5, "y": 2},
{"x": 13.5, "y": 2, "w": 1.5},
+ {"x": 0, "y": 3, "w": 1.5},
+ {"x": 1.5, "y": 3},
+ {"x": 2.5, "y": 3},
+ {"x": 3.5, "y": 3},
+ {"x": 4.5, "y": 3},
+ {"x": 5.5, "y": 3},
+ {"x": 8.5, "y": 3},
+ {"x": 9.5, "y": 3},
+ {"x": 10.5, "y": 3},
+ {"x": 11.5, "y": 3},
+ {"x": 12.5, "y": 3},
+ {"x": 13.5, "y": 3, "w": 1.5},
+
{"x": 1.5, "y": 4},
{"x": 2.5, "y": 4},
{"x": 3.5, "y": 4},
@@ -125,20 +129,7 @@
"LAYOUT_ortho_7u": {
"layout": [
- {"x": 0, "y": 0, "w": 1.5},
- {"x": 1.5, "y": 0},
- {"x": 2.5, "y": 0},
- {"x": 3.5, "y": 0},
- {"x": 4.5, "y": 0},
- {"x": 5.5, "y": 0},
- {"x": 6.5, "y": 0, "h": 1.5},
- {"x": 7.5, "y": 0, "h": 1.5},
- {"x": 8.5, "y": 0},
- {"x": 9.5, "y": 0},
- {"x": 10.5, "y": 0},
- {"x": 11.5, "y": 0},
{"x": 12.5, "y": 0},
- {"x": 13.5, "y": 0, "w": 1.5},
{"x": 0, "y": 1, "w": 1.5},
{"x": 1.5, "y": 1},
@@ -146,14 +137,14 @@
{"x": 3.5, "y": 1},
{"x": 4.5, "y": 1},
{"x": 5.5, "y": 1},
- {"x": 6.5, "y": 1.5, "h": 1.5},
- {"x": 7.5, "y": 1.5, "h": 1.5},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
{"x": 8.5, "y": 1},
{"x": 9.5, "y": 1},
{"x": 10.5, "y": 1},
{"x": 11.5, "y": 1},
- {"x": 12.5, "y": 1, "w": 1.5},
- {"x": 14, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
{"x": 0, "y": 2, "w": 1.5},
{"x": 1.5, "y": 2},
@@ -161,13 +152,30 @@
{"x": 3.5, "y": 2},
{"x": 4.5, "y": 2},
{"x": 5.5, "y": 2},
+ {"x": 6.5, "y": 2},
+ {"x": 7.5, "y": 2},
{"x": 8.5, "y": 2},
{"x": 9.5, "y": 2},
{"x": 10.5, "y": 2},
- {"x": 11.5, "y": 2, "w": 1.5},
- {"x": 13, "y": 2},
+ {"x": 11.5, "y": 2},
+ {"x": 12.5, "y": 2, "w": 1.5},
{"x": 14, "y": 2},
+ {"x": 0, "y": 3, "w": 1.5},
+ {"x": 1.5, "y": 3},
+ {"x": 2.5, "y": 3},
+ {"x": 3.5, "y": 3},
+ {"x": 4.5, "y": 3},
+ {"x": 5.5, "y": 3},
+ {"x": 6.5, "y": 3},
+ {"x": 7.5, "y": 3},
+ {"x": 8.5, "y": 3},
+ {"x": 9.5, "y": 3},
+ {"x": 10.5, "y": 3},
+ {"x": 11.5, "y": 3, "w": 1.5},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+
{"x": 1.5, "y": 4},
{"x": 2.5, "y": 4, "w": 1.5},
{"x": 4, "y": 4, "w": 7},
diff --git a/keyboards/ocean/gin_v2/info.json b/keyboards/ocean/gin_v2/info.json
index f907061a53..8e435dc0e9 100644
--- a/keyboards/ocean/gin_v2/info.json
+++ b/keyboards/ocean/gin_v2/info.json
@@ -1,12 +1,74 @@
{
- "keyboard_name": "Gin V2",
- "url": " ",
- "maintainer": "Ocean",
- "width": 16.25,
- "height": 4,
+ "keyboard_name": "Gin V2",
+ "url": "",
+ "maintainer": "Ocean",
+ "width": 16.25,
+ "height": 4,
"layouts": {
"LAYOUT": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3.25, "y":1, "w":1.25}, {"x":4.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1}, {"x":14.5, "y":1, "w":1.75}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3.25, "y":2, "w":1.75}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":1.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3.25, "y":3, "w":1.5}, {"x":4.75, "y":3}, {"x":5.75, "y":3, "w":1.5}, {"x":7.25, "y":3, "w":2.25}, {"x":9.5, "y":3, "w":2.75}, {"x":12.25, "y":3, "w":1.5}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.5}]
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3.25, "y": 0},
+ {"x": 4.25, "y": 0},
+ {"x": 5.25, "y": 0},
+ {"x": 6.25, "y": 0},
+ {"x": 7.25, "y": 0},
+ {"x": 8.25, "y": 0},
+ {"x": 9.25, "y": 0},
+ {"x": 10.25, "y": 0},
+ {"x": 11.25, "y": 0},
+ {"x": 12.25, "y": 0},
+ {"x": 13.25, "y": 0},
+ {"x": 14.25, "y": 0},
+ {"x": 15.25, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3.25, "y": 1, "w": 1.25},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1},
+ {"x": 14.5, "y": 1, "w": 1.75},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3.25, "y": 2, "w": 1.75},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+ {"x": 7, "y": 2},
+ {"x": 8, "y": 2},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2, "w": 1.25},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3.25, "y": 3, "w": 1.25},
+ {"x": 4.5, "y": 3, "w": 1.25},
+ {"x": 5.75, "y": 3, "w": 1.25},
+ {"x": 7, "y": 3, "w": 2.25},
+ {"x": 9.25, "y": 3, "w": 2.75},
+ {"x": 12, "y": 3, "w": 1.25},
+ {"x": 13.25, "y": 3},
+ {"x": 14.25, "y": 3},
+ {"x": 15.25, "y": 3}
+ ]
}
}
} \ No newline at end of file
diff --git a/keyboards/wuque/serneity65/config.h b/keyboards/wuque/serneity65/config.h
new file mode 100644
index 0000000000..e13aa89504
--- /dev/null
+++ b/keyboards/wuque/serneity65/config.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x906B
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER wuque
+#define PRODUCT serneity65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { B0, F0, B1, D2, D3 }
+#define MATRIX_COL_PINS { B6, B5, D5, D4, D6, B4, D7, F1, F4, F5, F6, F7, C7, E6, B7 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Enable encoder */
+#define ENCODERS_PAD_A { B2 }
+#define ENCODERS_PAD_B { B3 }
+
+#define ENCODERS 1
+// Note: array is { col, row )
+#define ENCODERS_CW_KEY { { 3, 4 } }
+#define ENCODERS_CCW_KEY { { 5, 4 } }
+
+#define LED_CAPS_LOCK_PIN C6
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/wuque/serneity65/info.json b/keyboards/wuque/serneity65/info.json
new file mode 100644
index 0000000000..546c290aa5
--- /dev/null
+++ b/keyboards/wuque/serneity65/info.json
@@ -0,0 +1,389 @@
+{
+ "keyboard_name": "serneity65",
+ "url": "https://wuque.com/",
+ "maintainer": "qmk",
+ "width": 15.5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "Encode", "x": 15.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "Lrotate", "x": 15, "y": 0, "w": 0.5 },
+ { "label": "Rrotate", "x": 16.5, "y": 0, "w": 0.5 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_split_bs": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "Encode", "x": 15.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_split_lshift": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_split_space": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c
new file mode 100644
index 0000000000..3d2393e145
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi(
+ 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_MUTE,
+ 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_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,
+ 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md b/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md
new file mode 100644
index 0000000000..42b2423f59
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md
@@ -0,0 +1 @@
+# The 65_ansi keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c
new file mode 100644
index 0000000000..e204574319
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_split_bs(
+ 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_MUTE,
+ 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_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_BSPC, KC_PGUP,
+ 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md
new file mode 100644
index 0000000000..121b758110
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md
@@ -0,0 +1 @@
+# The 65_split_bs keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c
new file mode 100644
index 0000000000..ef99b56fce
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_split_lshift(
+ 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_MUTE,
+ 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_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,
+ KC_LSFT, 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_split_lshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md
new file mode 100644
index 0000000000..f5895d138b
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md
@@ -0,0 +1 @@
+# The 65_split_lshift keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c
new file mode 100644
index 0000000000..fbbfd244c0
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_split_space(
+ 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_MUTE,
+ 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_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,
+ 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_split_space(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md
new file mode 100644
index 0000000000..2f76503194
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md
@@ -0,0 +1 @@
+# The 65_split_space keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/default/keymap.c b/keyboards/wuque/serneity65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0869191942
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ 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_MUTE,
+ 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_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_BSPC, KC_PGUP,
+ KC_LSFT, 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLD, KC_SPC, KC_VOLU, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, KC_MPRV, _______, KC_MNXT, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/serneity65/keymaps/default/readme.md b/keyboards/wuque/serneity65/keymaps/default/readme.md
new file mode 100644
index 0000000000..83e06cf6e8
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/via/keymap.c b/keyboards/wuque/serneity65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..235629f5fd
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ 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_MUTE,
+ 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_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_BSPC, KC_PGUP,
+ KC_LSFT, 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLD, KC_SPC, KC_VOLU, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, KC_MPRV, _______, KC_MNXT, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/serneity65/keymaps/via/readme.md b/keyboards/wuque/serneity65/keymaps/via/readme.md
new file mode 100644
index 0000000000..87ee7a006b
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for serneity65
diff --git a/keyboards/wuque/serneity65/keymaps/via/rules.mk b/keyboards/wuque/serneity65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/wuque/serneity65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wuque/serneity65/readme.md b/keyboards/wuque/serneity65/readme.md
new file mode 100644
index 0000000000..11d18bacbb
--- /dev/null
+++ b/keyboards/wuque/serneity65/readme.md
@@ -0,0 +1,24 @@
+# serneity65
+
+More Info at [serneity65](https://shop.wuquestudio.com/)
+​
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: zoom65 Standard
+* Hardware Availability: [serneity65](https://shop.wuquestudio.com/)
+​
+Make example for this keyboard (after setting up your build environment):
+
+
+ make wuque/serneity65:default
+
+Flashing example for this keyboard:
+
+ make wuque/serneity65:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + End
+* Hold the Esc key while connecting the USB cable (also erases persistent settings)
+
+See 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/wuque/serneity65/rules.mk b/keyboards/wuque/serneity65/rules.mk
new file mode 100644
index 0000000000..e32f7215df
--- /dev/null
+++ b/keyboards/wuque/serneity65/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+
+LAYOUT = 65_ansi
diff --git a/keyboards/wuque/serneity65/serneity65.c b/keyboards/wuque/serneity65/serneity65.c
new file mode 100644
index 0000000000..6a7c64157f
--- /dev/null
+++ b/keyboards/wuque/serneity65/serneity65.c
@@ -0,0 +1,71 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "serneity65.h"
+
+#ifdef VIA_ENABLE
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+
+void encoder_action_unregister(void)
+{
+ for (int index = 0; index < ENCODERS; ++index)
+ {
+ if (encoder_state[index])
+ {
+ keyevent_t encoder_event = (keyevent_t){
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+void encoder_action_register(uint8_t index, bool clockwise)
+{
+ keyevent_t encoder_event = (keyevent_t){
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_kb(void)
+{
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise)
+{
+ encoder_action_register(index, clockwise);
+ return true;
+};
+#else
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/wuque/serneity65/serneity65.h b/keyboards/wuque/serneity65/serneity65.h
new file mode 100644
index 0000000000..ee7dabd8f8
--- /dev/null
+++ b/keyboards/wuque/serneity65/serneity65.h
@@ -0,0 +1,159 @@
+/* Copyright 2021 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+
+/* Standard Arrangement
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_split_bs
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_split_lshift
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_split_lshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_split_space
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
diff --git a/secrets.tar.enc b/secrets.tar.enc
deleted file mode 100644
index 6c613fed98..0000000000
--- a/secrets.tar.enc
+++ /dev/null
Binary files differ