From 386a5019a8147136c2732452cd87954378e0ec16 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 19 Mar 2025 12:45:28 +1100 Subject: [PATCH 01/25] Fixup MSYS + unix-style paths in Community Modules. (#25012) Fixup MSYS + unix-style paths. --- lib/python/qmk/cli/generate/rules_mk.py | 4 ++-- lib/python/qmk/path.py | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index cae9b07c3e8..ef4101d77fb 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -10,7 +10,7 @@ from qmk.info import info_json, get_modules from qmk.json_schema import json_load from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.commands import dump_lines, parse_configurator_json -from qmk.path import normpath, FileType +from qmk.path import normpath, unix_style_path, FileType from qmk.constants import GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE from qmk.community_modules import find_module_path, load_module_jsons @@ -63,7 +63,7 @@ def generate_modules_rules(keyboard, filename): lines.append('') lines.append('OPT_DEFS += -DCOMMUNITY_MODULES_ENABLE=TRUE') for module in modules: - module_path = find_module_path(module) + module_path = unix_style_path(find_module_path(module)) if not module_path: raise FileNotFoundError(f"Module '{module}' not found.") lines.append('') diff --git a/lib/python/qmk/path.py b/lib/python/qmk/path.py index 61daad585fe..c47ed183621 100644 --- a/lib/python/qmk/path.py +++ b/lib/python/qmk/path.py @@ -3,7 +3,7 @@ import logging import os import argparse -from pathlib import Path +from pathlib import Path, PureWindowsPath, PurePosixPath from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE from qmk.errors import NoSuchKeyboardError @@ -146,6 +146,28 @@ def normpath(path): return Path(os.environ['ORIG_CWD']) / path +def unix_style_path(path): + """Converts a Windows-style path with drive letter to a Unix path. + + Path().as_posix() normally returns the path with drive letter and forward slashes, so is inappropriate for `Makefile` paths. + + Passes through unadulterated if the path is not a Windows-style path. + + Args: + + path + The path to convert. + + Returns: + The input path converted to Unix format. + """ + if isinstance(path, PureWindowsPath): + p = list(path.parts) + p[0] = f'/{p[0][0].lower()}' # convert from `X:/` to `/x` + path = PurePosixPath(*p) + return path + + class FileType(argparse.FileType): def __init__(self, *args, **kwargs): # Use UTF8 by default for stdin From 46829663aa976fa730c70083114b5d7933fe42b4 Mon Sep 17 00:00:00 2001 From: Wilson Pika Choo Date: Thu, 20 Mar 2025 01:33:53 +0900 Subject: [PATCH 02/25] [Keyboard] Change uzu42 `usb.vid` (#25014) change generic vendor code --- keyboards/uzu42/rev1/keyboard.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/uzu42/rev1/keyboard.json b/keyboards/uzu42/rev1/keyboard.json index f96327daead..6f4f080e679 100644 --- a/keyboards/uzu42/rev1/keyboard.json +++ b/keyboards/uzu42/rev1/keyboard.json @@ -4,7 +4,7 @@ "url": "https://github.com/nrtkbb/Keyboards/tree/master/uzu42", "maintainer": "nrtkbb", "usb": { - "vid": "0xFEED", + "vid": "0x6E74", "pid": "0x3060", "device_version": "0.0.1" }, From e7c5695a0c09d9d673b2185548cae43a38026085 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Thu, 20 Mar 2025 01:06:54 -0400 Subject: [PATCH 03/25] Minor keymap fix on Cerberus HS (#25043) --- .../cannonkeys/cerberus/hotswap/keymaps/default/keymap.c | 4 ++-- .../cannonkeys/cerberus/solderable/keymaps/default/keymap.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/cannonkeys/cerberus/hotswap/keymaps/default/keymap.c b/keyboards/cannonkeys/cerberus/hotswap/keymaps/default/keymap.c index 865dbff4003..779070197a4 100644 --- a/keyboards/cannonkeys/cerberus/hotswap/keymaps/default/keymap.c +++ b/keyboards/cannonkeys/cerberus/hotswap/keymaps/default/keymap.c @@ -12,8 +12,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_GRV, 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, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [_FN1] = LAYOUT_all( diff --git a/keyboards/cannonkeys/cerberus/solderable/keymaps/default/keymap.c b/keyboards/cannonkeys/cerberus/solderable/keymaps/default/keymap.c index 2b87af0e997..782e9a138fd 100644 --- a/keyboards/cannonkeys/cerberus/solderable/keymaps/default/keymap.c +++ b/keyboards/cannonkeys/cerberus/solderable/keymaps/default/keymap.c @@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_GRV, 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, 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_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [_FN1] = LAYOUT_all( From c5232ba6996f89b62a53496e95271cb9052c50ee Mon Sep 17 00:00:00 2001 From: Anthony Abruzzini Date: Thu, 20 Mar 2025 14:35:58 -0700 Subject: [PATCH 04/25] Fix typo in docs: split_keyboard.md SPLIT_USB_DETECT ("theres's -> "there's") (#24984) * Fix typo "theres's" * Update docs/features/split_keyboard.md Co-authored-by: jack --------- Co-authored-by: jack --- docs/features/split_keyboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/split_keyboard.md b/docs/features/split_keyboard.md index 49582c3946f..fbf5d3d3e2f 100644 --- a/docs/features/split_keyboard.md +++ b/docs/features/split_keyboard.md @@ -444,7 +444,7 @@ This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable #define SPLIT_USB_DETECT ``` -Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave. +Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and active USB communication, then that half assumes it is the master, otherwise it assumes it is the slave. Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection). From 96882c6a67c95bd5d59873d0921f15a3903dd6dc Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Thu, 20 Mar 2025 21:44:19 +0000 Subject: [PATCH 05/25] Correct json for Fullsize JIS Community Layouts (#23660) initial commit --- layouts/default/fullsize_extended_jis/info.json | 7 ++++--- layouts/default/fullsize_jis/info.json | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/layouts/default/fullsize_extended_jis/info.json b/layouts/default/fullsize_extended_jis/info.json index 8267b4c54f2..b410273cd9d 100644 --- a/layouts/default/fullsize_extended_jis/info.json +++ b/layouts/default/fullsize_extended_jis/info.json @@ -48,8 +48,8 @@ {"x": 19.5, "y": 1.25}, {"x": 20.5, "y": 1.25}, {"x": 21.5, "y": 1.25}, - {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 0, "y": 2.25, "w": 1.5}, {"x": 1.5, "y": 2.25}, {"x": 2.5, "y": 2.25}, {"x": 3.5, "y": 2.25}, @@ -62,7 +62,7 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -84,6 +84,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 18.5, "y": 3.25}, {"x": 19.5, "y": 3.25}, {"x": 20.5, "y": 3.25}, @@ -106,7 +107,7 @@ {"x": 19.5, "y": 4.25}, {"x": 20.5, "y": 4.25}, {"x": 21.5, "y": 4.25, "h": 2}, - + {"x": 0, "y": 5.25, "w": 1.25}, {"x": 1.25, "y": 5.25, "w": 1.25}, {"x": 2.5, "y": 5.25, "w": 1.25}, diff --git a/layouts/default/fullsize_jis/info.json b/layouts/default/fullsize_jis/info.json index 8acd5f2fe3a..f573125a086 100644 --- a/layouts/default/fullsize_jis/info.json +++ b/layouts/default/fullsize_jis/info.json @@ -44,8 +44,8 @@ {"x": 19.5, "y": 1.25}, {"x": 20.5, "y": 1.25}, {"x": 21.5, "y": 1.25}, - {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 0, "y": 2.25, "w": 1.5}, {"x": 1.5, "y": 2.25}, {"x": 2.5, "y": 2.25}, {"x": 3.5, "y": 2.25}, @@ -58,7 +58,6 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -80,6 +79,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 18.5, "y": 3.25}, {"x": 19.5, "y": 3.25}, {"x": 20.5, "y": 3.25}, @@ -102,7 +102,7 @@ {"x": 19.5, "y": 4.25}, {"x": 20.5, "y": 4.25}, {"x": 21.5, "y": 4.25, "h": 2}, - + {"x": 0, "y": 5.25, "w": 1.25}, {"x": 1.25, "y": 5.25, "w": 1.25}, {"x": 2.5, "y": 5.25, "w": 1.25}, From 3a8c76fae59387df3435948a424cdd0fcda7d66f Mon Sep 17 00:00:00 2001 From: mikiya418 <64995478+mikiya418@users.noreply.github.com> Date: Fri, 21 Mar 2025 06:54:54 +0900 Subject: [PATCH 06/25] Develop 5keys (#24555) * [Keyboard]Add 5keys * Add files via upload * Delete 5keys.json * Add files via upload * Delete 5keys_default.hex * Add keyboard 5keys * Add Copylight * Update keyboards/5keys/keyboard.json Co-authored-by: Drashna Jaelre * Update keyboards/5keys/keyboard.json Co-authored-by: Drashna Jaelre * Update readme.md --------- Co-authored-by: Drashna Jaelre --- keyboards/5keys/keyboard.json | 34 ++++++++++++++++++++++++ keyboards/5keys/keymaps/default/keymap.c | 21 +++++++++++++++ keyboards/5keys/readme.md | 27 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 keyboards/5keys/keyboard.json create mode 100644 keyboards/5keys/keymaps/default/keymap.c create mode 100644 keyboards/5keys/readme.md diff --git a/keyboards/5keys/keyboard.json b/keyboards/5keys/keyboard.json new file mode 100644 index 00000000000..7a40d1014d6 --- /dev/null +++ b/keyboards/5keys/keyboard.json @@ -0,0 +1,34 @@ +{ + "manufacturer": "mikiya418", + "keyboard_name": "5keys", + "maintainer": "mikiya418", + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "matrix_pins": { + "direct": [ + ["F4","F5","F6","F7","B1"] + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4D4B" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix":[0,0], "x":0, "y":0}, + {"matrix":[0,1], "x":1, "y":0}, + {"matrix":[0,2], "x":2, "y":0}, + {"matrix":[0,3], "x":3, "y":0}, + {"matrix":[0,4], "x":4, "y":0} + ] + } + } +} diff --git a/keyboards/5keys/keymaps/default/keymap.c b/keyboards/5keys/keymaps/default/keymap.c new file mode 100644 index 00000000000..878ae4286b9 --- /dev/null +++ b/keyboards/5keys/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +/* Copylight 2024 mikiya418. + * + * 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 3 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( + KC_WBAK, KC_WFWD, LSG_T(KC_S), G(KC_L), MO(1) + ) +}; diff --git a/keyboards/5keys/readme.md b/keyboards/5keys/readme.md new file mode 100644 index 00000000000..e14792d82bb --- /dev/null +++ b/keyboards/5keys/readme.md @@ -0,0 +1,27 @@ +# 5keys + +![5keys](https://imgur.com/yOkI4HT) + +This keyboard is a macro keyboard with five keys. + +* Keyboard Maintainer: [mikiya418](https://github.com/mikiya418) +* Hardware Supported: 5keys PCBs, Pro Micro +* Hardware Availability: [Thingiverse](https://www.thingiverse.com/thing:6834908) + +Make example for this keyboard (after setting up your build environment): + + make 5keys:default + +Flashing example for this keyboard: + + make 5keys: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 - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 7fd12c2b98f00b7e70bfc70a74654a23c2b04d16 Mon Sep 17 00:00:00 2001 From: Akshay Atam Date: Thu, 20 Mar 2025 18:00:01 -0400 Subject: [PATCH 07/25] Ducky one2mini ansi tsangan layout (#24909) * Added ANSI Tsangan keymap for Ducky One2 Mini * Updated keyboard.json to support ANSI Tsangan layout for Ducky One2 Mini --- keyboards/ducky/one2mini/1861st/keyboard.json | 69 ++++++++++++++++++ .../one2mini/keymaps/ansi_tsangan/keymap.c | 70 +++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c diff --git a/keyboards/ducky/one2mini/1861st/keyboard.json b/keyboards/ducky/one2mini/1861st/keyboard.json index a39945d68c2..e1ab2188460 100644 --- a/keyboards/ducky/one2mini/1861st/keyboard.json +++ b/keyboards/ducky/one2mini/1861st/keyboard.json @@ -235,6 +235,75 @@ {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] } } } diff --git a/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c b/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c new file mode 100644 index 00000000000..259df16ab15 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c @@ -0,0 +1,70 @@ +/* Copyright 2019 /u/KeepItUnder + * + * 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 + +// LAYERS +enum Layer { + _QWERTY = 0, // Standard QWERTY layer + _FUNCTION, // Function key layer + _COLOUR // RGB key layer +}; +#define _QW _QWERTY +#define _FN _FUNCTION +#define _CLR _COLOUR + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ Fn │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴────┤ + * │Ctrl│GUI │Alt │ │Alt │GUI │Ctrl │ + * └────┴────┴────┴─────────────────────────────┴────┴────┴─────┘ + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_60_ansi_tsangan( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + QK_GESC, 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_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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [_FUNCTION] = LAYOUT_60_ansi_tsangan( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + 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_DEL, + _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, + _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, KC_APP, MO(_CLR), _______, KC_APP, _______, _______ + ), + + [_COLOUR] = LAYOUT_60_ansi_tsangan( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RM_HUEU, RM_SATU, RM_VALU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______, + _______, RM_HUED, RM_SATD, RM_VALD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RM_TOGG, _______, _______, _______ + ), +}; From a958276a764af481f5626cafb2f0c6ec00894ff2 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 20 Mar 2025 15:12:46 -0700 Subject: [PATCH 08/25] Add Super Alt-Tab macro example as module (#24970) * Add Super Alt-Tab macro example as module * Make module more configurable * remove unneeded comments Co-authored-by: jack * Update modules/qmk/super_alt_tab/super_alt_tab.c Co-authored-by: Nick Brassel --------- Co-authored-by: jack Co-authored-by: Nick Brassel --- modules/qmk/super_alt_tab/qmk_module.json | 10 +++++ modules/qmk/super_alt_tab/super_alt_tab.c | 50 +++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 modules/qmk/super_alt_tab/qmk_module.json create mode 100644 modules/qmk/super_alt_tab/super_alt_tab.c diff --git a/modules/qmk/super_alt_tab/qmk_module.json b/modules/qmk/super_alt_tab/qmk_module.json new file mode 100644 index 00000000000..002f7fb69e3 --- /dev/null +++ b/modules/qmk/super_alt_tab/qmk_module.json @@ -0,0 +1,10 @@ +{ + "module_name": "Super Alt Tab", + "maintainer": "QMK Maintainers", + "keycodes": [ + { + "key": "COMMUNITY_MODULE_SUPER_ALT_TAB", + "aliases": ["CM_S_AT"] + } + ] +} diff --git a/modules/qmk/super_alt_tab/super_alt_tab.c b/modules/qmk/super_alt_tab/super_alt_tab.c new file mode 100644 index 00000000000..dfeb4b57730 --- /dev/null +++ b/modules/qmk/super_alt_tab/super_alt_tab.c @@ -0,0 +1,50 @@ +// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0); + +static bool is_alt_tab_active = false; +static uint16_t alt_tab_timer = 0; + +#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT +# define COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT 1000 +#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT +#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER +# define COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER MOD_LALT +#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER +#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_KEY +# define COMMUNITY_MODULE_SUPER_ALT_TAB_KEY KC_TAB +#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_KEY + +bool process_record_super_alt_tab(uint16_t keycode, keyrecord_t *record) { + if (!process_record_super_alt_tab_kb(keycode, record)) { + return false; + } + + switch (keycode) { // This will do most of the grunt work with the keycodes. + case COMMUNITY_MODULE_SUPER_ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER); + } + alt_tab_timer = timer_read(); + register_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY); + } else { + unregister_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY); + } + break; + } + return true; +} + +void housekeeping_task_super_alt_tab(void) { + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT) { + unregister_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER); + is_alt_tab_active = false; + } + } +} From 9f44488bb172f454b231518ddccc580f05784c24 Mon Sep 17 00:00:00 2001 From: Icy Avocado Date: Thu, 20 Mar 2025 16:21:18 -0600 Subject: [PATCH 09/25] Add directpins 21 keys pico (#24919) * Add directpins 21 keys pico - https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/21-key-pico-keyboard * Rename from 21keys to pico_pad * Add pico_pad readme * Update bootloader instruction --------- Co-authored-by: Dai --- keyboards/adafruit/pico_pad/keyboard.json | 53 +++++++++++++++++++ .../pico_pad/keymaps/default/keymap.json | 12 +++++ keyboards/adafruit/pico_pad/readme.md | 25 +++++++++ 3 files changed, 90 insertions(+) create mode 100644 keyboards/adafruit/pico_pad/keyboard.json create mode 100644 keyboards/adafruit/pico_pad/keymaps/default/keymap.json create mode 100644 keyboards/adafruit/pico_pad/readme.md diff --git a/keyboards/adafruit/pico_pad/keyboard.json b/keyboards/adafruit/pico_pad/keyboard.json new file mode 100644 index 00000000000..aacb7a9c00a --- /dev/null +++ b/keyboards/adafruit/pico_pad/keyboard.json @@ -0,0 +1,53 @@ +{ + "manufacturer": "Raspberry Pi", + "keyboard_name": "DirectPins Pico Pad 21 keys RP2040", + "maintainer": "icyavocado", + "bootloader": "rp2040", + "usb": { + "vid": "0x2326", + "pid": "0xFEED", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true + }, + "processor": "RP2040", + "matrix_pins": { + "direct": [ + [ "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6" ], + [ "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13"], + [ "GP14", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21"] + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "GP0", "x": 0, "y": 0, "matrix": [0, 0]}, + {"label": "GP1", "x": 0, "y": 1, "matrix": [0, 1]}, + {"label": "GP2", "x": 0, "y": 2, "matrix": [0, 2]}, + {"label": "GP3", "x": 0, "y": 3, "matrix": [0, 3]}, + {"label": "GP4", "x": 0, "y": 4, "matrix": [0, 4]}, + {"label": "GP5", "x": 0, "y": 5, "matrix": [0, 5]}, + {"label": "GP6", "x": 0, "y": 6, "matrix": [0, 6]}, + + {"label": "GP7", "x": 1, "y": 0, "matrix": [1, 0]}, + {"label": "GP8", "x": 1, "y": 1, "matrix": [1, 1]}, + {"label": "GP9", "x": 1, "y": 2, "matrix": [1, 2]}, + {"label": "GP10", "x": 1, "y": 3, "matrix": [1, 3]}, + {"label": "GP11", "x": 1, "y": 4, "matrix": [1, 4]}, + {"label": "GP12", "x": 1, "y": 5, "matrix": [1, 5]}, + {"label": "GP13", "x": 1, "y": 6, "matrix": [1, 6]}, + + {"label": "GP14", "x": 2, "y": 0, "matrix": [2, 0]}, + {"label": "GP16", "x": 2, "y": 1, "matrix": [2, 1]}, + {"label": "GP17", "x": 2, "y": 2, "matrix": [2, 2]}, + {"label": "GP18", "x": 2, "y": 3, "matrix": [2, 3]}, + {"label": "GP19", "x": 2, "y": 4, "matrix": [2, 4]}, + {"label": "GP20", "x": 2, "y": 5, "matrix": [2, 5]}, + {"label": "GP21", "x": 2, "y": 6, "matrix": [2, 6]} + ] + } + } +} diff --git a/keyboards/adafruit/pico_pad/keymaps/default/keymap.json b/keyboards/adafruit/pico_pad/keymaps/default/keymap.json new file mode 100644 index 00000000000..33e2979a09d --- /dev/null +++ b/keyboards/adafruit/pico_pad/keymaps/default/keymap.json @@ -0,0 +1,12 @@ +{ + "keyboard": "adafruit/pico_pad", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_A", "KC_B", "KC_C", "KC_D", "KC_E", "KC_F", "KC_G", + "KC_H", "KC_I", "KC_J", "KC_K", "KC_L", "KC_M", "KC_N", + "KC_O", "KC_P", "KC_Q", "KC_R", "KC_S", "KC_T", "KC_U" + ] + ] +} diff --git a/keyboards/adafruit/pico_pad/readme.md b/keyboards/adafruit/pico_pad/readme.md new file mode 100644 index 00000000000..4a834fbf4dd --- /dev/null +++ b/keyboards/adafruit/pico_pad/readme.md @@ -0,0 +1,25 @@ +# PICO PAD + +![PICO PAD](https://imgur.com/Nl4tZPl.jpg) + +A RP2040 powered direct pins QMK keyboard in 3x7 layout. + +A guide can be found here: [Pico Mechanical Keyboard](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview) + +* Keyboard Maintainer: [IcyAvocado](https://github.com/icyavocado) +* Hardware Supported: [Pico 1 Microcontrollers - RP2040](https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#pico-1-family) +* Hardware Availability: [The PiHut](https://thepihut.com/products/raspberry-pi-pico) | [Adafruit Parts](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview) + +Make example for this board (after setting up your build environment): + +```sh +qmk compile -kb adafruit/pico_pad -km 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: +* **Physical reset button**: Briefly press the reset button on the left of the PCB - some may have pads you must short instead +* **Boot button**: Press and hold the BOOTSEL button on the pico when powered on From 894b9c458d91e0ecb5c482e8071315db8842e2b8 Mon Sep 17 00:00:00 2001 From: Max Rumpf Date: Thu, 20 Mar 2025 23:22:02 +0100 Subject: [PATCH 10/25] Enable mouse key feature and disable leader key on Maxr1998/Phoebe (#24982) * Enable mousekey support on Maxr1998/Phoebe * Add GPLv2 license header --- keyboards/maxr1998/phoebe/keyboard.json | 6 ++-- .../maxr1998/phoebe/keymaps/default/config.h | 15 ++++++++++ .../maxr1998/phoebe/keymaps/default/keymap.c | 28 +++++++++++-------- keyboards/maxr1998/phoebe/phoebe.c | 15 ++++++++++ 4 files changed, 50 insertions(+), 14 deletions(-) diff --git a/keyboards/maxr1998/phoebe/keyboard.json b/keyboards/maxr1998/phoebe/keyboard.json index 86407414fa2..d678e3b74e6 100644 --- a/keyboards/maxr1998/phoebe/keyboard.json +++ b/keyboards/maxr1998/phoebe/keyboard.json @@ -9,10 +9,10 @@ "diode_direction": "COL2ROW", "features": { "bootmagic": true, - "nkro": true, - "rgblight": true, "key_lock": true, - "leader": true + "mousekey": true, + "nkro": true, + "rgblight": true }, "qmk": { "locking": { diff --git a/keyboards/maxr1998/phoebe/keymaps/default/config.h b/keyboards/maxr1998/phoebe/keymaps/default/config.h index 593ac440c14..b8f66764682 100644 --- a/keyboards/maxr1998/phoebe/keymaps/default/config.h +++ b/keyboards/maxr1998/phoebe/keymaps/default/config.h @@ -1,3 +1,18 @@ +/* Copyright 2019 Max Rumpf (@Maxr1998) + * + * 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 RSPC_KEYS KC_RSFT, KC_RALT, KC_7 diff --git a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c index 8b4f31644c5..de5fe3a67c5 100644 --- a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c +++ b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c @@ -1,3 +1,18 @@ +/* Copyright 2019 Max Rumpf (@Maxr1998) + * + * 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 #include "keymap_german.h" @@ -35,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SC_RSPC, - KC_LCTL, KC_LGUI, KC_LALT, QK_LEAD, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_BTN1, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT ), /* Special characters @@ -77,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, DE_UDIA, KC_F9, DE_ODIA, KC_PSCR, KC_DEL, QK_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______, _______, _______, _______, _______, _______, _______, _______, UG_HUED, UG_TOGG, UG_HUEU, KC_PGUP, _______, - XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END + XXXXXXX, _______, XXXXXXX, KC_BTN2, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END ), /* Gaming @@ -128,13 +143,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; } return true; -}; - -void leader_end_user(void) { - if (leader_sequence_two_keys(KC_G, KC_P)) { - SEND_STRING("git push"); - } - if (leader_sequence_three_keys(KC_G, KC_F, KC_P)) { - SEND_STRING("git push --force-with-lease"); - } } diff --git a/keyboards/maxr1998/phoebe/phoebe.c b/keyboards/maxr1998/phoebe/phoebe.c index b05f9b32359..0451f9177e1 100644 --- a/keyboards/maxr1998/phoebe/phoebe.c +++ b/keyboards/maxr1998/phoebe/phoebe.c @@ -1,3 +1,18 @@ +/* Copyright 2019 Max Rumpf (@Maxr1998) + * + * 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" const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {50, 50, 50}; From f6dbb56a10d1886945f2f79f4cc46b7bb56aeab0 Mon Sep 17 00:00:00 2001 From: uv777bk <147540311+uv777bk@users.noreply.github.com> Date: Thu, 20 Mar 2025 18:22:43 -0400 Subject: [PATCH 11/25] Update Lighting Mode Animations on Monsgeek M5 (#24981) Update keyboard.json --- keyboards/monsgeek/m5/keyboard.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/keyboards/monsgeek/m5/keyboard.json b/keyboards/monsgeek/m5/keyboard.json index b9ef0099bc3..3927181e2dc 100644 --- a/keyboards/monsgeek/m5/keyboard.json +++ b/keyboards/monsgeek/m5/keyboard.json @@ -49,7 +49,16 @@ "driver": "snled27351", "max_brightness": 180, "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, "cycle_all": true, "cycle_left_right": true, "cycle_up_down": true, @@ -60,12 +69,29 @@ "cycle_spiral": true, "dual_beacon": true, "rainbow_beacon": true, + "rainbow_pinwheels": true, "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, "typing_heatmap": true, + "digital_rain": true, "solid_reactive_simple": true, "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, "solid_reactive_cross": true, - "multisplash": true + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true }, "layout":[ { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 }, From f4dfa218ff924f0e9f964f81706474a765c88cc2 Mon Sep 17 00:00:00 2001 From: plodah <127351418+plodah@users.noreply.github.com> Date: Thu, 20 Mar 2025 22:34:14 +0000 Subject: [PATCH 12/25] fix swapped encoder pins on ploopy thumb rev1_001 (#25044) fix swapped pins on ploopy thumb rev1_001 encoder --- keyboards/ploopyco/trackball_thumb/rev1_001/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ploopyco/trackball_thumb/rev1_001/config.h b/keyboards/ploopyco/trackball_thumb/rev1_001/config.h index 108a104cdc1..fb2f9431cc4 100644 --- a/keyboards/ploopyco/trackball_thumb/rev1_001/config.h +++ b/keyboards/ploopyco/trackball_thumb/rev1_001/config.h @@ -26,5 +26,5 @@ /* PMW33XX Settings */ #define PMW33XX_CS_PIN B0 -#define ENCODER_A_PINS { F0 } -#define ENCODER_B_PINS { F4 } +#define ENCODER_A_PINS { F4 } +#define ENCODER_B_PINS { F0 } From 6a947fa5345b47f8d41c5ab13c0c6dac79cb3bc9 Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:00:28 +0000 Subject: [PATCH 13/25] Add Mechboards Crkbd (#24993) --- keyboards/mechboards/crkbd/pro/config.h | 6 + keyboards/mechboards/crkbd/pro/keyboard.json | 171 ++++++++++++++++++ .../crkbd/pro/keymaps/default/keymap.c | 47 +++++ .../crkbd/pro/keymaps/default/rules.mk | 1 + keyboards/mechboards/crkbd/pro/post_rules.mk | 1 + keyboards/mechboards/crkbd/pro/pro.c | 15 ++ keyboards/mechboards/crkbd/pro/readme.md | 25 +++ 7 files changed, 266 insertions(+) create mode 100644 keyboards/mechboards/crkbd/pro/config.h create mode 100644 keyboards/mechboards/crkbd/pro/keyboard.json create mode 100644 keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c create mode 100644 keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk create mode 100644 keyboards/mechboards/crkbd/pro/post_rules.mk create mode 100644 keyboards/mechboards/crkbd/pro/pro.c create mode 100644 keyboards/mechboards/crkbd/pro/readme.md diff --git a/keyboards/mechboards/crkbd/pro/config.h b/keyboards/mechboards/crkbd/pro/config.h new file mode 100644 index 00000000000..43a4b3eb9fa --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/config.h @@ -0,0 +1,6 @@ +// Copyright 2025 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "keyboards/mechboards/common/rgb_effects.h" diff --git a/keyboards/mechboards/crkbd/pro/keyboard.json b/keyboards/mechboards/crkbd/pro/keyboard.json new file mode 100644 index 00000000000..05bca63993c --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/keyboard.json @@ -0,0 +1,171 @@ +{ + "manufacturer": "Mechboards", + "keyboard_name": "CRKBD Pro", + "maintainer": "dasky", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B6", "pin_b": "B2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "os_detection": true, + "rgb_matrix": true, + "wpm": true + }, + "matrix_pins": { + "cols": ["F4", "F5", "F6", "F7", "B1", "B3"], + "rows": ["D4", "C6", "D7", "E6"] + }, + "rgb_matrix": { + "animations": { + "cycle_left_right": true + }, + "default": { + "animation": "cycle_left_right" + }, + "driver": "ws2812", + "layout": [ + {"x": 85, "y": 16, "flags": 2}, + {"x": 50, "y": 13, "flags": 2}, + {"x": 16, "y": 20, "flags": 2}, + {"x": 16, "y": 38, "flags": 2}, + {"x": 50, "y": 48, "flags": 2}, + {"x": 85, "y": 52, "flags": 2}, + {"matrix": [3, 5], "x": 95, "y": 63, "flags": 1}, + {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4}, + {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4}, + {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4}, + {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4}, + {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4}, + {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4}, + {"matrix": [3, 4], "x": 80, "y": 58, "flags": 1}, + {"matrix": [3, 3], "x": 60, "y": 55, "flags": 1}, + {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4}, + {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4}, + {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4}, + {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4}, + {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 7, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 24, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 41, "flags": 1}, + {"x": 139, "y": 16, "flags": 2}, + {"x": 174, "y": 13, "flags": 2}, + {"x": 208, "y": 20, "flags": 2}, + {"x": 208, "y": 38, "flags": 2}, + {"x": 174, "y": 48, "flags": 2}, + {"x": 139, "y": 52, "flags": 2}, + {"matrix": [7, 5], "x": 129, "y": 63, "flags": 1}, + {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4}, + {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4}, + {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4}, + {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4}, + {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4}, + {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4}, + {"matrix": [7, 4], "x": 144, "y": 58, "flags": 1}, + {"matrix": [7, 3], "x": 164, "y": 55, "flags": 1}, + {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4}, + {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4}, + {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4}, + {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4}, + {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4}, + {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4}, + {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4}, + {"matrix": [4, 0], "x": 224, "y": 7, "flags": 1}, + {"matrix": [5, 0], "x": 224, "y": 24, "flags": 1}, + {"matrix": [6, 0], "x": 224, "y": 41, "flags": 1} + ], + "max_brightness": 120, + "split_count": [27, 27] + }, + "rgblight": { + "led_count": 54, + "max_brightness": 120, + "split_count": [27, 27] + }, + "split": { + "enabled": true, + "serial": { + "pin": "D2" + }, + "transport": { + "sync": { + "matrix_state": true, + "oled": true, + "wpm": true + } + } + }, + "url": "mechboards.co.uk", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x7171" + }, + "ws2812": { + "pin": "D3" + }, + "layouts": { + "LAYOUT_split_3x6_3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.25}, + {"matrix": [0, 2], "x": 2, "y": 0.125}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.125}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + {"matrix": [4, 5], "x": 8, "y": 0.25}, + {"matrix": [4, 4], "x": 9, "y": 0.125}, + {"matrix": [4, 3], "x": 10, "y": 0}, + {"matrix": [4, 2], "x": 11, "y": 0.125}, + {"matrix": [4, 1], "x": 12, "y": 0.25}, + {"matrix": [4, 0], "x": 13, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.125}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.125}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [5, 5], "x": 8, "y": 1.25}, + {"matrix": [5, 4], "x": 9, "y": 1.125}, + {"matrix": [5, 3], "x": 10, "y": 1}, + {"matrix": [5, 2], "x": 11, "y": 1.125}, + {"matrix": [5, 1], "x": 12, "y": 1.25}, + {"matrix": [5, 0], "x": 13, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.125}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.125}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [6, 5], "x": 8, "y": 2.25}, + {"matrix": [6, 4], "x": 9, "y": 2.125}, + {"matrix": [6, 3], "x": 10, "y": 2}, + {"matrix": [6, 2], "x": 11, "y": 2.125}, + {"matrix": [6, 1], "x": 12, "y": 2.25}, + {"matrix": [6, 0], "x": 13, "y": 2.25}, + {"matrix": [3, 3], "x": 3.5, "y": 3.25}, + {"matrix": [3, 4], "x": 4.5, "y": 3.5}, + {"matrix": [3, 5], "x": 5.5, "y": 3.75}, + {"matrix": [7, 5], "x": 7.5, "y": 3.75}, + {"matrix": [7, 4], "x": 8.5, "y": 3.5}, + {"matrix": [7, 3], "x": 9.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c b/keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c new file mode 100644 index 00000000000..2e70e3091e6 --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +// Copyright 2025 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, + KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT + +), + + [1] = LAYOUT_split_3x6_3( + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT +), + + [2] = LAYOUT_split_3x6_3( + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT +), + + [3] = LAYOUT_split_3x6_3( + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RM_TOGG, RM_HUEU, RM_SATU, RM_VALU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RM_NEXT, RM_HUED, RM_SATD, RM_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT +) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { +[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT)}, +[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)} +}; +#endif + +// clang-format on diff --git a/keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk b/keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/mechboards/crkbd/pro/post_rules.mk b/keyboards/mechboards/crkbd/pro/post_rules.mk new file mode 100644 index 00000000000..4bfdc8ca891 --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/post_rules.mk @@ -0,0 +1 @@ +include keyboards/mechboards/common/post_rules.mk diff --git a/keyboards/mechboards/crkbd/pro/pro.c b/keyboards/mechboards/crkbd/pro/pro.c new file mode 100644 index 00000000000..05c41d3612a --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/pro.c @@ -0,0 +1,15 @@ +// Copyright 2025 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE +void render_logo(void) { + static const char PROGMEM pro_logo[] = { + 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 31, 31, 31, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 0, 0, 0, 248, 248, 24, 24, 24, 24, 24, 24, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 248, 248, 0, 0, 0, 128, 248, 248, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 255, 255, 4, 4, 4, 4, 4, 255, + 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 6, 6, 6, 6, 255, 251, 0, 0, 255, 255, 6, 6, 15, 31, 249, 240, 0, 0, 255, 255, 6, 6, 6, 6, 255, 251, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 65, 65, 65, 65, 65, 255, 127, 127, 127, 127, 127, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, + 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 227, 241, 48, 176, 176, 112, 240, 48, 176, 176, 112, 240, 112, 176, 176, 112, 240, 224, 0, 0, 63, 127, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 240, 240, 240, 240, 240, 255, 240, 240, 240, 240, 240, 255, 240, 240, 240, 240, 240, 255, 255, 255, 127, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 63, 48, 61, 61, 62, 63, 48, 61, 61, 50, 63, 56, 55, 55, 56, 63, 31, 0, 0, + }; + oled_write_raw_P(pro_logo, sizeof(pro_logo)); +} +#endif diff --git a/keyboards/mechboards/crkbd/pro/readme.md b/keyboards/mechboards/crkbd/pro/readme.md new file mode 100644 index 00000000000..52fc199d5c8 --- /dev/null +++ b/keyboards/mechboards/crkbd/pro/readme.md @@ -0,0 +1,25 @@ +# CRKBD Pro + +A refreshed CRKBD (Corne) PCB with RGB, battery, power switch and encoder support. + +* Keyboard Maintainer: [dasky](https://github.com/daskygit) +* Hardware Supported: Controllers using promicro footprint. +* Hardware Availability: https://mechboards.co.uk + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb mechboards/crkbd/pro -km default + +Flashing example for this keyboard: + + qmk flash -kb mechboards/crkbd/pro -km 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 top left key/encoder or the top right key/encoder depending on which side you're connecting to usb. +* **Physical reset button**: Double press the button below the TRRS socket. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From ce2f7d86be171f7273299720ba739b8c85d4c267 Mon Sep 17 00:00:00 2001 From: Grigory Avdyushin Date: Sun, 23 Mar 2025 06:17:05 +0100 Subject: [PATCH 14/25] Franky36 handwired keyboard (#25029) --- keyboards/handwired/franky36/config.h | 21 +++ keyboards/handwired/franky36/franky36.c | 68 ++++++++++ keyboards/handwired/franky36/halconf.h | 21 +++ keyboards/handwired/franky36/keyboard.json | 72 ++++++++++ .../franky36/keymaps/default/keymap.c | 123 ++++++++++++++++++ keyboards/handwired/franky36/mcuconf.h | 24 ++++ keyboards/handwired/franky36/readme.md | 25 ++++ 7 files changed, 354 insertions(+) create mode 100644 keyboards/handwired/franky36/config.h create mode 100644 keyboards/handwired/franky36/franky36.c create mode 100644 keyboards/handwired/franky36/halconf.h create mode 100644 keyboards/handwired/franky36/keyboard.json create mode 100644 keyboards/handwired/franky36/keymaps/default/keymap.c create mode 100644 keyboards/handwired/franky36/mcuconf.h create mode 100644 keyboards/handwired/franky36/readme.md diff --git a/keyboards/handwired/franky36/config.h b/keyboards/handwired/franky36/config.h new file mode 100644 index 00000000000..3749ff5785a --- /dev/null +++ b/keyboards/handwired/franky36/config.h @@ -0,0 +1,21 @@ +/* Copyright 2024-2025 Grigory Avdyushin + * + * 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 I2C_DRIVER I2CD0 +#define I2C1_SDA_PIN GP0 +#define I2C1_SCL_PIN GP1 diff --git a/keyboards/handwired/franky36/franky36.c b/keyboards/handwired/franky36/franky36.c new file mode 100644 index 00000000000..50e4d38b52d --- /dev/null +++ b/keyboards/handwired/franky36/franky36.c @@ -0,0 +1,68 @@ +/* Copyright 2024-2025 Grigory Avdyushin + * + * 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 + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0x00, 0x0A, 0x0A + }; + + oled_write_P(qmk_logo, false); +} + +static void render_mod_status(uint8_t modifiers) { + oled_write_P(PSTR("MODS:"), false); + oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT)); + oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL)); + oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT)); + oled_write_ln_P(PSTR("G"), (modifiers & MOD_MASK_GUI)); + oled_write_ln_P(PSTR(" "), false); +} + +static void render_layer_state(void) { + oled_write_ln_P(PSTR(" "), false); + oled_write_P("BASE ", layer_state_is(0)); + oled_write_P("LOWER", layer_state_is(1)); + oled_write_P("RAISE", layer_state_is(2)); + oled_write_P("NAV ", layer_state_is(3)); + oled_write_ln_P(PSTR(" "), false); +} + +static void render_capsword_state(bool on) { + oled_write_ln_P("CAPSW", on); +} + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + render_layer_state(); + render_mod_status(get_mods() | get_oneshot_mods()); + render_capsword_state(is_caps_word_on()); + return false; +} + + #endif diff --git a/keyboards/handwired/franky36/halconf.h b/keyboards/handwired/franky36/halconf.h new file mode 100644 index 00000000000..3c594066b6b --- /dev/null +++ b/keyboards/handwired/franky36/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2024-2025 Grigory Avdyushin + * + * 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_I2C TRUE + +#include_next diff --git a/keyboards/handwired/franky36/keyboard.json b/keyboards/handwired/franky36/keyboard.json new file mode 100644 index 00000000000..038fc1eb67a --- /dev/null +++ b/keyboards/handwired/franky36/keyboard.json @@ -0,0 +1,72 @@ +{ + "manufacturer": "Grigory Avdyushin", + "keyboard_name": "franky36", + "maintainer": "Grigory Avdyushin", + "bootloader": "rp2040", + "caps_word": { + "both_shifts_turns_on": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "caps_word": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true + }, + "matrix_pins": { + "cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP26", "GP27", "GP28"], + "rows": ["GP5", "GP4", "GP3", "GP2"] + }, + "processor": "RP2040", + "url": "https://github.com/avdyushin/franky36", + "usb": { + "device_version": "0.2.0", + "pid": "0x0001", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x5_3"], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3} + ] + } + } +} diff --git a/keyboards/handwired/franky36/keymaps/default/keymap.c b/keyboards/handwired/franky36/keymaps/default/keymap.c new file mode 100644 index 00000000000..1b281124f9b --- /dev/null +++ b/keyboards/handwired/franky36/keymaps/default/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2024-2025 Grigory Avdyushin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum my_layers { + _BASE = 0, + _LOWER, + _RAISE, + _NAV, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define NAV MO(_NAV) + +#define OSM_LSFT OSM(MOD_LSFT) // One Shot Right Shift + +#define KC_SFT_Z SFT_T(KC_Z) // Left Shift when held, Z when tapped +#define KC_SFT_SL RSFT_T(KC_SLSH) // Right Shift when held, / when tapped + +#define KC_SFT_BSLS RSFT_T(KC_BSLS) // Right Shift when held, \ when tapped + +#define KC_LWR_SPC LT(_LOWER, KC_SPC) // Lower layer when held, Space when tapped +#define KC_RSE_BSPC LT(_RAISE, KC_BSPC) // Raise layer when held, Backspace when tapped +#define KC_NAV_A LT(_NAV,KC_A) // Navigation layer when held, A when tapped + +#define KC_CMD_TAB CMD_T(KC_TAB) // Left Command when held, Tab when tapped +#define KC_CMD_ENT RCMD_T(KC_ENT) // Right Command when held, Enter when tapped + +#define KC_CTL_ESC CTL_T(KC_ESC) // Left Control when held, Escape when tapped +#define KC_OPT_OSM_SFT ROPT_T(OSM_LSFT) // Right Option when held, One Shot Shift when tapped + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ;:│ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │⇧/Z│ X │ C │ V │ B │ │ N │ M │ ,<│ .>│⇧/?│ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┬───┬───┐ ┌───┬───┬───┐ + * │CTL│CMD│SPC│ │ENT│CMD│OPT│ + * └───┴───┴───┘ └───┴───┴───┘ + */ + [_BASE] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_NAV_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SFT_SL, + KC_CTL_ESC, KC_CMD_TAB, KC_LWR_SPC, KC_RSE_BSPC, KC_CMD_ENT, KC_ROPT + ), + + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ 1!│ 2@│ 3#│ 4$│ 5%│ │ 6^│ 7&│ 8*│ 9(│ 0)│ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ `~│ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ '"│ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ ⇧ │ │ │ │ │ │ -_│ =+│ [{│ ]}│ \|│ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │ │ │ │ │ │ + * └───┴───┴───┘ └───┴───┴───┘ + */ + [_LOWER] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_GRV, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, + KC_LSFT, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_SFT_BSLS, + _______, _______, _______, _______, _______, _______ + ), + + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ F1│ F2│ F3│ F4│ F5│ │ F6│ F7│ F8│ F9│F10│ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │ │ │ │ │ │ + * └───┴───┴───┘ └───┴───┴───┘ + */ + [_RAISE] = LAYOUT_split_3x5_3( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ │ │ │ │ │ │HOM│ │ │END│ │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │PUP│ │ │PDN│ │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │ │ │ │ │ │ + * └───┴───┴───┘ └───┴───┴───┘ + */ + [_NAV] = LAYOUT_split_3x5_3( + _______, _______, _______, _______, _______, KC_HOME, _______, _______, KC_END, _______, + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, + _______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/franky36/mcuconf.h b/keyboards/handwired/franky36/mcuconf.h new file mode 100644 index 00000000000..8d471591778 --- /dev/null +++ b/keyboards/handwired/franky36/mcuconf.h @@ -0,0 +1,24 @@ +/* Copyright 2024-2025 Grigory Avdyushin + * + * 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 RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 TRUE +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 FALSE diff --git a/keyboards/handwired/franky36/readme.md b/keyboards/handwired/franky36/readme.md new file mode 100644 index 00000000000..62d1bfd5c34 --- /dev/null +++ b/keyboards/handwired/franky36/readme.md @@ -0,0 +1,25 @@ +# franky36 + +Franky36 is 36 key compact handwired split keyboard that uses single RP2040-Zero controller. + +* Keyboard Maintainer: [Grigory Avdyushin](https://github.com/avdyushin) +* Hardware Supported: RP2040-Zero +* Hardware Availability: Handwired [franky36](https://github.com/avdyushin/franky36) + +Make example for this keyboard (after setting up your build environment): + + make franky36:default + +Flashing example for this keyboard: + + make franky36: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**: Hold down the reset button on the controller and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From a3c39bde0edf5c96f339fdfba801b6c249a75abf Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 26 Mar 2025 19:23:28 +0000 Subject: [PATCH 15/25] Create tags when `lib/python` changes (#25064) Create tags when lib/python changes --- .github/workflows/auto_tag.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto_tag.yml b/.github/workflows/auto_tag.yml index b4465277b0d..4afca6c66d5 100644 --- a/.github/workflows/auto_tag.yml +++ b/.github/workflows/auto_tag.yml @@ -15,6 +15,7 @@ on: - quantum/**/* - tests/**/* - tmk_core/**/* + - lib/python/**/* - util/**/* - Makefile - '*.mk' From 64fe4aff31c11fac3095bcb3b766a786912c5278 Mon Sep 17 00:00:00 2001 From: Erik Peyronson Date: Fri, 28 Mar 2025 07:25:39 +0100 Subject: [PATCH 16/25] Add handwired/erikpeyronson/erkbd (#25030) Co-authored-by: Erik Peyronson Co-authored-by: jack Co-authored-by: Drashna Jaelre --- .../handwired/erikpeyronson/erkbd/config.h | 13 +++ .../handwired/erikpeyronson/erkbd/erkbd.c | 63 +++++++++++ .../erikpeyronson/erkbd/keyboard.json | 107 ++++++++++++++++++ .../erkbd/keymaps/debug/keymap.c | 52 +++++++++ .../erkbd/keymaps/debug/rules.mk | 2 + .../erkbd/keymaps/default/keymap.json | 24 ++++ .../handwired/erikpeyronson/erkbd/readme.md | 28 +++++ 7 files changed, 289 insertions(+) create mode 100644 keyboards/handwired/erikpeyronson/erkbd/config.h create mode 100644 keyboards/handwired/erikpeyronson/erkbd/erkbd.c create mode 100644 keyboards/handwired/erikpeyronson/erkbd/keyboard.json create mode 100644 keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/keymap.c create mode 100644 keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/rules.mk create mode 100644 keyboards/handwired/erikpeyronson/erkbd/keymaps/default/keymap.json create mode 100644 keyboards/handwired/erikpeyronson/erkbd/readme.md diff --git a/keyboards/handwired/erikpeyronson/erkbd/config.h b/keyboards/handwired/erikpeyronson/erkbd/config.h new file mode 100644 index 00000000000..acbafbfaa72 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/config.h @@ -0,0 +1,13 @@ +// Copyright 2025 Erik Peyronson @erikpeyronson +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define I2C_DRIVER I2CD1 +#define OLED_IC OLED_IC_SH1106 +#define OLED_COLUMN_OFFSET 2 + +#define OLED_DISPLAY_128X64 diff --git a/keyboards/handwired/erikpeyronson/erkbd/erkbd.c b/keyboards/handwired/erikpeyronson/erkbd/erkbd.c new file mode 100644 index 00000000000..af236df93c0 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/erkbd.c @@ -0,0 +1,63 @@ +// Copyright 2025 Erik Peyronson @erikpeyronson +// SPDX-License-Identifier: GPL-3.0-or-later +#include QMK_KEYBOARD_H + +static void oled_render_logo(void) { + // clang-format off + 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, 0x00 + }; + // clang-format on + + oled_write_P(qmk_logo, false); +} + +static void render_layer(void) { + oled_write_P(PSTR("Layer: "), false); + oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false); +} + +static void render_locks(void) { + led_t led_config = host_keyboard_led_state(); + oled_write_P(PSTR("Caps "), led_config.caps_lock); + oled_write_P(PSTR("Scrl "), led_config.scroll_lock); + oled_write_P(PSTR("Num "), led_config.num_lock); +#ifdef CAPS_WORD_ENABLE + oled_write_P(PSTR("Word "), is_caps_word_on()); +#endif + oled_advance_page(true); +} + +static void render_mods(void) { + uint8_t mod_state = get_mods(); + oled_write_P("Ctrl ", mod_state & MOD_MASK_CTRL); + oled_write_P("Shift ", mod_state & MOD_MASK_SHIFT); + oled_write_P("Alt ", mod_state & MOD_MASK_ALT); + oled_write_P("Gui", mod_state & MOD_MASK_GUI); + oled_advance_page(true); +} + +static void render_delimeter(void) { + oled_write_ln_P(PSTR("------------------"), false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_left()) { + oled_render_logo(); + } else { + render_delimeter(); + render_locks(); + render_delimeter(); + render_mods(); + render_delimeter(); + render_layer(); + render_delimeter(); + } + + return false; +} diff --git a/keyboards/handwired/erikpeyronson/erkbd/keyboard.json b/keyboards/handwired/erikpeyronson/erkbd/keyboard.json new file mode 100644 index 00000000000..d3ef5147f43 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/keyboard.json @@ -0,0 +1,107 @@ +{ + "manufacturer": "Erik Peyronson", + "keyboard_name": "erkbd", + "maintainer": "erikpeyronson", + "bootloader": "rp2040", + "bootloader_instructions": "Double tap the reset button on the controller board if accessable. If not hold down bootmagic key while powering on. Left side: row 0 column 0. (The tab key on regular keyboard). Right side: row 5 column 4 (the Backspace key on regular keyboard)", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "GP7", "pin_b": "GP8"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "oled": true + }, + "matrix_pins": { + "cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13"], + "rows": ["GP4", "GP5", "GP6", "GP7"] + }, + "processor": "RP2040", + "split": { + "bootmagic": { + "matrix": [4, 5] + }, + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "GP7", "pin_b": "GP8"} + ] + } + }, + "handedness": { + "pin": "GP1" + }, + "matrix_pins": { + "right": { + "cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14"], + "rows": ["GP28", "GP27", "GP26", "GP15"] + } + }, + "serial": { + "driver": "vendor", + "pin": "GP0" + } + }, + "url": "https://github.com/erikpeyronson/erkbd", + "usb": { + "device_version": "1.0.0", + "pid": "0x1234", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_split_3x6_5": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.4}, + {"matrix": [0, 1], "x": 1, "y": 0.3}, + {"matrix": [0, 2], "x": 2, "y": 0.1}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.1}, + {"matrix": [0, 5], "x": 5, "y": 0.2}, + {"matrix": [4, 0], "x": 9, "y": 0.2}, + {"matrix": [4, 1], "x": 10, "y": 0.1}, + {"matrix": [4, 2], "x": 11, "y": 0}, + {"matrix": [4, 3], "x": 12, "y": 0.1}, + {"matrix": [4, 4], "x": 13, "y": 0.3}, + {"matrix": [4, 5], "x": 14, "y": 0.4}, + {"matrix": [1, 0], "x": 0, "y": 1.4}, + {"matrix": [1, 1], "x": 1, "y": 1.3}, + {"matrix": [1, 2], "x": 2, "y": 1.1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.1}, + {"matrix": [1, 5], "x": 5, "y": 1.2}, + {"matrix": [5, 0], "x": 9, "y": 1.2}, + {"matrix": [5, 1], "x": 10, "y": 1.1}, + {"matrix": [5, 2], "x": 11, "y": 1}, + {"matrix": [5, 3], "x": 12, "y": 1.1}, + {"matrix": [5, 4], "x": 13, "y": 1.3}, + {"matrix": [5, 5], "x": 14, "y": 1.4}, + {"matrix": [2, 0], "x": 0, "y": 2.4}, + {"matrix": [2, 1], "x": 1, "y": 2.3}, + {"matrix": [2, 2], "x": 2, "y": 2.1}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.1}, + {"matrix": [2, 5], "x": 5, "y": 2.2}, + {"matrix": [6, 0], "x": 9, "y": 2.2}, + {"matrix": [6, 1], "x": 10, "y": 2.1}, + {"matrix": [6, 2], "x": 11, "y": 2}, + {"matrix": [6, 3], "x": 12, "y": 2.1}, + {"matrix": [6, 4], "x": 13, "y": 2.3}, + {"matrix": [6, 5], "x": 14, "y": 2.4}, + {"matrix": [3, 1], "x": 3, "y": 3.4}, + {"matrix": [3, 2], "x": 4, "y": 3.4}, + {"matrix": [3, 3], "x": 5, "y": 3.5}, + {"matrix": [3, 4], "x": 6, "y": 3.7}, + {"matrix": [3, 5], "x": 6, "y": 2.7}, + {"matrix": [7, 0], "x": 8, "y": 2.7}, + {"matrix": [7, 1], "x": 8, "y": 3.7}, + {"matrix": [7, 2], "x": 9, "y": 3.5}, + {"matrix": [7, 3], "x": 10, "y": 3.4}, + {"matrix": [7, 4], "x": 11, "y": 3.4} + ] + } + } +} diff --git a/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/keymap.c b/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/keymap.c new file mode 100644 index 00000000000..8884702c814 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/keymap.c @@ -0,0 +1,52 @@ +// Copyright 2025 Qmk, Erik Peyronson @erikpeyronson +// SPDX-License-Identifier: GPL-3.0-or-later + +// NOTE: This keymap is for debugging purposes to have firmware to test the matrix when building the keyboard. If you intend to build this keyboard +// you should copy this to your fork or userspace repository and create your own. + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_5( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LBRC, KC_RBRC, KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT, KC_LPRN, KC_RPRN + ) +}; +// clang-format on + +void keyboard_post_init_user(void) { +#ifdef CONSOLE_ENABLE + debug_enable = true; + debug_matrix = true; +#endif +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +#ifdef CONSOLE_ENABLE + uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); +#endif + return true; +} + +// This function prints which half the keyboard considers itself to be which is +// useful for verify if the handedness pin and display is correctly set up when building +#ifdef OLED_ENABLE +bool oled_task_user(void) { + if (is_keyboard_left()) { + oled_write_P(PSTR("left"), false); + } else { + oled_write_P(PSTR("right"), false); + } + return false; +} +#endif + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT)} +}; +#endif diff --git a/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/rules.mk b/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/rules.mk new file mode 100644 index 00000000000..14094ea22cd --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/keymaps/debug/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +CONSOLE_ENABLE = yes diff --git a/keyboards/handwired/erikpeyronson/erkbd/keymaps/default/keymap.json b/keyboards/handwired/erikpeyronson/erkbd/keymaps/default/keymap.json new file mode 100644 index 00000000000..0b733d9fb64 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/keymaps/default/keymap.json @@ -0,0 +1,24 @@ +{ + "keyboard": "handwired/erikpeyronson/erkbd", + "keymap": "default", + "layout": "LAYOUT_split_3x6_5", + "layers": [ + [ + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", + "KC_LBRC", "KC_RBRC", "KC_LGUI", "KC_BSPC", "KC_SPC", "KC_SPC", "KC_ENT", "KC_RALT", "KC_LPRN", "KC_RPRN" + ] + ], + "config": { + "features": { + "encoder_map": true + } + }, + "encoders": [ + [ + { "ccw": "KC_UP", "cw": "KC_DOWN" }, + { "ccw": "KC_RIGHT", "cw": "KC_LEFT" } + ] + ] +} diff --git a/keyboards/handwired/erikpeyronson/erkbd/readme.md b/keyboards/handwired/erikpeyronson/erkbd/readme.md new file mode 100644 index 00000000000..3f4fe0175e1 --- /dev/null +++ b/keyboards/handwired/erikpeyronson/erkbd/readme.md @@ -0,0 +1,28 @@ +# handwired/erikpeyronson/erkbd + +![Erkbd](https://i.imgur.com/VViiXIN.jpeg) + +3D printed, handwired 44 key split keyboard featuring two encoders, two 1.3" 128x64 oled displays using the waveshare rp2040zero development board. + +* Keyboard Maintainer: [Erik Peyronson](https://github.com/erikpeyronson) +* Hardware Supported: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd) +* Hardware Availability: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd) + +Make example for this keyboard (after setting up your build environment): + + make handwired/erikpeyronson/erkbd:default + +Flashing example for this keyboard: + + Enter bootloader, drag and drop .uft2 file on the removable storage + +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**: For left half hold down the key at (0,0) in the matrix (correspons with the tab key) and plug in the keyboard. +For left half half the key is (4,5) (corresponds with the backspace key) +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available +Enter the bootloader in 3 ways: From ce9713c47d840380d5647335a9cb819d373139e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=E1=BA=AFn?= <59417802+MaiTheSan@users.noreply.github.com> Date: Fri, 28 Mar 2025 15:27:36 +0700 Subject: [PATCH 17/25] Add support for Starry FRL (#24626) Co-authored-by: jack Co-authored-by: Drashna Jaelre Co-authored-by: Ryan --- keyboards/salane/starryfrl/config.h | 17 +++ keyboards/salane/starryfrl/keyboard.json | 143 ++++++++++++++++++ .../salane/starryfrl/keymaps/default/keymap.c | 46 ++++++ .../salane/starryfrl/keymaps/default/rules.mk | 1 + keyboards/salane/starryfrl/readme.md | 29 ++++ 5 files changed, 236 insertions(+) create mode 100644 keyboards/salane/starryfrl/config.h create mode 100644 keyboards/salane/starryfrl/keyboard.json create mode 100644 keyboards/salane/starryfrl/keymaps/default/keymap.c create mode 100644 keyboards/salane/starryfrl/keymaps/default/rules.mk create mode 100644 keyboards/salane/starryfrl/readme.md diff --git a/keyboards/salane/starryfrl/config.h b/keyboards/salane/starryfrl/config.h new file mode 100644 index 00000000000..cc6fb298f41 --- /dev/null +++ b/keyboards/salane/starryfrl/config.h @@ -0,0 +1,17 @@ +/* +Copyright 2024 Salane +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 RP2040_FLASH_GENERIC_03H diff --git a/keyboards/salane/starryfrl/keyboard.json b/keyboards/salane/starryfrl/keyboard.json new file mode 100644 index 00000000000..43e434cb022 --- /dev/null +++ b/keyboards/salane/starryfrl/keyboard.json @@ -0,0 +1,143 @@ +{ + "keyboard_name": "Starry FRL", + "manufacturer": "Salane", + "url": "", + "maintainer": "Mai The San", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x534C", + "pid": "0x0A01", + "device_version": "0.0.1" + }, + "matrix_pins": { + "rows": ["GP25", "GP0", "GP18", "GP23", "GP24"], + "cols": ["GP27", "GP26", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1", "GP22", "GP21", "GP20"] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": false, + "rgblight": true, + "encoder": true + }, + "encoder": { + "rotary": [ + {"pin_a": "GP29", "pin_b": "GP28"} + ] + }, + "rgblight": { + "led_count": 2, + "saturation_steps": 8, + "brightness_steps": 8, + "sleep": true, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "GP19", + "driver": "vendor" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10.25, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11.25, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12.25, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13.25, "y": 0}, + {"label": "K0E", "matrix": [0, 14], "x": 14.25, "y": 0}, + {"label": "K0F", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "K2F", "matrix": [2, 15], "x": 16.25, "y": 0}, + {"label": "K0G", "matrix": [0, 16], "x": 17.5, "y": 0}, + {"label": "K0H", "matrix": [0, 17], "x": 18.5, "y": 0}, + {"label": "K0I", "matrix": [0, 18], "x": 19.5, "y": 0}, + {"label": "K12", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5}, + {"label": "K13", "matrix": [1, 3], "x": 3.75, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.75, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.75, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.75, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.75, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.75, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.75, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.75, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.75, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.75, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.75, "y": 1}, + {"label": "K1E", "matrix": [1, 14], "x": 14.75, "y": 1}, + {"label": "K1F", "matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5}, + {"label": "K1G", "matrix": [1, 16], "x": 17.5, "y": 1}, + {"label": "K1H", "matrix": [1, 17], "x": 18.5, "y": 1}, + {"label": "K1I", "matrix": [1, 18], "x": 19.5, "y": 1}, + {"label": "K21", "matrix": [2, 1], "x": 0.25, "y": 1.25, "w": 1.5, "h": 1.5}, + {"label": "K22", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75}, + {"label": "K23", "matrix": [2, 3], "x": 4, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 5, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 6, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 7, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 8, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 9, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 10, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 11, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 12, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 13, "y": 2}, + {"label": "K2D", "matrix": [2, 13], "x": 14, "y": 2}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2, "w": 2.25}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "K31", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25}, + {"label": "K33", "matrix": [3, 3], "x": 3.5, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.5, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.5, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.5, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.5, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.5, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.5, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.5, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.5, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.5, "y": 3}, + {"label": "K3D", "matrix": [3, 13], "x": 13.5, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75}, + {"label": "K3F", "matrix": [3, 15], "x": 16.25, "y": 3}, + {"label": "K3H", "matrix": [3, 17], "x": 18.5, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "K41", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5}, + {"label": "K43", "matrix": [4, 3], "x": 3.75, "y": 4}, + {"label": "K44", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5}, + {"label": "K47", "matrix": [4, 7], "x": 6.25, "y": 4, "w": 3}, + {"label": "K49", "matrix": [4, 9], "x": 9.25, "y": 4}, + {"label": "K4B", "matrix": [4, 11], "x": 10.25, "y": 4, "w": 2}, + {"label": "K4C", "matrix": [4, 12], "x": 12.25, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5}, + {"label": "K4E", "matrix": [4, 14], "x": 14.75, "y": 4}, + {"label": "K4F", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5}, + {"label": "K4G", "matrix": [4, 16], "x": 17.5, "y": 4}, + {"label": "K4H", "matrix": [4, 17], "x": 18.5, "y": 4}, + {"label": "K4I", "matrix": [4, 18], "x": 19.5, "y": 4} + ] + } + } +} diff --git a/keyboards/salane/starryfrl/keymaps/default/keymap.c b/keyboards/salane/starryfrl/keymaps/default/keymap.c new file mode 100644 index 00000000000..5b3235afe53 --- /dev/null +++ b/keyboards/salane/starryfrl/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, 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, + KC_MUTE, 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_F3, KC_F4, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(_FN), KC_UP, + KC_F5, KC_F6, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_PREV, UG_TOGG, UG_NEXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) }, + [_FN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/salane/starryfrl/keymaps/default/rules.mk b/keyboards/salane/starryfrl/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/salane/starryfrl/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/salane/starryfrl/readme.md b/keyboards/salane/starryfrl/readme.md new file mode 100644 index 00000000000..da2920797db --- /dev/null +++ b/keyboards/salane/starryfrl/readme.md @@ -0,0 +1,29 @@ +# Starry FRL + +![Starry FRL](https://i.imgur.com/eRYlEe7.jpeg) + + This firmware support for both Solder and Hotswap PCB of Starry FRL + + **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `uf2` appropriate for your board. + +* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan) +* Hardware Supported: Starry FRL +* Hardware Availability: [Waifu.works Discord](https://discord.gg/waifuworks) + +Make examples for this keyboard (after setting up your build environment): + + make salane/starryfrl:default + +Flashing example for this keyboard: + + make salane/starryfrl:default:flash + +## 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 key `BOOT` in the back of PCB and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +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). \ No newline at end of file From d4120b1def0734e060a341cbe2789168ab078814 Mon Sep 17 00:00:00 2001 From: Hyphen-ated Date: Fri, 28 Mar 2025 01:27:54 -0700 Subject: [PATCH 18/25] Add "Large Lad" keyboard (#24727) Co-authored-by: jack --- keyboards/large_lad/keyboard.json | 188 +++++++++++++++++++ keyboards/large_lad/keymaps/default/keymap.c | 42 +++++ keyboards/large_lad/keymaps/default/rules.mk | 1 + keyboards/large_lad/readme.md | 23 +++ 4 files changed, 254 insertions(+) create mode 100644 keyboards/large_lad/keyboard.json create mode 100644 keyboards/large_lad/keymaps/default/keymap.c create mode 100644 keyboards/large_lad/keymaps/default/rules.mk create mode 100644 keyboards/large_lad/readme.md diff --git a/keyboards/large_lad/keyboard.json b/keyboards/large_lad/keyboard.json new file mode 100644 index 00000000000..665a2797997 --- /dev/null +++ b/keyboards/large_lad/keyboard.json @@ -0,0 +1,188 @@ +{ + "manufacturer": "DIY (open source)", + "keyboard_name": "Large Lad", + "maintainer": "Hyphen-ated", + "bootmagic": { + "matrix": [11, 12] + }, + "development_board": "blackpill_f411", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B7", "pin_b": "A0"} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "matrix_pins": { + "cols": ["A2", "A1", "C13", "C14", "C15", "A5", "A6", "B0", "B3", "B8", "A15", "A8", "B15"], + "rows": ["B5", "B6", "B4", "B9", "A4", "A3", "A7", "B1", "B10", "B12", "B13", "B14"] + }, + "url": "https://github.com/Hyphen-ated/large-lad-keyboard", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "L1", "matrix": [11, 12], "x": 0, "y": 0}, + {"label": "L2", "matrix": [11, 11], "x": 1, "y": 0}, + {"label": "L3", "matrix": [11, 6], "x": 2, "y": 0}, + {"label": "F13", "matrix": [11, 5], "x": 5.25, "y": 0}, + {"label": "F14", "matrix": [11, 4], "x": 6.25, "y": 0}, + {"label": "F15", "matrix": [11, 3], "x": 7.25, "y": 0}, + {"label": "F16", "matrix": [11, 2], "x": 8.25, "y": 0}, + {"label": "F17", "matrix": [11, 1], "x": 9.75, "y": 0}, + {"label": "F18", "matrix": [11, 0], "x": 10.75, "y": 0}, + {"label": "F19", "matrix": [0, 12], "x": 11.75, "y": 0}, + {"label": "F20", "matrix": [0, 11], "x": 12.75, "y": 0}, + {"label": "F21", "matrix": [0, 10], "x": 14.25, "y": 0}, + {"label": "F22", "matrix": [0, 9], "x": 15.25, "y": 0}, + {"label": "F23", "matrix": [0, 8], "x": 16.25, "y": 0}, + {"label": "F24", "matrix": [0, 7], "x": 17.25, "y": 0}, + {"label": "R1", "matrix": [0, 6], "x": 18.5, "y": 0}, + {"label": "R2", "matrix": [0, 5], "x": 19.5, "y": 0}, + {"label": "R3", "matrix": [0, 4], "x": 20.5, "y": 0}, + {"label": "R4", "matrix": [0, 3], "x": 21.75, "y": 0}, + {"label": "R5", "matrix": [0, 2], "x": 22.75, "y": 0}, + {"label": "R6", "matrix": [0, 1], "x": 23.75, "y": 0}, + {"label": "R7", "matrix": [0, 0], "x": 24.75, "y": 0}, + {"label": "L4", "matrix": [11, 7], "x": 0, "y": 1}, + {"label": "L5", "matrix": [10, 12], "x": 1, "y": 1}, + {"label": "L6", "matrix": [10, 11], "x": 2, "y": 1}, + {"label": "Esc", "matrix": [10, 6], "x": 3.25, "y": 1}, + {"label": "F1", "matrix": [10, 5], "x": 5.25, "y": 1}, + {"label": "F2", "matrix": [10, 4], "x": 6.25, "y": 1}, + {"label": "F3", "matrix": [10, 3], "x": 7.25, "y": 1}, + {"label": "F4", "matrix": [10, 2], "x": 8.25, "y": 1}, + {"label": "F5", "matrix": [10, 1], "x": 9.75, "y": 1}, + {"label": "F6", "matrix": [10, 0], "x": 10.75, "y": 1}, + {"label": "F7", "matrix": [1, 12], "x": 11.75, "y": 1}, + {"label": "F8", "matrix": [1, 11], "x": 12.75, "y": 1}, + {"label": "F9", "matrix": [1, 10], "x": 14.25, "y": 1}, + {"label": "F10", "matrix": [1, 9], "x": 15.25, "y": 1}, + {"label": "F11", "matrix": [1, 8], "x": 16.25, "y": 1}, + {"label": "F12", "matrix": [1, 7], "x": 17.25, "y": 1}, + {"label": "PrtSc", "matrix": [1, 6], "x": 18.5, "y": 1}, + {"label": "Scroll Lock", "matrix": [1, 5], "x": 19.5, "y": 1}, + {"label": "Pause", "matrix": [1, 4], "x": 20.5, "y": 1}, + {"label": "R8", "matrix": [1, 3], "x": 21.75, "y": 1}, + {"label": "R9", "matrix": [1, 2], "x": 22.75, "y": 1}, + {"label": "R10", "matrix": [1, 1], "x": 23.75, "y": 1}, + {"label": "R11", "matrix": [1, 0], "x": 24.75, "y": 1}, + {"label": "L7", "matrix": [11, 8], "x": 0, "y": 2.25}, + {"label": "L8", "matrix": [10, 7], "x": 1, "y": 2.25}, + {"label": "L9", "matrix": [9, 12], "x": 2, "y": 2.25}, + {"label": "~", "matrix": [9, 11], "x": 3.25, "y": 2.5}, + {"label": "!", "matrix": [9, 6], "x": 4.25, "y": 2.5}, + {"label": "@", "matrix": [9, 5], "x": 5.25, "y": 2.5}, + {"label": "#", "matrix": [9, 4], "x": 6.25, "y": 2.5}, + {"label": "$", "matrix": [9, 3], "x": 7.25, "y": 2.5}, + {"label": "%", "matrix": [9, 2], "x": 8.25, "y": 2.5}, + {"label": "^", "matrix": [9, 1], "x": 9.25, "y": 2.5}, + {"label": "&", "matrix": [9, 0], "x": 10.25, "y": 2.5}, + {"label": "*", "matrix": [2, 12], "x": 11.25, "y": 2.5}, + {"label": "(", "matrix": [2, 11], "x": 12.25, "y": 2.5}, + {"label": ")", "matrix": [2, 10], "x": 13.25, "y": 2.5}, + {"label": "_", "matrix": [2, 9], "x": 14.25, "y": 2.5}, + {"label": "+", "matrix": [2, 8], "x": 15.25, "y": 2.5}, + {"label": "Backspace", "matrix": [2, 7], "x": 16.25, "y": 2.5, "w": 2}, + {"label": "Insert", "matrix": [2, 6], "x": 18.5, "y": 2.5}, + {"label": "Home", "matrix": [2, 5], "x": 19.5, "y": 2.5}, + {"label": "PgUp", "matrix": [2, 4], "x": 20.5, "y": 2.5}, + {"label": "Num Lock", "matrix": [2, 3], "x": 21.75, "y": 2.5}, + {"label": "/", "matrix": [2, 2], "x": 22.75, "y": 2.5}, + {"label": "*", "matrix": [2, 1], "x": 23.75, "y": 2.5}, + {"label": "-", "matrix": [2, 0], "x": 24.75, "y": 2.5}, + {"label": "L10", "matrix": [10, 8], "x": 0, "y": 3.25}, + {"label": "L11", "matrix": [9, 7], "x": 1, "y": 3.25}, + {"label": "L12", "matrix": [8, 12], "x": 2, "y": 3.25}, + {"label": "Tab", "matrix": [8, 11], "x": 3.25, "y": 3.5, "w": 1.5}, + {"label": "Q", "matrix": [8, 6], "x": 4.75, "y": 3.5}, + {"label": "W", "matrix": [8, 5], "x": 5.75, "y": 3.5}, + {"label": "E", "matrix": [8, 4], "x": 6.75, "y": 3.5}, + {"label": "R", "matrix": [8, 3], "x": 7.75, "y": 3.5}, + {"label": "T", "matrix": [8, 2], "x": 8.75, "y": 3.5}, + {"label": "Y", "matrix": [8, 1], "x": 9.75, "y": 3.5}, + {"label": "U", "matrix": [8, 0], "x": 10.75, "y": 3.5}, + {"label": "I", "matrix": [3, 12], "x": 11.75, "y": 3.5}, + {"label": "O", "matrix": [3, 11], "x": 12.75, "y": 3.5}, + {"label": "P", "matrix": [3, 10], "x": 13.75, "y": 3.5}, + {"label": "{", "matrix": [3, 9], "x": 14.75, "y": 3.5}, + {"label": "}", "matrix": [3, 8], "x": 15.75, "y": 3.5}, + {"label": "|", "matrix": [3, 7], "x": 16.75, "y": 3.5, "w": 1.5}, + {"label": "Delete", "matrix": [3, 6], "x": 18.5, "y": 3.5}, + {"label": "End", "matrix": [3, 5], "x": 19.5, "y": 3.5}, + {"label": "PgDn", "matrix": [3, 4], "x": 20.5, "y": 3.5}, + {"label": "7", "matrix": [3, 3], "x": 21.75, "y": 3.5}, + {"label": "8", "matrix": [3, 2], "x": 22.75, "y": 3.5}, + {"label": "9", "matrix": [3, 1], "x": 23.75, "y": 3.5}, + {"label": "+", "matrix": [3, 0], "x": 24.75, "y": 3.5, "h": 2}, + {"label": "L13", "matrix": [9, 8], "x": 0, "y": 4.25}, + {"label": "L14", "matrix": [8, 7], "x": 1, "y": 4.25}, + {"label": "L15", "matrix": [7, 12], "x": 2, "y": 4.25}, + {"label": "Caps Lock", "matrix": [7, 6], "x": 3.25, "y": 4.5, "w": 1.75}, + {"label": "A", "matrix": [7, 5], "x": 5, "y": 4.5}, + {"label": "S", "matrix": [7, 4], "x": 6, "y": 4.5}, + {"label": "D", "matrix": [7, 3], "x": 7, "y": 4.5}, + {"label": "F", "matrix": [7, 2], "x": 8, "y": 4.5}, + {"label": "G", "matrix": [7, 1], "x": 9, "y": 4.5}, + {"label": "H", "matrix": [7, 0], "x": 10, "y": 4.5}, + {"label": "J", "matrix": [4, 12], "x": 11, "y": 4.5}, + {"label": "K", "matrix": [4, 11], "x": 12, "y": 4.5}, + {"label": "L", "matrix": [4, 10], "x": 13, "y": 4.5}, + {"label": ":", "matrix": [4, 9], "x": 14, "y": 4.5}, + {"label": "\"", "matrix": [4, 8], "x": 15, "y": 4.5}, + {"label": "Enter", "matrix": [4, 7], "x": 16, "y": 4.5, "w": 2.25}, + {"label": "4", "matrix": [4, 3], "x": 21.75, "y": 4.5}, + {"label": "5", "matrix": [4, 2], "x": 22.75, "y": 4.5}, + {"label": "6", "matrix": [4, 1], "x": 23.75, "y": 4.5}, + {"label": "L16", "matrix": [8, 8], "x": 0, "y": 5.5}, + {"label": "L17", "matrix": [7, 7], "x": 1, "y": 5.5}, + {"label": "L18", "matrix": [6, 12], "x": 2, "y": 5.5}, + {"label": "Shift", "matrix": [7, 11], "x": 3.25, "y": 5.5, "w": 2.25}, + {"label": "Z", "matrix": [6, 5], "x": 5.5, "y": 5.5}, + {"label": "X", "matrix": [6, 3], "x": 6.5, "y": 5.5}, + {"label": "C", "matrix": [6, 2], "x": 7.5, "y": 5.5}, + {"label": "V", "matrix": [6, 1], "x": 8.5, "y": 5.5}, + {"label": "B", "matrix": [6, 0], "x": 9.5, "y": 5.5}, + {"label": "N", "matrix": [5, 12], "x": 10.5, "y": 5.5}, + {"label": "M", "matrix": [5, 11], "x": 11.5, "y": 5.5}, + {"label": "<", "matrix": [5, 10], "x": 12.5, "y": 5.5}, + {"label": ">", "matrix": [5, 9], "x": 13.5, "y": 5.5}, + {"label": "?", "matrix": [5, 8], "x": 14.5, "y": 5.5}, + {"label": "Shift", "matrix": [5, 7], "x": 15.5, "y": 5.5, "w": 2.75}, + {"label": "Up", "matrix": [4, 5], "x": 19.5, "y": 5.5}, + {"label": "1", "matrix": [5, 3], "x": 21.75, "y": 5.5}, + {"label": "2", "matrix": [5, 2], "x": 22.75, "y": 5.5}, + {"label": "3", "matrix": [5, 1], "x": 23.75, "y": 5.5}, + {"label": "Enter", "matrix": [4, 0], "x": 24.75, "y": 5.5, "h": 2}, + {"label": "L19", "matrix": [7, 8], "x": 0, "y": 6.5}, + {"label": "L20", "matrix": [8, 9], "x": 1, "y": 6.5}, + {"label": "L21", "matrix": [7, 9], "x": 2, "y": 6.5}, + {"label": "Ctrl", "matrix": [6, 11], "x": 3.25, "y": 6.5, "w": 1.25}, + {"label": "Win", "matrix": [6, 6], "x": 4.5, "y": 6.5, "w": 1.25}, + {"label": "Alt", "matrix": [6, 4], "x": 5.75, "y": 6.5, "w": 1.25}, + {"label": "Space", "matrix": [6, 10], "x": 7, "y": 6.5, "w": 6.25}, + {"label": "Alt", "matrix": [6, 9], "x": 13.25, "y": 6.5, "w": 1.25}, + {"label": "Win", "matrix": [6, 8], "x": 14.5, "y": 6.5, "w": 1.25}, + {"label": "Menu", "matrix": [6, 7], "x": 15.75, "y": 6.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [5, 6], "x": 17, "y": 6.5, "w": 1.25}, + {"label": "Left", "matrix": [4, 6], "x": 18.5, "y": 6.5}, + {"label": "Down", "matrix": [5, 5], "x": 19.5, "y": 6.5}, + {"label": "Right", "matrix": [4, 4], "x": 20.5, "y": 6.5}, + {"label": "0", "matrix": [5, 4], "x": 21.75, "y": 6.5, "w": 2}, + {"label": ".", "matrix": [5, 0], "x": 23.75, "y": 6.5} + ] + } + } +} diff --git a/keyboards/large_lad/keymaps/default/keymap.c b/keyboards/large_lad/keymaps/default/keymap.c new file mode 100644 index 00000000000..68c368360f9 --- /dev/null +++ b/keyboards/large_lad/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +// Copyright 2024 Hyphen-ated (@Hyphen-ated) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │F13│F14│F15│F16│ │F17│F18│F19│F20│ │F21│F22│F23│F24│ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┤ ┌───┐ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤ ├───┼───┼───┤───┤ + * │ │ │ │ │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ │ │ │ │ │ + * └───┴───┴───┘ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ │ │ │ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├───┼───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │ │ │ │ │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └───┴───┴───┘ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [0] = LAYOUT( + KC_NO,KC_NO,KC_NO, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO,KC_NO,KC_NO, 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_PSCR, KC_SCRL, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, + + KC_NO,KC_NO,KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_NO,KC_NO,KC_NO, 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, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO,KC_NO,KC_NO, 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_P4, KC_P5, KC_P6, + KC_NO,KC_NO,KC_NO, 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_P1, KC_P2, KC_P3, KC_PENT, + KC_NO,KC_NO,KC_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ) +}; + +// encoder controls volume by default +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif diff --git a/keyboards/large_lad/keymaps/default/rules.mk b/keyboards/large_lad/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/large_lad/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/large_lad/readme.md b/keyboards/large_lad/readme.md new file mode 100644 index 00000000000..ac9f5a0646e --- /dev/null +++ b/keyboards/large_lad/readme.md @@ -0,0 +1,23 @@ +# large_lad + +![large_lad](https://i.imgur.com/CQWAD2X.jpg) + +Starts with the standard US 104 key layout and adds more keys on top and on the left. Total of 148 keys, one of which is a rotary encoder. Includes two rows of function keys and a 3x7 grid of keys on the left. No LEDs. + +* Keyboard Maintainer: [Hyphen-ated](https://github.com/Hyphen-ated) +* Hardware Supported: Custom open source PCB. +* Hardware Availability: DIY. PCB and plate design files available at https://github.com/Hyphen-ated/large-lad-keyboard + +Make example for this keyboard (after setting up your build environment): + + make large_lad:default + +Flashing example for this keyboard: + + make large_lad: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 + +To enter the bootloader, there's two buttons to press on the blackpill board. Press and hold BOOT, press and release NRST, then release BOOT. Sometimes this randomly fails and you have to try again. From 6f3b494a4d8a28696743e977f677e6a247dbe392 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Mar 2025 08:56:08 +0000 Subject: [PATCH 19/25] Bump vite from 5.4.12 to 5.4.15 in /builddefs/docsgen (#25065) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.12 to 5.4.15. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.4.15/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.15/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- builddefs/docsgen/package.json | 2 +- builddefs/docsgen/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builddefs/docsgen/package.json b/builddefs/docsgen/package.json index 21f56d7ddfb..a798207d77d 100644 --- a/builddefs/docsgen/package.json +++ b/builddefs/docsgen/package.json @@ -1,7 +1,7 @@ { "license": "GPL-2.0-or-later", "devDependencies": { - "vite": "^5.4.12", + "vite": "^5.4.15", "vitepress": "^1.1.0", "vitepress-plugin-tabs": "^0.5.0", "vue": "^3.4.24" diff --git a/builddefs/docsgen/yarn.lock b/builddefs/docsgen/yarn.lock index 0b36eec07c7..eda99772c4c 100644 --- a/builddefs/docsgen/yarn.lock +++ b/builddefs/docsgen/yarn.lock @@ -766,10 +766,10 @@ tabbable@^6.2.0: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== -vite@^5.2.9, vite@^5.4.12: - version "5.4.12" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7" - integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA== +vite@^5.2.9, vite@^5.4.15: + version "5.4.15" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.15.tgz#2941547f10ebb4bf9b0fa0da863c06711eb7e5e5" + integrity sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA== dependencies: esbuild "^0.21.3" postcss "^8.4.43" From 25fb4a498a4b6e8436e528edd502bda46fd2c464 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Fri, 28 Mar 2025 10:19:07 +0100 Subject: [PATCH 20/25] Allow AnnePro2 to reboot (#24886) Without this, the QK_REBOOT key did nothing. --- keyboards/annepro2/annepro2.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/keyboards/annepro2/annepro2.c b/keyboards/annepro2/annepro2.c index f536690de3d..9e72dbf6fb0 100644 --- a/keyboards/annepro2/annepro2.c +++ b/keyboards/annepro2/annepro2.c @@ -48,6 +48,11 @@ ble_capslock_t ble_capslock = {._dummy = {0}, .caps_lock = false}; static uint8_t led_enabled = 1; #endif +void mcu_reset(void) { + __disable_irq(); + NVIC_SystemReset(); +} + void bootloader_jump(void) { // Send msg to shine to boot into IAP ap2_set_IAP(); From 5a6595357d110636dddc9a8f0455f5db55d4e2a7 Mon Sep 17 00:00:00 2001 From: lsh4711 <120231876+lsh4711@users.noreply.github.com> Date: Fri, 28 Mar 2025 19:03:59 +0900 Subject: [PATCH 21/25] Fix path typo related RP2040 (#25069) Fix path typo --- platforms/chibios/vendors/RP/RP2040.mk | 2 +- quantum/bits.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/chibios/vendors/RP/RP2040.mk b/platforms/chibios/vendors/RP/RP2040.mk index 94f023d72b7..27d1fa4472d 100644 --- a/platforms/chibios/vendors/RP/RP2040.mk +++ b/platforms/chibios/vendors/RP/RP2040.mk @@ -78,7 +78,7 @@ PICOSDKINTRINSICSSRC = $(PICOSDKROOT)/src/rp2_common/pico_divider/divider.S \ $(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S PICOSDKINTRINSICSINC = $(PICOSDKROOT)/src/common/pico_base/include \ - $(PICOSDKROOT)/src/rp2_common/pico_platfrom/include \ + $(PICOSDKROOT)/src/rp2_common/pico_platform/include \ $(PICOSDKROOT)/src/rp2_common/hardware_divider/include # integer division intrinsics utilizing the RP2040 hardware divider diff --git a/quantum/bits.h b/quantum/bits.h index 2f3c3437623..41f11e7b9cd 100644 --- a/quantum/bits.h +++ b/quantum/bits.h @@ -4,7 +4,7 @@ #include -/* Remove these once we transitioned to C23 across all platfroms */ +/* Remove these once we transitioned to C23 across all platforms */ #define UINT32_WIDTH 32 #define UINT64_WIDTH 64 From 94a9099c3843a04dc0eb54f8009dff5b4422e430 Mon Sep 17 00:00:00 2001 From: Ben Green Date: Fri, 28 Mar 2025 13:38:24 +0000 Subject: [PATCH 22/25] Update onekey example for nucleo f446re (#25067) * use accessible pins for nucleo f446re onekey example * remove pin collision with matrix in keyboard.json * use accessible pins for LED * remove pin collision with matrix * Update readme.md to reflect pin changes --- keyboards/handwired/onekey/nucleo_f446re/config.h | 2 +- keyboards/handwired/onekey/nucleo_f446re/keyboard.json | 6 +++--- keyboards/handwired/onekey/nucleo_f446re/readme.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/handwired/onekey/nucleo_f446re/config.h b/keyboards/handwired/onekey/nucleo_f446re/config.h index 4401623e85c..cebb6091170 100644 --- a/keyboards/handwired/onekey/nucleo_f446re/config.h +++ b/keyboards/handwired/onekey/nucleo_f446re/config.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define ADC_PIN A0 +#define ADC_PIN A5 #define SOLENOID_PINS { B12, B13, B14, B15 } #define SOLENOID_PINS_ACTIVE_STATE { high, high, low } diff --git a/keyboards/handwired/onekey/nucleo_f446re/keyboard.json b/keyboards/handwired/onekey/nucleo_f446re/keyboard.json index 26de66e1986..7c51ca053b5 100644 --- a/keyboards/handwired/onekey/nucleo_f446re/keyboard.json +++ b/keyboards/handwired/onekey/nucleo_f446re/keyboard.json @@ -3,17 +3,17 @@ "processor": "STM32F446", "bootloader": "stm32-dfu", "matrix_pins": { - "cols": ["A2"], + "cols": ["A0"], "rows": ["A1"] }, "backlight": { "pin": "B8" }, "ws2812": { - "pin": "A0" + "pin": "A4" }, "apa102": { - "data_pin": "A0", + "data_pin": "A4", "clock_pin": "B13" } } diff --git a/keyboards/handwired/onekey/nucleo_f446re/readme.md b/keyboards/handwired/onekey/nucleo_f446re/readme.md index c7d13cb9738..b0645b65fe2 100644 --- a/keyboards/handwired/onekey/nucleo_f446re/readme.md +++ b/keyboards/handwired/onekey/nucleo_f446re/readme.md @@ -1,5 +1,5 @@ # STM32 Nucleo-L432 onekey -To trigger keypress, short together pins *A1* and *A2*. +To trigger keypress, short together pins *A0* and *A1*. Note that the pin numbering is relative to the MCU, so that A0 and A1 refer to PA0 and PA1 on the MCU (which are also labelled A0 and A1 on the board, but this isn't true for the other PAx pins). You'll also need to connect `VIN`, `GND`, USB `D+` to `PA12`/`D2`, and USB `D-` to `PA11`/`D10`. From d0cfb938ef58d6b8d2089f00f6160d2105791a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sat, 29 Mar 2025 10:47:26 +0800 Subject: [PATCH 23/25] Module documentation typo correction (#25073) --- docs/features/community_modules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/community_modules.md b/docs/features/community_modules.md index 3a1a82e7bc6..a28c5afaeb1 100644 --- a/docs/features/community_modules.md +++ b/docs/features/community_modules.md @@ -40,7 +40,7 @@ cd /path/to/your/external/userspace mkdir -p modules # Replace the following {user} and {repo} with the author's community module repository git submodule add https://github.com/{user}/{repo}.git modules/{user} -git submdule update --init --recursive +git submodule update --init --recursive ``` This will ensure the copy of the module is made in your userspace. From 49d13595f64577bc50c08b460538d35055befdf8 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 30 Mar 2025 00:19:38 +1100 Subject: [PATCH 24/25] Fix lockups on AVR with `qmk/hello_world` module (#25074) Fix lockups on AVR. --- modules/qmk/hello_world/hello_world.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/qmk/hello_world/hello_world.c b/modules/qmk/hello_world/hello_world.c index d9dd3661007..dcabfc60ea2 100644 --- a/modules/qmk/hello_world/hello_world.c +++ b/modules/qmk/hello_world/hello_world.c @@ -7,7 +7,7 @@ ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0); uint32_t delayed_hello_world(uint32_t trigger_time, void *cb_arg) { - printf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size); + dprintf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size); return 0; } From bc42a7ea8980c1d135ac6f2d2ec194e3e7355bfe Mon Sep 17 00:00:00 2001 From: henrikosorensen Date: Sun, 30 Mar 2025 01:17:38 +0100 Subject: [PATCH 25/25] At101ish (#25072) * Dell AT101 replacement pcb support * Update keyboards/at101ish/readme.md Co-Authored-By: fauxpark * remove empty src clause in makefile * feature: Update at101ish to qmk v0.28 * feature: Add osdetecting keymap variant. * refactor: Move at101ish keyboard to handwired folder. * fix: Adjust at101ish readme- * fix: review changes. * chore: Remove unneeded feature. --------- Co-authored-by: fauxpark --- keyboards/handwired/at101ish/keyboard.json | 363 ++++++++++++++++++ .../at101ish/keymaps/default/keymap.c | 27 ++ .../at101ish/keymaps/osdetect/keymap.c | 59 +++ .../at101ish/keymaps/osdetect/rules.mk | 1 + keyboards/handwired/at101ish/readme.md | 25 ++ 5 files changed, 475 insertions(+) create mode 100644 keyboards/handwired/at101ish/keyboard.json create mode 100644 keyboards/handwired/at101ish/keymaps/default/keymap.c create mode 100644 keyboards/handwired/at101ish/keymaps/osdetect/keymap.c create mode 100644 keyboards/handwired/at101ish/keymaps/osdetect/rules.mk create mode 100644 keyboards/handwired/at101ish/readme.md diff --git a/keyboards/handwired/at101ish/keyboard.json b/keyboards/handwired/at101ish/keyboard.json new file mode 100644 index 00000000000..bd629f16058 --- /dev/null +++ b/keyboards/handwired/at101ish/keyboard.json @@ -0,0 +1,363 @@ +{ + "manufacturer": "Henrik O. S\u00f8rensen", + "keyboard_name": "AT101ish", + "maintainer": "qmk", + "bootloader": "halfkay", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": true, + "console": true, + "extrakey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "D6", + "num_lock": "D4", + "scroll_lock": "E6" + }, + "matrix_pins": { + "cols": ["D7", "B4", "B5", "B6", "F7", "F6", "F5", "F4", "F1", "F0"], + "rows": ["B1", "B0", "B2", "D5", "B3", "C7", "B7", "C6", "D0", "D3", "D1", "D2"] + }, + "processor": "atmega32u4", + "tags": ["at101", "at102", "bigfoot"], + "url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb", + "usb": { + "device_version": "1.1.0", + "pid": "0x0101", + "vid": "0xFEED" + }, + "community_layouts": ["fullsize_ansi", "fullsize_iso"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "F10", "matrix": [1, 0], "x": 12, "y": 0}, + {"label": "F11", "matrix": [1, 1], "x": 13, "y": 0}, + {"label": "F12", "matrix": [1, 2], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [1, 3], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "matrix": [1, 4], "x": 16.25, "y": 0}, + {"label": "Pause", "matrix": [1, 5], "x": 17.25, "y": 0}, + {"label": "\u00ac", "matrix": [2, 0], "x": 0, "y": 1.5}, + {"label": "!", "matrix": [2, 1], "x": 1, "y": 1.5}, + {"label": "\"", "matrix": [2, 2], "x": 2, "y": 1.5}, + {"label": "\u00a3", "matrix": [2, 3], "x": 3, "y": 1.5}, + {"label": "$", "matrix": [2, 4], "x": 4, "y": 1.5}, + {"label": "%", "matrix": [2, 5], "x": 5, "y": 1.5}, + {"label": "^", "matrix": [2, 6], "x": 6, "y": 1.5}, + {"label": "&", "matrix": [2, 7], "x": 7, "y": 1.5}, + {"label": "*", "matrix": [2, 8], "x": 8, "y": 1.5}, + {"label": "(", "matrix": [2, 9], "x": 9, "y": 1.5}, + {"label": ")", "matrix": [3, 0], "x": 10, "y": 1.5}, + {"label": "_", "matrix": [3, 1], "x": 11, "y": 1.5}, + {"label": "+", "matrix": [3, 2], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [3, 3], "x": 13, "y": 1.5, "w": 2}, + {"label": "Insert", "matrix": [3, 4], "x": 15.25, "y": 1.5}, + {"label": "Home", "matrix": [3, 5], "x": 16.25, "y": 1.5}, + {"label": "PgUp", "matrix": [3, 6], "x": 17.25, "y": 1.5}, + {"label": "Num Lock", "matrix": [3, 7], "x": 18.5, "y": 1.5}, + {"label": "/", "matrix": [3, 8], "x": 19.5, "y": 1.5}, + {"label": "*", "matrix": [3, 9], "x": 20.5, "y": 1.5}, + {"label": "-", "matrix": [1, 9], "x": 21.5, "y": 1.5}, + {"label": "Tab", "matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [4, 2], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [4, 3], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [4, 4], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [4, 5], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [4, 6], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [5, 0], "x": 10.5, "y": 2.5}, + {"label": "{", "matrix": [5, 1], "x": 11.5, "y": 2.5}, + {"label": "}", "matrix": [5, 2], "x": 12.5, "y": 2.5}, + {"label": "|", "matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5}, + {"label": "Delete", "matrix": [5, 4], "x": 15.25, "y": 2.5}, + {"label": "End", "matrix": [5, 5], "x": 16.25, "y": 2.5}, + {"label": "PgDn", "matrix": [5, 6], "x": 17.25, "y": 2.5}, + {"label": "7", "matrix": [5, 7], "x": 18.5, "y": 2.5}, + {"label": "8", "matrix": [5, 8], "x": 19.5, "y": 2.5}, + {"label": "9", "matrix": [5, 9], "x": 20.5, "y": 2.5}, + {"label": "+", "matrix": [1, 8], "x": 21.5, "y": 2.5}, + {"label": "Caps Lock", "matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [6, 1], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [6, 2], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [6, 3], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [6, 4], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [6, 5], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [6, 6], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [6, 7], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [6, 8], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [6, 9], "x": 9.75, "y": 3.5}, + {"label": ":", "matrix": [7, 0], "x": 10.75, "y": 3.5}, + {"label": "@", "matrix": [7, 1], "x": 11.75, "y": 3.5}, + {"label": "~", "matrix": [7, 2], "x": 12.75, "y": 3.5}, + {"label": "Enter", "matrix": [7, 3], "x": 13.75, "y": 3.5, "w": 1.25}, + {"label": "4", "matrix": [7, 6], "x": 18.5, "y": 3.5}, + {"label": "5", "matrix": [7, 7], "x": 19.5, "y": 3.5}, + {"label": "6", "matrix": [7, 8], "x": 20.5, "y": 3.5}, + {"label": "=", "matrix": [7, 9], "x": 21.5, "y": 3.5}, + {"label": "Shift", "matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "|", "matrix": [8, 1], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [8, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [8, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [8, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [8, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [8, 6], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [8, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [8, 8], "x": 8.25, "y": 4.5}, + {"label": "<", "matrix": [8, 9], "x": 9.25, "y": 4.5}, + {"label": ">", "matrix": [9, 0], "x": 10.25, "y": 4.5}, + {"label": "?", "matrix": [9, 1], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 1.75}, + {"label": "|", "matrix": [9, 3], "x": 14, "y": 4.5}, + {"label": "\u2191", "matrix": [9, 4], "x": 16.25, "y": 4.5}, + {"label": "1", "matrix": [9, 6], "x": 18.5, "y": 4.5}, + {"label": "2", "matrix": [9, 7], "x": 19.5, "y": 4.5}, + {"label": "3", "matrix": [9, 8], "x": 20.5, "y": 4.5}, + {"label": "Enter", "matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2}, + {"label": "Ctrl", "matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": " ", "matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "AltGr ", "matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Menu", "matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "\u2190", "matrix": [11, 4], "x": 15.25, "y": 5.5}, + {"label": "\u2193", "matrix": [11, 5], "x": 16.25, "y": 5.5}, + {"label": "\u2192", "matrix": [11, 6], "x": 17.25, "y": 5.5}, + {"label": "0", "matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2}, + {"label": ".", "matrix": [11, 8], "x": 20.5, "y": 5.5} + ] + }, + "LAYOUT_fullsize_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": [1, 0], "x": 12, "y": 0}, + {"matrix": [1, 1], "x": 13, "y": 0}, + {"matrix": [1, 2], "x": 14, "y": 0}, + {"matrix": [1, 3], "x": 15.25, "y": 0}, + {"matrix": [1, 4], "x": 16.25, "y": 0}, + {"matrix": [1, 5], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1.5}, + {"matrix": [2, 1], "x": 1, "y": 1.5}, + {"matrix": [2, 2], "x": 2, "y": 1.5}, + {"matrix": [2, 3], "x": 3, "y": 1.5}, + {"matrix": [2, 4], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 6], "x": 6, "y": 1.5}, + {"matrix": [2, 7], "x": 7, "y": 1.5}, + {"matrix": [2, 8], "x": 8, "y": 1.5}, + {"matrix": [2, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 0], "x": 10, "y": 1.5}, + {"matrix": [3, 1], "x": 11, "y": 1.5}, + {"matrix": [3, 2], "x": 12, "y": 1.5}, + {"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2}, + {"matrix": [3, 4], "x": 15.25, "y": 1.5}, + {"matrix": [3, 5], "x": 16.25, "y": 1.5}, + {"matrix": [3, 6], "x": 17.25, "y": 1.5}, + {"matrix": [3, 7], "x": 18.5, "y": 1.5}, + {"matrix": [3, 8], "x": 19.5, "y": 1.5}, + {"matrix": [3, 9], "x": 20.5, "y": 1.5}, + {"matrix": [1, 9], "x": 21.5, "y": 1.5}, + {"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 2.5}, + {"matrix": [4, 2], "x": 2.5, "y": 2.5}, + {"matrix": [4, 3], "x": 3.5, "y": 2.5}, + {"matrix": [4, 4], "x": 4.5, "y": 2.5}, + {"matrix": [4, 5], "x": 5.5, "y": 2.5}, + {"matrix": [4, 6], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [5, 0], "x": 10.5, "y": 2.5}, + {"matrix": [5, 1], "x": 11.5, "y": 2.5}, + {"matrix": [5, 2], "x": 12.5, "y": 2.5}, + {"matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5}, + {"matrix": [5, 4], "x": 15.25, "y": 2.5}, + {"matrix": [5, 5], "x": 16.25, "y": 2.5}, + {"matrix": [5, 6], "x": 17.25, "y": 2.5}, + {"matrix": [5, 7], "x": 18.5, "y": 2.5}, + {"matrix": [5, 8], "x": 19.5, "y": 2.5}, + {"matrix": [5, 9], "x": 20.5, "y": 2.5}, + {"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2}, + {"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [6, 1], "x": 1.75, "y": 3.5}, + {"matrix": [6, 2], "x": 2.75, "y": 3.5}, + {"matrix": [6, 3], "x": 3.75, "y": 3.5}, + {"matrix": [6, 4], "x": 4.75, "y": 3.5}, + {"matrix": [6, 5], "x": 5.75, "y": 3.5}, + {"matrix": [6, 6], "x": 6.75, "y": 3.5}, + {"matrix": [6, 7], "x": 7.75, "y": 3.5}, + {"matrix": [6, 8], "x": 8.75, "y": 3.5}, + {"matrix": [6, 9], "x": 9.75, "y": 3.5}, + {"matrix": [7, 0], "x": 10.75, "y": 3.5}, + {"matrix": [7, 1], "x": 11.75, "y": 3.5}, + {"matrix": [7, 3], "x": 12.75, "y": 3.5, "w": 2.25}, + {"matrix": [7, 6], "x": 18.5, "y": 3.5}, + {"matrix": [7, 7], "x": 19.5, "y": 3.5}, + {"matrix": [7, 8], "x": 20.5, "y": 3.5}, + {"matrix": [8, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [8, 2], "x": 2.25, "y": 4.5}, + {"matrix": [8, 3], "x": 3.25, "y": 4.5}, + {"matrix": [8, 4], "x": 4.25, "y": 4.5}, + {"matrix": [8, 5], "x": 5.25, "y": 4.5}, + {"matrix": [8, 6], "x": 6.25, "y": 4.5}, + {"matrix": [8, 7], "x": 7.25, "y": 4.5}, + {"matrix": [8, 8], "x": 8.25, "y": 4.5}, + {"matrix": [8, 9], "x": 9.25, "y": 4.5}, + {"matrix": [9, 0], "x": 10.25, "y": 4.5}, + {"matrix": [9, 1], "x": 11.25, "y": 4.5}, + {"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.5}, + {"matrix": [9, 6], "x": 18.5, "y": 4.5}, + {"matrix": [9, 7], "x": 19.5, "y": 4.5}, + {"matrix": [9, 8], "x": 20.5, "y": 4.5}, + {"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2}, + {"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25}, + {"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25}, + {"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 4], "x": 15.25, "y": 5.5}, + {"matrix": [11, 5], "x": 16.25, "y": 5.5}, + {"matrix": [11, 6], "x": 17.25, "y": 5.5}, + {"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [11, 8], "x": 20.5, "y": 5.5} + ] + }, + "LAYOUT_fullsize_iso": { + "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": [1, 0], "x": 12, "y": 0}, + {"matrix": [1, 1], "x": 13, "y": 0}, + {"matrix": [1, 2], "x": 14, "y": 0}, + {"matrix": [1, 3], "x": 15.25, "y": 0}, + {"matrix": [1, 4], "x": 16.25, "y": 0}, + {"matrix": [1, 5], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1.5}, + {"matrix": [2, 1], "x": 1, "y": 1.5}, + {"matrix": [2, 2], "x": 2, "y": 1.5}, + {"matrix": [2, 3], "x": 3, "y": 1.5}, + {"matrix": [2, 4], "x": 4, "y": 1.5}, + {"matrix": [2, 5], "x": 5, "y": 1.5}, + {"matrix": [2, 6], "x": 6, "y": 1.5}, + {"matrix": [2, 7], "x": 7, "y": 1.5}, + {"matrix": [2, 8], "x": 8, "y": 1.5}, + {"matrix": [2, 9], "x": 9, "y": 1.5}, + {"matrix": [3, 0], "x": 10, "y": 1.5}, + {"matrix": [3, 1], "x": 11, "y": 1.5}, + {"matrix": [3, 2], "x": 12, "y": 1.5}, + {"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2}, + {"matrix": [3, 4], "x": 15.25, "y": 1.5}, + {"matrix": [3, 5], "x": 16.25, "y": 1.5}, + {"matrix": [3, 6], "x": 17.25, "y": 1.5}, + {"matrix": [3, 7], "x": 18.5, "y": 1.5}, + {"matrix": [3, 8], "x": 19.5, "y": 1.5}, + {"matrix": [3, 9], "x": 20.5, "y": 1.5}, + {"matrix": [1, 9], "x": 21.5, "y": 1.5}, + {"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 2.5}, + {"matrix": [4, 2], "x": 2.5, "y": 2.5}, + {"matrix": [4, 3], "x": 3.5, "y": 2.5}, + {"matrix": [4, 4], "x": 4.5, "y": 2.5}, + {"matrix": [4, 5], "x": 5.5, "y": 2.5}, + {"matrix": [4, 6], "x": 6.5, "y": 2.5}, + {"matrix": [4, 7], "x": 7.5, "y": 2.5}, + {"matrix": [4, 8], "x": 8.5, "y": 2.5}, + {"matrix": [4, 9], "x": 9.5, "y": 2.5}, + {"matrix": [5, 0], "x": 10.5, "y": 2.5}, + {"matrix": [5, 1], "x": 11.5, "y": 2.5}, + {"matrix": [5, 2], "x": 12.5, "y": 2.5}, + {"matrix": [5, 4], "x": 15.25, "y": 2.5}, + {"matrix": [5, 5], "x": 16.25, "y": 2.5}, + {"matrix": [5, 6], "x": 17.25, "y": 2.5}, + {"matrix": [5, 7], "x": 18.5, "y": 2.5}, + {"matrix": [5, 8], "x": 19.5, "y": 2.5}, + {"matrix": [5, 9], "x": 20.5, "y": 2.5}, + {"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2}, + {"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [6, 1], "x": 1.75, "y": 3.5}, + {"matrix": [6, 2], "x": 2.75, "y": 3.5}, + {"matrix": [6, 3], "x": 3.75, "y": 3.5}, + {"matrix": [6, 4], "x": 4.75, "y": 3.5}, + {"matrix": [6, 5], "x": 5.75, "y": 3.5}, + {"matrix": [6, 6], "x": 6.75, "y": 3.5}, + {"matrix": [6, 7], "x": 7.75, "y": 3.5}, + {"matrix": [6, 8], "x": 8.75, "y": 3.5}, + {"matrix": [6, 9], "x": 9.75, "y": 3.5}, + {"matrix": [7, 0], "x": 10.75, "y": 3.5}, + {"matrix": [7, 1], "x": 11.75, "y": 3.5}, + {"matrix": [7, 2], "x": 12.75, "y": 3.5}, + {"matrix": [7, 3], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + {"matrix": [7, 6], "x": 18.5, "y": 3.5}, + {"matrix": [7, 7], "x": 19.5, "y": 3.5}, + {"matrix": [7, 8], "x": 20.5, "y": 3.5}, + {"matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"matrix": [8, 1], "x": 1.25, "y": 4.5}, + {"matrix": [8, 2], "x": 2.25, "y": 4.5}, + {"matrix": [8, 3], "x": 3.25, "y": 4.5}, + {"matrix": [8, 4], "x": 4.25, "y": 4.5}, + {"matrix": [8, 5], "x": 5.25, "y": 4.5}, + {"matrix": [8, 6], "x": 6.25, "y": 4.5}, + {"matrix": [8, 7], "x": 7.25, "y": 4.5}, + {"matrix": [8, 8], "x": 8.25, "y": 4.5}, + {"matrix": [8, 9], "x": 9.25, "y": 4.5}, + {"matrix": [9, 0], "x": 10.25, "y": 4.5}, + {"matrix": [9, 1], "x": 11.25, "y": 4.5}, + {"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75}, + {"matrix": [9, 4], "x": 16.25, "y": 4.5}, + {"matrix": [9, 6], "x": 18.5, "y": 4.5}, + {"matrix": [9, 7], "x": 19.5, "y": 4.5}, + {"matrix": [9, 8], "x": 20.5, "y": 4.5}, + {"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2}, + {"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25}, + {"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25}, + {"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 4], "x": 15.25, "y": 5.5}, + {"matrix": [11, 5], "x": 16.25, "y": 5.5}, + {"matrix": [11, 6], "x": 17.25, "y": 5.5}, + {"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2}, + {"matrix": [11, 8], "x": 20.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/handwired/at101ish/keymaps/default/keymap.c b/keyboards/handwired/at101ish/keymaps/default/keymap.c new file mode 100644 index 00000000000..2311a244371 --- /dev/null +++ b/keyboards/handwired/at101ish/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen) + * + * 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_all( + 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_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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, KC_P7, KC_P8, KC_P9, KC_PPLS, + 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT) +}; diff --git a/keyboards/handwired/at101ish/keymaps/osdetect/keymap.c b/keyboards/handwired/at101ish/keymaps/osdetect/keymap.c new file mode 100644 index 00000000000..89b748a61b7 --- /dev/null +++ b/keyboards/handwired/at101ish/keymaps/osdetect/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum LAYER { + _PC = 0, + _MAC, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_PC] = LAYOUT_all( + 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_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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, KC_P7, KC_P8, KC_P9, KC_PPLS, + 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + [_MAC] = LAYOUT_all( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_WSCH, KC_LPAD, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_NUBS, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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, KC_P7, KC_P8, KC_P9, KC_PPLS, + 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + [_FN] = LAYOUT_all( + _______, 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_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_PC), _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, + _______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, QK_BOOT, _______, DF(_MAC),_______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT, _______, _______) +}; + +bool process_detected_host_os_user(os_variant_t detected_os) { + /* If Apple, swap to macOS layer. */ + if (detected_os == OS_MACOS || detected_os == OS_IOS) { + set_single_default_layer(_MAC); + } + else /* Else use PC layer */ { + set_single_default_layer(_PC); + } + + return true; +} diff --git a/keyboards/handwired/at101ish/keymaps/osdetect/rules.mk b/keyboards/handwired/at101ish/keymaps/osdetect/rules.mk new file mode 100644 index 00000000000..64ac3dcb166 --- /dev/null +++ b/keyboards/handwired/at101ish/keymaps/osdetect/rules.mk @@ -0,0 +1 @@ +OS_DETECTION_ENABLE = yes diff --git a/keyboards/handwired/at101ish/readme.md b/keyboards/handwired/at101ish/readme.md new file mode 100644 index 00000000000..2bdfbb9367d --- /dev/null +++ b/keyboards/handwired/at101ish/readme.md @@ -0,0 +1,25 @@ +# AT101(-ish) + +A replacement PCB for Dell AT101 family. (In theory) supports AT101, AT101W, AT102, AT102W, maybe other Bigfoot platform boards. + +Keyboard Maintainer: QMK Community and Henrik O. Sørensen +Hardware Supported: AT101(ish) PCB +Hardware Availability: https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb + +Make example for this keyboard (after setting up your build environment): + + make handwired/at101ish:default + +Flashing example for this keyboard: + + make handwired/at101ish: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 2 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 programming button on the teensy 2.0 PCB. +