summaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorJoshua Diamond <josh@windowoffire.com>2022-09-12 18:57:58 -0400
committerJoshua Diamond <josh@windowoffire.com>2022-09-12 18:57:58 -0400
commit23e12497b254a697b29bc08407680d444e8f5bd2 (patch)
treeca6f3ac40db19b483d535e1e7d0a1e1bed283097 /keyboards
parent7c49b8caa989b34886847689d992827eeaa9c895 (diff)
parentb2ad047d7f09be14667927d058b36737d8248994 (diff)
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/boardsource/microdox/config.h77
-rw-r--r--keyboards/boardsource/microdox/v1/config.h16
-rw-r--r--keyboards/boardsource/microdox/v1/info.json4
-rw-r--r--keyboards/boardsource/microdox/v2/config.h1
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/ansi.c236
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/ansi.h47
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/info.json90
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c44
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c51
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p65/config.h117
-rw-r--r--keyboards/gmmk/gmmk2/p65/halconf.h29
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/info.json91
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/iso.c238
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/iso.h47
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c44
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c50
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p65/mcuconf.h27
-rw-r--r--keyboards/gmmk/gmmk2/p65/p65.c17
-rw-r--r--keyboards/gmmk/gmmk2/p65/p65.h25
-rw-r--r--keyboards/idobao/id80/v3/ansi/info.json2
-rw-r--r--keyboards/linworks/em8/config.h8
-rw-r--r--keyboards/linworks/em8/info.json190
-rw-r--r--keyboards/linworks/em8/keymaps/default/keymap.c52
-rw-r--r--keyboards/linworks/em8/keymaps/via/keymap.c52
-rw-r--r--keyboards/linworks/em8/keymaps/via/rules.mk1
-rw-r--r--keyboards/linworks/em8/readme.md22
-rw-r--r--keyboards/linworks/em8/rules.mk1
-rw-r--r--keyboards/unicomp/classic_ultracl_post_2013/info.json2
-rw-r--r--keyboards/unicomp/classic_ultracl_pre_2013/info.json2
37 files changed, 1579 insertions, 98 deletions
diff --git a/keyboards/boardsource/microdox/config.h b/keyboards/boardsource/microdox/config.h
deleted file mode 100644
index aaab2bf0f6..0000000000
--- a/keyboards/boardsource/microdox/config.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-Copyright 2020 Cole Smith <cole@boadsource.xyz>
-
-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"
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 5
-#define MATRIX_ROW_PINS \
- { B2, B6, B4, B5 }
-
-// wiring of each half
-#define MATRIX_COL_PINS \
- { F4, F5, F6, F7, B1 }
-
-#define SOFT_SERIAL_PIN D2
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION COL2ROW
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-//#define LOCKING_RESYNC_ENABLE
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D3
-#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 12 // Number of LEDs
-# define RGBLED_SPLIT \
- { 6, 6 }
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-
-#endif
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
diff --git a/keyboards/boardsource/microdox/v1/config.h b/keyboards/boardsource/microdox/v1/config.h
index 111033dd67..01b894afd6 100644
--- a/keyboards/boardsource/microdox/v1/config.h
+++ b/keyboards/boardsource/microdox/v1/config.h
@@ -3,18 +3,4 @@
#pragma once
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
+// Just here to please quantum/split_common/split_util.c
diff --git a/keyboards/boardsource/microdox/v1/info.json b/keyboards/boardsource/microdox/v1/info.json
index a79153a73c..85f2e61457 100644
--- a/keyboards/boardsource/microdox/v1/info.json
+++ b/keyboards/boardsource/microdox/v1/info.json
@@ -2,7 +2,7 @@
"features": {
"rgblight": true
},
- "matrix_pins": {
+ "matrix_pins": {
"cols": ["F4", "F5", "F6", "F7", "B1"],
"rows": ["B2", "B6", "B4", "B5"]
},
@@ -12,7 +12,7 @@
"split": {
"soft_serial_pin": "D2"
},
- "rgblight": {
+ "rgblight": {
"pin": "D3",
"sleep": true,
"led_count": 12,
diff --git a/keyboards/boardsource/microdox/v2/config.h b/keyboards/boardsource/microdox/v2/config.h
index b2e6ba9335..e6a7ddc16b 100644
--- a/keyboards/boardsource/microdox/v2/config.h
+++ b/keyboards/boardsource/microdox/v2/config.h
@@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-#undef RGB_DI_PIN
#define RGB_DI_PIN B5
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
#define DRIVER_LED_TOTAL 44
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
new file mode 100644
index 0000000000..437b50648e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
@@ -0,0 +1,236 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 "ansi.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 0 Esc
+ {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 2 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 3 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 4 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 5 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 6 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 7 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 8 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10 }, // 9 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11 }, // 10 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12 }, // 11 -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5 }, // 12 =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7 }, // 13 Backspace
+ {1, CS4_SW4, CS5_SW4, CS6_SW4 }, // 14 Del
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 15 Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 16 Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 17 W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 18 E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 19 R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6 }, // 20 T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 21 Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 22 U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 23 I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10 }, // 24 O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11 }, // 25 P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12 }, // 26 [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8 }, // 27 ]
+ {1, CS1_SW9, CS2_SW9, CS3_SW9 }, // 28 \|
+ {1, CS4_SW7, CS5_SW7, CS6_SW7 }, // 29 PgUp
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 30 Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 31 A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 32 S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 33 D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 34 F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 35 G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 36 H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8 }, // 37 J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9 }, // 38 K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 39 L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 40 ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 41 '
+ {1, CS1_SW11, CS2_SW11, CS3_SW11 }, // 42 Enter
+ {1, CS4_SW5, CS5_SW5, CS6_SW5 }, // 43 PgDn
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1 }, // 44 Shift_L
+ {0, CS13_SW3, CS14_SW3, CS15_SW3 }, // 45 Z
+ {0, CS13_SW4, CS14_SW4, CS15_SW4 }, // 46 X
+ {0, CS13_SW5, CS14_SW5, CS15_SW5 }, // 47 C
+ {0, CS13_SW6, CS14_SW6, CS15_SW6 }, // 48 V
+ {0, CS13_SW7, CS14_SW7, CS15_SW7 }, // 49 B
+ {0, CS13_SW8, CS14_SW8, CS15_SW8 }, // 50 N
+ {0, CS13_SW9, CS14_SW9, CS15_SW9 }, // 51 M
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 52 ,
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 53 .
+ {0, CS13_SW12, CS14_SW12, CS15_SW12}, // 54 /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8 }, // 55 Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9 }, // 56 Up
+ {1, CS4_SW6, CS5_SW6, CS6_SW6 }, // 57 END
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1 }, // 58 Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2 }, // 59 Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3 }, // 60 Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6 }, // 61 Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9 }, // 62 Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 63 FN
+ {1, CS4_SW10, CS5_SW10, CS6_SW10 }, // 64 Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11 }, // 65 Down
+ {1, CS4_SW12, CS5_SW12, CS6_SW12 }, // 66 Right
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1 }, // 69 LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2 }, // 70 LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3 }, // 71 LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4 }, // 72 LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5 }, // 73 LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6 }, // 74 LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7 }, // 75 LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8 }, // 76 LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9 }, // 77 LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 78 LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1 }, // 79 LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2 }, // 80 LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3 }, // 81 LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4 }, // 82 LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5 }, // 83 LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6 }, // 84 LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7 }, // 85 LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8 }, // 86 LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9 }, // 87 LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 88 LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 44, 57, __, 64, __, 66, 58, 55},
+ { 16, 15, 31, 0, 45, 59, __, 1},
+ { 17, 30, 32, 60, 46, 14, 29, 2},
+ { 18, 61, 33, 63, 47, 56, 62, 3},
+ { 19, 20, 34, 35, 48, 49, 5, 4},
+ { 22, 21, 37, 36, 51, 50, 6, 7},
+ { 23, 27, 38, __, 52, 43, 12, 8},
+ { 24, 13, 39, 65, 53, __, 28, 9},
+ { 25, 26, 40, 41, 42, 54, 11, 10}
+}, {
+ {14, 0 }, // 0 Esc
+ {28, 0 }, // 1 1
+ {42, 0 }, // 2 2
+ {56, 0 }, // 3 3
+ {70, 0 }, // 4 4
+ {84, 0 }, // 5 5
+ {98, 0 }, // 6 6
+ {112, 0 }, // 7 7
+ {126, 0 }, // 8 8
+ {140, 0 }, // 9 9
+ {154, 0 }, // 10 0
+ {168, 0 }, // 11 -
+ {182, 0 }, // 12 =
+ {196, 0 }, // 13 Backspace
+ {210, 0 }, // 14 Del
+
+ {14, 16}, // 15 Tab
+ {28, 16}, // 16 Q
+ {42, 16}, // 17 W
+ {56, 16}, // 18 E
+ {70, 16}, // 19 R
+ {84, 16}, // 20 T
+ {98, 16}, // 21 Y
+ {112, 16}, // 22 U
+ {126, 16}, // 23 I
+ {140, 16}, // 24 O
+ {154, 16}, // 25 P
+ {168, 16}, // 26 [
+ {182, 16}, // 27 ]
+ {196, 16}, // 28 \|
+ {210, 16}, // 29 PgUp
+
+ {14, 32}, // 30 Caps Lock
+ {28, 32}, // 31 A
+ {42, 32}, // 32 S
+ {56, 32}, // 33 D
+ {70, 32}, // 34 F
+ {84, 32}, // 35 G
+ {98, 32}, // 36 H
+ {112, 32}, // 37 J
+ {126, 32}, // 38 K
+ {140, 32}, // 39 L
+ {154, 32}, // 40 ;
+ {168, 32}, // 41 '
+ {196, 32}, // 42 Enter
+ {210, 32}, // 43 PgDn
+
+ {14, 48}, // 44 Shift_L
+ {42, 48}, // 45 Z
+ {56, 48}, // 46 X
+ {70, 48}, // 47 C
+ {84, 48}, // 48 V
+ {98, 48}, // 49 B
+ {112, 48}, // 50 N
+ {126, 48}, // 51 M
+ {140, 48}, // 52 ,
+ {154, 48}, // 53 .
+ {168, 48}, // 54 /
+ {182, 48}, // 55 Shift_R
+ {196, 48}, // 56 Up
+ {210, 48}, // 57 END
+
+ {14, 64}, // 58 Ctrl_L
+ {28, 64}, // 59 Win_L
+ {42, 64}, // 60 Alt_L
+ {84, 64}, // 61 Space
+ {126, 64}, // 62 Alt_R
+ {140, 64}, // 63 FN
+ {182, 64}, // 64 Left
+ {196, 64}, // 65 Down
+ {210, 64}, // 66 Right
+
+ {0, 0}, // 69 LED 1
+ {0, 7}, // 70 LED 2
+ {0, 14}, // 71 LED 3
+ {0, 21}, // 72 LED 4
+ {0, 28}, // 73 LED 5
+ {0, 35}, // 74 LED 6
+ {0, 42}, // 75 LED 7
+ {0, 49}, // 76 LED 8
+ {0, 56}, // 77 LED 9
+ {0, 64}, // 78 LED 10
+ {224, 0 }, // 79 LED 11
+ {224, 7 }, // 80 LED 12
+ {224, 14}, // 81 LED 13
+ {224, 21}, // 82 LED 14
+ {224, 28}, // 83 LED 15
+ {224, 35}, // 84 LED 16
+ {224, 42}, // 85 LED 17
+ {224, 49}, // 86 LED 18
+ {224, 56}, // 87 LED 19
+ {224, 64}, // 88 LED 20
+}, {
+ 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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.h b/keyboards/gmmk/gmmk2/p65/ansi/ansi.h
new file mode 100644
index 0000000000..2c25a72bef
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 ___ KC_NO
+
+// ESC 1 2 3 4 5 6 7 8 9 0 - = BS Del
+// Tab Q W E R T Y U I O P [ ] \ PgUp
+// Caps A S D F G H J K L ; ' Enter PgDn
+// Sh_L Z X C V B N M , . / Sh_R Up END
+// Ct_L Win_L Alt_L SPACE Alt_R FN Left Down Right
+
+// clang-format off
+#define LAYOUT( \
+ k13, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, k71, k25,\
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k76, k26,\
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, k65,\
+ k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k07, k35, k01,\
+ k06, k15, k23, k31, k36, k33, k03, k73, k05 \
+)\
+{\
+ { k00, k01, ___, k03, ___, k05, k06, k07},\
+ { k10, k11, k12, k13, k14, k15, ___, k17},\
+ { k20, k21, k22, k23, k24, k25, k26, k27},\
+ { k30, k31, k32, k33, k34, k35, k36, k37},\
+ { k40, k41, k42, k43, k44, k45, k46, k47},\
+ { k50, k51, k52, k53, k54, k55, k56, k57},\
+ { k60, k61, k62, ___, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, ___, k76, k77},\
+ { k80, k81, k82, k83, k84, k85, k86, k87} \
+}
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/info.json b/keyboards/gmmk/gmmk2/p65/ansi/info.json
new file mode 100644
index 0000000000..8aedd894ae
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/info.json
@@ -0,0 +1,90 @@
+{
+ "keyboard_name": "GMMK V2 65 ANSI",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5045",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "`", "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.25},
+ { "label": "PgUp", "x": 15.25, "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.75},
+ { "label": "PgDn", "x": 15.25, "y": 1 },
+
+ { "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": "HOME", "x": 15.25, "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": "Up", "x": 14.25, "y": 3 },
+ { "label": "END", "x": 15.25, "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": "Space", "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": "Left", "x": 13.25, "y": 4 },
+ { "label": "Down", "x": 14.25, "y": 4 },
+ { "label": "Right", "x": 15.25, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e331d60c4e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ 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_PGUP,
+ 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_PGDN,
+ 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),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ 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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md
new file mode 100644
index 0000000000..4f80a5b956
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ANSI GMMKV2 65% Layout
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..365c7578cc
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ 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_PGUP,
+ 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_PGDN,
+ 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),
+
+ /* Keymap _FL: Function Layer
+ */
+[1] = LAYOUT(
+ 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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD),
+
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+[3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/readme.md b/keyboards/gmmk/gmmk2/p65/ansi/readme.md
new file mode 100644
index 0000000000..b231b48883
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 65% (ANSI)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p65/ansi:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p65/ansi:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap
+
+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/gmmk/gmmk2/p65/ansi/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk
new file mode 100644
index 0000000000..1cf9d7a709
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite.
+MOUSEKEY_ENABLE = yes # Mouse keys.
+EXTRAKEY_ENABLE = yes # Audio control and System control.
+CONSOLE_ENABLE = no # Console for debug.
+COMMAND_ENABLE = no # Commands for debug and configuration.
+NKRO_ENABLE = yes # Enable NKRO Rollover.
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality.
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow.
+AUDIO_ENABLE = no # Audio output.
+RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
diff --git a/keyboards/gmmk/gmmk2/p65/config.h b/keyboards/gmmk/gmmk2/p65/config.h
new file mode 100644
index 0000000000..6a6c22c6f0
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/config.h
@@ -0,0 +1,117 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS \
+ { B0, B1, B2, B3, B4, B5, B6, B7, B8 }
+#define MATRIX_COL_PINS \
+ { A0, A1, A2, A3, A4, A8, A9, A10 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Hold ESC on start up to clear EEPROM and boot into bootloader mode */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 3
+
+#define TAP_CODE_DELAY 10
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* SPI Config for LED Driver */
+#define SPI_DRIVER SPIDM2
+#define SPI_SCK_PIN B13
+#define SPI_MOSI_PIN B15
+#define SPI_MISO_PIN B14
+
+#define DRIVER_1_CS A15
+#define DRIVER_2_CS B9
+#define DRIVER_1_EN C13
+#define DRIVER_2_EN C13
+
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 54
+#define DRIVER_2_LED_TOTAL 34
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Set debounce time to 5ms */
+#define DEBOUNCE 5
+
+/* Force NKRO on boot up regardless of the setting saved in the EEPROM (uncomment to enable it) */
+// #define FORCE_NKRO
diff --git a/keyboards/gmmk/gmmk2/p65/halconf.h b/keyboards/gmmk/gmmk2/p65/halconf.h
new file mode 100644
index 0000000000..293d182917
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/halconf.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/wb_support/gmmk2/halconf.h -r platforms/chibios/boards/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h>
+
diff --git a/keyboards/gmmk/gmmk2/p65/iso/info.json b/keyboards/gmmk/gmmk2/p65/iso/info.json
new file mode 100644
index 0000000000..9f0285abbb
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "GMMK V2 65 ISO",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x504A",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "`", "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.25},
+ { "label": "PgUp", "x": 15.25, "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": "Enter", "x": 13.5, "y": 1 ,"h":2, "w": 1.75},
+ { "label": "PgDn", "x": 15.25, "y": 1 },
+
+ { "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": "#", "x": 12.75, "y": 2 },
+ { "label": "HOME", "x": 15.25, "y": 2 },
+
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 1.25},
+ { "label": "\\", "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": "Up", "x": 14.25, "y": 3 },
+ { "label": "END", "x": 15.25, "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": "Space", "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": "Left", "x": 13.25, "y": 4 },
+ { "label": "Down", "x": 14.25, "y": 4 },
+ { "label": "Right", "x": 15.25, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.c b/keyboards/gmmk/gmmk2/p65/iso/iso.c
new file mode 100644
index 0000000000..651a612a58
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/iso.c
@@ -0,0 +1,238 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 "iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 0 Esc
+ {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 2 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 3 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 4 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 5 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 6 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 7 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 8 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10 }, // 9 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11 }, // 10 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12 }, // 11 -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5 }, // 12 =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7 }, // 13 Backspace
+ {1, CS4_SW4, CS5_SW4, CS6_SW4 }, // 14 HOME
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 15 Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 16 Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 17 W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 18 E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 19 R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6 }, // 20 T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 21 Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 22 U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 23 I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10 }, // 24 O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11 }, // 25 P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12 }, // 26 [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8 }, // 27 ]
+ {1, CS1_SW11, CS2_SW11, CS3_SW11 }, // 28 ENTER
+ {1, CS4_SW7, CS5_SW7, CS6_SW7 }, // 29 PgUp
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 30 Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 31 A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 32 S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 33 D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 34 F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 35 G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 36 H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8 }, // 37 J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9 }, // 38 K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 39 L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 40 ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 41 '
+ {1, CS1_SW10, CS2_SW10, CS3_SW10 }, // 42 k42
+ {1, CS4_SW5, CS5_SW5, CS6_SW5 }, // 43 PgDn
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1 }, // 44 Shift_L
+ {0, CS13_SW2, CS14_SW2, CS15_SW2 }, // 45 k45
+ {0, CS13_SW3, CS14_SW3, CS15_SW3 }, // 46 Z
+ {0, CS13_SW4, CS14_SW4, CS15_SW4 }, // 47 X
+ {0, CS13_SW5, CS14_SW5, CS15_SW5 }, // 48 C
+ {0, CS13_SW6, CS14_SW6, CS15_SW6 }, // 49 V
+ {0, CS13_SW7, CS14_SW7, CS15_SW7 }, // 50 B
+ {0, CS13_SW8, CS14_SW8, CS15_SW8 }, // 51 N
+ {0, CS13_SW9, CS14_SW9, CS15_SW9 }, // 52 M
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 53 ,
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 54 .
+ {0, CS13_SW12, CS14_SW12, CS15_SW12}, // 55 /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8 }, // 56 Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9 }, // 57 Up
+ {1, CS4_SW6, CS5_SW6, CS6_SW6 }, // 58 END
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1 }, // 59 Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2 }, // 60 Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3 }, // 61 Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6 }, // 62 Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9 }, // 63 Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 64 FN
+ {1, CS4_SW10, CS5_SW10, CS6_SW10 }, // 65 Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11 }, // 66 Down
+ {1, CS4_SW12, CS5_SW12, CS6_SW12 }, // 67 Right
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1 }, // 68 LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2 }, // 69 LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3 }, // 70 LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4 }, // 71 LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5 }, // 72 LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6 }, // 73 LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7 }, // 74 LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8 }, // 75 LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9 }, // 76 LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 77 LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1 }, // 78 LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2 }, // 79 LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3 }, // 80 LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4 }, // 81 LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5 }, // 82 LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6 }, // 83 LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7 }, // 84 LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8 }, // 85 LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9 }, // 86 LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 87 LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 44, 58, 45, 65, __, 67, 59, 56},
+ { 16, 15, 31, 0, 46, 60, __, 1},
+ { 17, 30, 32, 61, 47, 14, 29, 2},
+ { 18, 62, 33, 64, 48, 57, 63, 3},
+ { 19, 20, 34, 35, 49, 50, 5, 4},
+ { 22, 21, 37, 36, 52, 51, 6, 7},
+ { 23, 27, 38, __, 53, 43, 12, 8},
+ { 24, 13, 39, 66, 54, 42, __, 9},
+ { 25, 26, 40, 41, 28, 55, 11, 10}
+}, {
+ {14, 0 }, // 0 Esc
+ {28, 0 }, // 1 1
+ {42, 0 }, // 2 2
+ {56, 0 }, // 3 3
+ {70, 0 }, // 4 4
+ {84, 0 }, // 5 5
+ {98, 0 }, // 6 6
+ {112, 0 }, // 7 7
+ {126, 0 }, // 8 8
+ {140, 0 }, // 9 9
+ {154, 0 }, // 10 0
+ {168, 0 }, // 11 -
+ {182, 0 }, // 12 =
+ {196, 0 }, // 13 Backspace
+ {210, 0 }, // 14 HOME
+
+ {14, 16}, // 15 Tab
+ {28, 16}, // 16 Q
+ {42, 16}, // 17 W
+ {56, 16}, // 18 E
+ {70, 16}, // 19 R
+ {84, 16}, // 20 T
+ {98, 16}, // 21 Y
+ {112, 16}, // 22 U
+ {126, 16}, // 23 I
+ {140, 16}, // 24 O
+ {154, 16}, // 25 P
+ {168, 16}, // 26 [
+ {182, 16}, // 27 ]
+ {196, 16}, // 28 ENTER
+ {210, 16}, // 29 PgUp
+
+ {14, 32}, // 30 Caps Lock
+ {28, 32}, // 31 A
+ {42, 32}, // 32 S
+ {56, 32}, // 33 D
+ {70, 32}, // 34 F
+ {84, 32}, // 35 G
+ {98, 32}, // 36 H
+ {112, 32}, // 37 J
+ {126, 32}, // 38 K
+ {140, 32}, // 39 L
+ {154, 32}, // 40 ;
+ {168, 32}, // 41 '
+ {182, 32}, // 42 k42
+ {210, 32}, // 43 PgDn
+
+ {14, 48}, // 44 Shift_L
+ {28, 48}, // 45 k45
+ {42, 48}, // 46 Z
+ {56, 48}, // 47 X
+ {70, 48}, // 48 C
+ {84, 48}, // 49 V
+ {98, 48}, // 50 B
+ {112, 48}, // 51 N
+ {126, 48}, // 52 M
+ {140, 48}, // 53 ,
+ {154, 48}, // 54 .
+ {168, 48}, // 55 /
+ {182, 48}, // 56 Shift_R
+ {196, 48}, // 57 Up
+ {210, 48}, // 58 END
+
+ {14, 64}, // 59 Ctrl_L
+ {28, 64}, // 60 Win_L
+ {42, 64}, // 61 Alt_L
+ {84, 64}, // 62 Space
+ {126, 64}, // 63 Alt_R
+ {140, 64}, // 64 FN
+ {182, 64}, // 65 Left
+ {196, 64}, // 66 Down
+ {210, 64}, // 67 Right
+
+ {0, 0}, // 68 LED 1
+ {0, 7}, // 69 LED 2
+ {0, 14}, // 70 LED 3
+ {0, 21}, // 71 LED 4
+ {0, 28}, // 72 LED 5
+ {0, 35}, // 73 LED 6
+ {0, 42}, // 74 LED 7
+ {0, 49}, // 75 LED 8
+ {0, 56}, // 76 LED 9
+ {0, 64}, // 77 LED 10
+ {224, 0 }, // 78 LED 11
+ {224, 7 }, // 79 LED 12
+ {224, 14}, // 80 LED 13
+ {224, 21}, // 81 LED 14
+ {224, 28}, // 82 LED 15
+ {224, 35}, // 83 LED 16
+ {224, 42}, // 84 LED 17
+ {224, 49}, // 85 LED 18
+ {224, 56}, // 86 LED 19
+ {224, 64}, // 87 LED 20
+}, {
+ 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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.h b/keyboards/gmmk/gmmk2/p65/iso/iso.h
new file mode 100644
index 0000000000..206647cf79
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/iso.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 ___ KC_NO
+
+// ESC 1 2 3 4 5 6 7 8 9 0 - = BS PgUp
+// Tab Q W E R T Y U I O P [ ] Enter PgUp
+// Caps A S D F G H J K L ; ' \ Enter HOME
+// Sh_L \ Z X C V B N M , . / Sh_R Up END
+// Ct_L Win_L Alt_L SPACE Alt_R FN Left Down Right
+
+// clang-format off
+#define LAYOUT( \
+ k13, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, k71, k25,\
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k84, k26,\
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k75, k65,\
+ k00, k02, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k07, k35, k01,\
+ k06, k15, k23, k31, k36, k33, k03, k73, k05 \
+)\
+{\
+ { k00, k01, k02, k03, ___, k05, k06, k07},\
+ { k10, k11, k12, k13, k14, k15, ___, k17},\
+ { k20, k21, k22, k23, k24, k25, k26, k27},\
+ { k30, k31, k32, k33, k34, k35, k36, k37},\
+ { k40, k41, k42, k43, k44, k45, k46, k47},\
+ { k50, k51, k52, k53, k54, k55, k56, k57},\
+ { k60, k61, k62, ___, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, k75, ___, k77},\
+ { k80, k81, k82, k83, k84, k85, k86, k87} \
+}
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..61072536d7
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ 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_ENT, KC_PGUP,
+ 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_PGDN,
+ 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ _______, 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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md
new file mode 100644
index 0000000000..89d52f6afa
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ISO GMMKV2 65% Layout
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..53918fc1e1
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ 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_ENT, KC_PGUP,
+ 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_PGDN,
+ 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+[1] = LAYOUT(
+ _______, 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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD),
+
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+[3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p65/iso/readme.md b/keyboards/gmmk/gmmk2/p65/iso/readme.md
new file mode 100644
index 0000000000..1775862e0f
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 65% (ISO)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p65/iso:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p65/iso:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap
+
+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/gmmk/gmmk2/p65/iso/rules.mk b/keyboards/gmmk/gmmk2/p65/iso/rules.mk
new file mode 100644
index 0000000000..1cf9d7a709
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite.
+MOUSEKEY_ENABLE = yes # Mouse keys.
+EXTRAKEY_ENABLE = yes # Audio control and System control.
+CONSOLE_ENABLE = no # Console for debug.
+COMMAND_ENABLE = no # Commands for debug and configuration.
+NKRO_ENABLE = yes # Enable NKRO Rollover.
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality.
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow.
+AUDIO_ENABLE = no # Audio output.
+RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
diff --git a/keyboards/gmmk/gmmk2/p65/mcuconf.h b/keyboards/gmmk/gmmk2/p65/mcuconf.h
new file mode 100644
index 0000000000..e5b8188e9e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/wb_support/gmmk2/mcuconf.h -r platforms/chibios/GENERIC_WB32_F3G71XX/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef WB32_SPI_USE_SPIM2
+#define WB32_SPI_USE_SPIM2 TRUE
diff --git a/keyboards/gmmk/gmmk2/p65/p65.c b/keyboards/gmmk/gmmk2/p65/p65.c
new file mode 100644
index 0000000000..d7e06f6488
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/p65.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 "p65.h"
diff --git a/keyboards/gmmk/gmmk2/p65/p65.h b/keyboards/gmmk/gmmk2/p65/p65.h
new file mode 100644
index 0000000000..7a6339c2e0
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/p65.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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"
+
+#if defined(KEYBOARD_gmmk_gmmk2_p65_ansi)
+# include "ansi/ansi.h"
+#elif defined(KEYBOARD_gmmk_gmmk2_p65_iso)
+# include "iso/iso.h"
+#endif // GMMK V2 revisions
diff --git a/keyboards/idobao/id80/v3/ansi/info.json b/keyboards/idobao/id80/v3/ansi/info.json
index c7768130e1..fccff8efda 100644
--- a/keyboards/idobao/id80/v3/ansi/info.json
+++ b/keyboards/idobao/id80/v3/ansi/info.json
@@ -108,7 +108,7 @@
{ "matrix": [0, 0], "x":0, "y":5.25, "w":1.25},
{ "matrix": [1, 0], "x":1.25, "y":5.25, "w":1.25},
{ "matrix": [2, 0], "x":2.5, "y":5.25, "w":1.25},
- { "matrix": [6, 0], "y":5.25, "w":6.25},
+ { "matrix": [6, 0], "x":3.75, "y":5.25, "w":6.25},
{ "matrix": [8, 0], "x":10, "y":5.25, "w":1.5},
{ "matrix": [7, 0], "x":11.5, "y":5.25, "w":1.5},
diff --git a/keyboards/linworks/em8/config.h b/keyboards/linworks/em8/config.h
new file mode 100644
index 0000000000..176c814e35
--- /dev/null
+++ b/keyboards/linworks/em8/config.h
@@ -0,0 +1,8 @@
+// Copyright 2022 moritz plattner (@moritz plattner)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Move Bootmagic key from ~ to ESC (0,0 to 1,0)
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/linworks/em8/info.json b/keyboards/linworks/em8/info.json
new file mode 100644
index 0000000000..e4d58708e5
--- /dev/null
+++ b/keyboards/linworks/em8/info.json
@@ -0,0 +1,190 @@
+{
+ "manufacturer": "Linworks",
+ "keyboard_name": "EM.8",
+ "maintainer": "ebastler",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": [ "B5", "B4", "D0", "D1", "D4", "D6", "D7", "F6", "F5", "F4", "F1", "B2", "B6", "C6", "C7" ],
+ "rows": [ "B7", "B0", "F0", "E6", "F7" ]
+ },
+ "processor": "atmega32u4",
+ "url": "https://klc-playground.com/",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0006",
+ "vid": "0x4C58"
+ },
+ "indicators": {
+ "num_lock": "D2",
+ "caps_lock": "D3",
+ "scroll_lock": "D5",
+ "on_state": 0
+ },
+ "layouts": {
+ "LAYOUT_em8_2u_backsp": {
+ "layout": [
+ {"x":0, "y":0, "matrix":[1,0] },
+ {"x":1.25, "y":0, "matrix":[0,0] },
+ {"x":2.25, "y":0, "matrix":[0,1] },
+ {"x":3.25, "y":0, "matrix":[0,2] },
+ {"x":4.25, "y":0, "matrix":[0,3] },
+ {"x":5.25, "y":0, "matrix":[0,4] },
+ {"x":6.25, "y":0, "matrix":[0,5] },
+ {"x":7.25, "y":0, "matrix":[0,6] },
+ {"x":10.25, "y":0, "matrix":[0,7] },
+ {"x":11.25, "y":0, "matrix":[0,8] },
+ {"x":12.25, "y":0, "matrix":[0,9] },
+ {"x":13.25, "y":0, "matrix":[0,10] },
+ {"x":14.25, "y":0, "matrix":[0,11] },
+ {"x":15.25, "y":0, "matrix":[0,12] },
+ {"x":16.25, "y":0, "w": 2, "matrix":[0,13] },
+ {"x":18.5, "y":0, "matrix":[0,14] },
+
+ {"x":0, "y":1, "matrix":[2,0] },
+ {"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
+ {"x":2.75, "y":1, "matrix":[1,2] },
+ {"x":3.75, "y":1, "matrix":[1,3] },
+ {"x":4.75, "y":1, "matrix":[1,4] },
+ {"x":5.75, "y":1, "matrix":[1,5] },
+ {"x":6.75, "y":1, "matrix":[1,6] },
+ {"x":9.75, "y":1, "matrix":[1,7] },
+ {"x":10.75, "y":1, "matrix":[1,8] },
+ {"x":11.75, "y":1, "matrix":[1,9] },
+ {"x":12.75, "y":1, "matrix":[1,10] },
+ {"x":13.75, "y":1, "matrix":[1,11] },
+ {"x":14.75, "y":1, "matrix":[1,12] },
+ {"x":15.75, "y":1, "matrix":[1,13] },
+ {"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
+ {"x":18.5, "y":1, "matrix":[2,14] },
+
+ {"x":0, "y":2, "matrix":[3,0] },
+ {"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
+ {"x":3, "y":2, "matrix":[2,2] },
+ {"x":4, "y":2, "matrix":[2,3] },
+ {"x":5, "y":2, "matrix":[2,4] },
+ {"x":6, "y":2, "matrix":[2,5] },
+ {"x":7, "y":2, "matrix":[2,6] },
+ {"x":10, "y":2, "matrix":[2,7] },
+ {"x":11, "y":2, "matrix":[2,8] },
+ {"x":12, "y":2, "matrix":[2,9] },
+ {"x":13, "y":2, "matrix":[2,10] },
+ {"x":14, "y":2, "matrix":[2,11] },
+ {"x":15, "y":2, "matrix":[2,12] },
+ {"x":16, "y":2, "w":2.25, "matrix":[2,13] },
+
+ {"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
+ {"x":3.5, "y":3, "matrix":[3,2] },
+ {"x":4.5, "y":3, "matrix":[3,3] },
+ {"x":5.5, "y":3, "matrix":[3,4] },
+ {"x":6.5, "y":3, "matrix":[3,5] },
+ {"x":7.5, "y":3, "matrix":[3,6] },
+ {"x":9.5, "y":3, "matrix":[3,7] },
+ {"x":10.5, "y":3, "matrix":[3,8] },
+ {"x":11.5, "y":3, "matrix":[3,9] },
+ {"x":12.5, "y":3, "matrix":[3,10] },
+ {"x":13.5, "y":3, "matrix":[3,11] },
+ {"x":14.5, "y":3, "matrix":[3,12] },
+ {"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
+ {"x":17.5, "y":3.25, "matrix":[3,14] },
+
+ {"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
+ {"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
+ {"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
+ {"x":8, "y":4, "w":1, "matrix":[4,6] },
+ {"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
+ {"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
+ {"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
+ {"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
+ {"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
+ ]
+ },
+
+ "LAYOUT_em8_all": {
+ "layout": [
+ {"x":0, "y":0, "matrix":[1,0] },
+ {"x":1.25, "y":0, "matrix":[0,0] },
+ {"x":2.25, "y":0, "matrix":[0,1] },
+ {"x":3.25, "y":0, "matrix":[0,2] },
+ {"x":4.25, "y":0, "matrix":[0,3] },
+ {"x":5.25, "y":0, "matrix":[0,4] },
+ {"x":6.25, "y":0, "matrix":[0,5] },
+ {"x":7.25, "y":0, "matrix":[0,6] },
+ {"x":10.25, "y":0, "matrix":[0,7] },
+ {"x":11.25, "y":0, "matrix":[0,8] },
+ {"x":12.25, "y":0, "matrix":[0,9] },
+ {"x":13.25, "y":0, "matrix":[0,10] },
+ {"x":14.25, "y":0, "matrix":[0,11] },
+ {"x":15.25, "y":0, "matrix":[0,12] },
+ {"x":16.25, "y":0, "matrix":[0,13] },
+ {"x":17.25, "y":0, "matrix":[4,11] },
+ {"x":18.5, "y":0, "matrix":[0,14] },
+
+ {"x":0, "y":1, "matrix":[2,0] },
+ {"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
+ {"x":2.75, "y":1, "matrix":[1,2] },
+ {"x":3.75, "y":1, "matrix":[1,3] },
+ {"x":4.75, "y":1, "matrix":[1,4] },
+ {"x":5.75, "y":1, "matrix":[1,5] },
+ {"x":6.75, "y":1, "matrix":[1,6] },
+ {"x":9.75, "y":1, "matrix":[1,7] },
+ {"x":10.75, "y":1, "matrix":[1,8] },
+ {"x":11.75, "y":1, "matrix":[1,9] },
+ {"x":12.75, "y":1, "matrix":[1,10] },
+ {"x":13.75, "y":1, "matrix":[1,11] },
+ {"x":14.75, "y":1, "matrix":[1,12] },
+ {"x":15.75, "y":1, "matrix":[1,13] },
+ {"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
+ {"x":18.5, "y":1, "matrix":[2,14] },
+
+ {"x":0, "y":2, "matrix":[3,0] },
+ {"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
+ {"x":3, "y":2, "matrix":[2,2] },
+ {"x":4, "y":2, "matrix":[2,3] },
+ {"x":5, "y":2, "matrix":[2,4] },
+ {"x":6, "y":2, "matrix":[2,5] },
+ {"x":7, "y":2, "matrix":[2,6] },
+ {"x":10, "y":2, "matrix":[2,7] },
+ {"x":11, "y":2, "matrix":[2,8] },
+ {"x":12, "y":2, "matrix":[2,9] },
+ {"x":13, "y":2, "matrix":[2,10] },
+ {"x":14, "y":2, "matrix":[2,11] },
+ {"x":15, "y":2, "matrix":[2,12] },
+ {"x":16, "y":2, "w":2.25, "matrix":[2,13] },
+
+ {"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
+ {"x":3.5, "y":3, "matrix":[3,2] },
+ {"x":4.5, "y":3, "matrix":[3,3] },
+ {"x":5.5, "y":3, "matrix":[3,4] },
+ {"x":6.5, "y":3, "matrix":[3,5] },
+ {"x":7.5, "y":3, "matrix":[3,6] },
+ {"x":9.5, "y":3, "matrix":[3,7] },
+ {"x":10.5, "y":3, "matrix":[3,8] },
+ {"x":11.5, "y":3, "matrix":[3,9] },
+ {"x":12.5, "y":3, "matrix":[3,10] },
+ {"x":13.5, "y":3, "matrix":[3,11] },
+ {"x":14.5, "y":3, "matrix":[3,12] },
+ {"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
+ {"x":17.5, "y":3.25, "matrix":[3,14] },
+
+ {"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
+ {"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
+ {"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
+ {"x":8, "y":4, "w":1, "matrix":[4,6] },
+ {"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
+ {"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
+ {"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
+ {"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
+ {"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/linworks/em8/keymaps/default/keymap.c b/keyboards/linworks/em8/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f195907db9
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Moritz Plattner
+ *
+ * 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_em8_all(
+ KC_ESC, 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_BSPC, KC_INS,
+ 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_DEL,
+ 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_em8_all(
+ KC_TRNS, 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, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [2] = LAYOUT_em8_all(
+ 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, 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
+ ),
+
+ [3] = LAYOUT_em8_all(
+ 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, 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/linworks/em8/keymaps/via/keymap.c b/keyboards/linworks/em8/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f195907db9
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Moritz Plattner
+ *
+ * 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_em8_all(
+ KC_ESC, 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_BSPC, KC_INS,
+ 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_DEL,
+ 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_em8_all(
+ KC_TRNS, 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, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [2] = LAYOUT_em8_all(
+ 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, 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
+ ),
+
+ [3] = LAYOUT_em8_all(
+ 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, 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/linworks/em8/keymaps/via/rules.mk b/keyboards/linworks/em8/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/linworks/em8/readme.md b/keyboards/linworks/em8/readme.md
new file mode 100644
index 0000000000..cd8f6a5ba3
--- /dev/null
+++ b/keyboards/linworks/em8/readme.md
@@ -0,0 +1,22 @@
+# EM.8
+
+The Ergonomic Modified 8 is a tented ergonomic keyboard and the successor to the EM.7, designed by Syryan and Lx3.The default PCB supports hotswap and the layout options are limited to split or regular backpsace, as well as regular or stepped caps lock.
+
+* Keyboard maintainer: [ebastler](https://github.com/ebastler)
+* Hardware supported: Lin EM.8
+* Hardware availability: Groupbuy. More infos on [the Linworks Discord](https://discord.gg/UC8gTdVnsj)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make linworks/em8:default
+
+Flash example for this keyboard:
+
+ make linworks/em8: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).
+
+
+## How to enter the bootloader
+* **Bootmagic reset**: Hold down the key `ESC` key and plug in the keyboard (Top left most switch). On older firmware revisions, `~` (top left most switch of the alpha cluster) may be needed instead.
+* **Physical reset button**: Briefly press the button on the back of the PCB \ No newline at end of file
diff --git a/keyboards/linworks/em8/rules.mk b/keyboards/linworks/em8/rules.mk
new file mode 100644
index 0000000000..7ff128fa69
--- /dev/null
+++ b/keyboards/linworks/em8/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank \ No newline at end of file
diff --git a/keyboards/unicomp/classic_ultracl_post_2013/info.json b/keyboards/unicomp/classic_ultracl_post_2013/info.json
index fa1a563970..bfb70eb880 100644
--- a/keyboards/unicomp/classic_ultracl_post_2013/info.json
+++ b/keyboards/unicomp/classic_ultracl_post_2013/info.json
@@ -1,5 +1,5 @@
{
- "keyboard_name": "Unicomp Spacesaver M",
+ "keyboard_name": "Unicomp Classic / Ultra Classic (post-2013)",
"manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",
diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/info.json
index d7f8e9dcbf..618a7c1c46 100644
--- a/keyboards/unicomp/classic_ultracl_pre_2013/info.json
+++ b/keyboards/unicomp/classic_ultracl_pre_2013/info.json
@@ -1,5 +1,5 @@
{
- "keyboard_name": "Unicomp Spacesaver M",
+ "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)",
"manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",