From 748485a3a49b77c0843fcffb8c82ed999b276d45 Mon Sep 17 00:00:00 2001 From: zegonix Date: Mon, 22 Jul 2024 21:06:18 +0200 Subject: [PATCH] initial commit --- create-links.sh | 27 ++ keyboards/keebsforall/freebirdtkl/config.h | 21 + keyboards/keebsforall/freebirdtkl/freebirdtkl | 1 + keyboards/keebsforall/freebirdtkl/info.json | 451 ++++++++++++++++++ .../freebirdtkl/keymaps/quaken/keymap.c | 86 ++++ .../freebirdtkl/keymaps/quaken/rules.mk | 4 + keyboards/keebsforall/freebirdtkl/readme.md | 27 ++ keyboards/keebsforall/freebirdtkl/rules.mk | 12 + keyboards/mode/envoy/config.h | 27 ++ keyboards/mode/envoy/envoy | 1 + keyboards/mode/envoy/halconf.h | 22 + keyboards/mode/envoy/info.json | 200 ++++++++ keyboards/mode/envoy/keymaps/default/keymap.c | 33 ++ keyboards/mode/envoy/keymaps/quaken/config.h | 1 + keyboards/mode/envoy/keymaps/quaken/keymap.c | 85 ++++ keyboards/mode/envoy/keymaps/quaken/rules.mk | 4 + keyboards/mode/envoy/keymaps/via/keymap.c | 33 ++ keyboards/mode/envoy/keymaps/via/rules.mk | 1 + keyboards/mode/envoy/m256wh.c | 154 ++++++ keyboards/mode/envoy/matrix_diagram.md | 18 + keyboards/mode/envoy/mcuconf.h | 25 + keyboards/mode/envoy/readme.md | 25 + keyboards/mode/envoy/rules.mk | 0 keyboards/mode/mode80/chconf.h | 25 + keyboards/mode/mode80/config.h | 23 + keyboards/mode/mode80/halconf.h | 18 + keyboards/mode/mode80/info.json | 133 ++++++ keyboards/mode/mode80/keymaps/quaken/keymap.c | 79 +++ keyboards/mode/mode80/keymaps/quaken/rules.mk | 1 + keyboards/mode/mode80/mcuconf.h | 19 + keyboards/mode/mode80/readme.md | 38 ++ keyboards/mode/mode80/rules.mk | 13 + keyboards/sofle/keymaps/quaken/config.h | 6 + keyboards/sofle/keymaps/quaken/keymap.c | 149 ++++++ keyboards/sofle/keymaps/quaken/quaken | 1 + keyboards/sofle/keymaps/quaken/readme.md | 19 + keyboards/sofle/keymaps/quaken/rules.mk | 7 + keyboards/zegonix/LICENSE | 339 +++++++++++++ keyboards/zegonix/README.md | 14 + keyboards/zegonix/cycle7/config.h | 54 +++ keyboards/zegonix/cycle7/halconf.h | 5 + keyboards/zegonix/cycle7/info.json | 115 +++++ keyboards/zegonix/cycle7/keyboard.json | 0 .../zegonix/cycle7/keymaps/default/keymap.c | 82 ++++ .../cycle7/keymaps/default/quaken/config.h | 1 + .../cycle7/keymaps/default/quaken/keymap.c | 92 ++++ .../cycle7/keymaps/default/quaken/rules.mk | 5 + .../zegonix/cycle7/keymaps/quaken/config.h | 1 + .../zegonix/cycle7/keymaps/quaken/keymap.c | 133 ++++++ .../zegonix/cycle7/keymaps/quaken/rules.mk | 2 + keyboards/zegonix/cycle7/mcuconf.h | 19 + keyboards/zegonix/cycle7/readme.md | 34 ++ keyboards/zegonix/cycle7/rules.mk | 1 + keyboards/zegonix/test_pico/config.h | 28 ++ keyboards/zegonix/test_pico/info.json | 46 ++ .../test_pico/keymaps/default/keymap.c | 82 ++++ .../test_pico/keymaps/default/quaken/config.h | 1 + .../test_pico/keymaps/default/quaken/keymap.c | 92 ++++ .../test_pico/keymaps/default/quaken/rules.mk | 5 + .../zegonix/test_pico/keymaps/quaken/config.h | 1 + .../zegonix/test_pico/keymaps/quaken/keymap.c | 118 +++++ .../zegonix/test_pico/keymaps/quaken/rules.mk | 2 + keyboards/zegonix/test_pico/readme.md | 34 ++ keyboards/zegonix/test_pico/rules.mk | 1 + keyboards/zegonix/zegonix | 1 + readme.md | 1 + 66 files changed, 3098 insertions(+) create mode 100755 create-links.sh create mode 100644 keyboards/keebsforall/freebirdtkl/config.h create mode 120000 keyboards/keebsforall/freebirdtkl/freebirdtkl create mode 100644 keyboards/keebsforall/freebirdtkl/info.json create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/quaken/keymap.c create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/quaken/rules.mk create mode 100644 keyboards/keebsforall/freebirdtkl/readme.md create mode 100644 keyboards/keebsforall/freebirdtkl/rules.mk create mode 100644 keyboards/mode/envoy/config.h create mode 120000 keyboards/mode/envoy/envoy create mode 100644 keyboards/mode/envoy/halconf.h create mode 100644 keyboards/mode/envoy/info.json create mode 100644 keyboards/mode/envoy/keymaps/default/keymap.c create mode 100644 keyboards/mode/envoy/keymaps/quaken/config.h create mode 100644 keyboards/mode/envoy/keymaps/quaken/keymap.c create mode 100644 keyboards/mode/envoy/keymaps/quaken/rules.mk create mode 100644 keyboards/mode/envoy/keymaps/via/keymap.c create mode 100644 keyboards/mode/envoy/keymaps/via/rules.mk create mode 100644 keyboards/mode/envoy/m256wh.c create mode 100644 keyboards/mode/envoy/matrix_diagram.md create mode 100644 keyboards/mode/envoy/mcuconf.h create mode 100644 keyboards/mode/envoy/readme.md create mode 100644 keyboards/mode/envoy/rules.mk create mode 100644 keyboards/mode/mode80/chconf.h create mode 100644 keyboards/mode/mode80/config.h create mode 100644 keyboards/mode/mode80/halconf.h create mode 100644 keyboards/mode/mode80/info.json create mode 100755 keyboards/mode/mode80/keymaps/quaken/keymap.c create mode 100644 keyboards/mode/mode80/keymaps/quaken/rules.mk create mode 100644 keyboards/mode/mode80/mcuconf.h create mode 100644 keyboards/mode/mode80/readme.md create mode 100644 keyboards/mode/mode80/rules.mk create mode 100644 keyboards/sofle/keymaps/quaken/config.h create mode 100644 keyboards/sofle/keymaps/quaken/keymap.c create mode 120000 keyboards/sofle/keymaps/quaken/quaken create mode 100644 keyboards/sofle/keymaps/quaken/readme.md create mode 100644 keyboards/sofle/keymaps/quaken/rules.mk create mode 100644 keyboards/zegonix/LICENSE create mode 100644 keyboards/zegonix/README.md create mode 100644 keyboards/zegonix/cycle7/config.h create mode 100644 keyboards/zegonix/cycle7/halconf.h create mode 100644 keyboards/zegonix/cycle7/info.json create mode 100644 keyboards/zegonix/cycle7/keyboard.json create mode 100644 keyboards/zegonix/cycle7/keymaps/default/keymap.c create mode 100644 keyboards/zegonix/cycle7/keymaps/default/quaken/config.h create mode 100644 keyboards/zegonix/cycle7/keymaps/default/quaken/keymap.c create mode 100644 keyboards/zegonix/cycle7/keymaps/default/quaken/rules.mk create mode 100644 keyboards/zegonix/cycle7/keymaps/quaken/config.h create mode 100644 keyboards/zegonix/cycle7/keymaps/quaken/keymap.c create mode 100644 keyboards/zegonix/cycle7/keymaps/quaken/rules.mk create mode 100644 keyboards/zegonix/cycle7/mcuconf.h create mode 100644 keyboards/zegonix/cycle7/readme.md create mode 100644 keyboards/zegonix/cycle7/rules.mk create mode 100644 keyboards/zegonix/test_pico/config.h create mode 100644 keyboards/zegonix/test_pico/info.json create mode 100644 keyboards/zegonix/test_pico/keymaps/default/keymap.c create mode 100644 keyboards/zegonix/test_pico/keymaps/default/quaken/config.h create mode 100644 keyboards/zegonix/test_pico/keymaps/default/quaken/keymap.c create mode 100644 keyboards/zegonix/test_pico/keymaps/default/quaken/rules.mk create mode 100644 keyboards/zegonix/test_pico/keymaps/quaken/config.h create mode 100644 keyboards/zegonix/test_pico/keymaps/quaken/keymap.c create mode 100644 keyboards/zegonix/test_pico/keymaps/quaken/rules.mk create mode 100644 keyboards/zegonix/test_pico/readme.md create mode 100644 keyboards/zegonix/test_pico/rules.mk create mode 120000 keyboards/zegonix/zegonix create mode 100644 readme.md diff --git a/create-links.sh b/create-links.sh new file mode 100755 index 0000000..8629c11 --- /dev/null +++ b/create-links.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +function show_usage { + echo "USAGE: create-links.sh "; +} + +if [[ -z $1 ]]; then + show_usage; + exit 1; +fi + +if [[ ! -d $1 ]]; then + show_usage; + exit 1; +else + config_dir="$(dirname -- "$(realpath -- "$0")")" + + # link directory for keebsforall/freebirdtkl + ln -s -f "${config_dir}/keyboards/keebsforall/freebirdtkl" "$1/keyboards/keebsforall/fbtkl" + # link directories for mode/envoy and mode/mode80 + ln -s -f "${config_dir}/keyboards/mode/envoy" "$1/keyboards/mode/envoy" + ln -s -f "${config_dir}/keybaords/mode/mode80" "$1/keyboards/mode/mode80" + # link directory for sofle + ln -s -f "${config_dir}/keyboards/sofle/keymaps/quaken" "$1/keyboards/sofle/keymaps/quaken" + # link personal keyboards + ln -s -f "${config_dir}/keyboards/zegonix" "$1/keyboards/zegonix" +fi \ No newline at end of file diff --git a/keyboards/keebsforall/freebirdtkl/config.h b/keyboards/keebsforall/freebirdtkl/config.h new file mode 100644 index 0000000..5de1d62 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 KnoblesseOblige + +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 LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/keebsforall/freebirdtkl/freebirdtkl b/keyboards/keebsforall/freebirdtkl/freebirdtkl new file mode 120000 index 0000000..dd7b31a --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/freebirdtkl @@ -0,0 +1 @@ +/home/zegonix/repos/zegonix-qmk-configs/keyboards/keebsforall/freebirdtkl \ No newline at end of file diff --git a/keyboards/keebsforall/freebirdtkl/info.json b/keyboards/keebsforall/freebirdtkl/info.json new file mode 100644 index 0000000..eab9bcd --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/info.json @@ -0,0 +1,451 @@ +{ + "keyboard_name": "FreebirdTKL", + "manufacturer": "KeebsForAll", + "url": "https://keebsforall.com", + "maintainer": "KnoblesseOblige", + "usb": { + "vid": "0x75FA", + "pid": "0x0088", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D3", "D2", "D1"], + "rows": ["B2", "B1", "B0", "B3", "D5", "B7"] + }, + "diode_direction": "COL2ROW", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layout_aliases": { + "LAYOUT_ansi": "LAYOUT_tkl_f13_ansi", + "LAYOUT_tsangan": "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift", + "LAYOUT_all": "LAYOUT_tkl_f13_ansi_split_bs_rshift" + }, + "layouts": { + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.25}, + {"matrix": [4, 2], "x": 3.25, "y": 4.25}, + {"matrix": [4, 3], "x": 4.25, "y": 4.25}, + {"matrix": [4, 4], "x": 5.25, "y": 4.25}, + {"matrix": [4, 5], "x": 6.25, "y": 4.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4.25}, + {"matrix": [4, 7], "x": 8.25, "y": 4.25}, + {"matrix": [4, 8], "x": 9.25, "y": 4.25}, + {"matrix": [4, 9], "x": 10.25, "y": 4.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4.25}, + {"matrix": [4, 11], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 8], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 9], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [3, 13], "x": 14, "y": 1.25}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.25}, + {"matrix": [4, 2], "x": 3.25, "y": 4.25}, + {"matrix": [4, 3], "x": 4.25, "y": 4.25}, + {"matrix": [4, 4], "x": 5.25, "y": 4.25}, + {"matrix": [4, 5], "x": 6.25, "y": 4.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4.25}, + {"matrix": [4, 7], "x": 8.25, "y": 4.25}, + {"matrix": [4, 8], "x": 9.25, "y": 4.25}, + {"matrix": [4, 9], "x": 10.25, "y": 4.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4.25}, + {"matrix": [4, 11], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 8], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 9], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.25}, + {"matrix": [4, 2], "x": 3.25, "y": 4.25}, + {"matrix": [4, 3], "x": 4.25, "y": 4.25}, + {"matrix": [4, 4], "x": 5.25, "y": 4.25}, + {"matrix": [4, 5], "x": 6.25, "y": 4.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4.25}, + {"matrix": [4, 7], "x": 8.25, "y": 4.25}, + {"matrix": [4, 8], "x": 9.25, "y": 4.25}, + {"matrix": [4, 9], "x": 10.25, "y": 4.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4.25}, + {"matrix": [4, 11], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 1.5, "y": 5.25}, + {"matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [3, 13], "x": 14, "y": 1.25}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.25}, + {"matrix": [4, 2], "x": 3.25, "y": 4.25}, + {"matrix": [4, 3], "x": 4.25, "y": 4.25}, + {"matrix": [4, 4], "x": 5.25, "y": 4.25}, + {"matrix": [4, 5], "x": 6.25, "y": 4.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4.25}, + {"matrix": [4, 7], "x": 8.25, "y": 4.25}, + {"matrix": [4, 8], "x": 9.25, "y": 4.25}, + {"matrix": [4, 9], "x": 10.25, "y": 4.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4.25}, + {"matrix": [4, 11], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 1.5, "y": 5.25}, + {"matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/quaken/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/quaken/keymap.c new file mode 100644 index 0000000..2c63ca3 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/quaken/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 KnoblesseOblige + * + * 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 + +#define QUAK_A MT(MOD_LGUI, KC_A) +#define QUAK_S MT(MOD_LALT, KC_S) +#define QUAK_D MT(MOD_LSFT, KC_D) +#define QUAK_F MT(MOD_LCTL, KC_F) +#define QUAK_J MT(MOD_LCTL, KC_J) +#define QUAK_K MT(MOD_LSFT, KC_K) +#define QUAK_L MT(MOD_LALT, KC_L) +#define QUAK__ MT(MOD_LGUI, KC_SCLN) + +enum sofle_layers { + _BASE, + _GAME, + _NAV, + _CHAR, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // base layer + [_BASE] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, DF(_BASE), KC_SCRL, DF(_GAME), + KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_BSLS, KC_DEL, KC_END, KC_PGDN, + MO(_CHAR), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // game layer + [_GAME] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, DF(_BASE), XXXXXXX, DF(_GAME), + KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_BSLS, KC_DEL, KC_END, KC_PGDN, + MO(_CHAR), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // navigation layer + [_NAV] = LAYOUT_tkl_f13_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, + _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, _______, _______, _______, _______, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, DF(_BASE), _______, DF(_GAME) + ), + + // special characters layer + [3] = LAYOUT_tkl_f13_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DF(_BASE), _______, KC_DEL, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______ + ), + + // layout template + /* + [0] = LAYOUT_tkl_f13_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + */ +}; diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/quaken/rules.mk b/keyboards/keebsforall/freebirdtkl/keymaps/quaken/rules.mk new file mode 100644 index 0000000..5926485 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/quaken/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = no +BOOTMAGIC_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes diff --git a/keyboards/keebsforall/freebirdtkl/readme.md b/keyboards/keebsforall/freebirdtkl/readme.md new file mode 100644 index 0000000..1b61d3c --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/readme.md @@ -0,0 +1,27 @@ +# KeebsForAll FreebirdTKL + +![FreebirdTKL](https://i.imgur.com/GnY639m.png) + +A TKL PCB with USB-C, hotswap, and multiple layouts + +* Keyboard Maintainer: [KnoblesseOblige](https://github.com/KnoblesseOblige) +* Hardware Supported: KeebsForAll FreebirdTKL +* Hardware Availability: https://keebsforall.com + +Make example for this keyboard (after setting up your build environment): + + make keebsforall/freebirdtkl:default + +Flashing example for this keyboard: + + make keebsforall/freebirdtkl: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 back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/keebsforall/freebirdtkl/rules.mk b/keyboards/keebsforall/freebirdtkl/rules.mk new file mode 100644 index 0000000..ab2c49d --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +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 +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mode/envoy/config.h b/keyboards/mode/envoy/config.h new file mode 100644 index 0000000..c976b6b --- /dev/null +++ b/keyboards/mode/envoy/config.h @@ -0,0 +1,27 @@ +/* +Copyright 2022 Gondolindrim + +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 WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 + +#define EECONFIG_KB_DATA_SIZE (1) diff --git a/keyboards/mode/envoy/envoy b/keyboards/mode/envoy/envoy new file mode 120000 index 0000000..b7c2b91 --- /dev/null +++ b/keyboards/mode/envoy/envoy @@ -0,0 +1 @@ +/home/zegonix/repos/zegonix-qmk-configs/keyboards/mode/envoy \ No newline at end of file diff --git a/keyboards/mode/envoy/halconf.h b/keyboards/mode/envoy/halconf.h new file mode 100644 index 0000000..485d48e --- /dev/null +++ b/keyboards/mode/envoy/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2020 QMK + * + * 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 HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/mode/envoy/info.json b/keyboards/mode/envoy/info.json new file mode 100644 index 0000000..b05acee --- /dev/null +++ b/keyboards/mode/envoy/info.json @@ -0,0 +1,200 @@ +{ + "manufacturer": "Mode Designs", + "keyboard_name": "M256W-H", + "maintainer": "Gondolindrim", + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "required": ["lto"], + "tapping": { + "term": 200 + }, + "matrix_pins": { + "cols": ["C9", "B1", "B0", "A10", "A15", "C10", "C11", "D2", "B3", "B4", "B8", "B9", "C0", "C1", "C2", "C4"], + "rows": ["C6", "C7", "C8", "C12", "A7", "C5"] + }, + "rgblight": { + "led_count": 30, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "knight": true, + "christmas": true, + "static_gradient": true, + "rgb_test": true, + "alternating": true, + "twinkle": true + } + }, + "url": "https://modedesigns.com/pages/envoy", + "usb": { + "device_version": "0.0.1", + "pid": "0x5754", + "vid": "0x00DE" + }, + "ws2812": { + "pin": "B15" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker" + }, + "community_layouts": [ + "65_ansi_blocker", + "65_ansi_blocker_tsangan" + ], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Del", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Page Up", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Down", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "End", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [5, 15], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 11], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 12], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 13], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Del", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\\|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Page Up", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Down", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "End", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [5, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [5, 15], "x": 4, "y": 4, "w": 7}, + {"label": "Ctrl", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 11], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 12], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 13], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/mode/envoy/keymaps/default/keymap.c b/keyboards/mode/envoy/keymaps/default/keymap.c new file mode 100644 index 0000000..a81d663 --- /dev/null +++ b/keyboards/mode/envoy/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2022 Gondolindrim + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_65_ansi_blocker( /* Base */ + KC_ESC , 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_BSPC, 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_BSLS, KC_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , 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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT +), +[1] = LAYOUT_65_ansi_blocker( + QK_BOOT, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/mode/envoy/keymaps/quaken/config.h b/keyboards/mode/envoy/keymaps/quaken/config.h new file mode 100644 index 0000000..021487a --- /dev/null +++ b/keyboards/mode/envoy/keymaps/quaken/config.h @@ -0,0 +1 @@ +#define DEBOUNCE 8 \ No newline at end of file diff --git a/keyboards/mode/envoy/keymaps/quaken/keymap.c b/keyboards/mode/envoy/keymaps/quaken/keymap.c new file mode 100644 index 0000000..69a0ce7 --- /dev/null +++ b/keyboards/mode/envoy/keymaps/quaken/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2022 Gondolindrim + * + * 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 + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum envoy_layers { + _BASE, + _GAME, + _NAV, + _DIV, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │50 │51 │52 │5F │49 │4A │ │4B │4C │4D │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + +// base layer +[_BASE] = LAYOUT_65_ansi_blocker( +KC_ESC, 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_BSPC, 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_BSLS, KC_PGUP, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, KC_PGDN, +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_UP, KC_END, +KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT_65_ansi_blocker( +KC_ESC, 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_BSPC, 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_BSLS, KC_PGUP, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, +KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT_65_ansi_blocker( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT_65_ansi_blocker( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, +_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, DF(_BASE), _______, KC_DEL, KC_VOLU, KC_VOLD, RGB_TOG, BL_TOGG, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______ +), +}; diff --git a/keyboards/mode/envoy/keymaps/quaken/rules.mk b/keyboards/mode/envoy/keymaps/quaken/rules.mk new file mode 100644 index 0000000..c0a2988 --- /dev/null +++ b/keyboards/mode/envoy/keymaps/quaken/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +DEBOUNCE_TYPE = sym_defer_g \ No newline at end of file diff --git a/keyboards/mode/envoy/keymaps/via/keymap.c b/keyboards/mode/envoy/keymaps/via/keymap.c new file mode 100644 index 0000000..a81d663 --- /dev/null +++ b/keyboards/mode/envoy/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2022 Gondolindrim + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_65_ansi_blocker( /* Base */ + KC_ESC , 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_BSPC, 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_BSLS, KC_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , 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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT +), +[1] = LAYOUT_65_ansi_blocker( + QK_BOOT, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/mode/envoy/keymaps/via/rules.mk b/keyboards/mode/envoy/keymaps/via/rules.mk new file mode 100644 index 0000000..1e5b998 --- /dev/null +++ b/keyboards/mode/envoy/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mode/envoy/m256wh.c b/keyboards/mode/envoy/m256wh.c new file mode 100644 index 0000000..cec427f --- /dev/null +++ b/keyboards/mode/envoy/m256wh.c @@ -0,0 +1,154 @@ +/* Copyright 2022 Gondolindrim + * + * 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 "quantum.h" + +#ifdef VIA_ENABLE +bool is_second_rgb_row_active; +enum via_secondrow_enable { + id_is_second_rgb_row_active = 0 +}; + +// Sets the second RGB row on or off; done by setting effect range. +void set_second_rgb_row(bool is_active) { + rgblight_disable_noeeprom(); + switch (is_active) + { + case true: + { + rgblight_set_effect_range(0,30); + break; + } + case false: + { + rgblight_set_effect_range(0,15); + break; + } + } + rgblight_enable_noeeprom(); +} + +// At the keyboard start, retrieves PMEM stored configs +void keyboard_post_init_kb(void) { + rgblight_disable_noeeprom(); + wait_ms(20); + eeconfig_read_kb_datablock(&is_second_rgb_row_active); + set_second_rgb_row(is_second_rgb_row_active); + rgblight_reload_from_eeprom(); + rgblight_set(); +} + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + // rgblight_disable(); // Enable RGB by default + // Define the defualt value and write it to EEPROM + is_second_rgb_row_active = true; + set_second_rgb_row(is_second_rgb_row_active); + eeconfig_update_kb_datablock(&is_second_rgb_row_active); + + // Disable rgblight by default on EEPROM initialization + rgblight_disable(); + + // Run user code if any + eeconfig_init_user(); +} + +void secondrow_config_set_value( uint8_t *data ) +{ + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch ( *value_id ) + { + case id_is_second_rgb_row_active: + { + is_second_rgb_row_active = (bool) *value_data; + break; + } + default: + { + is_second_rgb_row_active = true; + } + } + set_second_rgb_row(is_second_rgb_row_active); +} + +void secondrow_config_get_value( uint8_t *data ) +{ + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch ( *value_id ) + { + case id_is_second_rgb_row_active: + { + *value_data = is_second_rgb_row_active; + break; + } + default: + { + *value_data = false; + } + } +} + +void secondrow_config_save(void) +{ + + eeconfig_update_kb_datablock(&is_second_rgb_row_active); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if ( *channel_id == id_custom_channel ) { + switch ( *command_id ) + { + case id_custom_set_value: + { + secondrow_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: + { + secondrow_config_get_value(value_id_and_data); + break; + } + case id_custom_save: + { + secondrow_config_save(); + break; + } + default: + { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + // Return the unhandled state + *command_id = id_unhandled; + + // DO NOT call raw_hid_send(data,length) here, let caller do this +} +#endif diff --git a/keyboards/mode/envoy/matrix_diagram.md b/keyboards/mode/envoy/matrix_diagram.md new file mode 100644 index 0000000..fb7f5f1 --- /dev/null +++ b/keyboards/mode/envoy/matrix_diagram.md @@ -0,0 +1,18 @@ +# Matrix Diagram for Mode Designs M256W-H + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ +│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ +│50 │51 │52 │5F │49 │4A │ │4B │4C │4D │ +└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +┌─────┬───┬─────┬───────────────────────────┬─────┐ +│50 │51 │52 │5F │4A │ Blocker Tsangan +└─────┴───┴─────┴───────────────────────────┴─────┘ +``` diff --git a/keyboards/mode/envoy/mcuconf.h b/keyboards/mode/envoy/mcuconf.h new file mode 100644 index 0000000..3d1d05c --- /dev/null +++ b/keyboards/mode/envoy/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * 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 + +#include_next + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/mode/envoy/readme.md b/keyboards/mode/envoy/readme.md new file mode 100644 index 0000000..8b253f4 --- /dev/null +++ b/keyboards/mode/envoy/readme.md @@ -0,0 +1,25 @@ +# Mode M256-WH PCB QMK Firmware + +![m256wh](https://imgur.com/97KRZCrh.jpg) + +The M256-WH is the hotswap version PCB support for the Mode Envoy. + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: proprietary PCBs using the STM32F401 microcontroller; +* Hardware Availability: as of april 18, these PCBs are on the verge of being sold with the first kits of the Mode Envoy. + +## How to flash + +In order to flash this PCB, first build the default layout (after setting up your build environment): + + make mode/m256wh:default + +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**: press the button on the back of the PCB for at least five seconds +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (escape key, layer 1 of the default keymap) diff --git a/keyboards/mode/envoy/rules.mk b/keyboards/mode/envoy/rules.mk new file mode 100644 index 0000000..e69de29 diff --git a/keyboards/mode/mode80/chconf.h b/keyboards/mode/mode80/chconf.h new file mode 100644 index 0000000..cbbae31 --- /dev/null +++ b/keyboards/mode/mode80/chconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * 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 CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/mode/mode80/config.h b/keyboards/mode/mode80/config.h new file mode 100644 index 0000000..d553d5d --- /dev/null +++ b/keyboards/mode/mode80/config.h @@ -0,0 +1,23 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +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 + +/* 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 diff --git a/keyboards/mode/mode80/halconf.h b/keyboards/mode/mode80/halconf.h new file mode 100644 index 0000000..3aeb26b --- /dev/null +++ b/keyboards/mode/mode80/halconf.h @@ -0,0 +1,18 @@ +/* Copyright 2020 QMK + * + * 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 + +#include_next diff --git a/keyboards/mode/mode80/info.json b/keyboards/mode/mode80/info.json new file mode 100644 index 0000000..03a2d91 --- /dev/null +++ b/keyboards/mode/mode80/info.json @@ -0,0 +1,133 @@ +{ + "keyboard_name": "M80H V2", + "manufacturer": "Mode", + "url": "https://shop.modedesigns.com/collections/eighty", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0x00DE", + "pid": "0x0083", + "device_version": "0.0.2" + }, + "matrix_pins": { + "cols": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B10", "A8", "A10", "B15", "A15", "B5", "B8", "C13"], + "rows": ["B12", "B13", "B14", "B3", "B4", "B9"] + }, + "diode_direction": "COL2ROW", + "indicators": { + "caps_lock": "A0", + "on_state": 0 + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "community_layouts": ["tkl_ansi"], + "layout_aliases": { + "LAYOUT_m80v2h": "LAYOUT_tkl_ansi" + }, + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [0, 6], "x": 7.5, "y": 0}, + {"matrix": [0, 7], "x": 8.5, "y": 0}, + {"matrix": [0, 8], "x": 9.5, "y": 0}, + + {"matrix": [0, 9], "x": 11, "y": 0}, + {"matrix": [0, 10], "x": 12, "y": 0}, + {"matrix": [0, 11], "x": 13, "y": 0}, + {"matrix": [0, 12], "x": 14, "y": 0}, + + {"matrix": [0, 13], "x": 13, "y": 1.5, "w": 2}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.5}, + {"matrix": [1, 3], "x": 3, "y": 1.5}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + {"matrix": [1, 6], "x": 6, "y": 1.5}, + {"matrix": [1, 7], "x": 7, "y": 1.5}, + {"matrix": [1, 8], "x": 8, "y": 1.5}, + {"matrix": [1, 9], "x": 9, "y": 1.5}, + {"matrix": [1, 10], "x": 10, "y": 1.5}, + {"matrix": [1, 11], "x": 11, "y": 1.5}, + {"matrix": [1, 12], "x": 12, "y": 1.5}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.5}, + {"matrix": [1, 15], "x": 16.25, "y": 1.5}, + {"matrix": [1, 16], "x": 17.25, "y": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [2, 7], "x": 7.5, "y": 2.5}, + {"matrix": [2, 8], "x": 8.5, "y": 2.5}, + {"matrix": [2, 9], "x": 9.5, "y": 2.5}, + {"matrix": [2, 10], "x": 10.5, "y": 2.5}, + {"matrix": [2, 11], "x": 11.5, "y": 2.5}, + {"matrix": [2, 12], "x": 12.5, "y": 2.5}, + {"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.5}, + {"matrix": [2, 15], "x": 16.25, "y": 2.5}, + {"matrix": [2, 16], "x": 17.25, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [3, 7], "x": 7.75, "y": 3.5}, + {"matrix": [3, 8], "x": 8.75, "y": 3.5}, + {"matrix": [3, 9], "x": 9.75, "y": 3.5}, + {"matrix": [3, 10], "x": 10.75, "y": 3.5}, + {"matrix": [3, 11], "x": 11.75, "y": 3.5}, + {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.5}, + + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.5, "w": 1.25}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.5}, + {"matrix": [5, 15], "x": 16.25, "y": 5.5}, + {"matrix": [5, 16], "x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/mode/mode80/keymaps/quaken/keymap.c b/keyboards/mode/mode80/keymaps/quaken/keymap.c new file mode 100755 index 0000000..6e60417 --- /dev/null +++ b/keyboards/mode/mode80/keymaps/quaken/keymap.c @@ -0,0 +1,79 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +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 + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum layer_names { + _BASE, + _GAME, + _NAV, + _CHAR, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + [_LAYER] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + */ + [_BASE] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_MUTE, KC_VOLD, KC_VOLU, + KC_ESC, 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_INS, KC_HOME, KC_PGUP, + 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_BSLS, KC_DEL, KC_END, KC_PGDN, + MO(_CHAR),QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_GAME] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_MUTE, KC_VOLD, KC_VOLU, + KC_ESC, 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_INS, KC_HOME, KC_PGUP, + 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_BSLS, KC_DEL, KC_END, KC_PGDN, + MO(_CHAR),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_NAV] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_CHAR] = LAYOUT_tkl_ansi( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DF(_GAME),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(_BASE),KC_TRNS, KC_DEL, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mode/mode80/keymaps/quaken/rules.mk b/keyboards/mode/mode80/keymaps/quaken/rules.mk new file mode 100644 index 0000000..1e5b998 --- /dev/null +++ b/keyboards/mode/mode80/keymaps/quaken/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mode/mode80/mcuconf.h b/keyboards/mode/mode80/mcuconf.h new file mode 100644 index 0000000..6d5ee13 --- /dev/null +++ b/keyboards/mode/mode80/mcuconf.h @@ -0,0 +1,19 @@ +/* Copyright 2020 QMK + * + * 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 + +#include_next diff --git a/keyboards/mode/mode80/readme.md b/keyboards/mode/mode80/readme.md new file mode 100644 index 0000000..b5ea62e --- /dev/null +++ b/keyboards/mode/mode80/readme.md @@ -0,0 +1,38 @@ +# Mode Eighty V2 PCB QMK firmware + +![MODE80](https://i.imgur.com/26uzM3yl.jpg)\ +[Image Gallery](https://imgur.com/t/mechanicalkeyboards/8Uf6c2m?nc=1) + +The Mode80 is a tenkeyless high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). + +* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim) +* Hardware Supported: proprietary PCB using STM32F072 controller +* Hardware Availability: you can get a Mode Eighty as of today (dec. 2021) through the in stock sales or special groupbuy editions at https://shop.modedesigns.com/ + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed 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**: press the button on the front of the PCB, next to caps lock, for at least five seconds +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout) + +## Compile firmware + +After accessing the DFU state in your PCB, build the default layout using: + + make mode/m80v2/m80v2h:default # Hotswap + make mode/m80v2/m80v2s:default # Soldered + +Then download the resulting binary `*bin` file using `dfu-util` or QMK Toolbox. + +## Compile and flash + +After accessing the DFU state in your PCB, you can compile-and-flash automatically usind `dfu-util` through + + make mode/m80v2/m80v2h:default:flash # Hotswap + make mode/m80v2/m80v2s:default:flash # Soldered + +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/mode/mode80/rules.mk b/keyboards/mode/mode80/rules.mk new file mode 100644 index 0000000..88a4174 --- /dev/null +++ b/keyboards/mode/mode80/rules.mk @@ -0,0 +1,13 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +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 +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + diff --git a/keyboards/sofle/keymaps/quaken/config.h b/keyboards/sofle/keymaps/quaken/config.h new file mode 100644 index 0000000..c5494c2 --- /dev/null +++ b/keyboards/sofle/keymaps/quaken/config.h @@ -0,0 +1,6 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ diff --git a/keyboards/sofle/keymaps/quaken/keymap.c b/keyboards/sofle/keymaps/quaken/keymap.c new file mode 100644 index 0000000..47d49e7 --- /dev/null +++ b/keyboards/sofle/keymaps/quaken/keymap.c @@ -0,0 +1,149 @@ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum sofle_layers { + _BASE, + _GAME, + _NAV, + _CHAR, + _MOUS, +}; + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_WH_L, KC_WH_R), ENCODER_CCW_CW(KC_WH_D, KC_WH_U) }, + [_GAME] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U) }, + [_NAV] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(_______, _______) }, + [_CHAR] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + [_MOUS] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Keyboard Layout + * .-----------------------------------------------------. .-----------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BSPACE | + * |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + * | TAB | Q | W | E | R | T | | Y | U | I | O | P | \ | + * |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + * | LSHIFT | A | S | D | F | G | | H | J | K | L | ; | ' | + * |--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------| + * | LSHIFT | Z | X | C | V | B | ENC | | ENC | N | M | , | . | / | RSHIFT | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * | THUMB5 | THUMB4 | THUMB3 | THUMB2 | THUMB1 | | ESC | 1 | 2 | 3 | 4 | + * '--------------------------------------------' '--------------------------------------------' + * + */ + +// QWERTY LAYER +[_BASE] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, +KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, +MO(_CHAR), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, +KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, DF(_GAME), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LALT, KC_LCTL, MO(_MOUS), KC_SPC, KC_DEL, KC_BSPC, KC_ENT, MO(_NAV), KC_RALT, KC_LGUI +), + +// GAME LAYER +[_GAME] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, +KC_TAB, KC_G, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, +KC_LCTL, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +KC_T, KC_I, KC_Z, KC_X, KC_C, KC_V, KC_MUTE, DF(_BASE), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_B, KC_LALT, KC_I, KC_SPC, KC_M, KC_BSPC, KC_ENT, MO(_NAV), KC_RALT, KC_LGUI +), + +// NAVIGATION LAYER +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_F12, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, KC_BSLS, +_______, _______, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______ +), + +// SPECIAL CHARACTER LAYER +[_CHAR] = LAYOUT( +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______ +), + +// MOUSE KEYS LAYER +[_MOUS] = LAYOUT( +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, +_______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("MODE"), false); + oled_write_ln_P(PSTR(""), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_ln_P(PSTR("MAC"), false); + } else { + oled_write_ln_P(PSTR("WIN"), false); + } + + switch (get_highest_layer(default_layer_state)) { + case _BASE: + oled_write_ln_P(PSTR("BASE"), false); + break; + case _GAME: + oled_write_ln_P(PSTR("GAME"), false); + break; + default: + oled_write_P(PSTR("ERROR"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + oled_write_P(PSTR("\n\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } + return rotation; +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } + return false; +} + +#endif diff --git a/keyboards/sofle/keymaps/quaken/quaken b/keyboards/sofle/keymaps/quaken/quaken new file mode 120000 index 0000000..b307e21 --- /dev/null +++ b/keyboards/sofle/keymaps/quaken/quaken @@ -0,0 +1 @@ +/home/zegonix/repos/zegonix-qmk-configs/keyboards/sofle/keymaps/quaken \ No newline at end of file diff --git a/keyboards/sofle/keymaps/quaken/readme.md b/keyboards/sofle/keymaps/quaken/readme.md new file mode 100644 index 0000000..6d6dea2 --- /dev/null +++ b/keyboards/sofle/keymaps/quaken/readme.md @@ -0,0 +1,19 @@ +![SofleKeyboard default keymap](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard.png) +![SofleKeyboard adjust layer](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard_layout_adjust.png) + + +# Default keymap for Sofle Keyboard + +Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4) + + +Features: + +- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift) +- Various modes, can be switched (using Adjust layer and the selected one is stored in EEPROM. +- Modes for Qwerty and Colemak support +- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often. +- The OLED on master half shows selected mode and caps lock state and is rotated. +- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN. + + diff --git a/keyboards/sofle/keymaps/quaken/rules.mk b/keyboards/sofle/keymaps/quaken/rules.mk new file mode 100644 index 0000000..61c4528 --- /dev/null +++ b/keyboards/sofle/keymaps/quaken/rules.mk @@ -0,0 +1,7 @@ +BOOTMAGIC_ENABLE = yes +OLED_ENABLE = yes +ENCODER_ENABLE = yes +ENCODER_MAP_ENABLE = yes +CONSOLE_ENABLE = no +EXTRAKEY_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/zegonix/LICENSE b/keyboards/zegonix/LICENSE new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/keyboards/zegonix/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/keyboards/zegonix/README.md b/keyboards/zegonix/README.md new file mode 100644 index 0000000..f4b4c25 --- /dev/null +++ b/keyboards/zegonix/README.md @@ -0,0 +1,14 @@ +# Description + +This repository contains QMK configurations for all my keyboards. + +# Usage + +To use this repository, clone it into your locals QMK repositories 'keyboards' directory: + +``` +git clone git@github.com:zegonix/zegonix-qmk.git /keyboards/zegonix-qmk +``` + +If you are new to QMK, 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. The [Complete Newbs Guide](https://docs.qmk.fm/#/newbs) might also be useful. + diff --git a/keyboards/zegonix/cycle7/config.h b/keyboards/zegonix/cycle7/config.h new file mode 100644 index 0000000..1c6b127 --- /dev/null +++ b/keyboards/zegonix/cycle7/config.h @@ -0,0 +1,54 @@ +// Copyright 2024 zegonix (@zegonix) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + * 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 + +/* clock configuration */ +#ifdef STM32_HSECLK +#undef STM32_HSECLK +#endif // STM32_HSECLK +#define STM32_HSECLK 12000000U + +#ifdef STM32_HSE_BYPASS +#undef STM32_HSE_BYPASS +#endif // STM32_HSE_BYPASS + +/* configuration of indicator led */ +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_PWM_DMA_CHANNEL 3 + +#define WS2812_PWM_TARGET_PERIOD 800000 +#ifdef WS2812_RGBW +#undef WS2812_RGBW +#endif +#ifdef WS2812_EXTERNAL_PULLUP +#undef WS2812_EXTERNAL_PULLUP +#endif + +#ifdef WS2812_PWM_COMPLEMENTARY_OUTPUT +#undef WS2812_PWM_COMPLEMENTARY_OUTPUT +#endif + +// configuration of rgb light abstraction layer +#define RGBLIGHT_SLEEP +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF diff --git a/keyboards/zegonix/cycle7/halconf.h b/keyboards/zegonix/cycle7/halconf.h new file mode 100644 index 0000000..20e06a2 --- /dev/null +++ b/keyboards/zegonix/cycle7/halconf.h @@ -0,0 +1,5 @@ +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/zegonix/cycle7/info.json b/keyboards/zegonix/cycle7/info.json new file mode 100644 index 0000000..901be4b --- /dev/null +++ b/keyboards/zegonix/cycle7/info.json @@ -0,0 +1,115 @@ +{ + "manufacturer": "=", + "keyboard_name": "zegonix-cycle7", + "maintainer": "zegonix", + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "url": "https://github.com/zegonix/custom-cycle7-pcb", + "features": { + "bootmagic": true, + "nkro": true, + "extrakey": true, + "mousekey": true, + "rgblight": true + }, + "required": ["lto"], + "usb": { + "device_version": "0.0.1", + "pid": "0x6337", + "vid": "0x7A78" + }, + "matrix_pins": { + "cols": ["C14", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "D2", "C12", "C11", "C10", "A15", "C9", "C8", "C7"], + "rows": ["A6", "A7", "C4", "C5", "B0"] + }, + "rgblight": { + "led_count": 16 + }, + "ws2812": { + "pin": "A5", + "driver": "bitbang" + }, + "tapping": { + "term": 200 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0, "w": 1}, + {"label": "1!", "matrix": [0, 1], "x": 1, "y": 0, "w": 1}, + {"label": "2@", "matrix": [0, 2], "x": 2, "y": 0, "w": 1}, + {"label": "3#", "matrix": [0, 3], "x": 3, "y": 0, "w": 1}, + {"label": "4$", "matrix": [0, 4], "x": 4, "y": 0, "w": 1}, + {"label": "5%", "matrix": [0, 5], "x": 5, "y": 0, "w": 1}, + {"label": "6^", "matrix": [0, 6], "x": 6, "y": 0, "w": 1}, + {"label": "7&", "matrix": [0, 7], "x": 7, "y": 0, "w": 1}, + {"label": "8*", "matrix": [0, 8], "x": 8, "y": 0, "w": 1}, + {"label": "9(", "matrix": [0, 9], "x": 9, "y": 0, "w": 1}, + {"label": "0)", "matrix": [0, 10], "x": 10, "y": 0, "w": 1}, + {"label": "-_", "matrix": [0, 11], "x": 11, "y": 0, "w": 1}, + {"label": "=+", "matrix": [2, 13], "x": 12, "y": 0, "w": 1}, + {"label": "BSPC", "matrix": [0, 12], "x": 13, "y": 0, "w": 2}, + {"label": "INS", "matrix": [0, 13], "x": 15.5, "y": 0, "w": 1}, + {"label": "HOME", "matrix": [0, 14], "x": 16.5, "y": 0, "w": 1}, + {"label": "PGUP", "matrix": [0, 15], "x": 17.5, "y": 0, "w": 1}, + {"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1, "w": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1, "w": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1, "w": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1, "w": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1, "w": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1, "w": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1, "w": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1, "w": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1, "w": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1, "w": 1}, + {"label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1, "w": 1}, + {"label": "]}", "matrix": [3, 13], "x": 12.5, "y": 1, "w": 1}, + {"label": "\\|", "matrix": [1, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "DEL", "matrix": [1, 13], "x": 15.5, "y": 1, "w": 1}, + {"label": "END", "matrix": [1, 14], "x": 16.5, "y": 1, "w": 1}, + {"label": "PGDN", "matrix": [1, 15], "x": 17.5, "y": 1, "w": 1}, + {"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2, "w": 1}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2, "w": 1}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2, "w": 1}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2, "w": 1}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2, "w": 1}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2, "w": 1}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2, "w": 1}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2, "w": 1}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2, "w": 1}, + {"label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2, "w": 1}, + {"label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2, "w": 1}, + {"label": "ENT", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 1], "x": 2.25, "y": 3, "w": 1}, + {"label": "X", "matrix": [3, 2], "x": 3.25, "y": 3, "w": 1}, + {"label": "C", "matrix": [3, 3], "x": 4.25, "y": 3, "w": 1}, + {"label": "V", "matrix": [3, 4], "x": 5.25, "y": 3, "w": 1}, + {"label": "B", "matrix": [3, 5], "x": 6.25, "y": 3, "w": 1}, + {"label": "N", "matrix": [3, 6], "x": 7.25, "y": 3, "w": 1}, + {"label": "M", "matrix": [3, 7], "x": 8.25, "y": 3, "w": 1}, + {"label": ",<", "matrix": [3, 8], "x": 9.25, "y": 3, "w": 1}, + {"label": ".>", "matrix": [3, 9], "x": 10.25, "y": 3, "w": 1}, + {"label": "/?", "matrix": [3, 10], "x": 11.25, "y": 3, "w": 1}, + {"label": "RSFT", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "UP", "matrix": [3, 14], "x": 15.5, "y": 3, "w": 1}, + {"label": "LCTL", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LALT", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "SPC0", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 1.25}, + {"label": "SPC1", "matrix": [4, 5], "x": 5, "y": 4, "w": 2.75}, + {"label": "SPC2", "matrix": [4, 7], "x": 7.75, "y": 4, "w": 2.25}, + {"label": "FUNC", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "RCTL", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "RGUI", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "RALT", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25}, + {"label": "LEFT", "matrix": [4, 13], "x": 15.5, "y": 4, "w": 1}, + {"label": "DOWN", "matrix": [4, 14], "x": 16.5, "y": 4, "w": 1}, + {"label": "RGHT", "matrix": [4, 15], "x": 17.5, "y": 4, "w": 1} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/keyboard.json b/keyboards/zegonix/cycle7/keyboard.json new file mode 100644 index 0000000..e69de29 diff --git a/keyboards/zegonix/cycle7/keymaps/default/keymap.c b/keyboards/zegonix/cycle7/keymaps/default/keymap.c new file mode 100644 index 0000000..8b660fa --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/default/keymap.c @@ -0,0 +1,82 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum envoy_layers { + _BASE, + _GAME, + _NAV, + _DIV, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ : = : + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ :...┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ : ] │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, KC_EQL, +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_RBRC, KC_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_EQL, +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_RBRC, KC_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_M, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, QK_BOOT, _______, _______, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, KC_F12, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, KC_DEL, _______, _______, _______, _______, _______, KC_F12, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; diff --git a/keyboards/zegonix/cycle7/keymaps/default/quaken/config.h b/keyboards/zegonix/cycle7/keymaps/default/quaken/config.h new file mode 100644 index 0000000..b82a148 --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/default/quaken/config.h @@ -0,0 +1 @@ +// #define DEBOUNCE 8 \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/keymaps/default/quaken/keymap.c b/keyboards/zegonix/cycle7/keymaps/default/quaken/keymap.c new file mode 100644 index 0000000..b6de2ac --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/default/quaken/keymap.c @@ -0,0 +1,92 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum envoy_layers { + _BASE, + _GAME, + _NAV, + _DIV, + _MOUS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ : = : + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ :...┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ : ] │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, MO(_MOUS), KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_M, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT, _______, _______, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, +_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, DF(_BASE), _______, KC_DEL, KC_VOLU, KC_VOLD, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// mouse layer +[_MOUS] = LAYOUT( +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; diff --git a/keyboards/zegonix/cycle7/keymaps/default/quaken/rules.mk b/keyboards/zegonix/cycle7/keymaps/default/quaken/rules.mk new file mode 100644 index 0000000..5fe95a5 --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/default/quaken/rules.mk @@ -0,0 +1,5 @@ +# CONSOLE_ENABLE = yes +# VIA_ENABLE = yes +# MOUSEKEY_ENABLE = yes +# EXTRAKEY_ENABLE = yes +# DEBOUNCE_TYPE = sym_defer_g \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/keymaps/quaken/config.h b/keyboards/zegonix/cycle7/keymaps/quaken/config.h new file mode 100644 index 0000000..021487a --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/quaken/config.h @@ -0,0 +1 @@ +#define DEBOUNCE 8 \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/keymaps/quaken/keymap.c b/keyboards/zegonix/cycle7/keymaps/quaken/keymap.c new file mode 100644 index 0000000..9d055f0 --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/quaken/keymap.c @@ -0,0 +1,133 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum layer_names { + _BASE, + _GAME, + _NAV, + _DIV, + _MOUS, + + _CAPS, // for lighting layers only, do not assign keymap! +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_M, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT, _______, _______, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, RGB_M_P, _______, +_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, DF(_BASE), _______, KC_DEL, KC_VOLU, KC_VOLD, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, +QK_BOOT, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI +), + +// mouse layer +[_MOUS] = LAYOUT( +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_M_P, _______, +_______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI +), +}; + +/* Indicator LED Configuraton */ +const rgblight_segment_t PROGMEM rgb_layer_BASE[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_YELLOW}); +const rgblight_segment_t PROGMEM rgb_layer_GAME[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_SPRINGGREEN}); +const rgblight_segment_t PROGMEM rgb_layer_NAV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_DIV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_MOUS[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_CAPS[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_WHITE}); + +const rgblight_segment_t * const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + [_BASE] = rgb_layer_BASE, + [_GAME] = rgb_layer_GAME, + [_NAV] = rgb_layer_NAV, + [_DIV] = rgb_layer_DIV, + [_MOUS] = rgb_layer_MOUS, + [_CAPS] = rgb_layer_CAPS +); + +void keyboard_post_init_user(void) { + rgblight_layers = rgb_layers; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(_CAPS, led_state.caps_lock); + return true; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE)); + rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME)); + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV)); + rgblight_set_layer_state(_DIV, layer_state_cmp(state, _DIV)); + rgblight_set_layer_state(_MOUS, layer_state_cmp(state, _MOUS)); + return state; +} \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/keymaps/quaken/rules.mk b/keyboards/zegonix/cycle7/keymaps/quaken/rules.mk new file mode 100644 index 0000000..aeaecc0 --- /dev/null +++ b/keyboards/zegonix/cycle7/keymaps/quaken/rules.mk @@ -0,0 +1,2 @@ + +DEBOUNCE_TYPE = sym_defer_g \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/mcuconf.h b/keyboards/zegonix/cycle7/mcuconf.h new file mode 100644 index 0000000..eb4e36f --- /dev/null +++ b/keyboards/zegonix/cycle7/mcuconf.h @@ -0,0 +1,19 @@ + +#pragma once +#include_next + +/* clock configuration */ +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 6 + +/* system configuration */ +#ifdef STM32_ST_USE_TIMER +#undef STM32_ST_USE_TIMER +#endif +#define STM32_ST_USE_TIMER 5 + +/* led driver configuration */ +#ifdef STM32_PWM_USE_TIM2 +#undef STM32_PWM_USE_TIM2 +#endif +#define STM32_PWM_USE_TIM2 TRUE \ No newline at end of file diff --git a/keyboards/zegonix/cycle7/readme.md b/keyboards/zegonix/cycle7/readme.md new file mode 100644 index 0000000..720f0f0 --- /dev/null +++ b/keyboards/zegonix/cycle7/readme.md @@ -0,0 +1,34 @@ +# Description + +Configuration for my custom PCB for TKD's Cycle7 with (weird) split spacebar design. + +* Keyboard Maintainer: [zegonix](https://github.com/zegonix) +* Hardware Supported: [custom-cycle7-pcb](https://github.com/zegonix/custom-cycle7-pcb) +* Hardware Availability: the pcb is open source, order it yourself + +# Building and flashing firmware +To build and flash the firmware, set up the qmk tool and use the compile and flash commands: + +``` +qmk config user.keyboard=zegonix-qmk/cycle7 +qmk config user.keymap=quaken +qmk compile +qmk flash +``` + +Alternatively you can use the QMK root level Makefile: + +``` +make zegonix/cycle7:quaken // build firmware +make zegonix/cycle7:quaken:dfu-utils // build and flash firmware +``` + +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 the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, which is be Escape key, while connecting the keyboard. *This variant was not tested* +* **Physical reset button**: Short the two Pins of J2 (usually a pair of tweezers works well) and press the reset button (only button on the backside) +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. diff --git a/keyboards/zegonix/cycle7/rules.mk b/keyboards/zegonix/cycle7/rules.mk new file mode 100644 index 0000000..3292a07 --- /dev/null +++ b/keyboards/zegonix/cycle7/rules.mk @@ -0,0 +1 @@ +WS2812_DRIVER_REQUIRED = yes \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/config.h b/keyboards/zegonix/test_pico/config.h new file mode 100644 index 0000000..283e9c4 --- /dev/null +++ b/keyboards/zegonix/test_pico/config.h @@ -0,0 +1,28 @@ +// Copyright 2024 zegonix (@zegonix) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + * 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 + +/* configuration of indicator led */ + + +// configuration of rgb light abstraction layer +// #define RGBLIGHT_SLEEP +#define RGBLIGHT_LAYERS +// #define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF diff --git a/keyboards/zegonix/test_pico/info.json b/keyboards/zegonix/test_pico/info.json new file mode 100644 index 0000000..33bdc33 --- /dev/null +++ b/keyboards/zegonix/test_pico/info.json @@ -0,0 +1,46 @@ +{ + "manufacturer": "=", + "keyboard_name": "test-pico", + "maintainer": "zegonix", + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "url": "https://github.com/zegonix/custom-cycle7-pcb", + "features": { + "bootmagic": true, + "nkro": true, + "extrakey": true, + "mousekey": true, + "rgblight": true + }, + "required": ["lto"], + "usb": { + "device_version": "0.0.1", + "pid": "0x6337", + "vid": "0x7A78" + }, + "matrix_pins": { + "cols": ["GP2", "GP3"], + "rows": ["GP4", "GP5"] + }, + "rgblight": { + "led_count": 1 + }, + "ws2812": { + "pin": "GP1", + "driver": "vendor" + }, + "tapping": { + "term": 200 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0", "matrix": [0, 0], "x": 0, "y": 0, "w": 1}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0, "w": 1}, + {"label": "2", "matrix": [1, 0], "x": 2, "y": 0, "w": 1}, + {"label": "3", "matrix": [1, 1], "x": 3, "y": 0, "w": 1} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/keymaps/default/keymap.c b/keyboards/zegonix/test_pico/keymaps/default/keymap.c new file mode 100644 index 0000000..8b660fa --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/default/keymap.c @@ -0,0 +1,82 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum envoy_layers { + _BASE, + _GAME, + _NAV, + _DIV, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ : = : + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ :...┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ : ] │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, KC_EQL, +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_RBRC, KC_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_EQL, +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_RBRC, KC_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_M, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, QK_BOOT, _______, _______, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, KC_F12, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, KC_DEL, _______, _______, _______, _______, _______, KC_F12, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; diff --git a/keyboards/zegonix/test_pico/keymaps/default/quaken/config.h b/keyboards/zegonix/test_pico/keymaps/default/quaken/config.h new file mode 100644 index 0000000..b82a148 --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/default/quaken/config.h @@ -0,0 +1 @@ +// #define DEBOUNCE 8 \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/keymaps/default/quaken/keymap.c b/keyboards/zegonix/test_pico/keymaps/default/quaken/keymap.c new file mode 100644 index 0000000..b6de2ac --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/default/quaken/keymap.c @@ -0,0 +1,92 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum envoy_layers { + _BASE, + _GAME, + _NAV, + _DIV, + _MOUS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ : = : + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ :...┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ : ] │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), QUAK_A, QUAK_S, QUAK_D, QUAK_F, KC_G, KC_H, QUAK_J, QUAK_K, QUAK_L, QUAK__, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, MO(_MOUS), KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, +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_BSLS, KC_DEL, KC_END, KC_PGDN, +MO(_DIV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, +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_UP, +KC_LCTL, KC_LGUI, KC_LALT, KC_M, KC_SPC, KC_BSPC, MO(_NAV), KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT, _______, _______, +_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, +_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, KC_LALT, KC_LSFT, KC_LCTL, DF(_BASE), _______, KC_DEL, KC_VOLU, KC_VOLD, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// mouse layer +[_MOUS] = LAYOUT( +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; diff --git a/keyboards/zegonix/test_pico/keymaps/default/quaken/rules.mk b/keyboards/zegonix/test_pico/keymaps/default/quaken/rules.mk new file mode 100644 index 0000000..5fe95a5 --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/default/quaken/rules.mk @@ -0,0 +1,5 @@ +# CONSOLE_ENABLE = yes +# VIA_ENABLE = yes +# MOUSEKEY_ENABLE = yes +# EXTRAKEY_ENABLE = yes +# DEBOUNCE_TYPE = sym_defer_g \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/keymaps/quaken/config.h b/keyboards/zegonix/test_pico/keymaps/quaken/config.h new file mode 100644 index 0000000..021487a --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/quaken/config.h @@ -0,0 +1 @@ +#define DEBOUNCE 8 \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/keymaps/quaken/keymap.c b/keyboards/zegonix/test_pico/keymaps/quaken/keymap.c new file mode 100644 index 0000000..61d152c --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/quaken/keymap.c @@ -0,0 +1,118 @@ +/* + * KEYMAP KEYMAP KEYMAP, QUAK! + */ +#include QMK_KEYBOARD_H + +#define QUAK_A (MT(MOD_LGUI, KC_A)) +#define QUAK_S (MT(MOD_LALT, KC_S)) +#define QUAK_D (MT(MOD_LSFT, KC_D)) +#define QUAK_F (MT(MOD_LCTL, KC_F)) +#define QUAK_J (MT(MOD_LCTL, KC_J)) +#define QUAK_K (MT(MOD_LSFT, KC_K)) +#define QUAK_L (MT(MOD_LALT, KC_L)) +#define QUAK__ (MT(MOD_LGUI, KC_SCLN)) + +enum layer_names { + _BASE, + _GAME, + _NAV, + _DIV, + _MOUS, + + _CAPS, // for lighting layers only, do not assign keymap! +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * keyboard layout + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │2D │0C │ │0D │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │3D │1C │ │1D │1E │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ : = : + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ :...┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ : ] │3E │ + * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │40 │41 │42 │43 │45 │47 │49 │4A │ 4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────┴──────────┴────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +/// [TEMPLATE] +// [] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), + +// base layer +[_BASE] = LAYOUT( +KC_ESC, KC_1, +KC_TAB, KC_Q +), + +// gaming layer +[_GAME] = LAYOUT( +KC_ESC, KC_1, +KC_TAB, KC_Q +), + +// navigation layer +[_NAV] = LAYOUT( +KC_GRV, KC_F1, +_______, _______ +), + +// div +[_DIV] = LAYOUT( +KC_GRV, KC_F1, +_______, _______ +), + +// mouse layer +[_MOUS] = LAYOUT( +_______, _______, +_______, _______ +), +}; + +/* Indicator LED Configuraton */ +const rgblight_segment_t PROGMEM rgb_layer_BASE[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_YELLOW}); +const rgblight_segment_t PROGMEM rgb_layer_GAME[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_SPRINGGREEN}); +const rgblight_segment_t PROGMEM rgb_layer_NAV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_DIV[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_MOUS[] = RGBLIGHT_LAYER_SEGMENTS({11, 2, HSV_PURPLE}); +const rgblight_segment_t PROGMEM rgb_layer_CAPS[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_WHITE}); + +const rgblight_segment_t * const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + [_BASE] = rgb_layer_BASE, + [_GAME] = rgb_layer_GAME, + [_NAV] = rgb_layer_NAV, + [_DIV] = rgb_layer_DIV, + [_MOUS] = rgb_layer_MOUS, + [_CAPS] = rgb_layer_CAPS +); + +void keyboard_post_init_user(void) { + rgblight_layers = rgb_layers; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(_CAPS, led_state.caps_lock); + return true; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE)); + rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME)); + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV)); + rgblight_set_layer_state(_DIV, layer_state_cmp(state, _DIV)); + rgblight_set_layer_state(_MOUS, layer_state_cmp(state, _MOUS)); + return state; +} \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/keymaps/quaken/rules.mk b/keyboards/zegonix/test_pico/keymaps/quaken/rules.mk new file mode 100644 index 0000000..aeaecc0 --- /dev/null +++ b/keyboards/zegonix/test_pico/keymaps/quaken/rules.mk @@ -0,0 +1,2 @@ + +DEBOUNCE_TYPE = sym_defer_g \ No newline at end of file diff --git a/keyboards/zegonix/test_pico/readme.md b/keyboards/zegonix/test_pico/readme.md new file mode 100644 index 0000000..720f0f0 --- /dev/null +++ b/keyboards/zegonix/test_pico/readme.md @@ -0,0 +1,34 @@ +# Description + +Configuration for my custom PCB for TKD's Cycle7 with (weird) split spacebar design. + +* Keyboard Maintainer: [zegonix](https://github.com/zegonix) +* Hardware Supported: [custom-cycle7-pcb](https://github.com/zegonix/custom-cycle7-pcb) +* Hardware Availability: the pcb is open source, order it yourself + +# Building and flashing firmware +To build and flash the firmware, set up the qmk tool and use the compile and flash commands: + +``` +qmk config user.keyboard=zegonix-qmk/cycle7 +qmk config user.keymap=quaken +qmk compile +qmk flash +``` + +Alternatively you can use the QMK root level Makefile: + +``` +make zegonix/cycle7:quaken // build firmware +make zegonix/cycle7:quaken:dfu-utils // build and flash firmware +``` + +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 the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, which is be Escape key, while connecting the keyboard. *This variant was not tested* +* **Physical reset button**: Short the two Pins of J2 (usually a pair of tweezers works well) and press the reset button (only button on the backside) +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. diff --git a/keyboards/zegonix/test_pico/rules.mk b/keyboards/zegonix/test_pico/rules.mk new file mode 100644 index 0000000..3292a07 --- /dev/null +++ b/keyboards/zegonix/test_pico/rules.mk @@ -0,0 +1 @@ +WS2812_DRIVER_REQUIRED = yes \ No newline at end of file diff --git a/keyboards/zegonix/zegonix b/keyboards/zegonix/zegonix new file mode 120000 index 0000000..1f96daf --- /dev/null +++ b/keyboards/zegonix/zegonix @@ -0,0 +1 @@ +/home/zegonix/repos/zegonix-qmk-configs/keyboards/zegonix \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..453cb92 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +if qmk does not compile, try 'qmk git-submodule -f' \ No newline at end of file