Browse Source

Sango Keyboard (#22971)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Aidan Smith 2 years ago
parent
commit
ca7b2d63a7

+ 19 - 0
keyboards/aidansmithdotdev/sango/config.h

@@ -0,0 +1,19 @@
+/* Copyright 2024 Aidan Smith <aidan@aidansmith.dev>
+ *
+ * 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
+
+#define EE_HANDS

+ 219 - 0
keyboards/aidansmithdotdev/sango/info.json

@@ -0,0 +1,219 @@
+{
+    "manufacturer": "AidanSmith.dev",
+    "keyboard_name": "aidansmithdotdev/Sango",
+    "Maintainer": "AidanSmith.dev",
+    "bootloader": "rp2040",
+    "bootmagic": {
+        "matrix": [0, 7]
+    },
+    "diode_direction": "COL2ROW",
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "rgb_matrix": true
+    },
+    "matrix_pins": {
+        "cols": ["GP4", "GP8", "GP9", "GP11", "GP12", "GP13", "GP14", "GP15"],
+        "rows": ["GP7", "GP6", "GP3", "GP2", "GP0"]
+    },
+    "processor": "RP2040",
+    "rgb_matrix": {
+        "driver": "ws2812",
+        "layout": [
+            {"matrix": [0, 1], "x": 60, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 40, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 30, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 20, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 10, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [1, 7], "x": 0, "y": 10, "flags": 4},
+            {"matrix": [1, 6], "x": 10, "y": 10, "flags": 4},
+            {"matrix": [1, 5], "x": 20, "y": 10, "flags": 4},
+            {"matrix": [1, 4], "x": 30, "y": 10, "flags": 4},
+            {"matrix": [1, 3], "x": 40, "y": 10, "flags": 4},
+            {"matrix": [1, 2], "x": 50, "y": 10, "flags": 4},
+            {"matrix": [1, 1], "x": 60, "y": 10, "flags": 4},
+            {"matrix": [2, 0], "x": 70, "y": 20, "flags": 4},
+            {"matrix": [2, 1], "x": 60, "y": 20, "flags": 4},
+            {"matrix": [2, 2], "x": 50, "y": 20, "flags": 4},
+            {"matrix": [2, 3], "x": 40, "y": 20, "flags": 4},
+            {"matrix": [2, 4], "x": 30, "y": 20, "flags": 4},
+            {"matrix": [2, 5], "x": 20, "y": 20, "flags": 4},
+            {"matrix": [2, 6], "x": 10, "y": 20, "flags": 4},
+            {"matrix": [2, 7], "x": 0, "y": 20, "flags": 4},
+            {"matrix": [3, 7], "x": 0, "y": 30, "flags": 4},
+            {"matrix": [3, 6], "x": 10, "y": 30, "flags": 4},
+            {"matrix": [3, 5], "x": 20, "y": 30, "flags": 4},
+            {"matrix": [3, 4], "x": 30, "y": 30, "flags": 4},
+            {"matrix": [3, 3], "x": 40, "y": 30, "flags": 4},
+            {"matrix": [3, 2], "x": 50, "y": 30, "flags": 4},
+            {"matrix": [3, 1], "x": 60, "y": 30, "flags": 4},
+            {"matrix": [3, 0], "x": 70, "y": 30, "flags": 4},
+            {"matrix": [4, 0], "x": 70, "y": 30, "flags": 4},
+            {"matrix": [4, 1], "x": 60, "y": 30, "flags": 4},
+            {"matrix": [4, 2], "x": 50, "y": 30, "flags": 4},
+            {"matrix": [4, 5], "x": 20, "y": 30, "flags": 4},
+            {"matrix": [4, 6], "x": 10, "y": 30, "flags": 4},
+            {"matrix": [4, 7], "x": 0, "y": 30, "flags": 4},
+            {"matrix": [5, 1], "x": 100, "y": 0, "flags": 4},
+            {"matrix": [5, 2], "x": 110, "y": 0, "flags": 4},
+            {"matrix": [5, 3], "x": 120, "y": 0, "flags": 4},
+            {"matrix": [5, 4], "x": 130, "y": 0, "flags": 4},
+            {"matrix": [5, 5], "x": 140, "y": 0, "flags": 4},
+            {"matrix": [5, 6], "x": 150, "y": 0, "flags": 4},
+            {"matrix": [5, 7], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [6, 7], "x": 160, "y": 10, "flags": 4},
+            {"matrix": [6, 6], "x": 150, "y": 10, "flags": 4},
+            {"matrix": [6, 5], "x": 140, "y": 10, "flags": 4},
+            {"matrix": [6, 4], "x": 130, "y": 10, "flags": 4},
+            {"matrix": [6, 3], "x": 120, "y": 10, "flags": 4},
+            {"matrix": [6, 2], "x": 110, "y": 10, "flags": 4},
+            {"matrix": [6, 1], "x": 100, "y": 10, "flags": 4},
+            {"matrix": [7, 0], "x": 90, "y": 20, "flags": 4},
+            {"matrix": [7, 1], "x": 100, "y": 20, "flags": 4},
+            {"matrix": [7, 2], "x": 110, "y": 20, "flags": 4},
+            {"matrix": [7, 3], "x": 120, "y": 20, "flags": 4},
+            {"matrix": [7, 4], "x": 130, "y": 20, "flags": 4},
+            {"matrix": [7, 5], "x": 140, "y": 20, "flags": 4},
+            {"matrix": [7, 6], "x": 150, "y": 20, "flags": 4},
+            {"matrix": [7, 7], "x": 160, "y": 20, "flags": 4},
+            {"matrix": [8, 7], "x": 160, "y": 30, "flags": 4},
+            {"matrix": [8, 6], "x": 150, "y": 30, "flags": 4},
+            {"matrix": [8, 5], "x": 140, "y": 30, "flags": 4},
+            {"matrix": [8, 4], "x": 130, "y": 30, "flags": 4},
+            {"matrix": [8, 3], "x": 120, "y": 30, "flags": 4},
+            {"matrix": [8, 2], "x": 110, "y": 30, "flags": 4},
+            {"matrix": [8, 1], "x": 100, "y": 30, "flags": 4},
+            {"matrix": [8, 0], "x": 90, "y": 30, "flags": 4},
+            {"matrix": [9, 0], "x": 90, "y": 30, "flags": 4},
+            {"matrix": [9, 1], "x": 100, "y": 30, "flags": 4},
+            {"matrix": [9, 2], "x": 110, "y": 30, "flags": 4},
+            {"matrix": [9, 5], "x": 140, "y": 30, "flags": 4},
+            {"matrix": [9, 6], "x": 150, "y": 30, "flags": 4},
+            {"matrix": [9, 7], "x": 160, "y": 30, "flags": 4}
+        ]
+    },
+    "rgblight": {
+        "animations": {
+            "alternating": true,
+            "breathing": true,
+            "christmas": true,
+            "knight": true,
+            "rainbow_mood": true,
+            "rainbow_swirl": true,
+            "rgb_test": true,
+            "snake": true,
+            "static_gradient": true,
+            "twinkle": true
+        },
+        "brightness_steps": 8,
+        "max_brightness": 128,
+        "saturation_steps": 8,
+        "split": true,
+        "split_count": [36, 36]
+    },
+    "split": {
+        "bootmagic": {
+            "matrix": [4, 7]
+        },
+        "enabled": true,
+        "main": "matrix_grid",
+        "matrix_pins": {
+            "right": {
+                "cols": ["GP7", "GP8", "GP9", "GP11", "GP12", "GP13", "GP14", "GP15"],
+                "rows": ["GP2", "GP3", "GP4", "GP5", "GP6"]
+            }
+        },
+        "soft_serial_pin": "GP1"
+    },
+    "url": "https://aidansmith.dev",
+    "usb": {
+        "device_version": "1.0.0",
+        "pid": "0x2567",
+        "vid": "0xA059"
+    },
+    "ws2812": {
+        "driver": "vendor",
+        "pin": "GP10"
+    },
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"label": "L07", "matrix": [0, 7], "x": 0, "y": 0.3},
+                {"label": "L06", "matrix": [0, 6], "x": 1, "y": 0.3},
+                {"label": "L05", "matrix": [0, 5], "x": 2, "y": 0.3},
+                {"label": "L04", "matrix": [0, 4], "x": 3, "y": 0.1},
+                {"label": "L03", "matrix": [0, 3], "x": 4, "y": 0},
+                {"label": "L02", "matrix": [0, 2], "x": 5, "y": 0.1},
+                {"label": "L01", "matrix": [0, 1], "x": 6, "y": 0.2},
+                {"label": "R01", "matrix": [5, 1], "x": 10, "y": 0.2},
+                {"label": "R02", "matrix": [5, 2], "x": 11, "y": 0.1},
+                {"label": "R03", "matrix": [5, 3], "x": 12, "y": 0},
+                {"label": "R04", "matrix": [5, 4], "x": 13, "y": 0.1},
+                {"label": "R05", "matrix": [5, 5], "x": 14, "y": 0.3},
+                {"label": "R06", "matrix": [5, 6], "x": 15, "y": 0.3},
+                {"label": "R07", "matrix": [5, 7], "x": 16, "y": 0.3},
+                {"label": "L17", "matrix": [1, 7], "x": 0, "y": 1.3},
+                {"label": "L16", "matrix": [1, 6], "x": 1, "y": 1.3},
+                {"label": "L15", "matrix": [1, 5], "x": 2, "y": 1.3},
+                {"label": "L14", "matrix": [1, 4], "x": 3, "y": 1.1},
+                {"label": "L13", "matrix": [1, 3], "x": 4, "y": 1},
+                {"label": "L12", "matrix": [1, 2], "x": 5, "y": 1.1},
+                {"label": "L11", "matrix": [1, 1], "x": 6, "y": 1.2},
+                {"label": "R11", "matrix": [6, 1], "x": 10, "y": 1.2},
+                {"label": "R12", "matrix": [6, 2], "x": 11, "y": 1.1},
+                {"label": "R13", "matrix": [6, 3], "x": 12, "y": 1},
+                {"label": "R14", "matrix": [6, 4], "x": 13, "y": 1.1},
+                {"label": "R15", "matrix": [6, 5], "x": 14, "y": 1.3},
+                {"label": "R16", "matrix": [6, 6], "x": 15, "y": 1.3},
+                {"label": "R17", "matrix": [6, 7], "x": 16, "y": 1.3},
+                {"label": "L27", "matrix": [2, 7], "x": 0, "y": 2.3},
+                {"label": "L26", "matrix": [2, 6], "x": 1, "y": 2.3},
+                {"label": "L25", "matrix": [2, 5], "x": 2, "y": 2.3},
+                {"label": "L24", "matrix": [2, 4], "x": 3, "y": 2.1},
+                {"label": "L23", "matrix": [2, 3], "x": 4, "y": 2},
+                {"label": "L22", "matrix": [2, 2], "x": 5, "y": 2.1},
+                {"label": "L21", "matrix": [2, 1], "x": 6, "y": 2.2},
+                {"label": "L20", "matrix": [2, 0], "x": 7, "y": 2.7},
+                {"label": "R20", "matrix": [7, 0], "x": 9, "y": 2.7},
+                {"label": "R21", "matrix": [7, 1], "x": 10, "y": 2.2},
+                {"label": "R22", "matrix": [7, 2], "x": 11, "y": 2.1},
+                {"label": "R23", "matrix": [7, 3], "x": 12, "y": 2},
+                {"label": "R24", "matrix": [7, 4], "x": 13, "y": 2.1},
+                {"label": "R25", "matrix": [7, 5], "x": 14, "y": 2.3},
+                {"label": "R26", "matrix": [7, 6], "x": 15, "y": 2.3},
+                {"label": "R27", "matrix": [7, 7], "x": 16, "y": 2.3},
+                {"label": "L37", "matrix": [3, 7], "x": 0, "y": 3.3},
+                {"label": "L36", "matrix": [3, 6], "x": 1, "y": 3.3},
+                {"label": "L35", "matrix": [3, 5], "x": 2, "y": 3.3},
+                {"label": "L34", "matrix": [3, 4], "x": 3, "y": 3.1},
+                {"label": "L33", "matrix": [3, 3], "x": 4, "y": 3},
+                {"label": "L32", "matrix": [3, 2], "x": 5, "y": 3.1},
+                {"label": "L31", "matrix": [3, 1], "x": 6, "y": 3.2},
+                {"label": "L30", "matrix": [3, 0], "x": 7, "y": 3.7},
+                {"label": "R30", "matrix": [8, 0], "x": 9, "y": 3.7},
+                {"label": "R31", "matrix": [8, 1], "x": 10, "y": 3.2},
+                {"label": "R32", "matrix": [8, 2], "x": 11, "y": 3.1},
+                {"label": "R33", "matrix": [8, 3], "x": 12, "y": 3},
+                {"label": "R34", "matrix": [8, 4], "x": 13, "y": 3.1},
+                {"label": "R35", "matrix": [8, 5], "x": 14, "y": 3.3},
+                {"label": "R36", "matrix": [8, 6], "x": 15, "y": 3.3},
+                {"label": "R37", "matrix": [8, 7], "x": 16, "y": 3.3},
+                {"label": "L47", "matrix": [4, 7], "x": 0, "y": 3.3},
+                {"label": "L46", "matrix": [4, 6], "x": 1, "y": 3.3},
+                {"label": "L45", "matrix": [4, 5], "x": 2, "y": 3.3},
+                {"label": "L42", "matrix": [4, 2], "x": 5, "y": 3.1},
+                {"label": "L41", "matrix": [4, 1], "x": 6, "y": 3.2},
+                {"label": "L40", "matrix": [4, 0], "x": 7, "y": 3.7},
+                {"label": "R40", "matrix": [9, 0], "x": 9, "y": 3.7},
+                {"label": "R41", "matrix": [9, 1], "x": 10, "y": 3.2},
+                {"label": "R42", "matrix": [9, 2], "x": 11, "y": 3.1},
+                {"label": "R45", "matrix": [9, 5], "x": 14, "y": 3.3},
+                {"label": "R46", "matrix": [9, 6], "x": 15, "y": 3.3},
+                {"label": "R47", "matrix": [9, 7], "x": 16, "y": 3.3}
+            ]
+        }
+    }
+}

+ 32 - 0
keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c

@@ -0,0 +1,32 @@
+/* Copyright 2024 Aidan Smith <aidan@aidansmith.dev>
+ *
+ * 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 layers {
+    _QWERTY,
+};
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QWERTY] = LAYOUT(
+     KC_ESC  , KC_GRV  , KC_1    , KC_2 , KC_3 , KC_4    , KC_5    ,                            KC_6    , KC_7 , KC_8   , KC_9    , KC_0    , KC_MINS , KC_EQL  ,
+     KC_DEL  , KC_TAB  , KC_Q    , KC_W , KC_E , KC_R    , KC_T    ,                            KC_Y    , KC_U , KC_I   , KC_O    , KC_P    , KC_LBRC , KC_RBRC ,
+     KC_PGUP , KC_LCAP , KC_A    , KC_S , KC_D , KC_F    , KC_G    , KC_LCBR ,        KC_RCBR , KC_H    , KC_J , KC_K   , KC_L    , KC_SCLN , KC_QUOT , KC_ENT  ,
+     KC_PGDN , KC_LSFT , KC_Z    , KC_X , KC_C , KC_V    , KC_B    , KC_LBRC ,        KC_RBRC , KC_N    , KC_M , KC_DOT , KC_COMM , KC_SLSH , KC_UP   , KC_BSLS ,
+	 KC_LCTL , KC_LGUI , KC_LALT ,               KC_LCTL , KC_LALT , KC_BSPC ,        KC_SPC  , KC_RGUI , KC_RALT ,                 KC_LEFT , KC_DOWN , KC_RGHT
+    )
+};

+ 19 - 0
keyboards/aidansmithdotdev/sango/readme.md

@@ -0,0 +1,19 @@
+# Sango
+
+![aidansmithdotdev/sango](https://i.imgur.com/NzvLxqyh.jpg)
+
+An open source 65%ish split columnar low profile keyboard.
+
+* Keyboard Maintainer: [Aidan Smith](https://github.com/Aidan-OS)
+* Hardware Supported: Sango
+* Hardware Availability: https://github.com/Aidan-OS/Sango
+
+Make example for this keyboard (after setting up your build environment):
+
+    make aidansmithdotdev/sango:default
+
+Flashing example for this keyboard:
+
+    make aidansmithdotdev/sango: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).

+ 1 - 0
keyboards/aidansmithdotdev/sango/rules.mk

@@ -0,0 +1 @@
+SERIAL_DRIVER = vendor