summary refs log tree commit diff
path: root/keyboards/splitty
diff options
context:
space:
mode:
authorNicolas Schodet <nico@ni.fr.eu.org>2021-02-09 18:10:54 +0100
committerGitHub <noreply@github.com>2021-02-09 09:10:54 -0800
commit7d5902752ee8088b04763bce2d950ab61be730f2 (patch)
treef50206111c0e25b807e76e68820eecbb577dbaef /keyboards/splitty
parent4107856b70eb686d2e151254ca73adf522312c49 (diff)
[Keyboard] Add Splitty keyboard (#11613)
Diffstat (limited to 'keyboards/splitty')
-rw-r--r--keyboards/splitty/config.h66
-rw-r--r--keyboards/splitty/info.json81
-rw-r--r--keyboards/splitty/keymaps/default/keymap.c54
-rw-r--r--keyboards/splitty/keymaps/default/readme.md9
-rw-r--r--keyboards/splitty/readme.md45
-rw-r--r--keyboards/splitty/rev1/readme.md3
-rw-r--r--keyboards/splitty/rev1/rev1.c17
-rw-r--r--keyboards/splitty/rev1/rev1.h40
-rw-r--r--keyboards/splitty/rev1/rules.mk0
-rw-r--r--keyboards/splitty/rules.mk26
-rw-r--r--keyboards/splitty/splitty.c36
-rw-r--r--keyboards/splitty/splitty.h23
12 files changed, 400 insertions, 0 deletions
diff --git a/keyboards/splitty/config.h b/keyboards/splitty/config.h
new file mode 100644
index 0000000000..3f0a8b9b20
--- /dev/null
+++ b/keyboards/splitty/config.h
@@ -0,0 +1,66 @@
+/*
+Copyright 2018 Nicolas Schodet
+
+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 0x1D50
+#define PRODUCT_ID 0x6052
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Nicolas Schodet
+#define PRODUCT Splitty
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS \
+    { F0, F1, D4, D5, D6 }
+#define MATRIX_COL_PINS \
+    { B0, B1, B2, B3, B4, B5, B6 }
+#define DIODE_DIRECTION COL2ROW
+
+/* Split Keyboard specific options. */
+#define USE_I2C
+#define EE_HANDS
+#define SPLIT_USB_DETECT
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * 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
diff --git a/keyboards/splitty/info.json b/keyboards/splitty/info.json
new file mode 100644
index 0000000000..2b87f2f9f1
--- /dev/null
+++ b/keyboards/splitty/info.json
@@ -0,0 +1,81 @@
+{
+  "keyboard_name": "Splitty",
+  "url": "https://git.ni.fr.eu.org/splitty.git/about/",
+  "maintainer": "schodet",
+  "width": 14,
+  "height": 5,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [
+        {"label": "L00", "x": 0, "y": 0.6667},
+        {"label": "L01", "x": 1, "y": 0.6667},
+        {"label": "L02", "x": 2, "y": 0.2667},
+        {"label": "L03", "x": 3, "y": 0},
+        {"label": "L04", "x": 4, "y": 0.2667},
+        {"label": "L05", "x": 5, "y": 0},
+        {"label": "L06", "x": 6, "y": 0},
+        {"label": "R06", "x": 10, "y": 0},
+        {"label": "R05", "x": 11, "y": 0},
+        {"label": "R04", "x": 12, "y": 0.2667},
+        {"label": "R03", "x": 13, "y": 0},
+        {"label": "R02", "x": 14, "y": 0.2667},
+        {"label": "R01", "x": 15, "y": 0.6667},
+        {"label": "R00", "x": 16, "y": 0.6667},
+
+        {"label": "L08", "x": 0, "y": 1.6667},
+        {"label": "L09", "x": 1, "y": 1.6667},
+        {"label": "L10", "x": 2, "y": 1.2667},
+        {"label": "L11", "x": 3, "y": 1},
+        {"label": "L12", "x": 4, "y": 1.2667},
+        {"label": "L13", "x": 5, "y": 1},
+        {"label": "L14", "x": 6, "y": 1, "h": 1.5},
+        {"label": "R14", "x": 10, "y": 1, "h": 1.5},
+        {"label": "R13", "x": 11, "y": 1},
+        {"label": "R12", "x": 12, "y": 1.2667},
+        {"label": "R11", "x": 13, "y": 1},
+        {"label": "R10", "x": 14, "y": 1.2667},
+        {"label": "R09", "x": 15, "y": 1.6667},
+        {"label": "R08", "x": 16, "y": 1.6667},
+
+        {"label": "L16", "x": 0, "y": 2.6667},
+        {"label": "L17", "x": 1, "y": 2.6667},
+        {"label": "L18", "x": 2, "y": 2.2667},
+        {"label": "L19", "x": 3, "y": 2},
+        {"label": "L20", "x": 4, "y": 2.2667},
+        {"label": "L21", "x": 5, "y": 2},
+        {"label": "R21", "x": 11, "y": 2},
+        {"label": "R20", "x": 12, "y": 2.2667},
+        {"label": "R19", "x": 13, "y": 2},
+        {"label": "R18", "x": 14, "y": 2.2667},
+        {"label": "R17", "x": 15, "y": 2.6667},
+        {"label": "R16", "x": 16, "y": 2.6667},
+
+        {"label": "L24", "x": 0, "y": 3.6667},
+        {"label": "L25", "x": 1, "y": 3.6667},
+        {"label": "L26", "x": 2, "y": 3.2667},
+        {"label": "L27", "x": 3, "y": 3},
+        {"label": "L28", "x": 4, "y": 3.2667},
+        {"label": "L29", "x": 5, "y": 3},
+        {"label": "L30", "x": 6, "y": 2.5, "h": 1.5},
+        {"label": "R30", "x": 10, "y": 2.5, "h": 1.5},
+        {"label": "R29", "x": 11, "y": 3},
+        {"label": "R28", "x": 12, "y": 3.2667},
+        {"label": "R27", "x": 13, "y": 3},
+        {"label": "R26", "x": 14, "y": 3.2667},
+        {"label": "R25", "x": 15, "y": 3.6667},
+        {"label": "R24", "x": 16, "y": 3.6667},
+
+        {"label": "L34", "x": 2, "y": 4.2667},
+        {"label": "L35", "x": 3, "y": 4},
+        {"label": "L36", "x": 4, "y": 4.2667},
+        {"label": "L37", "x": 5, "y": 4},
+        {"label": "L38", "x": 6, "y": 4},
+        {"label": "R38", "x": 10, "y": 4},
+        {"label": "R37", "x": 11, "y": 4},
+        {"label": "R36", "x": 12, "y": 4.2667},
+        {"label": "R35", "x": 13, "y": 4},
+        {"label": "R34", "x": 14, "y": 4.2667}
+      ]
+    }
+  }
+}
diff --git a/keyboards/splitty/keymaps/default/keymap.c b/keyboards/splitty/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e6075339b0
--- /dev/null
+++ b/keyboards/splitty/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2018 Nicolas Schodet
+ *
+ * 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
+
+/* Defines names for use in layer keycodes and the keymap */
+enum layer_names { _BASE, _NAV };
+
+#define NAV_SPC LT(_NAV, KC_SPC)
+#define CTL_BSP MT(MOD_LCTL, KC_BSPC)
+#define KC_GTAB LGUI(KC_TAB)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_BASE] = LAYOUT(
+  //,-------+-------+-------+-------+-------+-------+-------.    ,-------+-------+-------+-------+-------+-------+-------.
+     KC_ESC , KC_1  , KC_2  , KC_3  , KC_4  , KC_5  ,KC_GRV ,     KC_EQL , KC_6  , KC_7  , KC_8  , KC_9  , KC_0  ,KC_MINS,
+  //|-------+-------+-------+-------+-------+-------+-------|    |-------+-------+-------+-------+-------+-------+-------|
+     KC_RBRC, KC_Q  , KC_W  , KC_E  , KC_R  , KC_T  ,KC_APP ,     KC_DEL , KC_Y  , KC_U  , KC_I  , KC_O  , KC_P  ,KC_LBRC,
+  //|-------+-------+-------+-------+-------+-------|       |    |       |-------+-------+-------+-------+-------+-------|
+     KC_TAB , KC_A  , KC_S  , KC_D  , KC_F  , KC_G  ,/*-----|    |------*/ KC_H  , KC_J  , KC_K  , KC_L  ,KC_SCLN,KC_QUOT,
+  //|-------+-------+-------+-------+-------+-------|       |    |       |-------+-------+-------+-------+-------+-------|
+     KC_NUBS, KC_Z  , KC_X  , KC_C  , KC_V  , KC_B  ,KC_GTAB,     KC_ENT , KC_N  , KC_M  ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLS,
+  //`-------+-------+-------+-------+-------+-------+-------|    |-------+-------+-------+-------+-------+-------+-------'
+                     KC_LGUI,KC_LALT,KC_ESC ,CTL_BSP,KC_LSFT,     KC_RSFT,NAV_SPC,KC_RCTL,KC_RALT,KC_RGUI
+  //                `-------+-------+-------+-------+-------'    `-------+-------+-------+-------+-------'
+  ),
+  [_NAV] = LAYOUT(
+  //,-------+-------+-------+-------+-------+-------+-------.    ,-------+-------+-------+-------+-------+-------+-------.
+     _______,_______,_______,_______,_______,_______,_______,     _______,_______,_______,_______,_______,_______, RESET ,
+  //|-------+-------+-------+-------+-------+-------+-------|    |-------+-------+-------+-------+-------+-------+-------|
+     _______,_______, KC_7  , KC_8  , KC_9  ,_______,_______,     _______,KC_DEL ,KC_PGUP, KC_UP ,KC_PGDN,_______,_______,
+  //|-------+-------+-------+-------+-------+-------|       |    |       |-------+-------+-------+-------+-------+-------|
+     KC_CAPS,_______, KC_4  , KC_5  , KC_6  ,_______,/*-----|    |------*/KC_BSPC,KC_LEFT,KC_DOWN,KC_RGHT,KC_ENT ,_______,
+  //|-------+-------+-------+-------+-------+-------|       |    |       |-------+-------+-------+-------+-------+-------|
+     _______,_______, KC_1  , KC_2  , KC_3  ,_______,_______,     _______,C(KC_W),KC_HOME,_______,KC_END ,KC_INS ,_______,
+  //`-------+-------+-------+-------+-------+-------+-------|    |-------+-------+-------+-------+-------+-------+-------'
+                      KC_APP, KC_0  ,KC_DOT ,_______,_______,     _______,_______,_______,_______,_______
+  //                `-------+-------+-------+-------+-------'    `-------+-------+-------+-------+-------'
+  ),
+};
+// clang-format on
diff --git a/keyboards/splitty/keymaps/default/readme.md b/keyboards/splitty/keymaps/default/readme.md
new file mode 100644
index 0000000000..3bd33bb405
--- /dev/null
+++ b/keyboards/splitty/keymaps/default/readme.md
@@ -0,0 +1,9 @@
+# The default keymap for Splitty
+
+Simple default keymap.
+
+Hold the space key to access the navigation layer. Hold the backspace key for
+left control.
+
+There is a Ctrl-W shortcut which is usefull to erase previous word and for
+window management in vim.
diff --git a/keyboards/splitty/readme.md b/keyboards/splitty/readme.md
new file mode 100644
index 0000000000..1dec34c665
--- /dev/null
+++ b/keyboards/splitty/readme.md
@@ -0,0 +1,45 @@
+# Splitty
+
+![Splitty](http://ni.fr.eu.org/~nico/qmk/splitty/splitty_for_scale.jpg)
+
+![Bottom view](http://ni.fr.eu.org/~nico/qmk/splitty/bottom_view.jpg)
+
+![Side view](http://ni.fr.eu.org/~nico/qmk/splitty/stack_view.jpg)
+
+![PCB](http://ni.fr.eu.org/~nico/qmk/splitty/splitty.png)
+
+This is a split ergonomic keyboard initially based on the Ergodox layout
+without the thumb cluster. It uses 32 keys per sides with Cherry MX
+compatibles switches, thirty 1u and two vertical 1.5u caps.
+
+The controller is integrated in order to make the keyboard as slim as possible.
+
+It connects to the computer using a micro-B USB. Both sides are connected
+together also using micro-B USB. Any connection mistake should not break
+anything and the keyboard supports hot plugging.
+
+* Keyboard Maintainer: [Nicolas Schodet](https://github.com/schodet)
+* Hardware Supported: Splitty
+* Hardware Availability: [Splitty](https://git.ni.fr.eu.org/splitty.git/about/)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make splitty:default
+
+Flashing example for this keyboard:
+
+    make splitty:default:flash
+
+Handedness should be programmed in EEPROM once, you can use these commands to
+flash the firmware and the EEPROM:
+
+    make splitty:default:dfu-split-left
+    make splitty:default:dfu-split-right
+
+If you do not have a reset keycode in your keymap, press the reset button or
+short the corresponding contacts if not populated to enter bootloader.
+
+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/splitty/rev1/readme.md b/keyboards/splitty/rev1/readme.md
new file mode 100644
index 0000000000..5a32a6c999
--- /dev/null
+++ b/keyboards/splitty/rev1/readme.md
@@ -0,0 +1,3 @@
+# First revision of the Splitty keyboard
+
+This is the initial version, see parent readme.md for more details.
diff --git a/keyboards/splitty/rev1/rev1.c b/keyboards/splitty/rev1/rev1.c
new file mode 100644
index 0000000000..0cf9a1d9c3
--- /dev/null
+++ b/keyboards/splitty/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2018 Nicolas Schodet
+ *
+ * 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 "splitty.h"
diff --git a/keyboards/splitty/rev1/rev1.h b/keyboards/splitty/rev1/rev1.h
new file mode 100644
index 0000000000..9205165730
--- /dev/null
+++ b/keyboards/splitty/rev1/rev1.h
@@ -0,0 +1,40 @@
+/* Copyright 2018 Nicolas Schodet
+ *
+ * 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 QMK_KEYBOARD_H
+
+// clang-format off
+#define LAYOUT( \
+        L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+        L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+        L20, L21, L22, L23, L24, L25,           R21, R22, R23, R24, R25, R26, \
+        L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+                  L42, L43, L44, L45, L46, R40, R41, R42, R43, R44 \
+) { \
+        { L00, L01, L02, L03, L04, L05, L06 }, \
+        { L10, L11, L12, L13, L14, L15, L16 }, \
+        { L20, L21, L22, L23, L24, L25, KC_NO }, \
+        { L30, L31, L32, L33, L34, L35, L36 }, \
+        { KC_NO, KC_NO, L42, L43, L44, L45, L46 }, \
+        { R06, R05, R04, R03, R02, R01, R00 }, \
+        { R16, R15, R14, R13, R12, R11, R10 }, \
+        { R26, R25, R24, R23, R22, R21, KC_NO }, \
+        { R36, R35, R34, R33, R32, R31, R30 }, \
+        { KC_NO, KC_NO, R44, R43, R42, R41, R40 }, \
+}
+// clang-format on
diff --git a/keyboards/splitty/rev1/rules.mk b/keyboards/splitty/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/splitty/rev1/rules.mk
diff --git a/keyboards/splitty/rules.mk b/keyboards/splitty/rules.mk
new file mode 100644
index 0000000000..56572fe8ad
--- /dev/null
+++ b/keyboards/splitty/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# 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
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = splitty/rev1
diff --git a/keyboards/splitty/splitty.c b/keyboards/splitty/splitty.c
new file mode 100644
index 0000000000..652d1f781b
--- /dev/null
+++ b/keyboards/splitty/splitty.c
@@ -0,0 +1,36 @@
+/* Copyright 2018 Nicolas Schodet
+ *
+ * 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 "splitty.h"
+
+#ifdef SWAP_HANDS_ENABLE
+// clang-format off
+__attribute__ ((weak))
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+
+  {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}},
+  {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}},
+  {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}},
+  {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}},
+  {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}},
+  {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}},
+  {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}},
+  {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}},
+  {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}},
+  {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}},
+};
+// clang-format on
+#endif
diff --git a/keyboards/splitty/splitty.h b/keyboards/splitty/splitty.h
new file mode 100644
index 0000000000..420e1ea27b
--- /dev/null
+++ b/keyboards/splitty/splitty.h
@@ -0,0 +1,23 @@
+/* Copyright 2018 Nicolas Schodet
+ *
+ * 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_splitty_rev1
+#    include "rev1.h"
+#endif