From ca7b2d63a79271d2a8b1e4759125e35f69da284b Mon Sep 17 00:00:00 2001 From: Aidan Smith Date: Mon, 29 Jan 2024 15:08:13 -0500 Subject: [PATCH] Sango Keyboard (#22971) Co-authored-by: Ryan Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/aidansmithdotdev/sango/config.h | 19 ++ keyboards/aidansmithdotdev/sango/info.json | 219 ++++++++++++++++++ .../sango/keymaps/default/keymap.c | 32 +++ keyboards/aidansmithdotdev/sango/readme.md | 19 ++ keyboards/aidansmithdotdev/sango/rules.mk | 1 + 5 files changed, 290 insertions(+) create mode 100644 keyboards/aidansmithdotdev/sango/config.h create mode 100644 keyboards/aidansmithdotdev/sango/info.json create mode 100644 keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c create mode 100644 keyboards/aidansmithdotdev/sango/readme.md create mode 100644 keyboards/aidansmithdotdev/sango/rules.mk diff --git a/keyboards/aidansmithdotdev/sango/config.h b/keyboards/aidansmithdotdev/sango/config.h new file mode 100644 index 00000000000..13b2c01f3e6 --- /dev/null +++ b/keyboards/aidansmithdotdev/sango/config.h @@ -0,0 +1,19 @@ +/* Copyright 2024 Aidan Smith + * + * 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 . + */ + +#pragma once + +#define EE_HANDS diff --git a/keyboards/aidansmithdotdev/sango/info.json b/keyboards/aidansmithdotdev/sango/info.json new file mode 100644 index 00000000000..f62ae7466bc --- /dev/null +++ b/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} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c b/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c new file mode 100644 index 00000000000..a1730a7f86b --- /dev/null +++ b/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2024 Aidan Smith + * + * 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 . + */ +#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 + ) +}; diff --git a/keyboards/aidansmithdotdev/sango/readme.md b/keyboards/aidansmithdotdev/sango/readme.md new file mode 100644 index 00000000000..415e21add4b --- /dev/null +++ b/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). diff --git a/keyboards/aidansmithdotdev/sango/rules.mk b/keyboards/aidansmithdotdev/sango/rules.mk new file mode 100644 index 00000000000..743228e94b6 --- /dev/null +++ b/keyboards/aidansmithdotdev/sango/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file