diff --git a/keyboards/cherrybstudio/cb65/cb65.c b/keyboards/cherrybstudio/cb65/cb65.c
new file mode 100644
index 00000000000..4ff1006adfd
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/cb65.c
@@ -0,0 +1,14 @@
+/*
+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 .
+*/
+
+#include "cb65.h"
diff --git a/keyboards/cherrybstudio/cb65/cb65.h b/keyboards/cherrybstudio/cb65/cb65.h
new file mode 100644
index 00000000000..c17df211dad
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/cb65.h
@@ -0,0 +1,35 @@
+/*
+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 .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K100, K101, K102, K103, K104, K105, K106, K107, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K300, K301, K302, K303, K304, K305, K306, \
+ K307, K400, K401, K402, K403, K404, K405, K406, K407, K500, K501, K502, K503, K504, K505, \
+ K506, K507, K600, K601, K602, K603, K604, K605, K606, K607, K700, K701, K702, K703, K704, \
+ K705, K706, K707, K800, K801, K802, K803, K804, K805 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407 }, \
+ { K500, K501, K502, K503, K504, K505, K506, K507 }, \
+ { K600, K601, K602, K603, K604, K605, K606, K607 }, \
+ { K700, K701, K702, K703, K704, K705, K706, K707 }, \
+ { K800, K801, K802, K803, K804, K805 } \
+}
+
diff --git a/keyboards/cherrybstudio/cb65/config.h b/keyboards/cherrybstudio/cb65/config.h
new file mode 100644
index 00000000000..d5a644ef8c4
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/config.h
@@ -0,0 +1,68 @@
+/*
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ * 0 1 2 3 4 5 6 7 8
+*/
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, F7, B5, B6, C6 }
+
+/* Encoder configuration */
+//#define ENCODERS_PAD_A { F5 }
+//#define ENCODERS_PAD_B { F6 }
+//#define ENCODER_RESOLUTION 4
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN F1
+#define LED_SCROLL_LOCK_PIN F4
+#define LED_PIN_ON_STATE 0
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* RGB Lighting */
+#define RGB_DI_PIN F0
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 24
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/cherrybstudio/cb65/info.json b/keyboards/cherrybstudio/cb65/info.json
new file mode 100644
index 00000000000..976b0b2e33d
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "CherryB CB65",
+ "manufacturer": "CherryB Works",
+ "url": "https://discord.gg/qVwv3gcq83",
+ "maintainer": "lunaticwhat",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x6565",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.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, "w":1.5},
+ {"x":15, "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},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":2, "w":1.25},
+ {"x":15, "y":2},
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c
new file mode 100644
index 00000000000..c506bf5f4e6
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/*
+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 .
+*/
+
+#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_BSPC, QK_BOOT,
+ 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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, 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_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_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_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+};
diff --git a/keyboards/cherrybstudio/cb65/keymaps/default/readme.md b/keyboards/cherrybstudio/cb65/keymaps/default/readme.md
new file mode 100644
index 00000000000..af21c876dbc
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for CB65
diff --git a/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c
new file mode 100644
index 00000000000..55ea2d24f69
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Tybera
+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 .
+*/
+
+#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_BSPC, QK_BOOT,
+ 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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, 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_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_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_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [2] = LAYOUT_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_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/cherrybstudio/cb65/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb65/keymaps/via/rules.mk
new file mode 100644
index 00000000000..ca9fed0e6b5
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/cherrybstudio/cb65/readme.md b/keyboards/cherrybstudio/cb65/readme.md
new file mode 100644
index 00000000000..7b8f4da2012
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/readme.md
@@ -0,0 +1,26 @@
+# CherryB Works CB65
+
+![CB65](https://i.imgur.com/3qopFIWh.jpg)
+
+An universal 65 percents PCB for many keyboard with USB daughterboard
+Board has a rotary encoder but disabled for VIA support.
+
+* Keyboard Maintainer: lunaticwhat
+* Hardware Supported: CB65, atmega32u4
+* Hardware Availability: [CherryB Studio](https://discord.gg/qVwv3gcq83)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cherrybstudio/cb65:default
+
+Flashing example for this keyboard:
+
+ make cherrybstudio/cb65:default:flash
+
+## Accessing Bootloader Mode
+
+To access Bootloader Mode, do one of the following:
+
+* Hold the top left key of the keyboard while connecting the USB cable
+
+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/cherrybstudio/cb65/rules.mk b/keyboards/cherrybstudio/cb65/rules.mk
new file mode 100644
index 00000000000..e5386c142da
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-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 N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no # Encoder support
diff --git a/keyboards/kegen/gboy/info.json b/keyboards/kegen/gboy/info.json
index ad274c19576..a47bfdb7b8e 100644
--- a/keyboards/kegen/gboy/info.json
+++ b/keyboards/kegen/gboy/info.json
@@ -1,8 +1,8 @@
{
- "keyboard_name": "G-Boy",
+ "keyboard_name": "G-Boy",
"manufacturer": "Kegen",
- "url": "",
- "maintainer": "@mattchan",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kegen/gboy",
+ "maintainer": "mattchan",
"usb": {
"vid": "0x4B65",
"pid": "0x6762",
@@ -11,81 +11,82 @@
"layouts": {
"LAYOUT_all": {
"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},
- {"x":10, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0},
- {"x":14, "y":0},
- {"x":15, "y":0},
-
- {"x":0, "y":1, "w":1.5},
- {"x":1.5, "y":1},
- {"x":2.5, "y":1},
- {"x":3.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, "w":1.5},
- {"x":15, "y":1},
+ {"label": "GESC", "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": "MINS", "x":11, "y":0},
+ {"label": "EQL", "x":12, "y":0},
+ {"label": "BSPC", "x":13, "y":0},
+ {"label": "BSPC", "x":14, "y":0},
+ {"label": "HOME", "x":15, "y":0},
- {"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},
- {"x":9.75, "y":2},
- {"x":10.75, "y":2},
- {"x":11.75, "y":2},
- {"x":12.75, "y":2},
- {"x":13.75, "y":2, "w":1.25},
- {"x":15, "y":2},
+ {"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": "LBRC", "x":11.5, "y":1},
+ {"label": "RBRC", "x":12.5, "y":1},
+ {"label": "BSLS", "x":13.5, "y":1, "w":1.5},
+ {"label": "PGUP", "x":15, "y":1},
- {"x":0, "y":3, "w":1.25},
- {"x":1.25, "y":3},
- {"x":2.25, "y":3},
- {"x":3.25, "y":3},
- {"x":4.25, "y":3},
- {"x":5.25, "y":3},
- {"x":6.25, "y":3},
- {"x":7.25, "y":3},
- {"x":8.25, "y":3},
- {"x":9.25, "y":3},
- {"x":10.25, "y":3},
- {"x":11.25, "y":3},
- {"x":12.25, "y":3, "w":1.75},
- {"x":14, "y":3},
- {"x":15, "y":3},
+ {"label": "CAPS", "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": "SCLN", "x":10.75, "y":2},
+ {"label": "QUOT", "x":11.75, "y":2},
+ {"label": "BSLS", "x":12.75, "y":2},
+ {"label": "ENT", "x":13.75, "y":2, "w":1.25},
+ {"label": "PGDN", "x":15, "y":2},
- {"x":0, "y":4, "w":1.25},
- {"x":1.25, "y":4, "w":1.25},
- {"x":2.5, "y":4, "w":1.25},
- {"x":3.75, "y":4, "w":6.25},
- {"x":10, "y":4},
- {"x":11, "y":4},
- {"x":12, "y":4},
- {"x":13, "y":4},
- {"x":14, "y":4},
- {"x":15, "y":4}]
+ {"label": "LSFT", "x":0, "y":3, "w":1.25},
+ {"label": "SLSH", "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": "COMM", "x":9.25, "y":3},
+ {"label": "DOT", "x":10.25, "y":3},
+ {"label": "SLSH", "x":11.25, "y":3},
+ {"label": "RSFT", "x":12.25, "y":3, "w":1.75},
+ {"label": "UP", "x":14, "y":3},
+ {"label": "END", "x":15, "y":3},
+
+ {"label": "LCTL", "x":0, "y":4, "w":1.25},
+ {"label": "LGUI", "x":1.25, "y":4, "w":1.25},
+ {"label": "LALT", "x":2.5, "y":4, "w":1.25},
+ {"label": "SPC", "x":3.75, "y":4, "w":6.25},
+ {"label": "RALT", "x":10, "y":4},
+ {"label": "MO(1)", "x":11, "y":4},
+ {"label": "RCTL", "x":12, "y":4},
+ {"label": "LEFT", "x":13, "y":4},
+ {"label": "DOWN", "x":14, "y":4},
+ {"label": "RGHT", "x":15, "y":4}
+ ]
}
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/kegen/gboy/readme.md b/keyboards/kegen/gboy/readme.md
index 25ca760ff49..b636d0462de 100644
--- a/keyboards/kegen/gboy/readme.md
+++ b/keyboards/kegen/gboy/readme.md
@@ -6,7 +6,7 @@
* Keyboard Maintainer: [Matt Chan](https://github.com/mattchan)
* Hardware Supported: Kegen G-Boy
-* Hardware Availability: Unfortunately, there is no site for this, and the Kegen Discord is ghost town.
+* Hardware Availability: Unfortunately, there is no site for this, and the Kegen Discord is no longer active. The group buy runners appear to have disappeared after round two units were delivered.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/om60/config.h b/keyboards/om60/config.h
new file mode 100644
index 00000000000..624579be7ea
--- /dev/null
+++ b/keyboards/om60/config.h
@@ -0,0 +1,104 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 }
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* 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
+
+#ifndef RGBLED_NUM
+ #define RGBLED_NUM 69
+ #define RGBLIGHT_LED_MAP { \
+ 0, 1, 2, 3, \
+ 8, 7, 6, 5, 4, \
+ 9,10,11,12,13, \
+ 18,17,16,15,14, \
+ 19,20,21,22,23, \
+ 28,27,26,25,24, \
+ 29,30,31,32,33, \
+ 38,37,36,35,34, \
+ 39,40,41,42,43, \
+ 48,47,46,45,44, \
+ 49,50,51,52,53, \
+ 58,57,56,55,54, \
+ 59,60,61,62,63, \
+ 68,67,66,65,64 \
+ }
+
+ #define RGBLIGHT_SLEEP
+#endif
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 90
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 30
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+#define TAP_CODE_DELAY 10
+
+#define ENCODERS_PAD_A { B4 }
+#define ENCODERS_PAD_B { B5 }
diff --git a/keyboards/om60/info.json b/keyboards/om60/info.json
new file mode 100644
index 00000000000..319dca00717
--- /dev/null
+++ b/keyboards/om60/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "OM60",
+ "manufacturer": "jun10000",
+ "url": "https://github.com/jun10000",
+ "maintainer": "jun10000",
+ "usb": {
+ "vid": "0x6A6E",
+ "pid": "0x0001",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"4,0", "x":1.5, "y":0}, {"label":"4,1", "x":2.5, "y":0}, {"label":"4,2", "x":3.5, "y":0}, {"label":"4,3", "x":4.5, "y":0}, {"label":"4,4", "x":5.5, "y":0}, {"label":"4,5", "x":6.5, "y":0}, {"label":"4,6", "x":7.5, "y":0}, {"label":"4,7", "x":8.5, "y":0}, {"label":"9,0", "x":9.5, "y":0}, {"label":"9,1", "x":10.5, "y":0}, {"label":"9,2", "x":11.5, "y":0}, {"label":"9,3", "x":12.5, "y":0}, {"label":"9,4", "x":13.5, "y":0}, {"label":"0,1", "x":1.5, "y":1}, {"label":"0,2", "x":2.5, "y":1}, {"label":"0,3", "x":3.5, "y":1}, {"label":"0,4", "x":4.5, "y":1}, {"label":"0,5", "x":5.5, "y":1}, {"label":"0,6", "x":6.5, "y":1}, {"label":"0,7", "x":7.5, "y":1}, {"label":"5,0", "x":8.5, "y":1}, {"label":"5,1", "x":9.5, "y":1}, {"label":"5,2", "x":10.5, "y":1}, {"label":"5,3", "x":11.5, "y":1}, {"label":"5,4", "x":12.5, "y":1}, {"label":"5,5", "x":13.5, "y":1}, {"label":"1,0", "x":0, "y":2}, {"label":"1,1", "x":1.5, "y":2}, {"label":"1,2", "x":2.5, "y":2}, {"label":"1,3", "x":3.5, "y":2}, {"label":"1,4", "x":4.5, "y":2}, {"label":"1,5", "x":5.5, "y":2}, {"label":"1,6", "x":6.5, "y":2}, {"label":"1,7", "x":7.5, "y":2}, {"label":"6,0", "x":8.5, "y":2}, {"label":"6,1", "x":9.5, "y":2}, {"label":"6,2", "x":10.5, "y":2}, {"label":"6,3", "x":11.5, "y":2}, {"label":"6,4", "x":12.5, "y":2}, {"label":"6,5", "x":13.5, "y":2}, {"label":"2,0", "x":0, "y":3}, {"label":"2,1", "x":1.5, "y":3}, {"label":"2,2", "x":2.5, "y":3}, {"label":"2,3", "x":3.5, "y":3}, {"label":"2,4", "x":4.5, "y":3}, {"label":"2,5", "x":5.5, "y":3}, {"label":"2,6", "x":6.5, "y":3}, {"label":"2,7", "x":7.5, "y":3}, {"label":"7,0", "x":8.5, "y":3}, {"label":"7,1", "x":9.5, "y":3}, {"label":"7,2", "x":10.5, "y":3}, {"label":"7,3", "x":11.5, "y":3}, {"label":"7,4", "x":12.5, "y":3}, {"label":"7,5", "x":13.5, "y":3}, {"label":"3,0", "x":0, "y":4}, {"label":"3,1", "x":1.5, "y":4}, {"label":"3,2", "x":2.5, "y":4}, {"label":"3,3", "x":3.5, "y":4}, {"label":"3,4", "x":4.5, "y":4}, {"label":"3,5", "x":5.5, "y":4}, {"label":"3,6", "x":6.5, "y":4}, {"label":"3,7", "x":7.5, "y":4}, {"label":"8,0", "x":8.5, "y":4}, {"label":"8,1", "x":9.5, "y":4}, {"label":"8,2", "x":10.5, "y":4}, {"label":"8,3", "x":11.5, "y":4}, {"label":"8,4", "x":12.5, "y":4}, {"label":"8,5", "x":13.5, "y":4}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/om60/keymaps/default/keymap.c b/keyboards/om60/keymaps/default/keymap.c
new file mode 100644
index 00000000000..336b98d3bf2
--- /dev/null
+++ b/keyboards/om60/keymaps/default/keymap.c
@@ -0,0 +1,70 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+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 .
+*/
+
+#include QMK_KEYBOARD_H
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ KC_MUTE, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [1] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/om60/keymaps/default/rules.mk b/keyboards/om60/keymaps/default/rules.mk
new file mode 100644
index 00000000000..8acf3d642bf
--- /dev/null
+++ b/keyboards/om60/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/om60/keymaps/via/keymap.c b/keyboards/om60/keymaps/via/keymap.c
new file mode 100644
index 00000000000..beb4ab962bf
--- /dev/null
+++ b/keyboards/om60/keymaps/via/keymap.c
@@ -0,0 +1,84 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+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 .
+*/
+
+#include QMK_KEYBOARD_H
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+ [3] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ KC_MUTE, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [1] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [3] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/om60/keymaps/via/rules.mk b/keyboards/om60/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1189f4ad192
--- /dev/null
+++ b/keyboards/om60/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/om60/matrix.c b/keyboards/om60/matrix.c
new file mode 100644
index 00000000000..36867804689
--- /dev/null
+++ b/keyboards/om60/matrix.c
@@ -0,0 +1,166 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+Copyright 2022 jun10000
+
+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 .
+*/
+#include "quantum.h"
+
+#if (MATRIX_COLS <= 8)
+# define ROW_SHIFTER ((uint8_t)1)
+#elif (MATRIX_COLS <= 16)
+# define ROW_SHIFTER ((uint16_t)1)
+#elif (MATRIX_COLS <= 32)
+# define ROW_SHIFTER ((uint32_t)1)
+#endif
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+static void select_row(uint8_t row)
+{
+ setPinOutput(row_pins[row]);
+ writePinLow(row_pins[row]);
+}
+
+static void unselect_row(uint8_t row)
+{
+ setPinInputHigh(row_pins[row]);
+}
+
+static void unselect_rows(void)
+{
+ for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static void select_col(uint8_t col)
+{
+ setPinOutput(col_pins[col]);
+ writePinLow(col_pins[col]);
+}
+
+static void unselect_col(uint8_t col)
+{
+ setPinInputHigh(col_pins[col]);
+}
+
+static void unselect_cols(void)
+{
+ for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+}
+
+static void init_pins(void) {
+ unselect_rows();
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
+{
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[current_row];
+
+ // Clear data in matrix row
+ current_matrix[current_row] = 0;
+
+ // Select row and wait for row selecton to stabilize
+ select_row(current_row);
+ wait_us(30);
+
+ // For each col...
+ for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+
+ // Select the col pin to read (active low)
+ uint8_t pin_state = readPin(col_pins[col_index]);
+
+ // Populate the matrix row with the state of the col pin
+ current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
+ }
+
+ // Unselect row
+ unselect_row(current_row);
+
+ return (last_row_value != current_matrix[current_row]);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
+{
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ wait_us(30);
+
+ // For each row...
+ for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
+ {
+ uint8_t tmp = row_index + MATRIX_ROWS/2;
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[tmp];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0)
+ {
+ // Pin LO, set col bit
+ current_matrix[tmp] |= (ROW_SHIFTER << current_col);
+ }
+ else
+ {
+ // Pin HI, clear col bit
+ current_matrix[tmp] &= ~(ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
+ {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[])
+{
+ bool changed = false;
+
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
+ changed |= read_cols_on_row(current_matrix, current_row);
+ }
+ //else
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+
+ return (uint8_t)changed;
+}
diff --git a/keyboards/om60/om60.c b/keyboards/om60/om60.c
new file mode 100644
index 00000000000..9e66d6721c7
--- /dev/null
+++ b/keyboards/om60/om60.c
@@ -0,0 +1,19 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2022 jun10000
+
+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 .
+*/
+
+#include "om60.h"
diff --git a/keyboards/om60/om60.h b/keyboards/om60/om60.h
new file mode 100644
index 00000000000..669a610031a
--- /dev/null
+++ b/keyboards/om60/om60.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2022 jun10000
+
+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 .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L01, L05, L10, L15, L20, L25, L30, L35, L40, R45, R50, R55, R60, R65, \
+ L06, L11, L16, L21, L26, L31, L36, R41, R46, R51, R56, R61, R66, \
+ L02, L07, L12, L17, L22, L27, L32, L37, R42, R47, R52, R57, R62, R67, \
+ L03, L08, L13, L18, L23, L28, L33, L38, R43, R48, R53, R58, R63, R68, \
+ L04, L09, L14, L19, L24, L29, L34, L39, R44, R49, R54, R59, R64, R69 \
+ ) \
+ { \
+ { L01, L06, L11, L16, L21, L26, L31, L36 }, \
+ { L02, L07, L12, L17, L22, L27, L32, L37 }, \
+ { L03, L08, L13, L18, L23, L28, L33, L38 }, \
+ { L04, L09, L14, L19, L24, L29, L34, L39 }, \
+ { L05, L10, L15, L20, L25, L30, L35, L40 }, \
+ { R41, R46, R51, R56, R61, R66, KC_NO, KC_NO }, \
+ { R42, R47, R52, R57, R62, R67, KC_NO, KC_NO }, \
+ { R43, R48, R53, R58, R63, R68, KC_NO, KC_NO }, \
+ { R44, R49, R54, R59, R64, R69, KC_NO, KC_NO }, \
+ { R45, R50, R55, R60, R65, KC_NO, KC_NO, KC_NO } \
+ }
diff --git a/keyboards/om60/readme.md b/keyboards/om60/readme.md
new file mode 100644
index 00000000000..5d9d096d56a
--- /dev/null
+++ b/keyboards/om60/readme.md
@@ -0,0 +1,27 @@
+# OM60
+
+![OM60](https://i.imgur.com/WoO8oezh.jpg)
+
+The 60% Poker compatible Ortholinear keyboard or jumbo Macropad.
+
+* Keyboard Maintainer: [jun10000](https://github.com/jun10000)
+* Hardware Supported: OM60 PCB, Pro Micro
+* Hardware Availability: [junsgamingstore.booth.pm](https://junsgamingstore.booth.pm/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make om60:default
+
+Flashing example for this keyboard:
+
+ make om60: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
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
\ No newline at end of file
diff --git a/keyboards/om60/rules.mk b/keyboards/om60/rules.mk
new file mode 100644
index 00000000000..9dc673edbff
--- /dev/null
+++ b/keyboards/om60/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# 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 = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
+
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c
diff --git a/keyboards/takashicompany/goat51/info.json b/keyboards/takashicompany/goat51/info.json
new file mode 100644
index 00000000000..b87b08161e6
--- /dev/null
+++ b/keyboards/takashicompany/goat51/info.json
@@ -0,0 +1,498 @@
+{
+ "manufacturer": "takashicompany",
+ "keyboard_name": "GOAT51",
+ "maintainer": "takashicompany",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": [
+ "D4",
+ "C6",
+ "D7",
+ "E6",
+ "B4",
+ "B5",
+ "D2"
+ ],
+ "rows": [
+ "F4",
+ "F5",
+ "F6",
+ "F7",
+ "B1",
+ "B3",
+ "B2",
+ "B6"
+ ]
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "D1", "pin_b": "D0" }
+ ]
+ },
+ "url": "https://github.com/takashicompany/goat51",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0029",
+ "vid": "0x7463"
+ },
+ "rgblight": {
+ "led_count": 11,
+ "pin": "D3",
+ "hue_steps": 10,
+ "saturation_steps": 17,
+ "brightness_steps": 17,
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 2,
+ "y": 0.25
+ },
+ {
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 3,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 4
+ ],
+ "x": 4,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 5
+ ],
+ "x": 5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 10,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 11,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 12,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 13,
+ "y": 0.25
+ },
+ {
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 14,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 1,
+ 0
+ ],
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 1,
+ 1
+ ],
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 2,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 3,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 1,
+ 4
+ ],
+ "x": 4,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 1,
+ 5
+ ],
+ "x": 5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 1,
+ 6
+ ],
+ "x": 7.5,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 10,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 11,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 12,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 13,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 5
+ ],
+ "x": 14,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 2,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 3,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 4,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 1
+ ],
+ "x": 10,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 2
+ ],
+ "x": 11,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 3
+ ],
+ "x": 12,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 4
+ ],
+ "x": 13,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 6,
+ 5
+ ],
+ "x": 14,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 6,
+ 6
+ ],
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 0,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 2,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 3,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 4,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 3,
+ 5
+ ],
+ "x": 5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 3,
+ 6
+ ],
+ "x": 6,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 0
+ ],
+ "x": 9,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 10,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 11,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 3
+ ],
+ "x": 12,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 4
+ ],
+ "x": 13,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 7,
+ 5
+ ],
+ "x": 14,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 7,
+ 6
+ ],
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 7,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 8,
+ "y": 1.5
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/default/keymap.c b/keyboards/takashicompany/goat51/keymaps/default/keymap.c
new file mode 100644
index 00000000000..4e2c0e2d579
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/default/keymap.c
@@ -0,0 +1,123 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ GOAT51 = SAFE_RANGE,
+ WEB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // 0: JIS-Alphabet
+ LAYOUT(
+ KC_ESC, LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 1: JIS-Num
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 2: JIS-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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: US-Alphabet
+ LAYOUT(
+ KC_TRNS, LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
+ KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
+ TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 4: US-Num
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, GOAT51, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN, KC_TRNS,
+ KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 5: US-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
+ KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, GOAT51, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 6: Cursor
+ LAYOUT(
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ TG(6), KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 7: Function
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(8), MO(9), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 8: LED
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, DF(0), DF(3), KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case GOAT51:
+ if (record->event.pressed) {
+ SEND_STRING("GOAT51");
+ rgblight_toggle();
+ }
+ return false;
+
+ case WEB:
+ if (record->event.pressed) {
+ SEND_STRING("github.com/takashicompany/goat51");
+ }
+ return false;
+ }
+
+ return true;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_DOWN);
+ } else {
+ tap_code(KC_MS_WH_UP);
+ }
+
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/config.h b/keyboards/takashicompany/goat51/keymaps/via/config.h
new file mode 100644
index 00000000000..dc91fa69c2b
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 7
\ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/keymap.c b/keyboards/takashicompany/goat51/keymaps/via/keymap.c
new file mode 100644
index 00000000000..6adb87dc32b
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/keymap.c
@@ -0,0 +1,106 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ GOAT51 = SAFE_RANGE,
+ WEB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // 0: JIS-Alphabet
+ LAYOUT(
+ KC_ESC, LT(4, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, LT(3, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ TG(3), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 1: JIS-Num
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 2: JIS-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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: Cursor
+ LAYOUT(
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ TG(3), KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 4: Function
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(5), MO(6), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 5: LED
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case GOAT51:
+ if (record->event.pressed) {
+ SEND_STRING("GOAT51");
+ rgblight_toggle();
+ }
+ return false;
+
+ case WEB:
+ if (record->event.pressed) {
+ SEND_STRING("github.com/takashicompany/goat51");
+ }
+ return false;
+ }
+
+ return true;
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/rules.mk b/keyboards/takashicompany/goat51/keymaps/via/rules.mk
new file mode 100644
index 00000000000..4253f570f0b
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/readme.md b/keyboards/takashicompany/goat51/readme.md
new file mode 100644
index 00000000000..b2edaa157ee
--- /dev/null
+++ b/keyboards/takashicompany/goat51/readme.md
@@ -0,0 +1,40 @@
+# 🐐 GOAT51
+
+![takashicompany/GOAT51](https://i.imgur.com/7xD9a4zh.jpg)
+
+GOAT51は51キーのキーボードです。
+特徴的な放射状のキーレイアウトは指を自然に置くことができ、効率的な入力が可能です。
+MX互換のキースイッチとChoc v1キースイッチの取り付けに対応しております。
+またPCBにキースイッチソケットを取り付けることが可能で、容易にキースイッチの交換ができます。
+キーボードの中央にはお気に入りのキーキャップを取り付ける専用スペースがあり、アルチザンキーキャップやお気に入りのキーキャップを飾ることができます。
+実はそこにはロータリーエンコーダを置くこともできちゃいます。
+
+---
+GOAT51 is a 51-key keyboard.
+The distinctive radial key layout allows the fingers to be placed naturally for efficient typing.
+It supports the installation of MX compatible key switches and Choc v1 key switches.
+A key switch socket can also be installed on the PCB for easy keyswitch replacement.
+There is a dedicated space in the center of the keyboard for mounting your favorite keycaps, allowing you to display Artisan keycaps or your favorite keycaps.
+In fact, you can even place a rotary encoder there.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: GOAT51 PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/goat51
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/goat51:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/goat51: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
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/goat51/rules.mk b/keyboards/takashicompany/goat51/rules.mk
new file mode 100644
index 00000000000..7ff128fa692
--- /dev/null
+++ b/keyboards/takashicompany/goat51/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
\ No newline at end of file