summary refs log tree commit diff
diff options
context:
space:
mode:
authoryfuku <30647434+yfuku@users.noreply.github.com>2021-07-04 01:04:30 +0900
committerGitHub <noreply@github.com>2021-07-03 09:04:30 -0700
commit3b1506b74119cf45927fcd25a230e79fbf7531b3 (patch)
treeff80367775001b9db0b2efc60ff30d01e5a79fbc
parentbec74aec1bb2f8bb4c0f387a7b03ba56886160a8 (diff)
[Keyboard] Add wings42 keyboard (#12734)
Co-authored-by: Drashna Jaelre <drashna@live.com>
-rw-r--r--keyboards/wings42/config.h21
-rw-r--r--keyboards/wings42/readme.md19
-rw-r--r--keyboards/wings42/rev1/config.h152
-rw-r--r--keyboards/wings42/rev1/keymaps/default/keymap.c81
-rw-r--r--keyboards/wings42/rev1/keymaps/default/readme.md1
-rw-r--r--keyboards/wings42/rev1/keymaps/via/keymap.c81
-rw-r--r--keyboards/wings42/rev1/keymaps/via/rules.mk1
-rw-r--r--keyboards/wings42/rev1/readme.md21
-rw-r--r--keyboards/wings42/rev1/rev1.c17
-rw-r--r--keyboards/wings42/rev1/rev1.h44
-rw-r--r--keyboards/wings42/rev1/rules.mk0
-rw-r--r--keyboards/wings42/rev1_extkeys/config.h152
-rw-r--r--keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c81
-rw-r--r--keyboards/wings42/rev1_extkeys/keymaps/default/readme.md1
-rw-r--r--keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c81
-rw-r--r--keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk1
-rw-r--r--keyboards/wings42/rev1_extkeys/readme.md21
-rw-r--r--keyboards/wings42/rev1_extkeys/rev1_extkeys.c17
-rw-r--r--keyboards/wings42/rev1_extkeys/rev1_extkeys.h48
-rw-r--r--keyboards/wings42/rev1_extkeys/rules.mk0
-rw-r--r--keyboards/wings42/rules.mk26
-rw-r--r--keyboards/wings42/wings42.c17
-rw-r--r--keyboards/wings42/wings42.h26
23 files changed, 909 insertions, 0 deletions
diff --git a/keyboards/wings42/config.h b/keyboards/wings42/config.h
new file mode 100644
index 0000000000..cfb6bf4ffc
--- /dev/null
+++ b/keyboards/wings42/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+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"
diff --git a/keyboards/wings42/readme.md b/keyboards/wings42/readme.md
new file mode 100644
index 0000000000..fc71d58ab6
--- /dev/null
+++ b/keyboards/wings42/readme.md
@@ -0,0 +1,19 @@
+# wings42
+
+![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg)
+
+A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
+
+* Keyboard Maintainer: [yfuku](https://github.com/yfuku)
+* Hardware Supported: wings42 PCB, Pro Micro
+* Hardware Availability: https://yfuku.booth.pm/
+
+Make example for this keyboard (after setting up your build environment):
+
+    make wings42:default
+
+Flashing example for this keyboard:
+
+    make wings42: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).
diff --git a/keyboards/wings42/rev1/config.h b/keyboards/wings42/rev1/config.h
new file mode 100644
index 0000000000..cfb4274921
--- /dev/null
+++ b/keyboards/wings42/rev1/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 yfuku
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5946 // YF
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yfuku
+#define PRODUCT      wings42
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+/*
+ * 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)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2  // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//#    define RGBLED_NUM 16
+//#    define RGBLIGHT_HUE_STEP 8
+//#    define RGBLIGHT_SAT_STEP 8
+//#    define RGBLIGHT_VAL_STEP 8
+//#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//#    define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//#    define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//#    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
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//#    define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//#    define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
+//#    define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* 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
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * 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
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/wings42/rev1/keymaps/default/keymap.c b/keyboards/wings42/rev1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..442ba5ed9f
--- /dev/null
+++ b/keyboards/wings42/rev1/keymaps/default/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+    _QWERTY = 0,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT_split_3x6_3(
+    //,--------+--------+---------+--------+---------+--------.   ,--------+---------+--------+---------+--------+--------.
+       KC_ESC , KC_Q   , KC_W    , KC_E   , KC_R    , KC_T   ,     KC_Y   , KC_U    , KC_I   , KC_O    , KC_P   , KC_MINS,
+    //|--------+--------+---------+--------+---------+--------|   |--------+---------+--------+---------+--------+--------|
+      KC_G_TAB, KC_A   , KC_S    , KC_D   , KC_F    , KC_G   ,     KC_H   , KC_J    , KC_K   , KC_L    , KC_SCLN, KC_G_BS ,
+    //|--------+--------+---------+--------+---------+--------|   |--------+---------+--------+---------+--------+--------|
+       KC_LCTL, KC_Z   , KC_X    , KC_C   , KC_V    , KC_B   ,     KC_N   , KC_M    , KC_COMM, KC_DOT  , KC_SLSH, KC_RCTL,
+    //`--------+--------+---------+--------+---------+--------/   \--------+---------+--------+---------+--------+--------'
+                                  KC_A_DEL, KC_S_EN ,KC_L_SPC,    KC_R_ENT, KC_S_JA , KC_A_DEL
+    //                           `+--------+---------+--------'   `--------+---------+--------+'
+    ),
+
+    [_RAISE] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE,     KC_AT  , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD,     KC_LEFT, KC_DOWN,  KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, KC_LCBR, KC_LBRC,     KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,     _______, _______, RESET
+    //                          `+--------+--------+--------'   `--------+---------+--------+'
+    ),
+
+    [_LOWER] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  ,     _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,     KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 ,     _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  RESET  , _______, _______,     _______, _______, _______
+    //                          `+--------+--------+--------'   `--------+--------+--------+'
+    ),
+
+    [_ADJUST] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,     _______, _______, _______
+    //                          `+--------+--------+--------'   `--------+--------+--------+'
+    ),
+};
diff --git a/keyboards/wings42/rev1/keymaps/default/readme.md b/keyboards/wings42/rev1/keymaps/default/readme.md
new file mode 100644
index 0000000000..d99098ad0c
--- /dev/null
+++ b/keyboards/wings42/rev1/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for wings42
diff --git a/keyboards/wings42/rev1/keymaps/via/keymap.c b/keyboards/wings42/rev1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..442ba5ed9f
--- /dev/null
+++ b/keyboards/wings42/rev1/keymaps/via/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+    _QWERTY = 0,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT_split_3x6_3(
+    //,--------+--------+---------+--------+---------+--------.   ,--------+---------+--------+---------+--------+--------.
+       KC_ESC , KC_Q   , KC_W    , KC_E   , KC_R    , KC_T   ,     KC_Y   , KC_U    , KC_I   , KC_O    , KC_P   , KC_MINS,
+    //|--------+--------+---------+--------+---------+--------|   |--------+---------+--------+---------+--------+--------|
+      KC_G_TAB, KC_A   , KC_S    , KC_D   , KC_F    , KC_G   ,     KC_H   , KC_J    , KC_K   , KC_L    , KC_SCLN, KC_G_BS ,
+    //|--------+--------+---------+--------+---------+--------|   |--------+---------+--------+---------+--------+--------|
+       KC_LCTL, KC_Z   , KC_X    , KC_C   , KC_V    , KC_B   ,     KC_N   , KC_M    , KC_COMM, KC_DOT  , KC_SLSH, KC_RCTL,
+    //`--------+--------+---------+--------+---------+--------/   \--------+---------+--------+---------+--------+--------'
+                                  KC_A_DEL, KC_S_EN ,KC_L_SPC,    KC_R_ENT, KC_S_JA , KC_A_DEL
+    //                           `+--------+---------+--------'   `--------+---------+--------+'
+    ),
+
+    [_RAISE] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE,     KC_AT  , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD,     KC_LEFT, KC_DOWN,  KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, KC_LCBR, KC_LBRC,     KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,     _______, _______, RESET
+    //                          `+--------+--------+--------'   `--------+---------+--------+'
+    ),
+
+    [_LOWER] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  ,     _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,     KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 ,     _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  RESET  , _______, _______,     _______, _______, _______
+    //                          `+--------+--------+--------'   `--------+--------+--------+'
+    ),
+
+    [_ADJUST] = LAYOUT_split_3x6_3(
+    //,--------+--------+--------+--------+--------+--------.   ,--------+--------+--------+--------+--------+--------.
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/   \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,     _______, _______, _______
+    //                          `+--------+--------+--------'   `--------+--------+--------+'
+    ),
+};
diff --git a/keyboards/wings42/rev1/keymaps/via/rules.mk b/keyboards/wings42/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wings42/rev1/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wings42/rev1/readme.md b/keyboards/wings42/rev1/readme.md
new file mode 100644
index 0000000000..158372feb4
--- /dev/null
+++ b/keyboards/wings42/rev1/readme.md
@@ -0,0 +1,21 @@
+# wings42
+
+![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg)
+
+A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
+
+* Keyboard Maintainer: [yfuku](https://github.com/yfuku)
+* Hardware Supported: wings42 PCB, Pro Micro
+* Hardware Availability: https://yfuku.booth.pm/
+
+Make example for this keyboard (after setting up your build environment):
+
+    make wings42:default
+
+Flashing example for this keyboard:
+
+    make wings42: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).
+
+A build guide for this keyboard can be found here: [wings42 build guide](https://yfuku.com/wings42/buildguide/)
diff --git a/keyboards/wings42/rev1/rev1.c b/keyboards/wings42/rev1/rev1.c
new file mode 100644
index 0000000000..dccf24c746
--- /dev/null
+++ b/keyboards/wings42/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yfuku
+ *
+ * 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 "rev1.h"
diff --git a/keyboards/wings42/rev1/rev1.h b/keyboards/wings42/rev1/rev1.h
new file mode 100644
index 0000000000..cd6e35a711
--- /dev/null
+++ b/keyboards/wings42/rev1/rev1.h
@@ -0,0 +1,44 @@
+/* Copyright 2021 yfuku
+ *
+ * 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"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_split_3x6_3( \
+    L00, L01, L02, L03, L04, L05,           R00, R01, R02, R03, R04, R05, \
+    L10, L11, L12, L13, L14, L15,           R10, R11, R12, R13, R14, R15, \
+    L20, L21, L22, L23, L24, L25,           R20, R21, R22, R23, R24, R25, \
+                        L30, L31, L32, R30, R31, R32 \
+    ) \
+    { \
+        { L00, L01, L02, L03, L04, L05 }, \
+        { L10, L11, L12, L13, L14, L15 }, \
+        { L20, L21, L22, L23, L24, L25 }, \
+        { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \
+        { R05, R04, R03, R02, R01, R00 }, \
+        { R15, R14, R13, R12, R11, R10 }, \
+        { R25, R24, R23, R22, R21, R20 }, \
+        { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \
+    }
diff --git a/keyboards/wings42/rev1/rules.mk b/keyboards/wings42/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/wings42/rev1/rules.mk
diff --git a/keyboards/wings42/rev1_extkeys/config.h b/keyboards/wings42/rev1_extkeys/config.h
new file mode 100644
index 0000000000..f0f04eca59
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 yfuku
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5946 // YF
+#define PRODUCT_ID 0x0004
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yfuku
+#define PRODUCT      wings42 extkeys
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#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)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B2, B4 }
+#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4, B6, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2  // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//#    define RGBLED_NUM 16
+//#    define RGBLIGHT_HUE_STEP 8
+//#    define RGBLIGHT_SAT_STEP 8
+//#    define RGBLIGHT_VAL_STEP 8
+//#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//#    define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//#    define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//#    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
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//#    define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//#    define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
+//#    define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* 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
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * 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
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c b/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c
new file mode 100644
index 0000000000..64a2b00c31
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+    _QWERTY = 0,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT(
+    //,--------+--------+---------+--------+---------+--------.                    ,--------+---------+--------+---------+--------+--------.
+       KC_ESC , KC_Q   , KC_W    , KC_E   , KC_R    , KC_T   ,                      KC_Y   , KC_U    , KC_I   , KC_O    , KC_P   , KC_MINS,
+    //|--------+--------+---------+--------+---------+--------|                    |--------+---------+--------+---------+--------+--------|
+      KC_G_TAB, KC_A   , KC_S    , KC_D   , KC_F    , KC_G   ,   KC_DEL,  KC_DEL,   KC_H   , KC_J    , KC_K   , KC_L    , KC_SCLN, KC_G_BS ,
+    //|--------+--------+---------+--------+---------+--------|                    |--------+---------+--------+---------+--------+--------|
+       KC_LCTL, KC_Z   , KC_X    , KC_C   , KC_V    , KC_B   ,   KC_BSPC, KC_BSPC,  KC_N   , KC_M    , KC_COMM, KC_DOT  , KC_SLSH, KC_RCTL,
+    //`--------+--------+---------+--------+---------+--------/                    \--------+---------+--------+---------+--------+--------'
+                                  KC_A_DEL, KC_S_EN ,KC_L_SPC,                      KC_R_ENT, KC_S_JA , KC_A_DEL
+    //                           `+--------+---------+--------'                    `--------+---------+--------+'
+    ),
+
+    [_RAISE] = LAYOUT(
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE,                        KC_AT  , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD,     _______, _______,  KC_LEFT, KC_DOWN,  KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, KC_LCBR, KC_LBRC,     _______, _______,  KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,                        _______, _______, RESET
+    //                          `+--------+--------+--------'                      `--------+---------+--------+'
+    ),
+
+    [_LOWER] = LAYOUT(
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  ,                        _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,    _______, _______,   KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 ,    _______, _______,   _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  RESET  , _______, _______,                        _______, _______, _______
+    //                          `+--------+--------+--------'                      `--------+--------+--------+'
+    ),
+
+    [_ADJUST] = LAYOUT(
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       _______, _______, _______, _______, _______, _______,                        _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,    _______, _______,   _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,    _______, _______,   _______, _______, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,                        _______, _______, _______
+    //                          `+--------+--------+--------'                      `--------+--------+--------+'
+    ),
+};
diff --git a/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md b/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md
new file mode 100644
index 0000000000..d99098ad0c
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for wings42
diff --git a/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c b/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c
new file mode 100644
index 0000000000..97c77e182b
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+    _QWERTY = 0,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT( \
+    //,--------+--------+---------+--------+---------+--------.                    ,--------+---------+--------+---------+--------+--------.
+       KC_ESC , KC_Q   , KC_W    , KC_E   , KC_R    , KC_T   ,                      KC_Y   , KC_U    , KC_I   , KC_O    , KC_P   , KC_MINS,
+    //|--------+--------+---------+--------+---------+--------|                    |--------+---------+--------+---------+--------+--------|
+      KC_G_TAB, KC_A   , KC_S    , KC_D   , KC_F    , KC_G   ,   KC_DEL,  KC_DEL,   KC_H   , KC_J    , KC_K   , KC_L    , KC_SCLN, KC_G_BS ,
+    //|--------+--------+---------+--------+---------+--------|                    |--------+---------+--------+---------+--------+--------|
+       KC_LCTL, KC_Z   , KC_X    , KC_C   , KC_V    , KC_B   ,   KC_BSPC, KC_BSPC,  KC_N   , KC_M    , KC_COMM, KC_DOT  , KC_SLSH, KC_RCTL,
+    //`--------+--------+---------+--------+---------+--------/                    \--------+---------+--------+---------+--------+--------'
+                                  KC_A_DEL, KC_S_EN ,KC_L_SPC,                      KC_R_ENT, KC_S_JA , KC_A_DEL
+    //                           `+--------+---------+--------'                    `--------+---------+--------+'
+    ),
+
+    [_RAISE] = LAYOUT( \
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE,                        KC_AT  , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD,     _______, _______,  KC_LEFT, KC_DOWN,  KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, KC_LCBR, KC_LBRC,     _______, _______,  KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,                        _______, _______, RESET
+    //                          `+--------+--------+--------'                      `--------+---------+--------+'
+    ),
+
+    [_LOWER] = LAYOUT( \
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  , KC_F6  ,                        _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,    _______, _______,   KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       KC_F7  , KC_F8  , KC_F9  , KC_F10 , KC_F11 , KC_F12 ,    _______, _______,   _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  RESET  , _______, _______,                        _______, _______, _______
+    //                          `+--------+--------+--------'                      `--------+--------+--------+'
+    ),
+
+    [_ADJUST] = LAYOUT( \
+    //,--------+--------+--------+--------+--------+--------.                      ,--------+--------+--------+--------+--------+--------.
+       _______, _______, _______, _______, _______, _______,                        _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,    _______, _______,   _______, _______, _______, _______, _______, _______,
+    //|--------+--------+--------+--------+--------+--------|                      |--------+--------+--------+--------+--------+--------|
+       _______, _______, _______, _______, _______, _______,    _______, _______,   _______, _______, _______, _______, _______, _______,
+    //`--------+--------+--------+--------+--------+--------/                      \--------+--------+--------+--------+--------+--------'
+                                  _______, _______, _______,                        _______, _______, _______
+    //                          `+--------+--------+--------'                      `--------+--------+--------+'
+    ),
+};
diff --git a/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk b/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wings42/rev1_extkeys/readme.md b/keyboards/wings42/rev1_extkeys/readme.md
new file mode 100644
index 0000000000..7be464a141
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/readme.md
@@ -0,0 +1,21 @@
+# wings42
+
+![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg)
+
+A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
+
+* Keyboard Maintainer: [yfuku](https://github.com/yfuku)
+* Hardware Supported: wings42 PCB, Pro Micro
+* Hardware Availability: https://yfuku.booth.pm/
+
+Make example for this keyboard (after setting up your build environment):
+
+    make make wings42/rev1_extkeys:default
+
+Flashing example for this keyboard:
+
+    make make wings42/rev1_extkeys: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).
+
+A build guide for this keyboard can be found here: [wings42 build guide](https://yfuku.com/wings42/buildguide/)
diff --git a/keyboards/wings42/rev1_extkeys/rev1_extkeys.c b/keyboards/wings42/rev1_extkeys/rev1_extkeys.c
new file mode 100644
index 0000000000..3d0d203704
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/rev1_extkeys.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yfuku
+ *
+ * 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 "rev1_extkeys.h"
diff --git a/keyboards/wings42/rev1_extkeys/rev1_extkeys.h b/keyboards/wings42/rev1_extkeys/rev1_extkeys.h
new file mode 100644
index 0000000000..2ad58047f1
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/rev1_extkeys.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 yfuku
+ *
+ * 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"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+    L00, L01, L02, L03, L04, L05,           R00, R01, R02, R03, R04, R05, \
+    L10, L11, L12, L13, L14, L15, E01, E03, R10, R11, R12, R13, R14, R15, \
+    L20, L21, L22, L23, L24, L25, E02, E04, R20, R21, R22, R23, R24, R25, \
+                        L30, L31, L32, R30, R31, R32 \
+    ) \
+    { \
+        { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO }, \
+        { L10, L11, L12, L13, L14, L15, KC_NO, KC_NO }, \
+        { L20, L21, L22, L23, L24, L25, KC_NO, KC_NO }, \
+        { KC_NO, KC_NO, KC_NO, L30, L31, L32, KC_NO, KC_NO }, \
+        { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E02, KC_NO }, \
+        { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E01 }, \
+        { R05, R04, R03, R02, R01, R00, KC_NO, KC_NO }, \
+        { R15, R14, R13, R12, R11, R10, KC_NO, KC_NO }, \
+        { R25, R24, R23, R22, R21, R20, KC_NO, KC_NO }, \
+        { KC_NO, KC_NO, KC_NO, R32, R31, R30, KC_NO, KC_NO }, \
+        { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E04, KC_NO}, \
+        { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E03} \
+    }
diff --git a/keyboards/wings42/rev1_extkeys/rules.mk b/keyboards/wings42/rev1_extkeys/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/rules.mk
diff --git a/keyboards/wings42/rules.mk b/keyboards/wings42/rules.mk
new file mode 100644
index 0000000000..82fa227ad8
--- /dev/null
+++ b/keyboards/wings42/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no            # USB Nkey Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = wings42/rev1
diff --git a/keyboards/wings42/wings42.c b/keyboards/wings42/wings42.c
new file mode 100644
index 0000000000..824b6cfbb6
--- /dev/null
+++ b/keyboards/wings42/wings42.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yfuku
+ *
+ * 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 "wings42.h"
diff --git a/keyboards/wings42/wings42.h b/keyboards/wings42/wings42.h
new file mode 100644
index 0000000000..07c8823409
--- /dev/null
+++ b/keyboards/wings42/wings42.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 yfuku
+ *
+ * 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"
+
+#ifdef KEYBOARD_wings42_rev1
+#    include "rev1.h"
+#endif
+#ifdef KEYBOARD_wings42_rev1_extkeys
+#    include "rev1_extkeys.h"
+#endif