summaryrefslogtreecommitdiff
path: root/keyboards/shapeshifter4060
diff options
context:
space:
mode:
authorChuck Lauer Vose <vosechu@gmail.com>2022-01-10 19:53:54 -0500
committerGitHub <noreply@github.com>2022-01-10 16:53:54 -0800
commit101f5044359fed6455bccd9f99afa6d5cbdbbf13 (patch)
tree6d1cd7d06159a5a5505c70af47f893a437a09be1 /keyboards/shapeshifter4060
parentdd4e48b4a274810fc088dc43c1e9be6f0a248f1a (diff)
[Keyboard] Rename Laptreus to Shapeshifter4060 (#15655)
Diffstat (limited to 'keyboards/shapeshifter4060')
-rw-r--r--keyboards/shapeshifter4060/config.h71
-rw-r--r--keyboards/shapeshifter4060/info.json62
-rw-r--r--keyboards/shapeshifter4060/keymaps/debug/keymap.c28
-rw-r--r--keyboards/shapeshifter4060/keymaps/debug/readme.md85
-rw-r--r--keyboards/shapeshifter4060/keymaps/default/keymap.c91
-rw-r--r--keyboards/shapeshifter4060/keymaps/default/readme.md79
-rw-r--r--keyboards/shapeshifter4060/keymaps/vosechu/keymap.c53
-rw-r--r--keyboards/shapeshifter4060/keymaps/vosechu/readme.md82
-rw-r--r--keyboards/shapeshifter4060/readme.md37
-rw-r--r--keyboards/shapeshifter4060/rules.mk17
-rw-r--r--keyboards/shapeshifter4060/shapeshifter4060.c18
-rw-r--r--keyboards/shapeshifter4060/shapeshifter4060.h34
12 files changed, 657 insertions, 0 deletions
diff --git a/keyboards/shapeshifter4060/config.h b/keyboards/shapeshifter4060/config.h
new file mode 100644
index 0000000000..c8953821a7
--- /dev/null
+++ b/keyboards/shapeshifter4060/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+
+#define VENDOR_ID 0x1209 // pid.codes Vendor ID
+#define PRODUCT_ID 0xA1F1 // Shapeshifter 4060: https://pid.codes/1209/A1F1/
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Vosechu
+#define PRODUCT Shapeshifter 4060
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D0, D1, B1, B3, B2, B6, B5, B4, E6, D7, C6, D4 }
+#define UNUSED_PINS { D2, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* 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
+
+/*
+ * 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
+// #define NO_ACTION_MACRO
+// #define NO_ACTION_FUNCTION
diff --git a/keyboards/shapeshifter4060/info.json b/keyboards/shapeshifter4060/info.json
new file mode 100644
index 0000000000..5ec2bc2b03
--- /dev/null
+++ b/keyboards/shapeshifter4060/info.json
@@ -0,0 +1,62 @@
+{
+ "keyboard_name": "Shapeshifter 4060",
+ "url": "kitsunekeyboards.com",
+ "maintainer": "vosechu",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.67},
+ {"x":1, "y":0.67},
+ {"x":2, "y":0.33},
+ {"x":3, "y":0},
+ {"x":4, "y":0.33},
+ {"x":5, "y":0.33},
+ {"x":8, "y":0.33},
+ {"x":9, "y":0.33},
+ {"x":10, "y":0},
+ {"x":11, "y":0.33},
+ {"x":12, "y":0.67},
+ {"x":13, "y":0.67},
+
+ {"x":0, "y":1.67},
+ {"x":1, "y":1.67},
+ {"x":2, "y":1.33},
+ {"x":3, "y":1},
+ {"x":4, "y":1.33},
+ {"x":5, "y":1.33},
+ {"x":8, "y":1.33},
+ {"x":9, "y":1.33},
+ {"x":10, "y":1},
+ {"x":11, "y":1.33},
+ {"x":12, "y":1.67},
+ {"x":13, "y":1.67},
+
+ {"x":0, "y":2.67},
+ {"x":1, "y":2.67},
+ {"x":2, "y":2.33},
+ {"x":3, "y":2},
+ {"x":4, "y":2.33},
+ {"x":5, "y":2.33},
+ {"x":8, "y":2.33},
+ {"x":9, "y":2.33},
+ {"x":10, "y":2},
+ {"x":11, "y":2.33},
+ {"x":12, "y":2.67},
+ {"x":13, "y":2.67},
+
+ {"x":0, "y":3.67},
+ {"x":1, "y":3.67},
+ {"x":2, "y":3.67},
+ {"x":3, "y":3.67},
+ {"x":4.5, "y":3.42},
+ {"x":5.5, "y":3.67},
+ {"x":7.5, "y":3.67},
+ {"x":8.5, "y":3.42},
+ {"x":10, "y":3.67},
+ {"x":11, "y":3.67},
+ {"x":12, "y":3.67},
+ {"x":13, "y":3.67}
+ ]
+ }
+ }
+}
diff --git a/keyboards/shapeshifter4060/keymaps/debug/keymap.c b/keyboards/shapeshifter4060/keymaps/debug/keymap.c
new file mode 100644
index 0000000000..06f9d8ea8f
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/debug/keymap.c
@@ -0,0 +1,28 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* ============================= DEBUG LAYER ============================= */
+ [0] = LAYOUT(
+ KC_A, KC_1, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_2, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_3, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_4, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/debug/readme.md b/keyboards/shapeshifter4060/keymaps/debug/readme.md
new file mode 100644
index 0000000000..3dcbc27ae7
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/debug/readme.md
@@ -0,0 +1,85 @@
+# Debug layout
+
+This layout is expressly for debugging to see if your keys are working.
+
+## Flashing
+
+**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
+
+To compile and flash to the board:
+
+ make shapeshifter4060:debug:avrdude
+
+If you want to use this with a Proton C, do this instead:
+
+ make shapeshifter4060:debug CTPC=yes
+
+To just compile:
+
+ make shapeshifter4060:debug
+
+Then use QMK toolbox to write the file
+
+# Testing
+
+Now that you've got the image flashed, do the following:
+
+* Open a new text document
+* Click each key in order and hit enter (with the other keyboard) between each line
+* For any keys that don't register, hit space (with the other keyboard) and continue on
+* You'll end up with something looking like this:
+
+ a1bcdefghijkl
+ a2bcdefghijkl
+ a3bcdefghijkl
+ a4bcdefghijkl
+
+But almost certainly it won't be perfect, so lets go through some scenarios:
+
+## Step 1: Get all the letters to output _something_
+
+For lines that look like this:
+
+ a1bc efg ijkl
+
+* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
+* Option 2: Broken joint on hotswap - If the pin looks okay, try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out. If it does, reflow (aka, apply some flux to both pads and reheat) the solder joint.
+* Option 3: Diode is backwards - If connecting the two metal pins didn't work, double check that the diode is the right direction. This may also need to be reflowed.
+* Option 4: ??? - Hop in [the discord]() and let's chat!
+
+## Step 2: Correct double letters
+
+Once you have all the keys outputting _anything_, flash the default layout and do the same thing. If everything is working, your layout will look something like this:
+
+ qwertyuiop
+ asdfghjkl;'
+ zxcvbnm,./
+
+**Note**: Don't worry about hitting the backspace or command keys
+
+### Duplicate letters
+
+For lines that look like this:
+
+ qwertyyuiop (double y)
+
+* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
+* Option 2: Switch is broken - Try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out just once. If it does, the switch is broken and should be replaced. If you don't have another switch, you _may_ be able to unbend the leaf inside the switch, but it's really tricky.
+
+### Second letter sent (same row)
+
+For lines that look like this:
+
+ qwertyyuiop (t sent t AND y)
+
+* Option 1: ??? - I can't imagine how this would happen with this layout, but let me know if it does!
+
+### Second letter sent (same column)
+
+For lines that look like this:
+
+ qwertgyuiop (t sent t AND g)
+ qwertgbyuiop (t sent t AND g AND b)
+
+* Option 1: Diodes are backwards - Some of the diodes on this column are backwards, you can use a diode tester to confirm the direction, or just check them with a magnifying glass and switch them if needed.
+* Option 2: ???
diff --git a/keyboards/shapeshifter4060/keymaps/default/keymap.c b/keyboards/shapeshifter4060/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e390b5a36f
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/default/keymap.c
@@ -0,0 +1,91 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QWERTY = 0,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _LIFT
+};
+
+// Fillers to make layering more clear
+#define _LAYER_ KC_TRNS
+
+// Adding macros to make the keymaps below much easier to read.
+#define CTL_ESC CTL_T(KC_ESC)
+#define CTL_GRV CTL_T(KC_GRV)
+#define ALT_TAB ALT_T(KC_TAB)
+#define SFT_SPC SFT_T(KC_SPC)
+
+// Extended alpha key layers
+#define RSE_J LT(_RAISE, KC_J)
+#define LWR_F LT(_LOWER, KC_F)
+#define RSE_H LT(_RAISE, KC_H)
+#define LWR_U LT(_LOWER, KC_U)
+#define LFT_BK LT(_LIFT, KC_BSPC)
+#define LFT_ENT LT(_LIFT, KC_ENT)
+
+// Macro keys for some apps
+#define SLACKUP LALT(LSFT(KC_UP))
+#define SLACKDN LALT(LSFT(KC_DOWN))
+#define TAB_LFT LGUI(LSFT(KC_LBRC))
+#define TAB_RGT LGUI(LSFT(KC_RBRC))
+#define BWSR_BK LGUI(KC_LBRC)
+#define BWSR_FW LGUI(KC_RBRC)
+#define SCR_LFT HYPR(KC_LEFT)
+#define SCR_RGT HYPR(KC_RGHT)
+#define SCR_FUL HYPR(KC_F)
+
+// Layer toggles
+#define TO_QW TO(_QWERTY)
+#define TO_DV TO(_DVORAK)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
+ KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [_DVORAK] = LAYOUT(
+ KC_TAB , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSPC ,
+ KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , KC_SLSH ,
+ KC_LSFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [_LOWER] = LAYOUT(
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_DOT , _______ , _______
+ ),
+ [_RAISE] = LAYOUT(
+ _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , KC_EQL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , KC_MINS , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSLS , KC_SLSH , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+ ),
+ [_LIFT] = LAYOUT(
+ _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
+ _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO_QW , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO_DV , _______ ,
+ _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/default/readme.md b/keyboards/shapeshifter4060/keymaps/default/readme.md
new file mode 100644
index 0000000000..9dbe80e645
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/default/readme.md
@@ -0,0 +1,79 @@
+# Default layout
+
+This is the default layout for the Shapeshifter 4060
+
+## Layout
+
+Some special things:
+
+* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
+* Enter and Backspace also activate the Lift layer.
+* -- To get repeated backspace, hold BkLft and then press Shift
+
+### Qwerty
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Dvorak
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | / |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| ; | Q | J | K | X | B | M | W | V | Z | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Raise
+
+ ,-----------------------------------------------------------------------------------.
+ | | < | > | { | } | | | | | | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | ( | ) | [ | ] | | | | | | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | | | | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space|EntLft| | | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lower
+
+ ,-----------------------------------------------------------------------------------.
+ | | | | | | | | 7 | 8 | 9 | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | | | | | | 4 | 5 | 6 | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | 1 | 2 | 3 | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lift
+
+ ,-----------------------------------------------------------------------------------.
+ | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
+ `-----------------------------------------------------------------------------------'
+
+Special things:
+
+* Hist: Back button in your browser
+* Tab: Move one tab left/right in most mac apps
+* Slk: Go to the previous/next unread conversation in Slack
+* Scr: Make this app fill the left/right side of your monitor (or full screen)
+* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
new file mode 100644
index 0000000000..eb04506ec0
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#include "vosechu.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [DV] = LAYOUT(
+ PAWFIVE , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , RESET ,
+ KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , XXXXXXX ,
+ XXXXXXX , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
+ XXXXXXX , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_MINS , KC_EQL , KC_SLSH , KC_BSLS
+ ),
+ [QW] = LAYOUT(
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
+ KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [LWR] = LAYOUT(
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_0 , KC_DOT , _______ , _______
+ ),
+ [RSE] = LAYOUT(
+ _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+ ),
+ [LFT] = LAYOUT(
+ _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
+ _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO(QW) , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO(DV) , _______ ,
+ _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/vosechu/readme.md b/keyboards/shapeshifter4060/keymaps/vosechu/readme.md
new file mode 100644
index 0000000000..a438e5536d
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/vosechu/readme.md
@@ -0,0 +1,82 @@
+# Vosechu layout
+
+This is my personal layout for the Shapeshifter. It's taken a long time to get
+to this point, but I think there are some things that are cool and special about
+it.
+
+## Layout
+
+Some special things:
+
+* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
+* Enter and Backspace also activate the Lift layer.
+* -- To get repeated backspace, hold BkLft and then press Shift
+
+
+### Dvorak
+
+ ,-----------------------------------------------------------------------------------.
+ | Nada | ' | , | . | P | Y | F | G | C | R | L | Reset|
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | Nada |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Nada | ; | Q | J | K | X | B | M | W | V | Z | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Nada |Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| - | = | / | \ |
+ `-----------------------------------------------------------------------------------'
+
+### Qwerty
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Back |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Raise
+
+ ,-----------------------------------------------------------------------------------.
+ | | < | > | { | } | | | | | | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | ( | ) | [ | ] | | | | | | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | | | | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space|EntLft| | | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lower
+
+ ,-----------------------------------------------------------------------------------.
+ | | | | | | | | 7 | 8 | 9 | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | | | | | | 4 | 5 | 6 | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | 1 | 2 | 3 | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lift
+
+ ,-----------------------------------------------------------------------------------.
+ | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
+ `-----------------------------------------------------------------------------------'
+
+Special things:
+
+* Hist: Back button in your browser
+* Tab: Move one tab left/right in most mac apps
+* Slk: Go to the previous/next unread conversation in Slack
+* Scr: Make this app fill the left/right side of your monitor (or full screen)
+* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/shapeshifter4060/readme.md b/keyboards/shapeshifter4060/readme.md
new file mode 100644
index 0000000000..2f134ce15b
--- /dev/null
+++ b/keyboards/shapeshifter4060/readme.md
@@ -0,0 +1,37 @@
+Shapeshifter 4060
+![Shapeshifter 4060](#TODO)
+
+The Shapeshifter 4060 is a 40% keyboard that takes inspiration from the Atreus and makes it accessible by putting it on a standard-sized 60% keyboard pcb. Ergonomics should be accessible by anyone!
+
+Keyboard Maintainer: [Chuck Lauer Vose](https://github.com/vosechu)
+Hardware Supported: Kitsune Shapeshifter 4060 (v3.0.3) with a Pro Micro Compatible board / Proton C
+Hardware Availability: GB coming soon
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shapeshifter4060:default
+
+For use with the Proton C
+
+ make shapeshifter4060:default CTPC=yes
+
+Flashing example for this keyboard:
+
+ make shapeshifter4060: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:
+
+- **Physical reset button**: Briefly press the button on the top of the PCB
+- **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+## Changelog
+
+v3.0.3: Complete rewrite using a standard pro micro pinout.
+
+## Build log
+
+https://docs.google.com/document/d/1ml2rBdiO6GhrUx2HyLqip0i24bCU8d-fQR8adSEPWzQ/edit
diff --git a/keyboards/shapeshifter4060/rules.mk b/keyboards/shapeshifter4060/rules.mk
new file mode 100644
index 0000000000..00cb7fbcf7
--- /dev/null
+++ b/keyboards/shapeshifter4060/rules.mk
@@ -0,0 +1,17 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+KEY_LOCK_ENABLE = no
diff --git a/keyboards/shapeshifter4060/shapeshifter4060.c b/keyboards/shapeshifter4060/shapeshifter4060.c
new file mode 100644
index 0000000000..abe6d65e76
--- /dev/null
+++ b/keyboards/shapeshifter4060/shapeshifter4060.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "shapeshifter4060.h"
diff --git a/keyboards/shapeshifter4060/shapeshifter4060.h b/keyboards/shapeshifter4060/shapeshifter4060.h
new file mode 100644
index 0000000000..0c5bd7e089
--- /dev/null
+++ b/keyboards/shapeshifter4060/shapeshifter4060.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
+ k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
+ k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \
+ k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11 }, \
+ { k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23 }, \
+ { k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35 }, \
+ { k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 }, \
+}