summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--keyboards/ferris/0_1/0_1.c (renamed from keyboards/handwired/ferris/ferris.c)2
-rw-r--r--keyboards/ferris/0_1/0_1.h (renamed from keyboards/handwired/ferris/ferris.h)0
-rw-r--r--keyboards/ferris/0_1/config.h (renamed from keyboards/handwired/ferris/config.h)0
-rw-r--r--keyboards/ferris/0_1/matrix.c (renamed from keyboards/handwired/ferris/matrix.c)0
-rw-r--r--keyboards/ferris/0_1/rules.mk (renamed from keyboards/handwired/ferris/rules.mk)0
-rw-r--r--keyboards/ferris/info.json (renamed from keyboards/handwired/ferris/info.json)0
-rw-r--r--keyboards/ferris/keymaps/default/config.h (renamed from keyboards/handwired/ferris/keymaps/default/config.h)0
-rw-r--r--keyboards/ferris/keymaps/default/keymap.json (renamed from keyboards/handwired/ferris/keymaps/default/keymap.json)0
-rw-r--r--keyboards/ferris/keymaps/default/readme.md (renamed from keyboards/handwired/ferris/keymaps/default/readme.md)0
-rwxr-xr-xkeyboards/ferris/keymaps/json2crab.py (renamed from keyboards/handwired/ferris/keymaps/json2crab.py)0
-rw-r--r--keyboards/ferris/keymaps/pierrec83/config.h39
-rw-r--r--keyboards/ferris/keymaps/pierrec83/keymap.json118
-rw-r--r--keyboards/ferris/keymaps/pierrec83/readme.md43
-rw-r--r--keyboards/ferris/readme.md (renamed from keyboards/handwired/ferris/readme.md)11
-rw-r--r--keyboards/ferris/sweep/config.h74
-rw-r--r--keyboards/ferris/sweep/rules.mk24
-rw-r--r--keyboards/ferris/sweep/sweep.c16
-rw-r--r--keyboards/ferris/sweep/sweep.h47
18 files changed, 369 insertions, 5 deletions
diff --git a/keyboards/handwired/ferris/ferris.c b/keyboards/ferris/0_1/0_1.c
index 0e132fa984..dbdb0b4bdc 100644
--- a/keyboards/handwired/ferris/ferris.c
+++ b/keyboards/ferris/0_1/0_1.c
@@ -14,4 +14,4 @@ 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 "ferris.h"
+#include "0_1.h"
diff --git a/keyboards/handwired/ferris/ferris.h b/keyboards/ferris/0_1/0_1.h
index 4602637ca6..4602637ca6 100644
--- a/keyboards/handwired/ferris/ferris.h
+++ b/keyboards/ferris/0_1/0_1.h
diff --git a/keyboards/handwired/ferris/config.h b/keyboards/ferris/0_1/config.h
index 33494d9273..33494d9273 100644
--- a/keyboards/handwired/ferris/config.h
+++ b/keyboards/ferris/0_1/config.h
diff --git a/keyboards/handwired/ferris/matrix.c b/keyboards/ferris/0_1/matrix.c
index e13c35d358..e13c35d358 100644
--- a/keyboards/handwired/ferris/matrix.c
+++ b/keyboards/ferris/0_1/matrix.c
diff --git a/keyboards/handwired/ferris/rules.mk b/keyboards/ferris/0_1/rules.mk
index 8645dbba0d..8645dbba0d 100644
--- a/keyboards/handwired/ferris/rules.mk
+++ b/keyboards/ferris/0_1/rules.mk
diff --git a/keyboards/handwired/ferris/info.json b/keyboards/ferris/info.json
index ffffb58ecf..ffffb58ecf 100644
--- a/keyboards/handwired/ferris/info.json
+++ b/keyboards/ferris/info.json
diff --git a/keyboards/handwired/ferris/keymaps/default/config.h b/keyboards/ferris/keymaps/default/config.h
index cf0fb7478e..cf0fb7478e 100644
--- a/keyboards/handwired/ferris/keymaps/default/config.h
+++ b/keyboards/ferris/keymaps/default/config.h
diff --git a/keyboards/handwired/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json
index 7f7d614e20..7f7d614e20 100644
--- a/keyboards/handwired/ferris/keymaps/default/keymap.json
+++ b/keyboards/ferris/keymaps/default/keymap.json
diff --git a/keyboards/handwired/ferris/keymaps/default/readme.md b/keyboards/ferris/keymaps/default/readme.md
index 252f886f52..252f886f52 100644
--- a/keyboards/handwired/ferris/keymaps/default/readme.md
+++ b/keyboards/ferris/keymaps/default/readme.md
diff --git a/keyboards/handwired/ferris/keymaps/json2crab.py b/keyboards/ferris/keymaps/json2crab.py
index a32429fae5..a32429fae5 100755
--- a/keyboards/handwired/ferris/keymaps/json2crab.py
+++ b/keyboards/ferris/keymaps/json2crab.py
diff --git a/keyboards/ferris/keymaps/pierrec83/config.h b/keyboards/ferris/keymaps/pierrec83/config.h
new file mode 100644
index 0000000000..cf0fb7478e
--- /dev/null
+++ b/keyboards/ferris/keymaps/pierrec83/config.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2020 Pierre Chevalier <pierrechevalier83@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
+// Set the mouse settings to a comfortable speed/accuracy trade-off,
+// assuming a screen refresh rate of 60 Htz or higher
+// The default is 50. This makes the mouse ~3 times faster and more accurate
+#define MOUSEKEY_INTERVAL 16
+// The default is 20. Since we made the mouse about 3 times faster with the previous setting,
+// give it more time to accelerate to max speed to retain precise control over short distances.
+#define MOUSEKEY_TIME_TO_MAX 40
+// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive
+#define MOUSEKEY_DELAY 100
+// It makes sense to use the same delay for the mouseweel
+#define MOUSEKEY_WHEEL_DELAY 100
+// The default is 100
+#define MOUSEKEY_WHEEL_INTERVAL 50
+// The default is 40
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
+
+// Pick good defaults for enabling homerow modifiers
+#define TAPPING_TERM 200
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_FORCE_HOLD
diff --git a/keyboards/ferris/keymaps/pierrec83/keymap.json b/keyboards/ferris/keymaps/pierrec83/keymap.json
new file mode 100644
index 0000000000..2372e7e372
--- /dev/null
+++ b/keyboards/ferris/keymaps/pierrec83/keymap.json
@@ -0,0 +1,118 @@
+{    "version": 1,
+    "notes": "My awesome keymap",
+    "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
+    "keyboard": "handwired/ferris",
+    "keymap": "pierrec83",
+    "layout": "LAYOUT",
+    "layers": [
+        ["KC_Q"                   , "KC_D"                 , "KC_R"           , "KC_W"                 , "KC_B",
+         "KC_J"                   , "KC_F"                 , "KC_U"           , "KC_P"                 , "KC_SCLN",
+
+         "LSFT_T(KC_A)"           , "LT(6,KC_S)"           , "LT(2,KC_H)"     , "LT(4,KC_T)"           , "KC_G",
+         "KC_Y"                   , "LT(5,KC_N)"           , "LT(3,KC_E)"     , "LT(7,KC_O)"           , "LSFT_T(KC_I)",
+
+         "KC_Z"                   , "LCTL_T(KC_X)"         , "LALT_T(KC_M)"   , "KC_C"                 , "KC_V",
+         "KC_K"                   , "KC_L"                 , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)"       , "KC_SLSH",
+
+         "LCA(KC_UP)"             , "KC_BSPC",
+         "LT(8,KC_SPC)"           , "LCA(KC_DOWN)"
+        ],
+        ["KC_Q"                   , "KC_C"                 , "KC_M"           , "KC_Y"                 , "KC_COLN",
+         "KC_Z"                   , "KC_W"                 , "KC_COMM"        , "KC_U"                 , "KC_J",
+
+         "LSFT_T(KC_R)"           , "LT(6,KC_S)"           , "LT(2,KC_T)"     , "LT(4,KC_H)"           , "KC_X",
+         "KC_TRNS"                , "LT(5,KC_N)"           , "LT(3,KC_A)"     , "LT(7,KC_I)"           , "LSFT_T(KC_O)",
+
+         "KC_B"                   , "LCTL_T(KC_F)"         , "LALT_T(KC_G)"   , "KC_D"                 , "KC_V",
+         "KC_ESC"                 , "KC_L"                 , "LALT_T(KC_DOT)" , "LCTL_T(KC_BSPC)"      , "KC_K",
+
+         "LCA(KC_UP)"             , "KC_E",
+         "LT(8,KC_SPC)"           , "LCA(KC_DOWN)"
+        ],
+        ["KC_TRNS"                , "ANY(LCTL(LSFT(KC_C)))", "KC_TRNS"        , "ANY(LCTL(LSFT(KC_V)))", "KC_TRNS",
+         "KC_TRNS"                , "KC_BTN1"              , "KC_WH_U"        , "KC_BTN2"              , "KC_TRNS",
+
+         "KC_TRNS"                , "KC_BTN2"              , "KC_NO"          , "KC_BTN1"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_MS_L"              , "KC_MS_D"        , "KC_MS_U"              , "KC_MS_R",
+
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_WH_L"              , "KC_WH_D"        , "KC_WH_R"              , "KC_TRNS",
+
+         "ANY(LCTL(LSFT(KC_TAB)))", "KC_TRNS",
+         "KC_TRNS"                , "LCTL(KC_TAB)"
+        ],
+        ["KC_TRNS"                , "KC_TRNS"              , "KC_PGUP"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_LEFT"                , "KC_UP"                , "KC_DOWN"        , "KC_RGHT"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_LGUI"              , "KC_NO"          , "LCTL(KC_LALT)"        , "LCA(KC_LSFT)",
+
+         "KC_TRNS"                , "KC_HOME"              , "KC_PGDN"        , "KC_END"               , "KC_TRNS",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "LGUI(KC_LEFT)"          , "KC_TRNS",
+         "KC_TRNS"                , "LGUI(KC_RGHT)"
+        ],
+        ["KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_UNDS"              , "KC_PIPE"        , "KC_QUOT"              , "KC_TRNS",
+
+         "KC_CIRC"                , "KC_ASTR"              , "KC_AMPR"        , "KC_NO"                , "KC_TRNS",
+         "KC_HASH"                , "KC_TILD"              , "KC_SLSH"        , "KC_DQUO"              , "KC_DLR",
+
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_MINS"              , "KC_BSLS"        , "KC_GRV"               , "KC_TRNS",
+
+         "KC_BRID"                , "KC_TRNS",
+         "KC_TRNS"                , "KC_BRIU"
+        ],
+        ["KC_TRNS"                , "KC_COLN"              , "KC_LT"          , "KC_GT"                , "KC_SCLN",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_LCBR"                , "KC_RCBR"              , "KC_LPRN"        , "KC_RPRN"              , "KC_AT",
+         "KC_TRNS"                , "KC_NO"                , "KC_EQL"         , "KC_PLUS"              , "KC_PERC",
+
+         "KC_TRNS"                , "KC_EXLM"              , "KC_LBRC"        , "KC_RBRC"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_VOLD"                , "KC_TRNS",
+         "KC_TRNS"                , "KC_VOLU"
+        ],
+        ["KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_F7"                , "KC_F8"          , "KC_F9"                , "KC_F10",
+
+         "KC_TRNS"                , "KC_TRNS"              , "LCTL(KC_LALT)"  , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_F4"                , "KC_F5"          , "KC_F6"                , "KC_F11",
+
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "KC_TRNS"                , "KC_F1"                , "KC_F2"          , "KC_F3"                , "KC_F12",
+
+         "KC_TRNS"                , "KC_TRNS",
+         "KC_TRNS"                , "KC_TRNS"
+        ],
+        ["KC_PSLS"                , "KC_7"                 , "KC_8"           , "KC_9"                 , "KC_PPLS",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_0"                   , "KC_1"                 , "KC_2"           , "KC_3"                 , "KC_PMNS",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_NO"                , "KC_TRNS",
+
+         "KC_PAST"                , "KC_4"                 , "KC_5"           , "KC_6"                 , "KC_PEQL",
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_TRNS"                , "KC_TRNS",
+         "KC_TRNS"                , "KC_TRNS"
+        ],
+        ["KC_TRNS"                , "KC_ESC"               , "KC_COLN"        , "KC_TRNS"              , "KC_TRNS",
+         "DF(2)"                  , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_DEL",
+
+         "KC_TRNS"                , "KC_PERC"              , "KC_SLSH"        , "KC_ENT"               , "KC_EXLM",
+         "DF(1)"                  , "KC_LGUI"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+
+         "KC_TRNS"                , "KC_TRNS"              , "KC_TRNS"        , "KC_TRNS"              , "KC_TRNS",
+         "DF(0)"                  , "KC_TRNS"              , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)"       , "RESET",
+
+         "KC_TRNS"                , "KC_TAB",
+         "KC_NO"                  , "KC_TRNS"
+        ]
+    ],
+    "author": "@pierrec83"
+}
diff --git a/keyboards/ferris/keymaps/pierrec83/readme.md b/keyboards/ferris/keymaps/pierrec83/readme.md
new file mode 100644
index 0000000000..d96a3bb811
--- /dev/null
+++ b/keyboards/ferris/keymaps/pierrec83/readme.md
@@ -0,0 +1,43 @@
+@pierrec83's personal keymap for the Ferris keyboard
+====================================================
+
+This keymap shares many commonalities with the default keymap.
+See its readme for a write-up on many of the decisions, including
+how to generate the formatted json file with json2crab.py and the
+general philosophy for each layer.
+
+Because this is my own keymap, I didn't refrain from using shortcuts
+that make sense for me and may not make sense for most.
+
+Key differences from the default keymap include:
+
+Alpha layers:
+-------------
+
+Because I only learned to touch type when I switched from qwerty to workman,
+my base layer is workman and my layout doesn't contain a qwerty layer.
+
+My layer 1 hosts a variant of RSTHD that I am developing, inspired from workman's
+focus on reducing side-index-motion. It should become my end game keymap eventually,
+but I still haven't found the time to learn it to a working proficiency.
+
+Secondary thumbs:
+-----------------
+
+Instead of a placeholder 0 and 1, the secondary thumbs on my keymap
+perform the following actions:
+* Navigate to previous and next workspace the base layer
+* Navigate to previous and next tab on the mouse layer
+* Volume control on layer
+* Brightness control on layer
+
+Mouse layer:
+------------
+
+* Copy/Paste shortcuts on the left hand, on the upper row.
+
+Always available layer:
+-----------------------
+
+* Esc and column are placed differently to allow easy vim navigation with the positions of w and q in the workman base layer
+* Enable permanent switch to the RSTHD layer in addition to the mouse layer
diff --git a/keyboards/handwired/ferris/readme.md b/keyboards/ferris/readme.md
index 23aeca874c..74a08a38fe 100644
--- a/keyboards/handwired/ferris/readme.md
+++ b/keyboards/ferris/readme.md
@@ -6,11 +6,14 @@
 A split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris)
 
 * Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83)
-* Hardware Supported: Ferris PCB
-* Hardware Availability: Still in prototype stage
+* Hardware Supported:
+	* Ferris 0.1 (With atmega32u4 chip. Comes in 4 variants: base, low, high and compact)
+	* Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout)
+* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon.
 
-Make example for this keyboard (after setting up your build environment):
+Make examples for this keyboard (after setting up your build environment):
 
-    make handwired/ferris:default
+    make ferris/0_1:default
+    make ferris/sweep:default:avrdude-split-right
 
 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/ferris/sweep/config.h b/keyboards/ferris/sweep/config.h
new file mode 100644
index 0000000000..ad960610d1
--- /dev/null
+++ b/keyboards/ferris/sweep/config.h
@@ -0,0 +1,74 @@
+/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@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       0xC2AB
+#define PRODUCT_ID      0x3939
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    DPB
+#define PRODUCT         Ferris sweep
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+/*
+ * 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)
+ *                  NO_DIODE = switches are directly connected to AVR pins
+ *
+*/
+#define DIRECT_PINS { \
+    { E6, F7, F6, F5, F4 }, \
+    { B1, B3, B2, B6, D3 }, \
+    { D1, D0, D4, C6, D7 }, \
+    { B4, B5, NO_PIN, NO_PIN, NO_PIN } \
+}
+
+#define DIRECT_PINS_RIGHT  { \
+    { F4, F5, F6, F7, E6 }, \
+    { D3,B6,B2,B3,B1 }, \
+    { D7,C6,D4,D0,D1}, \
+    { B5, B4, NO_PIN, NO_PIN, NO_PIN } \
+}
+
+
+
+#define UNUSED_PINS
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
+
+/* Serial settings */
+#define USE_SERIAL
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+#define EE_HANDS
diff --git a/keyboards/ferris/sweep/rules.mk b/keyboards/ferris/sweep/rules.mk
new file mode 100644
index 0000000000..ce4d52156d
--- /dev/null
+++ b/keyboards/ferris/sweep/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no       # 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
+UNICODE_ENABLE = yes        # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+SPLIT_KEYBOARD = yes        # Use shared split_common code
diff --git a/keyboards/ferris/sweep/sweep.c b/keyboards/ferris/sweep/sweep.c
new file mode 100644
index 0000000000..5b41bad848
--- /dev/null
+++ b/keyboards/ferris/sweep/sweep.c
@@ -0,0 +1,16 @@
+/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@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 "sweep.h"
diff --git a/keyboards/ferris/sweep/sweep.h b/keyboards/ferris/sweep/sweep.h
new file mode 100644
index 0000000000..e8d66ebc67
--- /dev/null
+++ b/keyboards/ferris/sweep/sweep.h
@@ -0,0 +1,47 @@
+/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@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 "quantum.h"
+
+/* This 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.
+ */
+
+// readability
+#define ___ KC_NO
+
+#define LAYOUT( \
+        L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
+        L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
+        L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
+                  L16, L17, R16, R17       \
+    ) \
+    { \
+        { L01, L02, L03, L04, L05 }, \
+        { L06, L07, L08, L09, L10 }, \
+        { L11, L12, L13, L14, L15 }, \
+        { L16, L17, ___, ___ , ___}, \
+        { R01, R02, R03, R04, R05 }, \
+        { R06, R07, R08, R09, R10 }, \
+        { R11, R12, R13, R14, R15 }, \
+        { R16, R17, ___, ___, ___ }  \
+    }
+