aboutsummaryrefslogtreecommitdiff
path: root/keyboards/zwerg
diff options
context:
space:
mode:
authorfloookay <[email protected]>2025-03-03 06:34:16 +0100
committerGitHub <[email protected]>2025-03-02 21:34:16 -0800
commitcc09f171116ba09ef65a82edd96619e21b3420ca (patch)
tree3ecd934cac19e92d70718d39b0c359e732a73a12 /keyboards/zwerg
parenta585bd08a3febcedc4743ac7612f06a59a39b817 (diff)
downloadqmk_firmware-cc09f171116ba09ef65a82edd96619e21b3420ca.tar.gz
qmk_firmware-cc09f171116ba09ef65a82edd96619e21b3420ca.zip
add keyboard: zwerg (#24918)
Co-authored-by: jack <[email protected]> Co-authored-by: Joel Challis <[email protected]>
Diffstat (limited to 'keyboards/zwerg')
-rw-r--r--keyboards/zwerg/keyboard.json99
-rw-r--r--keyboards/zwerg/keymaps/default/keymap.c48
-rw-r--r--keyboards/zwerg/readme.md27
3 files changed, 174 insertions, 0 deletions
diff --git a/keyboards/zwerg/keyboard.json b/keyboards/zwerg/keyboard.json
new file mode 100644
index 0000000000..a039d0fa39
--- /dev/null
+++ b/keyboards/zwerg/keyboard.json
@@ -0,0 +1,99 @@
+{
+ "manufacturer": "floookay",
+ "keyboard_name": "zwerg",
+ "maintainer": "floookay",
+ "bootloader_instructions": "Press the reset button on the Gemini controller or right-side-bottom-right + esc",
+ "tags": ["ortho", "split", "40%", "OSHW"],
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["GP8", "GP7", "GP6", "GP5", "GP4", "GP3"],
+ "rows": ["GP28", "GP27", "GP26", "GP15", "GP14"]
+ },
+ "split": {
+ "enabled": true,
+ "serial": {
+ "driver": "vendor",
+ "pin": "GP13"
+ }
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x7EEE",
+ "vid": "0xF100"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+
+ {"matrix": [5, 5], "x": 8, "y": 0},
+ {"matrix": [5, 4], "x": 9, "y": 0},
+ {"matrix": [5, 3], "x": 10, "y": 0},
+ {"matrix": [5, 2], "x": 11, "y": 0},
+ {"matrix": [5, 1], "x": 12, "y": 0},
+ {"matrix": [5, 0], "x": 13, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+
+ {"matrix": [6, 5], "x": 8, "y": 1},
+ {"matrix": [6, 4], "x": 9, "y": 1},
+ {"matrix": [6, 3], "x": 10, "y": 1},
+ {"matrix": [6, 2], "x": 11, "y": 1},
+ {"matrix": [6, 1], "x": 12, "y": 1},
+ {"matrix": [6, 0], "x": 13, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2},
+ {"matrix": [2, 5], "x": 5, "y": 2},
+
+ {"matrix": [7, 5], "x": 8, "y": 2},
+ {"matrix": [7, 4], "x": 9, "y": 2},
+ {"matrix": [7, 3], "x": 10, "y": 2},
+ {"matrix": [7, 2], "x": 11, "y": 2},
+ {"matrix": [7, 1], "x": 12, "y": 2},
+ {"matrix": [7, 0], "x": 13, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3},
+
+ {"matrix": [8, 4], "x": 9, "y": 3},
+ {"matrix": [8, 3], "x": 10, "y": 3},
+ {"matrix": [8, 2], "x": 11, "y": 3},
+ {"matrix": [8, 1], "x": 12, "y": 3},
+ {"matrix": [8, 0], "x": 13, "y": 3},
+
+ {"matrix": [4, 4], "x": 5, "y": 5, "h": 1.5},
+ {"matrix": [4, 5], "x": 6, "y": 5, "h": 1.5},
+
+ {"matrix": [9, 5], "x": 8, "y": 5, "h": 1.5},
+ {"matrix": [9, 4], "x": 9, "y": 5, "h": 1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/zwerg/keymaps/default/keymap.c b/keyboards/zwerg/keymaps/default/keymap.c
new file mode 100644
index 0000000000..81132bbe96
--- /dev/null
+++ b/keyboards/zwerg/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+// Copyright 2025 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
+ * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│
+ * ├───┼───┼───┼───┼───┼───┘ └───┼───┼───┼───┼───┼───┤
+ * │Esc│lsu│rcl│Alt│Rai| ┌───┬───┐ ┌───┬───┐ │Low│AGr│Men│rcl│Cnf│
+ * └───┴───┴───┴───┴───┘ │Spc│Del│ │Ent│Spc│ └───┴───┴───┴───┴───┘
+ * │ │ │ │ │ │
+ * └───┴───┘ └───┴───┘
+ */
+ [0] = 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_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_RSFT,
+ KC_ESC, KC_LGUI, KC_RCTL, KC_LALT, MO(2), MO(1), KC_RALT, KC_APP, KC_RCTL, MO(3),
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC
+ ),
+ [1] = LAYOUT(
+ _______, _______, KC_VOLU, KC_MUTE, KC_VOLD, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______,
+ _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______,
+ _______, _______, _______, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/zwerg/readme.md b/keyboards/zwerg/readme.md
new file mode 100644
index 0000000000..5fe045bffc
--- /dev/null
+++ b/keyboards/zwerg/readme.md
@@ -0,0 +1,27 @@
+# zwerg
+
+![zwerg](https://i.imgur.com/hkFLvd2.jpeg)
+
+A 40% ortholinear split keyboard.
+
+* Keyboard Maintainer: [floookay](https://github.com/floookay)
+* Hardware Supported: zwerg pcbs with 0xcb Gemini
+* Hardware Availability: <https://github.com/floookay/zwerg>
+
+Make example for this keyboard (after setting up your build environment):
+
+ make zwerg:default
+
+Flashing example for this keyboard:
+
+ make zwerg:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the Gemini controller
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available