From f6c70c40af502923594e76bf079f602ed88a2341 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 17 Oct 2023 09:43:50 +1100 Subject: [PATCH 01/51] Allow for disabling of parallel processing of qmk find and `qmk mass-compile`. (#22160) Co-authored-by: Duncan Sutherland --- lib/python/qmk/cli/find.py | 2 +- lib/python/qmk/cli/mass_compile.py | 4 +-- lib/python/qmk/search.py | 30 ++++++++-------- lib/python/qmk/util.py | 56 ++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 19 deletions(-) create mode 100644 lib/python/qmk/util.py diff --git a/lib/python/qmk/cli/find.py b/lib/python/qmk/cli/find.py index 2836eb8a542..f2135bbc16c 100644 --- a/lib/python/qmk/cli/find.py +++ b/lib/python/qmk/cli/find.py @@ -23,7 +23,7 @@ def find(cli): if len(cli.args.filter) == 0 and len(cli.args.print) > 0: cli.log.warning('No filters supplied -- keymaps not parsed, unable to print requested values.') - targets = search_keymap_targets(cli.args.keymap, cli.args.filter, cli.args.print) + targets = search_keymap_targets([('all', cli.config.find.keymap)], cli.args.filter, cli.args.print) for keyboard, keymap, print_vals in targets: print(f'{keyboard}:{keymap}') diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 1227f435e74..06e6e411a72 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -97,6 +97,6 @@ def mass_compile(cli): if len(cli.args.builds) > 0: targets = search_make_targets(cli.args.builds, cli.args.filter) else: - targets = search_keymap_targets(cli.args.keymap, cli.args.filter) + targets = search_keymap_targets([('all', cli.config.mass_compile.keymap)], cli.args.filter) - return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.args.no_temp, cli.args.parallel, cli.args.env) + return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.config.mass_compile.no_temp, cli.config.mass_compile.parallel, cli.args.env) diff --git a/lib/python/qmk/search.py b/lib/python/qmk/search.py index 0b5d4892189..a74450ca87d 100644 --- a/lib/python/qmk/search.py +++ b/lib/python/qmk/search.py @@ -4,12 +4,12 @@ import contextlib import functools import fnmatch import logging -import multiprocessing import re from typing import List, Tuple from dotty_dict import dotty from milc import cli +from qmk.util import parallel_map from qmk.info import keymap_json import qmk.keyboard import qmk.keymap @@ -78,17 +78,16 @@ def _expand_keymap_target(keyboard: str, keymap: str, all_keyboards: List[str] = all_keyboards = qmk.keyboard.list_keyboards() if keyboard == 'all': - with multiprocessing.Pool() as pool: - if keymap == 'all': - cli.log.info('Retrieving list of all keyboards and keymaps...') - targets = [] - for kb in pool.imap_unordered(_all_keymaps, all_keyboards): - targets.extend(kb) - return targets - else: - cli.log.info(f'Retrieving list of keyboards with keymap "{keymap}"...') - keyboard_filter = functools.partial(_keymap_exists, keymap=keymap) - return [(kb, keymap) for kb in filter(lambda e: e is not None, pool.imap_unordered(keyboard_filter, all_keyboards))] + if keymap == 'all': + cli.log.info('Retrieving list of all keyboards and keymaps...') + targets = [] + for kb in parallel_map(_all_keymaps, all_keyboards): + targets.extend(kb) + return targets + else: + cli.log.info(f'Retrieving list of keyboards with keymap "{keymap}"...') + keyboard_filter = functools.partial(_keymap_exists, keymap=keymap) + return [(kb, keymap) for kb in filter(lambda e: e is not None, parallel_map(keyboard_filter, all_keyboards))] else: if keymap == 'all': keyboard = qmk.keyboard.resolve_keyboard(keyboard) @@ -117,8 +116,7 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str targets = [(kb, km, {}) for kb, km in target_list] else: cli.log.info('Parsing data for all matching keyboard/keymap combinations...') - with multiprocessing.Pool() as pool: - valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in pool.imap_unordered(_load_keymap_info, target_list)] + valid_keymaps = [(e[0], e[1], dotty(e[2])) for e in parallel_map(_load_keymap_info, target_list)] function_re = re.compile(r'^(?P[a-zA-Z]+)\((?P[a-zA-Z0-9_\.]+)(,\s*(?P[^#]+))?\)$') equals_re = re.compile(r'^(?P[a-zA-Z0-9_\.]+)\s*=\s*(?P[^#]+)$') @@ -179,10 +177,10 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str return targets -def search_keymap_targets(keymap='default', filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: +def search_keymap_targets(targets: List[Tuple[str, str]] = [('all', 'default')], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: """Search for build targets matching the supplied criteria. """ - return list(sorted(_filter_keymap_targets(expand_keymap_targets([('all', keymap)]), filters, print_vals), key=lambda e: (e[0], e[1]))) + return list(sorted(_filter_keymap_targets(expand_keymap_targets(targets), filters, print_vals), key=lambda e: (e[0], e[1]))) def search_make_targets(targets: List[str], filters: List[str] = [], print_vals: List[str] = []) -> List[Tuple[str, str, List[Tuple[str, str]]]]: diff --git a/lib/python/qmk/util.py b/lib/python/qmk/util.py new file mode 100644 index 00000000000..db7debd5788 --- /dev/null +++ b/lib/python/qmk/util.py @@ -0,0 +1,56 @@ +"""Utility functions. +""" +import contextlib +import multiprocessing + +from milc import cli + + +@contextlib.contextmanager +def parallelize(): + """Returns a function that can be used in place of a map() call. + + Attempts to use `mpire`, falling back to `multiprocessing` if it's not + available. If parallelization is not requested, returns the original map() + function. + """ + + # Work out if we've already got a config value for parallel searching + if cli.config.user.parallel_search is None: + parallel_search = True + else: + parallel_search = cli.config.user.parallel_search + + # Non-parallel searches use `map()` + if not parallel_search: + yield map + return + + # Prefer mpire's `WorkerPool` if it's available + with contextlib.suppress(ImportError): + from mpire import WorkerPool + from mpire.utils import make_single_arguments + with WorkerPool() as pool: + + def _worker(func, *args): + # Ensure we don't unpack tuples -- mpire's `WorkerPool` tries to do so normally so we tell it not to. + for r in pool.imap_unordered(func, make_single_arguments(*args, generator=False), progress_bar=True): + yield r + + yield _worker + return + + # Otherwise fall back to multiprocessing's `Pool` + with multiprocessing.Pool() as pool: + yield pool.imap_unordered + + +def parallel_map(*args, **kwargs): + """Effectively runs `map()` but executes it in parallel if necessary. + """ + with parallelize() as map_fn: + # This needs to be enclosed in a `list()` as some implementations return + # a generator function, which means the scope of the pool is closed off + # before the results are returned. Returning a list ensures results are + # materialised before any worker pool is shut down. + return list(map_fn(*args, **kwargs)) From 0e6d47e1e441def99d75f12ac753ac7c565f0102 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sat, 21 Oct 2023 21:31:23 +1100 Subject: [PATCH 02/51] Fixup symbol sizing listing. (#22307) --- builddefs/build_keyboard.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index e93ab97cc13..6ae6bc686b3 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -495,10 +495,10 @@ check-size: top-symbols top-symbols: build echo "###########################################" echo "# Highest flash usage:" - $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' + $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' echo "###########################################" echo "# Highest RAM usage:" - $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' + $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' echo "###########################################" endif From 96c71b9b4c0ffeadc20db89f7d3f257dcb402a12 Mon Sep 17 00:00:00 2001 From: Yonghyuk Choi <42003350+oRE-o@users.noreply.github.com> Date: Tue, 24 Oct 2023 03:09:51 +0900 Subject: [PATCH 03/51] [Keyboard] Add purin (#22306) --- keyboards/purin/info.json | 108 +++++++++++++++++++++++ keyboards/purin/keymaps/default/keymap.c | 31 +++++++ keyboards/purin/keymaps/via/keymap.c | 31 +++++++ keyboards/purin/keymaps/via/rules.mk | 1 + keyboards/purin/readme.md | 28 ++++++ keyboards/purin/rules.mk | 1 + 6 files changed, 200 insertions(+) create mode 100644 keyboards/purin/info.json create mode 100644 keyboards/purin/keymaps/default/keymap.c create mode 100644 keyboards/purin/keymaps/via/keymap.c create mode 100644 keyboards/purin/keymaps/via/rules.mk create mode 100644 keyboards/purin/readme.md create mode 100644 keyboards/purin/rules.mk diff --git a/keyboards/purin/info.json b/keyboards/purin/info.json new file mode 100644 index 00000000000..08a8b06e342 --- /dev/null +++ b/keyboards/purin/info.json @@ -0,0 +1,108 @@ +{ + "manufacturer": "oRE-o", + "keyboard_name": "purin", + "maintainer": "oRE-o", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C7", "C6", "B6", "B5", "B4", "D7", "D6", "D0", "D1", "D2", "B7", "B3", "F4", "F1", "F0"], + "rows": ["F6", "F7", "D4", "D5", "D3"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x6F52" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + + {"matrix": [0, 8], "x": 10.25, "y": 0}, + {"matrix": [0, 9], "x": 11.25, "y": 0}, + {"matrix": [0, 10], "x": 12.25, "y": 0}, + {"matrix": [0, 11], "x": 13.25, "y": 0}, + {"matrix": [0, 12], "x": 14.25, "y": 0}, + {"matrix": [0, 13], "x": 15.25, "y": 0}, + {"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [1, 8], "x": 10.75, "y": 1}, + {"matrix": [1, 9], "x": 11.75, "y": 1}, + {"matrix": [1, 10], "x": 12.75, "y": 1}, + {"matrix": [1, 11], "x": 13.75, "y": 1}, + {"matrix": [1, 12], "x": 14.75, "y": 1}, + {"matrix": [1, 13], "x": 15.75, "y": 1}, + {"matrix": [1, 14], "x": 16.75, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + + {"matrix": [2, 7], "x": 10, "y": 2}, + {"matrix": [2, 8], "x": 11, "y": 2}, + {"matrix": [2, 9], "x": 12, "y": 2}, + {"matrix": [2, 10], "x": 13, "y": 2}, + {"matrix": [2, 11], "x": 14, "y": 2}, + {"matrix": [2, 12], "x": 15, "y": 2}, + {"matrix": [2, 13], "x": 16, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 3.5, "y": 3}, + {"matrix": [3, 2], "x": 4.5, "y": 3}, + {"matrix": [3, 3], "x": 5.5, "y": 3}, + {"matrix": [3, 4], "x": 6.5, "y": 3}, + {"matrix": [3, 5], "x": 7.5, "y": 3}, + + {"matrix": [3, 6], "x": 9.5, "y": 3}, + {"matrix": [3, 7], "x": 10.5, "y": 3}, + {"matrix": [3, 8], "x": 11.5, "y": 3}, + {"matrix": [3, 9], "x": 12.5, "y": 3}, + {"matrix": [3, 10], "x": 13.5, "y": 3}, + {"matrix": [3, 11], "x": 14.5, "y": 3}, + {"matrix": [3, 12], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 17.25, "y": 3}, + + {"matrix": [4, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 4], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 6], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 16.75, "y": 4, "w": 1.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/purin/keymaps/default/keymap.c b/keyboards/purin/keymaps/default/keymap.c new file mode 100644 index 00000000000..f5c2cd7bbfe --- /dev/null +++ b/keyboards/purin/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( // for windows + KC_ESC, 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_HOME, 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_END, KC_RALT, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT( // for mac + KC_ESC, 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_HOME, 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_END, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_SPC, KC_RGUI, KC_RALT + ), + + [2] = LAYOUT( // FN Layer 1 + _______, 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_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, DF(0), DF(1), + KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/purin/keymaps/via/keymap.c b/keyboards/purin/keymaps/via/keymap.c new file mode 100644 index 00000000000..e13eea3c748 --- /dev/null +++ b/keyboards/purin/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( // for windows + KC_ESC, 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_HOME, 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_END, KC_RALT, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT( // for mac + KC_ESC, 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_HOME, 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_END, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_SPC, KC_RGUI, KC_RALT + ), + + [2] = LAYOUT( // FN Layer 1 + _______, 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_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, DF(0), DF(1), + KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/purin/keymaps/via/rules.mk b/keyboards/purin/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/purin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/purin/readme.md b/keyboards/purin/readme.md new file mode 100644 index 00000000000..4b4eb6a1b86 --- /dev/null +++ b/keyboards/purin/readme.md @@ -0,0 +1,28 @@ +# purin + +![purin](https://i.imgur.com/ig8DWEFh.jpg) + +Keyboard developed by oREo! +Project for learning about qmk, Atmega32u4. + +* Keyboard Maintainer: [oRE-o](https://github.com/oRE-o) +* Hardware Supported: Purin PCB by oREo +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make purin:default + +Flashing example for this keyboard: + + make purin: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 diff --git a/keyboards/purin/rules.mk b/keyboards/purin/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/purin/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From d2773c6d67bce73dc3b8bc7922463184304651b1 Mon Sep 17 00:00:00 2001 From: owlab-git <88034417+owlab-git@users.noreply.github.com> Date: Tue, 24 Oct 2023 02:12:27 +0800 Subject: [PATCH 04/51] [Keyboard] Add QK100 (#21782) Co-authored-by: Drashna Jaelre --- keyboards/qwertykeys/qk100/ansi/ansi.c | 197 +++++++++++++ keyboards/qwertykeys/qk100/ansi/config.h | 43 +++ keyboards/qwertykeys/qk100/ansi/halconf.h | 21 ++ keyboards/qwertykeys/qk100/ansi/info.json | 266 ++++++++++++++++++ .../qk100/ansi/keymaps/default/keymap.c | 38 +++ .../qk100/ansi/keymaps/via/keymap.c | 38 +++ .../qk100/ansi/keymaps/via/rules.mk | 2 + keyboards/qwertykeys/qk100/ansi/mcuconf.h | 25 ++ keyboards/qwertykeys/qk100/ansi/readme.md | 21 ++ keyboards/qwertykeys/qk100/ansi/rules.mk | 1 + keyboards/qwertykeys/qk100/info.json | 43 +++ keyboards/qwertykeys/qk100/solder/config.h | 29 ++ keyboards/qwertykeys/qk100/solder/info.json | 114 ++++++++ .../qk100/solder/keymaps/default/keymap.c | 38 +++ .../qk100/solder/keymaps/via/keymap.c | 38 +++ .../qk100/solder/keymaps/via/rules.mk | 2 + keyboards/qwertykeys/qk100/solder/readme.md | 21 ++ keyboards/qwertykeys/qk100/solder/rules.mk | 1 + keyboards/qwertykeys/qk100/solder/solder.c | 37 +++ 19 files changed, 975 insertions(+) create mode 100644 keyboards/qwertykeys/qk100/ansi/ansi.c create mode 100644 keyboards/qwertykeys/qk100/ansi/config.h create mode 100644 keyboards/qwertykeys/qk100/ansi/halconf.h create mode 100644 keyboards/qwertykeys/qk100/ansi/info.json create mode 100644 keyboards/qwertykeys/qk100/ansi/keymaps/default/keymap.c create mode 100644 keyboards/qwertykeys/qk100/ansi/keymaps/via/keymap.c create mode 100644 keyboards/qwertykeys/qk100/ansi/keymaps/via/rules.mk create mode 100644 keyboards/qwertykeys/qk100/ansi/mcuconf.h create mode 100644 keyboards/qwertykeys/qk100/ansi/readme.md create mode 100644 keyboards/qwertykeys/qk100/ansi/rules.mk create mode 100644 keyboards/qwertykeys/qk100/info.json create mode 100644 keyboards/qwertykeys/qk100/solder/config.h create mode 100644 keyboards/qwertykeys/qk100/solder/info.json create mode 100644 keyboards/qwertykeys/qk100/solder/keymaps/default/keymap.c create mode 100644 keyboards/qwertykeys/qk100/solder/keymaps/via/keymap.c create mode 100644 keyboards/qwertykeys/qk100/solder/keymaps/via/rules.mk create mode 100644 keyboards/qwertykeys/qk100/solder/readme.md create mode 100644 keyboards/qwertykeys/qk100/solder/rules.mk create mode 100644 keyboards/qwertykeys/qk100/solder/solder.c diff --git a/keyboards/qwertykeys/qk100/ansi/ansi.c b/keyboards/qwertykeys/qk100/ansi/ansi.c new file mode 100644 index 00000000000..87e1b99e1b7 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/ansi.c @@ -0,0 +1,197 @@ +/* +Copyright 2023 Qwertykeys + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = { + {0, CS2_SW1, CS3_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/ + {0, CS5_SW1, CS6_SW1, CS4_SW1}, /* RGB1-F1 */ + {0, CS8_SW1, CS9_SW1, CS7_SW1}, /* RGB2-F2 */ + {0, CS11_SW1, CS12_SW1, CS10_SW1}, /* RGB3-F3 */ + {0, CS14_SW1, CS15_SW1, CS13_SW1}, /* RGB4-F4 */ + {0, CS17_SW1, CS18_SW1, CS16_SW1}, /* RGB5-F5 */ + {0, CS20_SW1, CS21_SW1, CS19_SW1}, /* RGB6-F6 */ + {0, CS23_SW1, CS24_SW1, CS22_SW1}, /* RGB7-F7 */ + {0, CS26_SW1, CS27_SW1, CS25_SW1}, /* RGB8-F8 */ + {0, CS29_SW1, CS30_SW1, CS28_SW1}, /* RGB9-F9 */ + {0, CS32_SW1, CS33_SW1, CS31_SW1}, /* RGB10-F10 */ + {0, CS35_SW1, CS36_SW1, CS34_SW1}, /* RGB11-F11 */ + {0, CS38_SW1, CS39_SW1, CS37_SW1}, /* RGB12-F12 */ + {0, CS29_SW7, CS30_SW7, CS28_SW7}, /* RGB13-Delete */ + {0, CS32_SW7, CS33_SW7, CS31_SW7}, /* RGB14-End */ + {0, CS35_SW7, CS36_SW7, CS34_SW7}, /* RGB15-Insert */ + {0, CS38_SW7, CS39_SW7, CS37_SW7}, /* RGB16-Home */ + {0, CS2_SW2, CS3_SW2, CS1_SW2}, /* RGB17-~ ----ROW1*/ + {0, CS5_SW2, CS6_SW2, CS4_SW2}, /* RGB18-1 */ + {0, CS8_SW2, CS9_SW2, CS7_SW2}, /* RGB19-2 */ + {0, CS11_SW2, CS12_SW2, CS10_SW2}, /* RGB20-3 */ + {0, CS14_SW2, CS15_SW2, CS13_SW2}, /* RGB21-4 */ + {0, CS17_SW2, CS18_SW2, CS16_SW2}, /* RGB22-5 */ + {0, CS20_SW2, CS21_SW2, CS19_SW2}, /* RGB23-6 */ + {0, CS23_SW2, CS24_SW2, CS22_SW2}, /* RGB24-7 */ + {0, CS26_SW2, CS27_SW2, CS25_SW2}, /* RGB25-8 */ + {0, CS29_SW2, CS30_SW2, CS28_SW2}, /* RGB26-9 */ + {0, CS32_SW2, CS33_SW2, CS31_SW2}, /* RGB27-0 */ + {0, CS35_SW2, CS36_SW2, CS34_SW2}, /* RGB28--- */ + {0, CS38_SW2, CS39_SW2, CS37_SW2}, /* RGB29-+= */ + {0, CS26_SW7, CS27_SW7, CS25_SW7}, /* RGB30-BS */ + {0, CS29_SW8, CS30_SW8, CS28_SW8}, /* RGB31-Num Lock */ + {0, CS32_SW8, CS33_SW8, CS31_SW8}, /* RGB32- / */ + {0, CS35_SW8, CS36_SW8, CS34_SW8}, /* RGB33- * */ + {0, CS38_SW8, CS39_SW8, CS37_SW8}, /* RGB34- - */ + {0, CS2_SW3, CS3_SW3, CS1_SW3}, /* RGB35-TAB ----ROW2*/ + {0, CS5_SW3, CS6_SW3, CS4_SW3}, /* RGB36-Q */ + {0, CS8_SW3, CS9_SW3, CS7_SW3}, /* RGB37-W */ + {0, CS11_SW3, CS12_SW3, CS10_SW3}, /* RGB38-E */ + {0, CS14_SW3, CS15_SW3, CS13_SW3}, /* RGB39-R */ + {0, CS17_SW3, CS18_SW3, CS16_SW3}, /* RGB40-T */ + {0, CS20_SW3, CS21_SW3, CS19_SW3}, /* RGB41-Y */ + {0, CS23_SW3, CS24_SW3, CS22_SW3}, /* RGB42-U */ + {0, CS26_SW3, CS27_SW3, CS25_SW3}, /* RGB43-I */ + {0, CS29_SW3, CS30_SW3, CS28_SW3}, /* RGB44-O */ + {0, CS32_SW3, CS33_SW3, CS31_SW3}, /* RGB45-P */ + {0, CS35_SW3, CS36_SW3, CS34_SW3}, /* RGB46-[ */ + {0, CS38_SW3, CS39_SW3, CS37_SW3}, /* RGB47-] */ + {0, CS26_SW9, CS27_SW9, CS25_SW9}, /* RGB48-\ */ + {0, CS29_SW9, CS30_SW9, CS28_SW9}, /* RGB49-page up */ + {0, CS32_SW9, CS33_SW9, CS31_SW9}, /* RGB50-7 */ + {0, CS35_SW9, CS36_SW9, CS34_SW9}, /* RGB51-8 */ + {0, CS38_SW9, CS39_SW9, CS37_SW9}, /* RGB52-9 */ + {0, CS2_SW4, CS3_SW4, CS1_SW4}, /* RGB53-CAPS---ROW3*/ + {0, CS5_SW4, CS6_SW4, CS4_SW4}, /* RGB54-A-- */ + {0, CS8_SW4, CS9_SW4, CS7_SW4}, /* RGB55-S-- */ + {0, CS11_SW4, CS12_SW4, CS10_SW4}, /* RGB56-D */ + {0, CS14_SW4, CS15_SW4, CS13_SW4}, /* RGB57-F */ + {0, CS17_SW4, CS18_SW4, CS16_SW4}, /* RGB58-G */ + {0, CS20_SW4, CS21_SW4, CS19_SW4}, /* RGB59-H */ + {0, CS23_SW4, CS24_SW4, CS22_SW4}, /* RGB60-J */ + {0, CS26_SW4, CS27_SW4, CS25_SW4}, /* RGB61-K */ + {0, CS29_SW4, CS30_SW4, CS28_SW4}, /* RGB62-L */ + {0, CS32_SW4, CS33_SW4, CS31_SW4}, /* RGB63-;: */ + {0, CS35_SW4, CS36_SW4, CS34_SW4}, /* RGB64-'" */ + {0, CS38_SW4, CS39_SW4, CS37_SW4}, /* RGB65-ENTER */ + {0, CS11_SW7, CS12_SW7, CS10_SW7}, /* RGB66-Page Down */ + {0, CS14_SW7, CS15_SW7, CS13_SW7}, /* RGB67-4 */ + {0, CS17_SW7, CS18_SW7, CS16_SW7}, /* RGB68-5 */ + {0, CS20_SW7, CS21_SW7, CS19_SW7}, /* RGB69-6 */ + {0, CS23_SW7, CS24_SW7, CS22_SW7}, /* RGB70-+ */ + {0, CS2_SW5, CS3_SW5, CS1_SW5}, /* RGB71-LSF --ROW4*/ + {0, CS5_SW5, CS6_SW5, CS4_SW5}, /* RGB72-Z */ + {0, CS8_SW5, CS9_SW5, CS7_SW5}, /* RGB73-X */ + {0, CS11_SW5, CS12_SW5, CS10_SW5}, /* RGB74-C */ + {0, CS14_SW5, CS15_SW5, CS13_SW5}, /* RGB75-V */ + {0, CS17_SW5, CS18_SW5, CS16_SW5}, /* RGB76-B */ + {0, CS20_SW5, CS21_SW5, CS19_SW5}, /* RGB77-N */ + {0, CS23_SW5, CS24_SW5, CS22_SW5}, /* RGB78-M */ + {0, CS26_SW5, CS27_SW5, CS25_SW5}, /* RGB79-,< */ + {0, CS29_SW5, CS30_SW5, CS28_SW5}, /* RGB80->. */ + {0, CS32_SW5, CS33_SW5, CS31_SW5}, /* RGB81-?/ */ + {0, CS35_SW5, CS36_SW5, CS34_SW5}, /* RGB82-RSF */ + {0, CS38_SW5, CS39_SW5, CS37_SW5}, /* RGB83-UP */ + {0, CS14_SW8, CS15_SW8, CS13_SW8}, /* RGB84-1*/ + {0, CS17_SW8, CS18_SW8, CS16_SW8}, /* RGB85-2 */ + {0, CS20_SW8, CS21_SW8, CS19_SW8}, /* RGB86-3 */ + {0, CS23_SW8, CS24_SW8, CS22_SW8}, /* RGB87-Enter */ + {0, CS2_SW6, CS3_SW6, CS1_SW6}, /* RGB88-lct-- ROW5*/ + {0, CS5_SW6, CS6_SW6, CS4_SW6}, /* RGB89-lwin */ + {0, CS8_SW6, CS9_SW6, CS7_SW6}, /* RGB90-lalt */ + {0, CS11_SW6, CS12_SW6, CS10_SW6}, /* RGB91-sp0 */ + {0, CS17_SW6, CS18_SW6, CS16_SW6}, /* RGB92-sp */ + {0, CS26_SW6, CS27_SW6, CS25_SW6}, /* RGB93-sp2 */ + {0, CS29_SW6, CS30_SW6, CS28_SW6}, /* RGB94-ralt */ + {0, CS32_SW6, CS33_SW6, CS31_SW6}, /* RGB95- fn */ + {0, CS35_SW6, CS36_SW6, CS34_SW6}, /* RGB96-left */ + {0, CS38_SW6, CS39_SW6, CS37_SW6}, /* RGB97-down */ + {0, CS11_SW9, CS12_SW9, CS10_SW9}, /* RGB98-right */ + {0, CS14_SW9, CS15_SW9, CS13_SW9}, /* RGB99- 0 */ + {0, CS20_SW9, CS21_SW9, CS19_SW9} /* RGB100- . */ +}; + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (record->event.pressed) { + switch (keycode) { + case QK_KB_0: + rgb_matrix_toggle(); + break; + + case QK_KB_1: + rgb_matrix_step(); + break; + + case QK_KB_2: + rgb_matrix_step_reverse(); + break; + + case QK_KB_3: + rgb_matrix_increase_hue(); // Increase the hue for effect range LEDs + break; + + case QK_KB_4: + rgb_matrix_decrease_hue(); // Decrease the hue for effect range LEDs + break; + + case QK_KB_5: + rgb_matrix_increase_sat(); // Increase the saturation for effect range LEDs + break; + + case QK_KB_6: + rgb_matrix_decrease_sat(); // Decrease the saturation for effect range LEDs + break; + + case QK_KB_7: + rgb_matrix_increase_val(); // Increase the value for effect range LEDs + break; + + case QK_KB_8: + rgb_matrix_decrease_val(); // Decrease the value for effect range LEDs + break; + + case QK_KB_9: + rgb_matrix_increase_speed(); // Increase the speed of the animations + break; + + case QK_KB_10: + rgb_matrix_decrease_speed(); // Decrease the speed of the animations + break; + + default: + break; + } + } + return process_record_user(keycode, record); +} +#endif + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_WHITE}); + +const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 3, HSV_WHITE}); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_capslock_layer, my_numlock_layer); + +void keyboard_post_init_kb(void) { + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + rgblight_set_layer_state(0, led_state.caps_lock); + rgblight_set_layer_state(1, !led_state.num_lock); + } + return res; +} \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/config.h b/keyboards/qwertykeys/qk100/ansi/config.h new file mode 100644 index 00000000000..6d0401a3dc8 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/config.h @@ -0,0 +1,43 @@ +/* +Copyright 2023 Qwertykeys + +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 RGBLIGHT_LAYERS +# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +# define RGBLIGHT_LAYERS_RETAIN_VAL +# define RGBLIGHT_DEFAULT_VAL 10 +# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 5 +# define RGBLIGHT_SLEEP +/*== customize breathing effect ==*/ +# define RGBLIGHT_BREATHE_TABLE_SIZE 128 +# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.0 +# define RGBLIGHT_EFFECT_BREATHE_MAX 60 + +/* RGB matrix */ +#define I2C1_CLOCK_SPEED 400000 +#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 +# define RGB_MATRIX_DISABLE_KEYCODES +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +# define RGB_MATRIX_STARTUP_VAL 128 +# define DRIVER_ADDR_1 0b0110000 +# define DRIVER_COUNT 1 +# define RGB_MATRIX_LED_COUNT 101 \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/halconf.h b/keyboards/qwertykeys/qk100/ansi/halconf.h new file mode 100644 index 00000000000..0deaa06aa2e --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Qwertykeys + * + * 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 \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/info.json b/keyboards/qwertykeys/qk100/ansi/info.json new file mode 100644 index 00000000000..e9cd6ca3f20 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/info.json @@ -0,0 +1,266 @@ +{ + "keyboard_name": "QK100 ANSI", + "usb": { + "pid": "0x3030", + "device_version": "0.0.1" + }, + "features": { + "rgb_matrix": true + }, + "rgb_matrix": { + "driver": "is31fl3741", + "max_brightness": 200, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 18, "y": 0, "flags": 1}, + {"matrix": [0, 2], "x": 30, "y": 0, "flags": 1}, + {"matrix": [0, 3], "x": 42, "y": 0, "flags": 1}, + {"matrix": [0, 4], "x": 54, "y": 0, "flags": 1}, + {"matrix": [0, 5], "x": 72, "y": 0, "flags": 1}, + {"matrix": [0, 6], "x": 84, "y": 0, "flags": 1}, + {"matrix": [0, 7], "x": 96, "y": 0, "flags": 1}, + {"matrix": [0, 8], "x": 108, "y": 0, "flags": 1}, + {"matrix": [0, 9], "x": 126, "y": 0, "flags": 1}, + {"matrix": [0, 10], "x": 138, "y": 0, "flags": 1}, + {"matrix": [0, 11], "x": 150, "y": 0, "flags": 1}, + {"matrix": [0, 12], "x": 162, "y": 0, "flags": 1}, + {"matrix": [0, 13], "x": 188, "y": 0, "flags": 1}, + {"matrix": [0, 14], "x": 200, "y": 0, "flags": 1}, + {"matrix": [0, 15], "x": 212, "y": 0, "flags": 1}, + {"matrix": [0, 16], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 13, "flags": 4}, + {"matrix": [1, 1], "x": 12, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 24, "y": 13, "flags": 4}, + {"matrix": [1, 3], "x": 36, "y": 13, "flags": 4}, + {"matrix": [1, 4], "x": 48, "y": 13, "flags": 4}, + {"matrix": [1, 5], "x": 60, "y": 13, "flags": 4}, + {"matrix": [1, 6], "x": 72, "y": 13, "flags": 4}, + {"matrix": [1, 7], "x": 84, "y": 13, "flags": 4}, + {"matrix": [1, 8], "x": 96, "y": 13, "flags": 4}, + {"matrix": [1, 9], "x": 108, "y": 13, "flags": 4}, + {"matrix": [1, 10], "x": 120, "y": 13, "flags": 4}, + {"matrix": [1, 11], "x": 132, "y": 13, "flags": 4}, + {"matrix": [1, 12], "x": 144, "y": 13, "flags": 4}, + {"matrix": [1, 13], "x": 156, "y": 13, "flags": 1}, + {"matrix": [1, 15], "x": 188, "y": 13, "flags": 1}, + {"matrix": [1, 16], "x": 200, "y": 13, "flags": 1}, + {"matrix": [1, 17], "x": 212, "y": 13, "flags": 1}, + {"matrix": [1, 18], "x": 224, "y": 13, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 26, "flags": 1}, + {"matrix": [2, 1], "x": 18, "y": 26, "flags": 4}, + {"matrix": [2, 2], "x": 30, "y": 26, "flags": 4}, + {"matrix": [2, 3], "x": 42, "y": 26, "flags": 4}, + {"matrix": [2, 4], "x": 54, "y": 26, "flags": 4}, + {"matrix": [2, 5], "x": 66, "y": 26, "flags": 4}, + {"matrix": [2, 6], "x": 78, "y": 26, "flags": 4}, + {"matrix": [2, 7], "x": 90, "y": 26, "flags": 4}, + {"matrix": [2, 8], "x": 102, "y": 26, "flags": 4}, + {"matrix": [2, 9], "x": 114, "y": 26, "flags": 4}, + {"matrix": [2, 10], "x": 126, "y": 26, "flags": 4}, + {"matrix": [2, 11], "x": 138, "y": 26, "flags": 4}, + {"matrix": [2, 12], "x": 150, "y": 26, "flags": 4}, + {"matrix": [2, 13], "x": 162, "y": 26, "flags": 4}, + {"matrix": [2, 14], "x": 176, "y": 26, "flags": 1}, + {"matrix": [2, 15], "x": 188, "y": 26, "flags": 4}, + {"matrix": [2, 16], "x": 200, "y": 26, "flags": 4}, + {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 39, "flags": 1}, + {"matrix": [3, 1], "x": 20, "y": 39, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 39, "flags": 4}, + {"matrix": [3, 3], "x": 44, "y": 39, "flags": 4}, + {"matrix": [3, 4], "x": 56, "y": 39, "flags": 4}, + {"matrix": [3, 5], "x": 68, "y": 39, "flags": 4}, + {"matrix": [3, 6], "x": 80, "y": 39, "flags": 4}, + {"matrix": [3, 7], "x": 92, "y": 39, "flags": 4}, + {"matrix": [3, 8], "x": 104, "y": 39, "flags": 4}, + {"matrix": [3, 9], "x": 116, "y": 39, "flags": 4}, + {"matrix": [3, 10], "x": 128, "y": 39, "flags": 4}, + {"matrix": [3, 11], "x": 140, "y": 39, "flags": 4}, + {"matrix": [3, 13], "x": 158, "y": 39, "flags": 1}, + {"matrix": [3, 14], "x": 176, "y": 39, "flags": 1}, + {"matrix": [3, 15], "x": 188, "y": 39, "flags": 4}, + {"matrix": [3, 16], "x": 200, "y": 39, "flags": 4}, + {"matrix": [3, 17], "x": 212, "y": 39, "flags": 4}, + {"matrix": [3, 18], "x": 224, "y": 39, "flags": 1}, + {"matrix": [4, 0], "x": 0, "y": 52, "flags": 1}, + {"matrix": [4, 1], "x": 26, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 38, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 50, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 62, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 74, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 86, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 98, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 110, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 122, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 134, "y": 52, "flags": 4}, + {"matrix": [4, 11], "x": 150, "y": 52, "flags": 1}, + {"matrix": [4, 13], "x": 170, "y": 52, "flags": 1}, + {"matrix": [4, 15], "x": 188, "y": 52, "flags": 4}, + {"matrix": [4, 16], "x": 200, "y": 52, "flags": 4}, + {"matrix": [4, 17], "x": 212, "y": 52, "flags": 4}, + {"matrix": [4, 18], "x": 224, "y": 52, "flags": 1}, + {"matrix": [5, 0], "x": 0, "y": 52, "flags": 1}, + {"matrix": [5, 1], "x": 14, "y": 52, "flags": 1}, + {"matrix": [5, 2], "x": 28, "y": 52, "flags": 1}, + {"matrix": [5, 5], "x": 74, "y": 52, "flags": 4}, + {"matrix": [5, 9], "x": 122, "y": 52, "flags": 1}, + {"matrix": [5, 10], "x": 148, "y": 52, "flags": 1}, + {"matrix": [5, 12], "x": 158, "y": 52, "flags": 1}, + {"matrix": [5, 13], "x": 170, "y": 52, "flags": 1}, + {"matrix": [5, 14], "x": 182, "y": 52, "flags": 1}, + {"matrix": [5, 15], "x": 196, "y": 52, "flags": 4}, + {"matrix": [5, 17], "x": 212, "y": 52, "flags": 4} + ], + "animations": { + "solid_color": true, + "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, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "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_fractal": true, + "pixel_flow": true, + "pixel_rain": 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, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x":0, "y":0}, + {"matrix": [0, 1], "x":2, "y":0}, + {"matrix": [0, 2], "x":3, "y":0}, + {"matrix": [0, 3], "x":4, "y":0}, + {"matrix": [0, 4], "x":5, "y":0}, + {"matrix": [0, 5], "x":6.5, "y":0}, + {"matrix": [0, 6], "x":7.5, "y":0}, + {"matrix": [0, 7], "x":8.5, "y":0}, + {"matrix": [0, 8], "x":9.5, "y":0}, + {"matrix": [0, 9], "x":11, "y":0}, + {"matrix": [0, 10], "x":12, "y":0}, + {"matrix": [0, 11], "x":13, "y":0}, + {"matrix": [0, 12], "x":14, "y":0}, + {"matrix": [0, 15], "x":16.5, "y":0}, + {"matrix": [0, 16], "x":17.5, "y":0}, + {"matrix": [0, 17], "x":18.5, "y":0}, + {"matrix": [0, 18], "x":19.5, "y":0}, + {"matrix": [1, 0], "x":0, "y":1.25}, + {"matrix": [1, 1], "x":1, "y":1.25}, + {"matrix": [1, 2], "x":2, "y":1.25}, + {"matrix": [1, 3], "x":3, "y":1.25}, + {"matrix": [1, 4], "x":4, "y":1.25}, + {"matrix": [1, 5], "x":5, "y":1.25}, + {"matrix": [1, 6], "x":6, "y":1.25}, + {"matrix": [1, 7], "x":7, "y":1.25}, + {"matrix": [1, 8], "x":8, "y":1.25}, + {"matrix": [1, 9], "x":9, "y":1.25}, + {"matrix": [1, 10], "x":10, "y":1.25}, + {"matrix": [1, 11], "x":11, "y":1.25}, + {"matrix": [1, 12], "x":12, "y":1.25}, + {"matrix": [1, 13], "x":13, "y":1.25, "w":2}, + {"matrix": [1, 15], "x":16.5, "y":1.25}, + {"matrix": [1, 16], "x":17.5, "y":1.25}, + {"matrix": [1, 17], "x":18.5, "y":1.25}, + {"matrix": [1, 18], "x":19.5, "y":1.25}, + {"matrix": [2, 0], "x":0, "y":2.25, "w":1.5}, + {"matrix": [2, 1], "x":1.5, "y":2.25}, + {"matrix": [2, 2], "x":2.5, "y":2.25}, + {"matrix": [2, 3], "x":3.5, "y":2.25}, + {"matrix": [2, 4], "x":4.5, "y":2.25}, + {"matrix": [2, 5], "x":5.5, "y":2.25}, + {"matrix": [2, 6], "x":6.5, "y":2.25}, + {"matrix": [2, 7], "x":7.5, "y":2.25}, + {"matrix": [2, 8], "x":8.5, "y":2.25}, + {"matrix": [2, 9], "x":9.5, "y":2.25}, + {"matrix": [2, 10], "x":10.5, "y":2.25}, + {"matrix": [2, 11], "x":11.5, "y":2.25}, + {"matrix": [2, 12], "x":12.5, "y":2.25}, + {"matrix": [2, 13], "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2, 14], "x":15.25, "y":2.25}, + {"matrix": [2, 15], "x":16.5, "y":2.25}, + {"matrix": [2, 16], "x":17.5, "y":2.25}, + {"matrix": [2, 17], "x":18.5, "y":2.25}, + {"matrix": [3, 0], "x":0, "y":3.25, "w":1.75}, + {"matrix": [3, 1], "x":1.75, "y":3.25}, + {"matrix": [3, 2], "x":2.75, "y":3.25}, + {"matrix": [3, 3], "x":3.75, "y":3.25}, + {"matrix": [3, 4], "x":4.75, "y":3.25}, + {"matrix": [3, 5], "x":5.75, "y":3.25}, + {"matrix": [3, 6], "x":6.75, "y":3.25}, + {"matrix": [3, 7], "x":7.75, "y":3.25}, + {"matrix": [3, 8], "x":8.75, "y":3.25}, + {"matrix": [3, 9], "x":9.75, "y":3.25}, + {"matrix": [3, 10], "x":10.75, "y":3.25}, + {"matrix": [3, 11], "x":11.75, "y":3.25}, + {"matrix": [3, 13], "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3, 14], "x":15.25, "y":3.25}, + {"matrix": [3, 15], "x":16.5, "y":3.25}, + {"matrix": [3, 16], "x":17.5, "y":3.25}, + {"matrix": [3, 17], "x":18.5, "y":3.25}, + {"matrix": [3, 18], "x":19.5, "y":2.25, "h":2}, + {"matrix": [4, 0], "x":0, "y":4.25, "w":2.25}, + {"matrix": [4, 1], "x":2.25, "y":4.25}, + {"matrix": [4, 2], "x":3.25, "y":4.25}, + {"matrix": [4, 3], "x":4.25, "y":4.25}, + {"matrix": [4, 4], "x":5.25, "y":4.25}, + {"matrix": [4, 5], "x":6.25, "y":4.25}, + {"matrix": [4, 6], "x":7.25, "y":4.25}, + {"matrix": [4, 7], "x":8.25, "y":4.25}, + {"matrix": [4, 8], "x":9.25, "y":4.25}, + {"matrix": [4, 9], "x":10.25, "y":4.25}, + {"matrix": [4, 10], "x":11.25, "y":4.25}, + {"matrix": [4, 11], "x":12.25, "y":4.25, "w":1.75}, + {"matrix": [4, 13], "x":14.25, "y":4.5}, + {"matrix": [4, 15], "x":16.5, "y":4.25}, + {"matrix": [4, 16], "x":17.5, "y":4.25}, + {"matrix": [4, 17], "x":18.5, "y":4.25}, + {"matrix": [4, 18], "x":19.5, "y":4.25, "h":2}, + {"matrix": [5, 0], "x":0, "y":5.25, "w":1.25}, + {"matrix": [5, 1], "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5, 2], "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5, 5], "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5, 9], "x":10, "y":5.25, "w":1.5}, + {"matrix": [5, 10], "x":11.5, "y":5.25, "w":1.5}, + {"matrix": [5, 12], "x":13.25, "y":5.5}, + {"matrix": [5, 13], "x":14.25, "y":5.5}, + {"matrix": [5, 14], "x":15.25, "y":5.5}, + {"matrix": [5, 15], "x":16.5, "y":5.25, "w":2}, + {"matrix": [5, 17], "x":18.5, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/keymaps/default/keymap.c b/keyboards/qwertykeys/qk100/ansi/keymaps/default/keymap.c new file mode 100644 index 00000000000..f081299d50e --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2023 Qwertykeys + +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( + 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_DEL, KC_END, KC_INS, KC_HOME, + 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_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_PGUP, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_P0, KC_PDOT + ), + [1] = LAYOUT( + QK_KB_0, QK_KB_1, QK_KB_2, QK_KB_3, QK_KB_4, QK_KB_5, QK_KB_6, QK_KB_7, QK_KB_8, QK_KB_9, QK_KB_10,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/keymaps/via/keymap.c b/keyboards/qwertykeys/qk100/ansi/keymaps/via/keymap.c new file mode 100644 index 00000000000..f081299d50e --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2023 Qwertykeys + +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( + 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_DEL, KC_END, KC_INS, KC_HOME, + 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_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_PGUP, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_P0, KC_PDOT + ), + [1] = LAYOUT( + QK_KB_0, QK_KB_1, QK_KB_2, QK_KB_3, QK_KB_4, QK_KB_5, QK_KB_6, QK_KB_7, QK_KB_8, QK_KB_9, QK_KB_10,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/keymaps/via/rules.mk b/keyboards/qwertykeys/qk100/ansi/keymaps/via/rules.mk new file mode 100644 index 00000000000..43061db1dd4 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/mcuconf.h b/keyboards/qwertykeys/qk100/ansi/mcuconf.h new file mode 100644 index 00000000000..a8228a149f1 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2023 Qwertykeys + * + * 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 + +/* + * I2C driver system settings. + */ +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/ansi/readme.md b/keyboards/qwertykeys/qk100/ansi/readme.md new file mode 100644 index 00000000000..d3360b0420b --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/readme.md @@ -0,0 +1,21 @@ +# qk100 - ANSI PCB + +![qk100](https://i.imgur.com/im0iArYh.jpg) + +A 100% made by Qwertykeys. + +* Keyboard Maintainer: [Qwertykeys](https://github.com/owlab-git) +* Hardware Supported: qk100 ANSI PCB +* Hardware Availability: Ended groupbuy: https://www.zfrontier.com/app/flow/qRwKr7mW1oWy + +Make example for this keyboard (after setting up your build environment): + + make qwertykeys/qk100/ansi:default + +Flashing example for this keyboard: + + make qwertykeys/qk100/ansi:default:flash + +**Bootloader:** Press the button B on PCB while plugging in the board. + +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 diff --git a/keyboards/qwertykeys/qk100/ansi/rules.mk b/keyboards/qwertykeys/qk100/ansi/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/qwertykeys/qk100/ansi/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/info.json b/keyboards/qwertykeys/qk100/info.json new file mode 100644 index 00000000000..c8498f3eafc --- /dev/null +++ b/keyboards/qwertykeys/qk100/info.json @@ -0,0 +1,43 @@ +{ + "manufacturer": "Qwertykeys", + "url": "", + "maintainer": "Qwertykeys", + "usb": { + "vid": "0x4F53" + }, + "matrix_pins": { + "cols": ["A7", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A15", "B4", "B5", "B8", "B9", "C13" ], + "rows": ["A1", "A2", "A3", "A5", "A4", "A6" ] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgblight": true, + "nkro": true + }, + "processor": "STM32F103", + "bootloader": "stm32duino", + "ws2812": { + "pin": "B3" + }, + "rgblight": { + "animations": { + "breathing": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true + }, + "brightness_steps": 10, + "saturation_steps": 8, + "led_count": 6, + "max_brightness": 120 + + }, + "dynamic_keymap": { + "layer_count": 2 + } +} \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/config.h b/keyboards/qwertykeys/qk100/solder/config.h new file mode 100644 index 00000000000..714f01a1daa --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2023 Qwertykeys + +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 RGBLIGHT_LAYERS +# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +# define RGBLIGHT_LAYERS_RETAIN_VAL +# define RGBLIGHT_DEFAULT_VAL 10 +# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 5 +# define RGBLIGHT_SLEEP +/*== customize breathing effect ==*/ +# define RGBLIGHT_BREATHE_TABLE_SIZE 128 +# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.0 +# define RGBLIGHT_EFFECT_BREATHE_MAX 60 \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/info.json b/keyboards/qwertykeys/qk100/solder/info.json new file mode 100644 index 00000000000..64f8945b7fd --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/info.json @@ -0,0 +1,114 @@ +{ + "keyboard_name": "qk100 Solder", + "usb": { + "pid": "0x3053", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x":0, "y":0}, + {"matrix": [0, 1], "x":2, "y":0}, + {"matrix": [0, 2], "x":3, "y":0}, + {"matrix": [0, 3], "x":4, "y":0}, + {"matrix": [0, 4], "x":5, "y":0}, + {"matrix": [0, 5], "x":6.5, "y":0}, + {"matrix": [0, 6], "x":7.5, "y":0}, + {"matrix": [0, 7], "x":8.5, "y":0}, + {"matrix": [0, 8], "x":9.5, "y":0}, + {"matrix": [0, 9], "x":11, "y":0}, + {"matrix": [0, 10], "x":12, "y":0}, + {"matrix": [0, 11], "x":13, "y":0}, + {"matrix": [0, 12], "x":14, "y":0}, + {"matrix": [0, 15], "x":16.5, "y":0}, + {"matrix": [0, 16], "x":17.5, "y":0}, + {"matrix": [0, 17], "x":18.5, "y":0}, + {"matrix": [0, 18], "x":19.5, "y":0}, + {"matrix": [1, 0], "x":0, "y":1.25}, + {"matrix": [1, 1], "x":1, "y":1.25}, + {"matrix": [1, 2], "x":2, "y":1.25}, + {"matrix": [1, 3], "x":3, "y":1.25}, + {"matrix": [1, 4], "x":4, "y":1.25}, + {"matrix": [1, 5], "x":5, "y":1.25}, + {"matrix": [1, 6], "x":6, "y":1.25}, + {"matrix": [1, 7], "x":7, "y":1.25}, + {"matrix": [1, 8], "x":8, "y":1.25}, + {"matrix": [1, 9], "x":9, "y":1.25}, + {"matrix": [1, 10], "x":10, "y":1.25}, + {"matrix": [1, 11], "x":11, "y":1.25}, + {"matrix": [1, 12], "x":12, "y":1.25}, + {"matrix": [2, 13], "x":13, "y":1.25}, + {"matrix": [1, 13], "x":14, "y":1.25}, + {"matrix": [1, 15], "x":16.5, "y":1.25}, + {"matrix": [1, 16], "x":17.5, "y":1.25}, + {"matrix": [1, 17], "x":18.5, "y":1.25}, + {"matrix": [1, 18], "x":19.5, "y":1.25}, + {"matrix": [2, 0], "x":0, "y":2.25, "w":1.5}, + {"matrix": [2, 1], "x":1.5, "y":2.25}, + {"matrix": [2, 2], "x":2.5, "y":2.25}, + {"matrix": [2, 3], "x":3.5, "y":2.25}, + {"matrix": [2, 4], "x":4.5, "y":2.25}, + {"matrix": [2, 5], "x":5.5, "y":2.25}, + {"matrix": [2, 6], "x":6.5, "y":2.25}, + {"matrix": [2, 7], "x":7.5, "y":2.25}, + {"matrix": [2, 8], "x":8.5, "y":2.25}, + {"matrix": [2, 9], "x":9.5, "y":2.25}, + {"matrix": [2, 10], "x":10.5, "y":2.25}, + {"matrix": [2, 11], "x":11.5, "y":2.25}, + {"matrix": [2, 12], "x":12.5, "y":2.25}, + {"matrix": [3, 12], "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2, 14], "x":15.25, "y":2.25}, + {"matrix": [2, 15], "x":16.5, "y":2.25}, + {"matrix": [2, 16], "x":17.5, "y":2.25}, + {"matrix": [2, 17], "x":18.5, "y":2.25}, + {"matrix": [3, 0], "x":0, "y":3.25, "w":1.75}, + {"matrix": [3, 1], "x":1.75, "y":3.25}, + {"matrix": [3, 2], "x":2.75, "y":3.25}, + {"matrix": [3, 3], "x":3.75, "y":3.25}, + {"matrix": [3, 4], "x":4.75, "y":3.25}, + {"matrix": [3, 5], "x":5.75, "y":3.25}, + {"matrix": [3, 6], "x":6.75, "y":3.25}, + {"matrix": [3, 7], "x":7.75, "y":3.25}, + {"matrix": [3, 8], "x":8.75, "y":3.25}, + {"matrix": [3, 9], "x":9.75, "y":3.25}, + {"matrix": [3, 10], "x":10.75, "y":3.25}, + {"matrix": [3, 11], "x":11.75, "y":3.25}, + {"matrix": [3, 13], "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3, 14], "x":15.25, "y":3.25}, + {"matrix": [3, 15], "x":16.5, "y":3.25}, + {"matrix": [3, 16], "x":17.5, "y":3.25}, + {"matrix": [3, 17], "x":18.5, "y":3.25}, + {"matrix": [3, 18], "x":19.5, "y":2.25, "h":2}, + {"matrix": [4, 0], "x":0, "y":4.25, "w":1.25}, + {"matrix": [5, 3], "x":1.25, "y":4.25}, + {"matrix": [4, 1], "x":2.25, "y":4.25}, + {"matrix": [4, 2], "x":3.25, "y":4.25}, + {"matrix": [4, 3], "x":4.25, "y":4.25}, + {"matrix": [4, 4], "x":5.25, "y":4.25}, + {"matrix": [4, 5], "x":6.25, "y":4.25}, + {"matrix": [4, 6], "x":7.25, "y":4.25}, + {"matrix": [4, 7], "x":8.25, "y":4.25}, + {"matrix": [4, 8], "x":9.25, "y":4.25}, + {"matrix": [4, 9], "x":10.25, "y":4.25}, + {"matrix": [4, 10], "x":11.25, "y":4.25}, + {"matrix": [4, 11], "x":12.25, "y":4.25, "w":1.75}, + {"matrix": [4, 13], "x":14.25, "y":4.5}, + {"matrix": [4, 15], "x":16.5, "y":4.25}, + {"matrix": [4, 16], "x":17.5, "y":4.25}, + {"matrix": [4, 17], "x":18.5, "y":4.25}, + {"matrix": [4, 18], "x":19.5, "y":4.25, "h":2}, + {"matrix": [5, 0], "x":0, "y":5.25, "w":1.25}, + {"matrix": [5, 1], "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5, 2], "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5, 5], "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5, 9], "x":10, "y":5.25, "w":1.5}, + {"matrix": [5, 10], "x":11.5, "y":5.25, "w":1.5}, + {"matrix": [5, 12], "x":13.25, "y":5.5}, + {"matrix": [5, 13], "x":14.25, "y":5.5}, + {"matrix": [5, 14], "x":15.25, "y":5.5}, + {"matrix": [5, 15], "x":16.5, "y":5.25, "w":2}, + {"matrix": [5, 17], "x":18.5, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/keymaps/default/keymap.c b/keyboards/qwertykeys/qk100/solder/keymaps/default/keymap.c new file mode 100644 index 00000000000..20d727431cb --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2023 Qwertykeys + +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( + 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_DEL, KC_END, KC_INS, KC_HOME, + 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_BSLS, KC_BSPC, 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_PGUP, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + 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_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_P0, KC_PDOT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/keymaps/via/keymap.c b/keyboards/qwertykeys/qk100/solder/keymaps/via/keymap.c new file mode 100644 index 00000000000..20d727431cb --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2023 Qwertykeys + +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( + 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_DEL, KC_END, KC_INS, KC_HOME, + 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_BSLS, KC_BSPC, 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_PGUP, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + 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_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_P0, KC_PDOT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/keymaps/via/rules.mk b/keyboards/qwertykeys/qk100/solder/keymaps/via/rules.mk new file mode 100644 index 00000000000..43061db1dd4 --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/readme.md b/keyboards/qwertykeys/qk100/solder/readme.md new file mode 100644 index 00000000000..f660fe0d42c --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/readme.md @@ -0,0 +1,21 @@ +# qk100 - Solder PCB + +![qk100](https://i.imgur.com/im0iArYh.jpg) + +A 100% made by Qwertykeys. + +* Keyboard Maintainer: [Qwertykeys](https://github.com/owlab-git) +* Hardware Supported: qk100 Solder PCB +* Hardware Availability: Ended groupbuy: https://www.zfrontier.com/app/flow/qRwKr7mW1oWy + +Make example for this keyboard (after setting up your build environment): + + make qwertykeys/qk100/solder:default + +Flashing example for this keyboard: + + make qwertykeys/qk100/solder:default:flash + +**Bootloader:** Press the button B on PCB while plugging in the board. + +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 diff --git a/keyboards/qwertykeys/qk100/solder/rules.mk b/keyboards/qwertykeys/qk100/solder/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/qwertykeys/qk100/solder/solder.c b/keyboards/qwertykeys/qk100/solder/solder.c new file mode 100644 index 00000000000..8a3e46dab79 --- /dev/null +++ b/keyboards/qwertykeys/qk100/solder/solder.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Qwertykeys + +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 rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_WHITE}); + +const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 3, HSV_WHITE}); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_capslock_layer, my_numlock_layer); + +void keyboard_post_init_kb(void) { + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + rgblight_set_layer_state(0, led_state.caps_lock); + rgblight_set_layer_state(1, !led_state.num_lock); + } + return res; +} \ No newline at end of file From ca4541699915b37cd1f253bbed51854627efd2ce Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:00:16 +0100 Subject: [PATCH 05/51] Remove extra led_matrix_indicators_user call (#22329) --- quantum/led_matrix/led_matrix.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index 1676a60aa35..2ec0ec4b19f 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -389,7 +389,6 @@ void led_matrix_task(void) { void led_matrix_indicators(void) { led_matrix_indicators_kb(); - led_matrix_indicators_user(); } __attribute__((weak)) bool led_matrix_indicators_kb(void) { @@ -415,7 +414,6 @@ void led_matrix_indicators_advanced(effect_params_t *params) { uint8_t max = LED_MATRIX_LED_COUNT; #endif led_matrix_indicators_advanced_kb(min, max); - led_matrix_indicators_advanced_user(min, max); } __attribute__((weak)) bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { From d2892685c52a8a0892b28872cfc43e8f7fa37465 Mon Sep 17 00:00:00 2001 From: Olivia J <65928618+ojthetiny@users.noreply.github.com> Date: Thu, 26 Oct 2023 02:07:00 +0300 Subject: [PATCH 06/51] [Keyboard] Add LGBTKL (#22331) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/lgbtkl/info.json | 111 ++++++++++++++++++++++ keyboards/lgbtkl/keymaps/default/keymap.c | 37 ++++++++ keyboards/lgbtkl/keymaps/via/keymap.c | 38 ++++++++ keyboards/lgbtkl/keymaps/via/rules.mk | 1 + keyboards/lgbtkl/readme.md | 26 +++++ keyboards/lgbtkl/rules.mk | 1 + 6 files changed, 214 insertions(+) create mode 100644 keyboards/lgbtkl/info.json create mode 100644 keyboards/lgbtkl/keymaps/default/keymap.c create mode 100644 keyboards/lgbtkl/keymaps/via/keymap.c create mode 100644 keyboards/lgbtkl/keymaps/via/rules.mk create mode 100644 keyboards/lgbtkl/readme.md create mode 100644 keyboards/lgbtkl/rules.mk diff --git a/keyboards/lgbtkl/info.json b/keyboards/lgbtkl/info.json new file mode 100644 index 00000000000..a3f126e8620 --- /dev/null +++ b/keyboards/lgbtkl/info.json @@ -0,0 +1,111 @@ +{ + "manufacturer": "queertykeys", + "keyboard_name": "lgbtkl", + "maintainer": "ojthetiny", + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "usb": { + "vid": "0x6F6A", + "pid": "0x4C54", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["C10", "A15", "A5", "C1", "C2"], + "cols": ["C8", "C7", "C6", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "C5", "C4", "A7", "A6", "C3", "C14", "C13"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "x": 5.25, "y": 0 }, + { "matrix": [0, 6], "x": 6.25, "y": 0 }, + { "matrix": [0, 7], "x": 7.25, "y": 0 }, + { "matrix": [0, 8], "x": 8.25, "y": 0 }, + { "matrix": [0, 9], "x": 9.25, "y": 0 }, + { "matrix": [0, 10], "x": 10.25, "y": 0 }, + { "matrix": [0, 11], "x": 11.25, "y": 0 }, + { "matrix": [0, 12], "x": 12.25, "y": 0 }, + { "matrix": [0, 13], "x": 13.25, "y": 0 }, + { "matrix": [0, 14], "x": 14.25, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [0, 16], "x": 16.5, "y": 0 }, + { "matrix": [0, 17], "x": 17.5, "y": 0 }, + { "matrix": [0, 18], "x": 18.5, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "w": 1.5, "x": 1.25, "y": 1 }, + { "matrix": [1, 2], "x": 2.75, "y": 1 }, + { "matrix": [1, 3], "x": 3.75, "y": 1 }, + { "matrix": [1, 4], "x": 4.75, "y": 1 }, + { "matrix": [1, 5], "x": 5.75, "y": 1 }, + { "matrix": [1, 6], "x": 6.75, "y": 1 }, + { "matrix": [1, 7], "x": 7.75, "y": 1 }, + { "matrix": [1, 8], "x": 8.75, "y": 1 }, + { "matrix": [1, 9], "x": 9.75, "y": 1 }, + { "matrix": [1, 10], "x": 10.75, "y": 1 }, + { "matrix": [1, 11], "x": 11.75, "y": 1 }, + { "matrix": [1, 12], "x": 12.75, "y": 1 }, + { "matrix": [1, 13], "x": 13.75, "y": 1 }, + { "matrix": [1, 15], "w": 1.5, "x": 14.75, "y": 1 }, + { "matrix": [1, 16], "x": 16.5, "y": 1 }, + { "matrix": [1, 17], "x": 17.5, "y": 1 }, + { "matrix": [1, 18], "x": 18.5, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "matrix": [2, 2], "x": 3, "y": 2 }, + { "matrix": [2, 3], "x": 4, "y": 2 }, + { "matrix": [2, 4], "x": 5, "y": 2 }, + { "matrix": [2, 5], "x": 6, "y": 2 }, + { "matrix": [2, 6], "x": 7, "y": 2 }, + { "matrix": [2, 7], "x": 8, "y": 2 }, + { "matrix": [2, 8], "x": 9, "y": 2 }, + { "matrix": [2, 9], "x": 10, "y": 2 }, + { "matrix": [2, 10], "x": 11, "y": 2 }, + { "matrix": [2, 11], "x": 12, "y": 2 }, + { "matrix": [2, 12], "x": 13, "y": 2 }, + { "matrix": [2, 14], "w": 2.25, "x": 14, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "w": 2.25, "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 3.5, "y": 3 }, + { "matrix": [3, 3], "x": 4.5, "y": 3 }, + { "matrix": [3, 4], "x": 5.5, "y": 3 }, + { "matrix": [3, 5], "x": 6.5, "y": 3 }, + { "matrix": [3, 6], "x": 7.5, "y": 3 }, + { "matrix": [3, 7], "x": 8.5, "y": 3 }, + { "matrix": [3, 8], "x": 9.5, "y": 3 }, + { "matrix": [3, 9], "x": 10.5, "y": 3 }, + { "matrix": [3, 10], "x": 11.5, "y": 3 }, + { "matrix": [3, 11], "x": 12.5, "y": 3 }, + { "matrix": [3, 13], "w": 1.75, "x": 13.5, "y": 3 }, + { "matrix": [3, 14], "w": 2.75, "x": 13.5, "y": 3 }, + { "matrix": [3, 15], "x": 15.25, "y": 3 }, + { "matrix": [3, 17], "x": 17.5, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.5, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "x": 2.75, "y": 4 }, + { "matrix": [4, 3], "w": 1.5, "x": 3.75, "y": 4 }, + { "matrix": [4, 5], "w": 3, "x": 5.25, "y": 4 }, + { "matrix": [4, 7], "x": 8.25, "y": 4 }, + { "matrix": [4, 9], "w": 3, "x": 9.25, "y": 4 }, + { "matrix": [4, 11], "w": 1.5, "x": 12.25, "y": 4 }, + { "matrix": [4, 13], "x": 13.75, "y": 4 }, + { "matrix": [4, 15], "w": 1.5, "x": 14.75, "y": 4 }, + { "matrix": [4, 16], "x": 16.5, "y": 4 }, + { "matrix": [4, 17], "x": 17.5, "y": 4 }, + { "matrix": [4, 18], "x": 18.5, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/lgbtkl/keymaps/default/keymap.c b/keyboards/lgbtkl/keymaps/default/keymap.c new file mode 100644 index 00000000000..01dcedcc18d --- /dev/null +++ b/keyboards/lgbtkl/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 ojthetiny + * + * 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( + KC_F1, 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_GRV, KC_BSLS, KC_INS, KC_HOME, KC_PGUP, + KC_F2, 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_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_F3, 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_F4, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, MO(1), KC_UP, + KC_F5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + +}; diff --git a/keyboards/lgbtkl/keymaps/via/keymap.c b/keyboards/lgbtkl/keymaps/via/keymap.c new file mode 100644 index 00000000000..2fc44ae8cc0 --- /dev/null +++ b/keyboards/lgbtkl/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2023 ojthetiny + * + * 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( + KC_F1, 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_GRV, KC_BSLS, KC_INS, KC_HOME, KC_PGUP, + KC_F2, 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_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_F3, 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_F4, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, MO(1), KC_UP, + KC_F5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + +}; diff --git a/keyboards/lgbtkl/keymaps/via/rules.mk b/keyboards/lgbtkl/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/lgbtkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/lgbtkl/readme.md b/keyboards/lgbtkl/readme.md new file mode 100644 index 00000000000..cd6f94b6e97 --- /dev/null +++ b/keyboards/lgbtkl/readme.md @@ -0,0 +1,26 @@ +# LGBTKL + +LGBTKL keyboard by Queertykeys + +* Keyboard Maintainer: [Liv](https://github.com/ojthetiny) +* Hardware Supported: LGBTKL +* Hardware Availability: Private GB + + +Make example for this keyboard (after setting up your build environment): + + make lgbtkl:default + +Flashing example for this keyboard: + + make lgbtkl: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 using one of the following methods: + +* **Bootmagic reset**: Hold the F1 key while connecting the USB cable +* **Physical reset button**: Hold the button labeled 'B/R' for a while to enter bootloader. +* **Keycode in layout**: In the case of the default keymap, use the key combination Fn + F5 \ No newline at end of file diff --git a/keyboards/lgbtkl/rules.mk b/keyboards/lgbtkl/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/lgbtkl/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From e0c00c35ce195dc0ab3f729235b9490dc69592ec Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Thu, 26 Oct 2023 22:34:17 +0100 Subject: [PATCH 07/51] Clarify PIO define is optional in docs. (#22339) --- docs/serial_driver.md | 2 +- docs/ws2812_driver.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/serial_driver.md b/docs/serial_driver.md index c4b42f38ddd..b7e803154b3 100644 --- a/docs/serial_driver.md +++ b/docs/serial_driver.md @@ -235,7 +235,7 @@ Where 'n' matches the peripheral number of your selected USART on the MCU. The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of the PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation is fully supported. The Half-duplex operation mode uses the built-in pull-ups and GPIO manipulation on the RP2040 to drive the line high by default. An external pull-up is therefore not necessary. -Configure the hardware via your config.h: +You may optionally switch the PIO peripheral used with the following define in config.h: ```c #define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral ``` diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index f8cad20ce0c..9b79cfa905e 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -170,7 +170,7 @@ To configure it, add this to your rules.mk: WS2812_DRIVER = vendor ``` -Configure the hardware via your config.h: +You may optionally switch the PIO peripheral used with the following define in config.h: ```c #define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral ``` From f5cd30458a91aeeb1ac785b562550607c09054d6 Mon Sep 17 00:00:00 2001 From: Kael Augusto <45074062+Dwctor@users.noreply.github.com> Date: Fri, 27 Oct 2023 01:10:30 -0300 Subject: [PATCH 08/51] [Keyboard] Add Kaly42 (#22282) * Added Kaly/Kaly42 keyboard's minimal files. * Updated readme.md; New link and improved description text. * Apply suggestions from code review Added all suggestions given by @dunk2k Co-authored-by: Duncan Sutherland * Added community_layouts to info.json. Co-authored-by: Duncan Sutherland --------- Co-authored-by: Duncan Sutherland --- keyboards/kaly/kaly42/config.h | 9 ++ keyboards/kaly/kaly42/halconf.h | 7 ++ keyboards/kaly/kaly42/info.json | 93 +++++++++++++++++++ .../kaly/kaly42/keymaps/default/keymap.c | 27 ++++++ keyboards/kaly/kaly42/mcuconf.h | 10 ++ keyboards/kaly/kaly42/readme.md | 27 ++++++ keyboards/kaly/kaly42/rules.mk | 1 + 7 files changed, 174 insertions(+) create mode 100644 keyboards/kaly/kaly42/config.h create mode 100644 keyboards/kaly/kaly42/halconf.h create mode 100644 keyboards/kaly/kaly42/info.json create mode 100644 keyboards/kaly/kaly42/keymaps/default/keymap.c create mode 100644 keyboards/kaly/kaly42/mcuconf.h create mode 100644 keyboards/kaly/kaly42/readme.md create mode 100644 keyboards/kaly/kaly42/rules.mk diff --git a/keyboards/kaly/kaly42/config.h b/keyboards/kaly/kaly42/config.h new file mode 100644 index 00000000000..e97f0a8aa45 --- /dev/null +++ b/keyboards/kaly/kaly42/config.h @@ -0,0 +1,9 @@ +// Copyright 2023 Kael Soares Augusto (@Dwctor) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. + +#define SERIAL_USART_TX_PIN B6 // USART TX pin +#define SERIAL_USART_RX_PIN B7 // USART RX pin diff --git a/keyboards/kaly/kaly42/halconf.h b/keyboards/kaly/kaly42/halconf.h new file mode 100644 index 00000000000..7cbbf596103 --- /dev/null +++ b/keyboards/kaly/kaly42/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2023 Kael Soares Augusto (@Dwctor) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE +#include_next diff --git a/keyboards/kaly/kaly42/info.json b/keyboards/kaly/kaly42/info.json new file mode 100644 index 00000000000..38de4ccea50 --- /dev/null +++ b/keyboards/kaly/kaly42/info.json @@ -0,0 +1,93 @@ +{ + "manufacturer": "Dwctor", + "keyboard_name": "kaly/kaly42", + "maintainer": "Dwctor", + "development_board": "blackpill_f401", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["B1", "B10", "A8", "B15", "B14", "B13"], + ["B9", "B8", "B5", "B4", "B3", "A15"], + ["A4", "A3", "A5", "A6", "A7", "B0"], + ["A2", "A1", "A0", "NO_PIN", "NO_PIN", "NO_PIN"] + ] + }, + "split": { + "enabled": true, + "bootmagic": { + "matrix": [4, 5] + }, + "matrix_pins": { + "right": { + "direct": [ + ["B13", "B14", "B15", "A8", "B10", "B1"], + ["A15", "B3", "B4", "B5", "B8", "B9"], + ["B0", "A7", "A6", "A5", "A3", "A4"], + ["A0", "A1", "A2", "NO_PIN", "NO_PIN", "NO_PIN"] + ] + } + } + }, + "url": "https://github.com/Dwctor/Kaly", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x6_3"], + "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, 0], "x": 8, "y": 0.25}, + {"matrix": [4, 1], "x": 9, "y": 0.125}, + {"matrix": [4, 2], "x": 10, "y": 0}, + {"matrix": [4, 3], "x": 11, "y": 0.125}, + {"matrix": [4, 4], "x": 12, "y": 0.25}, + {"matrix": [4, 5], "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, 0], "x": 8, "y": 1.25}, + {"matrix": [5, 1], "x": 9, "y": 1.125}, + {"matrix": [5, 2], "x": 10, "y": 1}, + {"matrix": [5, 3], "x": 11, "y": 1.125}, + {"matrix": [5, 4], "x": 12, "y": 1.25}, + {"matrix": [5, 5], "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, 0], "x": 8, "y": 2.25}, + {"matrix": [6, 1], "x": 9, "y": 2.125}, + {"matrix": [6, 2], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 11, "y": 2.125}, + {"matrix": [6, 4], "x": 12, "y": 2.25}, + {"matrix": [6, 5], "x": 13, "y": 2.25}, + {"matrix": [3, 0], "x": 3.5, "y": 3.25}, + {"matrix": [3, 1], "x": 4.5, "y": 3.5}, + {"matrix": [3, 2], "x": 5.5, "y": 3.75}, + {"matrix": [7, 0], "x": 7.5, "y": 3.75}, + {"matrix": [7, 1], "x": 8.5, "y": 3.5}, + {"matrix": [7, 2], "x": 9.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/kaly/kaly42/keymaps/default/keymap.c b/keyboards/kaly/kaly42/keymaps/default/keymap.c new file mode 100644 index 00000000000..54d46c54dbb --- /dev/null +++ b/keyboards/kaly/kaly42/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 Kael Soares Augusto (@Dwctor) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│ + * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │GUI├───┐ ┌───┤Alt│ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤ │ │ ├───┘ + * └───┘ └───┘ + */ + [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_RSFT, + KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ) +}; diff --git a/keyboards/kaly/kaly42/mcuconf.h b/keyboards/kaly/kaly42/mcuconf.h new file mode 100644 index 00000000000..6db1e6072a6 --- /dev/null +++ b/keyboards/kaly/kaly42/mcuconf.h @@ -0,0 +1,10 @@ +// Copyright 2023 Kael Soares Augusto (@Dwctor) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SERIAL_USE_USART1 + +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/kaly/kaly42/readme.md b/keyboards/kaly/kaly42/readme.md new file mode 100644 index 00000000000..d3b0ff7a3d5 --- /dev/null +++ b/keyboards/kaly/kaly42/readme.md @@ -0,0 +1,27 @@ +# kaly/kaly42 + +![kaly/kaly42](https://i.imgur.com/wSmUjFUh.jpeg) + +The Kaly is a split, ergonomic keyboard inspired by the [Ferris](https://github.com/pierrechevalier83/ferris) and the [Cantor](https://github.com/diepala/cantor) with the main goals of comfort, affordability and cuteness! The stand-out features of the Kaly is the ease-to-solder and the natural thumb cluster that allow users to confortably reach all keys of the keyboard! To see more of the Kaly, visit [this video](https://www.youtube.com/watch?v=PhxM8o__9Xo) outlining the journey of making this keybord. + +* Keyboard Maintainer: [Kael Soares Augusto](https://github.com/Dwctor) +* Hardware Supported: Blackpill STM32F401 +* Hardware Availability: [https://github.com/Dwctor/Kaly](https://github.com/Dwctor/Kaly) + +Make example for this keyboard (after setting up your build environment): + + make kaly/kaly42:default + +Flashing example for this keyboard: + + make kaly/kaly42: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 diff --git a/keyboards/kaly/kaly42/rules.mk b/keyboards/kaly/kaly42/rules.mk new file mode 100644 index 00000000000..c6e29883213 --- /dev/null +++ b/keyboards/kaly/kaly42/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = usart From 0ad780f852c725d8e25d0cf2032af9eac5a8ee92 Mon Sep 17 00:00:00 2001 From: khchen2004 <148961563+khchen2004@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:38:22 +0800 Subject: [PATCH 09/51] [Keyboard] add pisces pcb (#22334) --- keyboards/kwstudio/pisces/info.json | 127 ++++++++++++++++++ .../kwstudio/pisces/keymaps/default/keymap.c | 36 +++++ .../kwstudio/pisces/keymaps/via/keymap.c | 36 +++++ .../kwstudio/pisces/keymaps/via/rules.mk | 1 + keyboards/kwstudio/pisces/readme.md | 25 ++++ keyboards/kwstudio/pisces/rules.mk | 1 + 6 files changed, 226 insertions(+) create mode 100644 keyboards/kwstudio/pisces/info.json create mode 100644 keyboards/kwstudio/pisces/keymaps/default/keymap.c create mode 100644 keyboards/kwstudio/pisces/keymaps/via/keymap.c create mode 100644 keyboards/kwstudio/pisces/keymaps/via/rules.mk create mode 100644 keyboards/kwstudio/pisces/readme.md create mode 100644 keyboards/kwstudio/pisces/rules.mk diff --git a/keyboards/kwstudio/pisces/info.json b/keyboards/kwstudio/pisces/info.json new file mode 100644 index 00000000000..48f4e6a4f66 --- /dev/null +++ b/keyboards/kwstudio/pisces/info.json @@ -0,0 +1,127 @@ +{ + "keyboard_name": "Pisces", + "manufacturer": "kws", + "maintainer": "kws", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B0" + }, + "matrix_pins": { + "cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "B2", "B3", "B1"], + "rows": ["B7", "D5", "D3", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4B53" + }, + "community_layouts": ["tkl_f13_ansi_tsangan"], + "layouts": { + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix":[0,0], "x":0, "y":0}, + {"matrix":[0,1], "x":1.25, "y":0}, + {"matrix":[0,2], "x":2.25, "y":0}, + {"matrix":[0,3], "x":3.25, "y":0}, + {"matrix":[0,4], "x":4.25, "y":0}, + {"matrix":[0,6], "x":5.5, "y":0}, + {"matrix":[0,7], "x":6.5, "y":0}, + {"matrix":[0,8], "x":7.5, "y":0}, + {"matrix":[0,9], "x":8.5, "y":0}, + {"matrix":[0,10], "x":9.75, "y":0}, + {"matrix":[0,11], "x":10.75, "y":0}, + {"matrix":[0,12], "x":11.75, "y":0}, + {"matrix":[0,13], "x":12.75, "y":0}, + {"matrix":[0,14], "x":14, "y":0}, + {"matrix":[0,15], "x":15.25, "y":0}, + {"matrix":[0,16], "x":16.25, "y":0}, + {"matrix":[0,17], "x":17.25, "y":0}, + + {"matrix":[1,0], "x":0, "y":1.25}, + {"matrix":[1,1], "x":1, "y":1.25}, + {"matrix":[1,2], "x":2, "y":1.25}, + {"matrix":[1,3], "x":3, "y":1.25}, + {"matrix":[1,4], "x":4, "y":1.25}, + {"matrix":[1,5], "x":5, "y":1.25}, + {"matrix":[1,6], "x":6, "y":1.25}, + {"matrix":[1,7], "x":7, "y":1.25}, + {"matrix":[1,8], "x":8, "y":1.25}, + {"matrix":[1,9], "x":9, "y":1.25}, + {"matrix":[1,10], "x":10, "y":1.25}, + {"matrix":[1,11], "x":11, "y":1.25}, + {"matrix":[1,12], "x":12, "y":1.25}, + {"matrix":[1,14], "x":13, "y":1.25, "w":2}, + {"matrix":[1,15], "x":15.25, "y":1.25}, + {"matrix":[1,16], "x":16.25, "y":1.25}, + {"matrix":[1,17], "x":17.25, "y":1.25}, + + {"matrix":[2,0], "x":0, "y":2.25, "w":1.5}, + {"matrix":[2,2], "x":1.5, "y":2.25}, + {"matrix":[2,3], "x":2.5, "y":2.25}, + {"matrix":[2,4], "x":3.5, "y":2.25}, + {"matrix":[2,5], "x":4.5, "y":2.25}, + {"matrix":[2,6], "x":5.5, "y":2.25}, + {"matrix":[2,7], "x":6.5, "y":2.25}, + {"matrix":[2,8], "x":7.5, "y":2.25}, + {"matrix":[2,9], "x":8.5, "y":2.25}, + {"matrix":[2,10], "x":9.5, "y":2.25}, + {"matrix":[2,11], "x":10.5, "y":2.25}, + {"matrix":[2,12], "x":11.5, "y":2.25}, + {"matrix":[2,13], "x":12.5, "y":2.25}, + {"matrix":[2,14], "x":13.5, "y":2.25, "w":1.5}, + {"matrix":[2,15], "x":15.25, "y":2.25}, + {"matrix":[2,16], "x":16.25, "y":2.25}, + {"matrix":[2,17], "x":17.25, "y":2.25}, + + {"matrix":[3,0], "x":0, "y":3.25, "w":1.75}, + {"matrix":[3,2], "x":1.75, "y":3.25}, + {"matrix":[3,3], "x":2.75, "y":3.25}, + {"matrix":[3,4], "x":3.75, "y":3.25}, + {"matrix":[3,5], "x":4.75, "y":3.25}, + {"matrix":[3,6], "x":5.75, "y":3.25}, + {"matrix":[3,7], "x":6.75, "y":3.25}, + {"matrix":[3,8], "x":7.75, "y":3.25}, + {"matrix":[3,9], "x":8.75, "y":3.25}, + {"matrix":[3,10], "x":9.75, "y":3.25}, + {"matrix":[3,11], "x":10.75, "y":3.25}, + {"matrix":[3,12], "x":11.75, "y":3.25}, + {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25}, + {"matrix":[4,1], "x":0, "y":4.25, "w":2.25}, + {"matrix":[4,2], "x":2.25, "y":4.25}, + {"matrix":[4,3], "x":3.25, "y":4.25}, + {"matrix":[4,4], "x":4.25, "y":4.25}, + {"matrix":[4,5], "x":5.25, "y":4.25}, + {"matrix":[4,6], "x":6.25, "y":4.25}, + {"matrix":[4,7], "x":7.25, "y":4.25}, + {"matrix":[4,8], "x":8.25, "y":4.25}, + {"matrix":[4,9], "x":9.25, "y":4.25}, + {"matrix":[4,10], "x":10.25, "y":4.25}, + {"matrix":[4,11], "x":11.25, "y":4.25}, + {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75}, + {"matrix":[4,16], "x":16.25, "y":4.25}, + + {"matrix":[5,0], "x":0, "y":5.25, "w":1.5}, + {"matrix":[5,2], "x":1.5, "y":5.25}, + {"matrix":[5,3], "x":2.5, "y":5.25, "w":1.5}, + {"matrix":[5,7], "x":4, "y":5.25, "w":7}, + {"matrix":[5,11], "x":11, "y":5.25, "w":1.5}, + {"matrix":[5,13], "x":12.5, "y":5.25}, + {"matrix":[5,14], "x":13.5, "y":5.25, "w":1.5}, + {"matrix":[5,15], "x":15.25, "y":5.25}, + {"matrix":[5,16], "x":16.25, "y":5.25}, + {"matrix":[5,17], "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/kwstudio/pisces/keymaps/default/keymap.c b/keyboards/kwstudio/pisces/keymaps/default/keymap.c new file mode 100644 index 00000000000..6b20a3aa900 --- /dev/null +++ b/keyboards/kwstudio/pisces/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2023 kwstudio + * + * 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_tkl_f13_ansi_tsangan( + 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_NO, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kwstudio/pisces/keymaps/via/keymap.c b/keyboards/kwstudio/pisces/keymaps/via/keymap.c new file mode 100644 index 00000000000..6b20a3aa900 --- /dev/null +++ b/keyboards/kwstudio/pisces/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2023 kwstudio + * + * 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_tkl_f13_ansi_tsangan( + 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_NO, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kwstudio/pisces/keymaps/via/rules.mk b/keyboards/kwstudio/pisces/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/kwstudio/pisces/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kwstudio/pisces/readme.md b/keyboards/kwstudio/pisces/readme.md new file mode 100644 index 00000000000..29cf8ebf5c4 --- /dev/null +++ b/keyboards/kwstudio/pisces/readme.md @@ -0,0 +1,25 @@ +# Pisces + +![Pisces](https://i.imgur.com/fqEBVD8h.jpeg) + +* Keyboard Maintainer: [khchen](https://github.com/khchen2004) +* Hardware Supported: Pisces PCB +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make kwstudio/pisces:default + +Flashing example for this keyboard: + + make kwstudio/pisces: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 diff --git a/keyboards/kwstudio/pisces/rules.mk b/keyboards/kwstudio/pisces/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/kwstudio/pisces/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From e82bc5355c98d358815b514ee570ac5c4fdf7a4a Mon Sep 17 00:00:00 2001 From: 4pplet Date: Fri, 27 Oct 2023 08:40:21 +0200 Subject: [PATCH 10/51] [Keyboard] Waffling60 Rev E ANSI Hotswap (#22270) Co-authored-by: Duncan Sutherland --- .../4pplet/waffling60/rev_e_ansi/config.h | 20 ++ .../4pplet/waffling60/rev_e_ansi/info.json | 255 ++++++++++++++++++ .../rev_e_ansi/keymaps/default/keymap.c | 40 +++ .../rev_e_ansi/keymaps/default/rules.mk | 1 + .../rev_e_ansi/keymaps/via/keymap.c | 40 +++ .../rev_e_ansi/keymaps/via/rules.mk | 2 + .../waffling60/rev_e_ansi/matrix_diagram.md | 24 ++ .../4pplet/waffling60/rev_e_ansi/readme.md | 26 ++ .../4pplet/waffling60/rev_e_ansi/rules.mk | 2 + 9 files changed, 410 insertions(+) create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/config.h create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/info.json create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/readme.md create mode 100644 keyboards/4pplet/waffling60/rev_e_ansi/rules.mk diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/config.h b/keyboards/4pplet/waffling60/rev_e_ansi/config.h new file mode 100644 index 00000000000..521ddf96a18 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define WS2812_EXTERNAL_PULLUP + diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/info.json b/keyboards/4pplet/waffling60/rev_e_ansi/info.json new file mode 100644 index 00000000000..c2514700ff0 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/info.json @@ -0,0 +1,255 @@ +{ + "manufacturer": "4pplet", + "keyboard_name": "waffling60 Rev E ANSI HS", + "maintainer": "4pplet", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A2", "pin_b": "A1", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "key_lock": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B2", "A4", "A3", "A0", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"], + "rows": ["B14", "A9", "B6", "B5", "B4"] + }, + "processor": "STM32F072", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 17 + }, + "url": "https://github.com/4pplet/waffling60", + "usb": { + "device_version": "0.0.5", + "pid": "0x0015", + "vid": "0x4444" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": [ + "60_tsangan_hhkb", + "60_hhkb" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 4], "x":4, "y":4, "w":3}, + {"label": "Space", "matrix": [4, 6], "x":7, "y":4}, + {"label": "Space", "matrix": [4, 8], "x":8, "y":4, "w":3}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Bsp", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Win", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7}, + {"label": "Win", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4}, + ] + } + } +} diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c new file mode 100644 index 00000000000..706428c00e7 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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] = { +// main layer +[0] = LAYOUT_all( + 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_BSLS, 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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c new file mode 100644 index 00000000000..706428c00e7 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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] = { +// main layer +[0] = LAYOUT_all( + 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_BSLS, 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(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk new file mode 100644 index 00000000000..f1adcab005e --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md b/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md new file mode 100644 index 00000000000..ae47900a9ba --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for 4pplet Waffling60 Rev E ANSI Hotswap + +``` + ┌───────┐ + 2u Backspace │1D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ +│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB +└────┴────┴────┴─────────────────────────────┴────┴────┴────┘ +┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────┐ +│40 │41 │42 │44 │46 │48 │4B │4C │4D │ 7u split spacebar +└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘ +┌─────┬───┬───────────────────────────────────────┬───┬─────┐ +│40 │41 │46 │4C │4D │ 10u Spacebar +└─────┴───┴───────────────────────────────────────┴───┴─────┘ +``` diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/readme.md b/keyboards/4pplet/waffling60/rev_e_ansi/readme.md new file mode 100644 index 00000000000..1b70d5aba86 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/readme.md @@ -0,0 +1,26 @@ +# waffling60 Rev. E ANSI + +A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support. Revision E adds underglow and rotary encoder support. + +More info: https://github.com/4pplet/waffling60 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60) + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/waffling60/rev_e_ansi:default + +Flashing example for this keyboard: + + make 4pplet/waffling60/rev_e_ansi: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 + +How to enter bootloader (DFU): +* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware. diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk new file mode 100644 index 00000000000..04fe1eba2ac --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF From 052cc5df5d63786278e75fcc43f5e24688356f55 Mon Sep 17 00:00:00 2001 From: gskygithub <106651989+gskygithub@users.noreply.github.com> Date: Fri, 27 Oct 2023 15:31:54 +0800 Subject: [PATCH 11/51] Add darkproject/kd87a_bfg_edition keyboard (#18981) Co-authored-by: gksygithub <106651989+gksygithub@users.noreply.github.com> --- .../darkproject/kd87a_bfg_edition/config.h | 44 +++ .../darkproject/kd87a_bfg_edition/halconf.h | 23 ++ .../darkproject/kd87a_bfg_edition/info.json | 274 ++++++++++++++++++ .../kd87a_bfg_edition/kd87a_bfg_edition.c | 174 +++++++++++ .../kd87a_bfg_edition/kd87a_bfg_edition.h | 22 ++ .../keymaps/default/keymap.c | 69 +++++ .../kd87a_bfg_edition/keymaps/via/keymap.c | 69 +++++ .../kd87a_bfg_edition/keymaps/via/rules.mk | 1 + .../darkproject/kd87a_bfg_edition/mcuconf.h | 25 ++ .../darkproject/kd87a_bfg_edition/readme.md | 24 ++ .../darkproject/kd87a_bfg_edition/rules.mk | 1 + 11 files changed, 726 insertions(+) create mode 100644 keyboards/darkproject/kd87a_bfg_edition/config.h create mode 100644 keyboards/darkproject/kd87a_bfg_edition/halconf.h create mode 100644 keyboards/darkproject/kd87a_bfg_edition/info.json create mode 100644 keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c create mode 100644 keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h create mode 100644 keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c create mode 100644 keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c create mode 100644 keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk create mode 100644 keyboards/darkproject/kd87a_bfg_edition/mcuconf.h create mode 100644 keyboards/darkproject/kd87a_bfg_edition/readme.md create mode 100644 keyboards/darkproject/kd87a_bfg_edition/rules.mk diff --git a/keyboards/darkproject/kd87a_bfg_edition/config.h b/keyboards/darkproject/kd87a_bfg_edition/config.h new file mode 100644 index 00000000000..335648df9ab --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/config.h @@ -0,0 +1,44 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +/* External spi flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 +#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) + +/* SPI Config for LED Driver */ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A7 +#define SPI_MISO_PIN A6 + +#define DRIVER_1_CS A15 +#define DRIVER_2_CS B15 +#define DRIVER_1_EN C13 +#define DRIVER_2_EN C13 + +#define DRIVER_COUNT 2 +#define DRIVER_1_LED_TOTAL 68 +#define DRIVER_2_LED_TOTAL 54 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/darkproject/kd87a_bfg_edition/halconf.h b/keyboards/darkproject/kd87a_bfg_edition/halconf.h new file mode 100644 index 00000000000..8f61d3fc64f --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * 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_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/darkproject/kd87a_bfg_edition/info.json b/keyboards/darkproject/kd87a_bfg_edition/info.json new file mode 100644 index 00000000000..1cf428a97f1 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/info.json @@ -0,0 +1,274 @@ +{ + "manufacturer": "Kd87a_bfg_edition", + "keyboard_name": "Kd87a_bfg_edition", + "maintainer": "Gsky", + "bootloader": "wb32-dfu", + "bootmagic": { + "matrix": [1, 3] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "C14" + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B12"] + }, + "processor": "WB32FQ95", + "qmk": { + "tap_keycode_delay": 10 + }, + "rgb_matrix": { + "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, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "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_fractal": true, + "pixel_flow": true, + "pixel_rain": 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, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "center_point": [87, 35], + "driver": "aw20216", + "layout": [ + { "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [3, 6], "x": 30, "y": 0 }, + { "flags": 4, "matrix": [3, 1], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [3, 3], "x": 50, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 65, "y": 0 }, + { "flags": 4, "matrix": [6, 3], "x": 75, "y": 0 }, + { "flags": 4, "matrix": [7, 1], "x": 85, "y": 0 }, + { "flags": 4, "matrix": [7, 6], "x": 95, "y": 0 }, + { "flags": 4, "matrix": [10, 6], "x": 110, "y": 0 }, + { "flags": 4, "matrix": [10, 7], "x": 120, "y": 0 }, + { "flags": 4, "matrix": [10, 3], "x": 130, "y": 0 }, + { "flags": 4, "matrix": [10, 5], "x": 140, "y": 0 }, + { "flags": 4, "matrix": [9, 7], "x": 155, "y": 0 }, + { "flags": 4, "matrix": [10, 0], "x": 165, "y": 0 }, + { "flags": 4, "matrix": [9, 6], "x": 175, "y": 0 }, + + { "flags": 4, "matrix": [1, 6], "x": 0, "y": 15 }, + { "flags": 4, "matrix": [1, 7], "x": 10, "y": 15 }, + { "flags": 4, "matrix": [2, 7], "x": 20, "y": 15 }, + { "flags": 4, "matrix": [3, 7], "x": 30, "y": 15 }, + { "flags": 4, "matrix": [4, 7], "x": 40, "y": 15 }, + { "flags": 4, "matrix": [4, 6], "x": 50, "y": 15 }, + { "flags": 4, "matrix": [5, 6], "x": 60, "y": 15 }, + { "flags": 4, "matrix": [5, 7], "x": 70, "y": 15 }, + { "flags": 4, "matrix": [6, 7], "x": 80, "y": 15 }, + { "flags": 4, "matrix": [7, 7], "x": 90, "y": 15 }, + { "flags": 4, "matrix": [8, 7], "x": 100, "y": 15 }, + { "flags": 4, "matrix": [8, 6], "x": 110, "y": 15 }, + { "flags": 4, "matrix": [6, 6], "x": 120, "y": 15 }, + { "flags": 4, "matrix": [10, 1], "x": 130, "y": 15 }, + { "flags": 4, "matrix": [11, 6], "x": 155, "y": 15 }, + { "flags": 4, "matrix": [0, 2], "x": 165, "y": 15 }, + { "flags": 4, "matrix": [1, 5], "x": 175, "y": 15 }, + + { "flags": 4, "matrix": [1, 1], "x": 0, "y": 25 }, + { "flags": 4, "matrix": [1, 0], "x": 15, "y": 25 }, + { "flags": 4, "matrix": [2, 0], "x": 25, "y": 25 }, + { "flags": 4, "matrix": [3, 0], "x": 35, "y": 25 }, + { "flags": 4, "matrix": [4, 0], "x": 45, "y": 25 }, + { "flags": 4, "matrix": [4, 1], "x": 55, "y": 25 }, + { "flags": 4, "matrix": [5, 1], "x": 65, "y": 25 }, + { "flags": 4, "matrix": [5, 0], "x": 75, "y": 25 }, + { "flags": 4, "matrix": [6, 0], "x": 85, "y": 25 }, + { "flags": 4, "matrix": [7, 0], "x": 95, "y": 25 }, + { "flags": 4, "matrix": [8, 0], "x": 105, "y": 25 }, + { "flags": 4, "matrix": [8, 1], "x": 115, "y": 25 }, + { "flags": 4, "matrix": [6, 1], "x": 125, "y": 25 }, + { "flags": 4, "matrix": [10, 2], "x": 135, "y": 25 }, + { "flags": 4, "matrix": [6, 5], "x": 155, "y": 25 }, + { "flags": 4, "matrix": [7, 5], "x": 165, "y": 25 }, + { "flags": 4, "matrix": [2, 5], "x": 175, "y": 25 }, + + { "flags": 8, "matrix": [2, 1], "x": 0, "y": 35 }, + { "flags": 4, "matrix": [1, 2], "x": 17.5, "y": 35 }, + { "flags": 4, "matrix": [2, 2], "x": 27.5, "y": 35 }, + { "flags": 4, "matrix": [3, 2], "x": 37.5, "y": 35 }, + { "flags": 4, "matrix": [4, 2], "x": 47.5, "y": 35 }, + { "flags": 4, "matrix": [4, 3], "x": 57.5, "y": 35 }, + { "flags": 4, "matrix": [5, 3], "x": 67.5, "y": 35 }, + { "flags": 4, "matrix": [5, 2], "x": 77.5, "y": 35 }, + { "flags": 4, "matrix": [6, 2], "x": 87.5, "y": 35 }, + { "flags": 4, "matrix": [7, 2], "x": 97.5, "y": 35 }, + { "flags": 4, "matrix": [8, 2], "x": 107.5, "y": 35 }, + { "flags": 4, "matrix": [8, 3], "x": 117.5, "y": 35 }, + { "flags": 4, "matrix": [10, 4], "x": 127.5, "y": 35 }, + + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 45 }, + { "flags": 4, "matrix": [1, 4], "x": 22.5, "y": 45 }, + { "flags": 4, "matrix": [2, 4], "x": 32.5, "y": 45 }, + { "flags": 4, "matrix": [3, 4], "x": 42.5, "y": 45 }, + { "flags": 4, "matrix": [4, 4], "x": 52.5, "y": 45 }, + { "flags": 4, "matrix": [4, 5], "x": 62.5, "y": 45 }, + { "flags": 4, "matrix": [5, 5], "x": 72.5, "y": 45 }, + { "flags": 4, "matrix": [5, 4], "x": 82.5, "y": 45 }, + { "flags": 4, "matrix": [6, 4], "x": 92.5, "y": 45 }, + { "flags": 4, "matrix": [7, 4], "x": 102.5, "y": 45 }, + { "flags": 4, "matrix": [8, 5], "x": 112.5, "y": 45 }, + { "flags": 4, "matrix": [9, 1], "x": 122.5, "y": 45 }, + { "flags": 4, "matrix": [3, 5], "x": 165, "y": 45 }, + + { "flags": 4, "matrix": [0, 6], "x": 0, "y": 55 }, + { "flags": 4, "matrix": [9, 0], "x": 12.5, "y": 55 }, + { "flags": 4, "matrix": [9, 3], "x": 25, "y": 55 }, + { "flags": 4, "matrix": [9, 4], "x": 37.5, "y": 55 }, + { "flags": 4, "matrix": [9, 5], "x": 100, "y": 55 }, + { "flags": 4, "matrix": [9, 2], "x": 112.5, "y": 55 }, + { "flags": 4, "matrix": [8, 4], "x": 125, "y": 55 }, + { "flags": 4, "matrix": [0, 4], "x": 137.5, "y": 55 }, + { "flags": 4, "matrix": [0, 3], "x": 155, "y": 55 }, + { "flags": 4, "matrix": [7, 3], "x": 165, "y": 55 }, + { "flags": 4, "matrix": [0, 5], "x": 175, "y": 55 } + ] + }, + "url": "", + "usb": { + "device_version": "0.0.3", + "pid": "0xE393", + "vid": "0x342D" + }, + "eeprom": { + "driver": "wear_leveling" + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + { "label": "ESC", "matrix": [1, 3], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [2, 6], "x": 2, "y": 0 }, + { "label": "F2", "matrix": [3, 6], "x": 3, "y": 0 }, + { "label": "F3", "matrix": [3, 1], "x": 4, "y": 0 }, + { "label": "F4", "matrix": [3, 3], "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [6, 3], "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [7, 1], "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [7, 6], "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [10, 6], "x": 11, "y": 0 }, + { "label": "F10", "matrix": [10, 7], "x": 12, "y": 0 }, + { "label": "F11", "matrix": [10, 3], "x": 13, "y": 0 }, + { "label": "F12", "matrix": [10, 5], "x": 14, "y": 0 }, + { "label": "Printscreen", "matrix": [9, 7], "x": 15.5, "y": 0 }, + { "label": "Scroll Lock", "matrix": [10, 0], "x": 16.5, "y": 0 }, + { "label": "Pause Break", "matrix": [9, 6], "x": 17.5, "y": 0 }, + { "label": "`", "matrix": [1, 6], "x": 0, "y": 1.5 }, + { "label": "1", "matrix": [1, 7], "x": 1, "y": 1.5 }, + { "label": "2", "matrix": [2, 7], "x": 2, "y": 1.5 }, + { "label": "3", "matrix": [3, 7], "x": 3, "y": 1.5 }, + { "label": "4", "matrix": [4, 7], "x": 4, "y": 1.5 }, + { "label": "5", "matrix": [4, 6], "x": 5, "y": 1.5 }, + { "label": "6", "matrix": [5, 6], "x": 6, "y": 1.5 }, + { "label": "7", "matrix": [5, 7], "x": 7, "y": 1.5 }, + { "label": "8", "matrix": [6, 7], "x": 8, "y": 1.5 }, + { "label": "9", "matrix": [7, 7], "x": 9, "y": 1.5 }, + { "label": "0", "matrix": [8, 7], "x": 10, "y": 1.5 }, + { "label": "-", "matrix": [8, 6], "x": 11, "y": 1.5 }, + { "label": "=", "matrix": [6, 6], "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1.5 }, + { "label": "INS", "matrix": [11, 6], "x": 15.5, "y": 1.5 }, + { "label": "Home", "matrix": [0, 2], "x": 16.5, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 5], "x": 17.5, "y": 1.5 }, + { "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.5 }, + { "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.5 }, + { "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.5 }, + { "label": "\\", "matrix": [10, 2], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "label": "Delete", "matrix": [6, 5], "x": 15.5, "y": 2.5 }, + { "label": "End", "matrix": [7, 5], "x": 16.5, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 5], "x": 17.5, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.5 }, + { "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.5 }, + { "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.5 }, + { "label": "Enter", "matrix": [10, 4], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "label": "Shift", "matrix": [0, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.5 }, + { "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.5 }, + { "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.5 }, + { "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [9, 1], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [3, 5], "x": 16.5, "y": 4.5 }, + { "label": "Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Alt", "matrix": [9, 5], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "FN", "matrix": [9, 2], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "APP", "matrix": [8, 4], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Ctrl", "matrix": [0, 4], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [0, 3], "x": 15.5, "y": 5.5 }, + { "label": "Down", "matrix": [7, 3], "x": 16.5, "y": 5.5 }, + { "label": "Right", "matrix": [0, 5], "x": 17.5, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c new file mode 100644 index 00000000000..0ce0799e14c --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c @@ -0,0 +1,174 @@ +/* Copyright 2022 GSKY + * + * 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 "kd87a_bfg_edition.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + //{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, Esc + + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 1, Esc + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 2, F1 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 3, F2 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 4, F3 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 5, F4 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 6, F5 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 7, F6 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 8, F7 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 9, F8 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 10, F9 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 11, F10 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 12, F11 + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 13, F12 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 14, Printscreen + {1, CS1_SW3, CS2_SW3, CS3_SW3}, // 15, Scroll Lock + {1, CS1_SW4, CS2_SW4, CS3_SW4}, // 16, Pause Break + + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 17, ` + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 18, 1 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 19, 2 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 20, 3 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 21, 4 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 22, 5 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 23, 6 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 24, 7 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 25, 8 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 26, 9 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 27, 0 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 28, - + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 29, = + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 30, Backspace + {1, CS1_SW2, CS2_SW2, CS3_SW2}, // 31, Insert + {1, CS4_SW5, CS5_SW5, CS6_SW5}, // 32, Home + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 33, Page Up + + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 34, Tab + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 35, Q + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 36, W + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 37, E + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 38, R + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 39, T + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 40, Y + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 42, I + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 43, O + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 44, P + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 45, [ + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 46, ] + {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 47, "\\" + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 48, Delete + {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 49, END + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 50, Page down + + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 51, Caps Lock + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 52, A + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 53, S + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 54, D + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 55, F + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 56, G + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 57, H + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 58, J + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 59, K + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 60, L + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 61, ; + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 62, ' + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 63, Enter + + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 64, Shift_L + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 65, Z + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 66, X + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 67, C + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 68, V + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 69, B + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 70, N + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 71, M + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 72, , + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 73, . + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 74, / + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 75, Shift_R + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 76, Up + + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 77, Ctrl_L + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 78, Win_L + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 79, Alt_L + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 80, Space + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 81, Alt_R + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 82, FN + {0, CS16_SW11, CS17_SW11, CS18_SW11}, // 83, APP + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 84, Ctrl_R + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 85, Left + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 86, Down + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 87, Right +}; + +#endif + +#ifdef EEPROM_ENABLE + +#include "spi_master.h" + +void spi_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinInput(SPI_MISO_PIN); + + chThdSleepMilliseconds(10); + + palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3); + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + } +} + +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(C0); + setPinOutput(C15); + keyboard_pre_init_user(); +}; +void housekeeping_task_kb(void) { + writePin(C15, keymap_config.no_gui); +}; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case KC_SIRI: + if (record->event.pressed) { + host_consumer_send(0xCF); + } else { + host_consumer_send(0); + } + return false; /* Skip all further processing of this key */ + default: + return true; /* Process all other keycodes normally */ + } +}; diff --git a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h new file mode 100644 index 00000000000..e2c656eb0eb --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h @@ -0,0 +1,22 @@ +/* Copyright 2022 GSKY + * + * 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 "quantum.h" + +enum keyboard_keycodes { + KC_SIRI = QK_KB_0 +}; diff --git a/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c b/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c new file mode 100644 index 00000000000..4abb1bdc915 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2022 GSKY + * + * 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; \ No newline at end of file diff --git a/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c new file mode 100644 index 00000000000..71fbfa4ff20 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2022 GSKY + * + * 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; diff --git a/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h b/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h new file mode 100644 index 00000000000..440f78d2bc2 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * 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 WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_SPI_USE_SPIM2 +#define WB32_SPI_USE_SPIM2 TRUE diff --git a/keyboards/darkproject/kd87a_bfg_edition/readme.md b/keyboards/darkproject/kd87a_bfg_edition/readme.md new file mode 100644 index 00000000000..83cc8a923db --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/readme.md @@ -0,0 +1,24 @@ +# KD87A_BFG_Edition +![KD87A_BFG_Edition](https://imgur.com/uOUvWvwh.png) + +An 87 keys keyboard, Equipped with the WestBerry Q95 microcontroller. + +* Keyboard Maintainer: [GSKY](https://github.com/gksygithub) +* Hardware Supported: KD87A_BFG_Edition +* Hardware Availability: [GSKY GitHub](https://github.com/gksygithub/keyboard1) + +Make example for this keyboard (after setting up your build environment): + + make darkproject/kd87a_bfg_edition:default + +Flashing example for this keyboard: + + make darkproject/kd87a_bfg_edition:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the surface of the PCB back side after the USB cable is connected +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+ESC will reset the board to bootloader mode + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/darkproject/kd87a_bfg_edition/rules.mk b/keyboards/darkproject/kd87a_bfg_edition/rules.mk new file mode 100644 index 00000000000..002458405ee --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/rules.mk @@ -0,0 +1 @@ +WEAR_LEVELING_DRIVER = spi_flash From ae2703b69ba268dcc573abf5395537f6fa7ca5cf Mon Sep 17 00:00:00 2001 From: eason <98533237+EasonQian1@users.noreply.github.com> Date: Fri, 27 Oct 2023 16:09:38 +0800 Subject: [PATCH 12/51] eason/aeroboard - Modify bootloader (#22286) --- keyboards/eason/aeroboard/info.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/eason/aeroboard/info.json b/keyboards/eason/aeroboard/info.json index 2ee29f792db..c8046d40e4f 100644 --- a/keyboards/eason/aeroboard/info.json +++ b/keyboards/eason/aeroboard/info.json @@ -34,7 +34,8 @@ }, "diode_direction": "COL2ROW", "processor": "STM32F103", - "bootloader": "stm32duino", + "bootloader": "uf2boot", + "board": "STM32_F103_STM32DUINO" "layouts": { "LAYOUT_7u_space": { "layout": [ From 18ef3da8e87c8f8e5a02a44da2cab5e734b5dc04 Mon Sep 17 00:00:00 2001 From: millet <49581988+milletmilletmilletmilletmilletmilletmil@users.noreply.github.com> Date: Fri, 27 Oct 2023 17:23:02 +0900 Subject: [PATCH 13/51] [Keyboard] doksin (#22220) --- keyboards/millet/doksin/info.json | 31 +++++++++++++++++++ .../millet/doksin/keymaps/default/keymap.c | 22 +++++++++++++ .../millet/doksin/keymaps/default/readme.md | 1 + keyboards/millet/doksin/keymaps/via/keymap.c | 23 ++++++++++++++ keyboards/millet/doksin/keymaps/via/rules.mk | 1 + keyboards/millet/doksin/readme.md | 19 ++++++++++++ keyboards/millet/doksin/rules.mk | 0 7 files changed, 97 insertions(+) create mode 100644 keyboards/millet/doksin/info.json create mode 100644 keyboards/millet/doksin/keymaps/default/keymap.c create mode 100644 keyboards/millet/doksin/keymaps/default/readme.md create mode 100644 keyboards/millet/doksin/keymaps/via/keymap.c create mode 100644 keyboards/millet/doksin/keymaps/via/rules.mk create mode 100644 keyboards/millet/doksin/readme.md create mode 100644 keyboards/millet/doksin/rules.mk diff --git a/keyboards/millet/doksin/info.json b/keyboards/millet/doksin/info.json new file mode 100644 index 00000000000..7a848662cd4 --- /dev/null +++ b/keyboards/millet/doksin/info.json @@ -0,0 +1,31 @@ +{ + "manufacturer": "millet", + "keyboard_name": "doksin", + "maintainer": "millet", + "bootloader": "atmel-dfu", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["D4"] + ] + }, + "processor": "atmega32u2", + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0x1919", + "vid": "0xBDD1" + }, + "community_layouts": ["ortho_1x1"], + "layouts": { + "LAYOUT_ortho_1x1": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/millet/doksin/keymaps/default/keymap.c b/keyboards/millet/doksin/keymaps/default/keymap.c new file mode 100644 index 00000000000..2d9e565f3a4 --- /dev/null +++ b/keyboards/millet/doksin/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* Copyright 2019 Biacco42 + * + * 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_ortho_1x1( + KC_1 + ), +}; diff --git a/keyboards/millet/doksin/keymaps/default/readme.md b/keyboards/millet/doksin/keymaps/default/readme.md new file mode 100644 index 00000000000..5ddd4572c40 --- /dev/null +++ b/keyboards/millet/doksin/keymaps/default/readme.md @@ -0,0 +1 @@ +# default keymap for DOKSIN \ No newline at end of file diff --git a/keyboards/millet/doksin/keymaps/via/keymap.c b/keyboards/millet/doksin/keymaps/via/keymap.c new file mode 100644 index 00000000000..56d8f970841 --- /dev/null +++ b/keyboards/millet/doksin/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2019 Biacco42 + * + * 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_ortho_1x1( /* Base */ + KC_1 + ), + +}; diff --git a/keyboards/millet/doksin/keymaps/via/rules.mk b/keyboards/millet/doksin/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/millet/doksin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/millet/doksin/readme.md b/keyboards/millet/doksin/readme.md new file mode 100644 index 00000000000..175416eb8b6 --- /dev/null +++ b/keyboards/millet/doksin/readme.md @@ -0,0 +1,19 @@ +# DOKСИН + +![DOKСИН](https://i.imgur.com/OaDlfwrh.jpg) + +Can be used as a keyboard... + +* Keyboard Maintainer: [millet](https://github.com/milletmilletmilletmilletmilletmilletmil) +* Hardware Supported: The DOKСИН PCB +* Hardware Availability: None + +Make example for this keyboard (after setting up your build environment): + + make millet/doksin:default + +Flashing example for this keyboard: + + make millet/doksin:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/millet/doksin/rules.mk b/keyboards/millet/doksin/rules.mk new file mode 100644 index 00000000000..e69de29bb2d From 1a300d05bd420d05e2c6106a4c7d1380f413590f Mon Sep 17 00:00:00 2001 From: Felix Jen Date: Fri, 27 Oct 2023 13:40:18 -0500 Subject: [PATCH 14/51] [Keyboard] Add Velvet hotswap & solder (#22284) --- keyboards/lucid/velvet_hotswap/info.json | 5 +--- .../velvet_hotswap/keymaps/default/keymap.c | 11 +------ .../lucid/velvet_hotswap/keymaps/via/keymap.c | 29 +----------------- keyboards/lucid/velvet_hotswap/readme.md | 4 ++- keyboards/lucid/velvet_solder/info.json | 5 +--- .../velvet_solder/keymaps/default/keymap.c | 12 ++------ .../lucid/velvet_solder/keymaps/via/keymap.c | 30 ++----------------- keyboards/lucid/velvet_solder/readme.md | 4 ++- 8 files changed, 14 insertions(+), 86 deletions(-) diff --git a/keyboards/lucid/velvet_hotswap/info.json b/keyboards/lucid/velvet_hotswap/info.json index 2cbecb782d8..4fa4ad46987 100644 --- a/keyboards/lucid/velvet_hotswap/info.json +++ b/keyboards/lucid/velvet_hotswap/info.json @@ -4,7 +4,7 @@ "url": "http://www.makerkeyboards.com", "maintainer": "Maker Keyboards", "usb": { - "device_version": "1.0.0", + "device_version": "1.0.1", "pid": "0x0008", "vid": "0x7667" }, @@ -14,9 +14,6 @@ "rows": ["B4", "B5", "B6", "C0", "E1", "E0"] }, "features": { - "bootmagic": true, - "command": false, - "console": false, "extrakey": true, "mousekey": true, "nkro": true diff --git a/keyboards/lucid/velvet_hotswap/keymaps/default/keymap.c b/keyboards/lucid/velvet_hotswap/keymaps/default/keymap.c index 23e76c78544..a8f6dae2ae0 100644 --- a/keyboards/lucid/velvet_hotswap/keymaps/default/keymap.c +++ b/keyboards/lucid/velvet_hotswap/keymaps/default/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2022 +Copyright 2023 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 @@ -28,14 +28,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_LAYER1] = LAYOUT_tkl_f13_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/lucid/velvet_hotswap/keymaps/via/keymap.c b/keyboards/lucid/velvet_hotswap/keymaps/via/keymap.c index b7257c8274b..2a0247c7159 100644 --- a/keyboards/lucid/velvet_hotswap/keymaps/via/keymap.c +++ b/keyboards/lucid/velvet_hotswap/keymaps/via/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2022 +Copyright 2023 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 @@ -30,32 +30,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_LAYER1] = LAYOUT_tkl_f13_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_LAYER2] = LAYOUT_tkl_f13_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_LAYER3] = LAYOUT_tkl_f13_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/lucid/velvet_hotswap/readme.md b/keyboards/lucid/velvet_hotswap/readme.md index 7c6c72ee381..1262386236b 100644 --- a/keyboards/lucid/velvet_hotswap/readme.md +++ b/keyboards/lucid/velvet_hotswap/readme.md @@ -1,4 +1,6 @@ -# Velvet Hotswap PCB by Lucid +# Velvet Hotswap PCB by Maker Keyboards + +![Maker Keyboards Velvet Hotswap](https://imgur.com/KfTWnCgh.jpg) The following is the QMK Firmware for the Velvet Hotswap PCB by [Maker Keyboards](http://www.makerkeyboards.com). * Keyboard Maintainer: Maker Keyboards diff --git a/keyboards/lucid/velvet_solder/info.json b/keyboards/lucid/velvet_solder/info.json index 1cc8e43cdbc..b94b4160162 100644 --- a/keyboards/lucid/velvet_solder/info.json +++ b/keyboards/lucid/velvet_solder/info.json @@ -4,7 +4,7 @@ "url": "http://www.makerkeyboards.com", "maintainer": "Maker Keyboards", "usb": { - "device_version": "1.0.0", + "device_version": "1.0.1", "pid": "0x0007", "vid": "0x7667" }, @@ -14,9 +14,6 @@ "rows": ["B4", "B5", "B6", "C0", "E1", "E0"] }, "features": { - "bootmagic": true, - "command": false, - "console": false, "extrakey": true, "mousekey": true, "nkro": true diff --git a/keyboards/lucid/velvet_solder/keymaps/default/keymap.c b/keyboards/lucid/velvet_solder/keymaps/default/keymap.c index 57fa9bf2bc0..7c120c64533 100644 --- a/keyboards/lucid/velvet_solder/keymaps/default/keymap.c +++ b/keyboards/lucid/velvet_solder/keymaps/default/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2022 +Copyright 2023 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 @@ -28,14 +28,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_LAYER1] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) + }; diff --git a/keyboards/lucid/velvet_solder/keymaps/via/keymap.c b/keyboards/lucid/velvet_solder/keymaps/via/keymap.c index 2c7cd72db8b..6b756175432 100644 --- a/keyboards/lucid/velvet_solder/keymaps/via/keymap.c +++ b/keyboards/lucid/velvet_solder/keymaps/via/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2022 +Copyright 2023 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 @@ -30,32 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_LAYER1] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_LAYER2] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_LAYER3] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) + }; diff --git a/keyboards/lucid/velvet_solder/readme.md b/keyboards/lucid/velvet_solder/readme.md index 83fd074047a..120974634b7 100644 --- a/keyboards/lucid/velvet_solder/readme.md +++ b/keyboards/lucid/velvet_solder/readme.md @@ -1,4 +1,6 @@ -# Velvet Solder PCB by Lucid +# Velvet Solder PCB by Maker Keyboards + +![Velvet Solder PCB](https://imgur.com/4lMWY6Dh.jpg) The following is the QMK Firmware for the Velvet Solder PCB by [Maker Keyboards](http://www.makerkeyboards.com). * Keyboard Maintainer: Maker Keyboards From ca2d2a524fafacf8585a17f0d7d52494e24d3ce4 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Oct 2023 02:09:53 +0100 Subject: [PATCH 15/51] Flag more VIAL config options in lint (#22345) --- data/mappings/info_config.hjson | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index ab9a4a0e452..76ad55f7da1 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -190,4 +190,9 @@ "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"}, "PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"}, "VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"}, + + // Items we want flagged in lint + "VIAL_KEYBOARD_UID": {"info_key": "_invalid.vial_uid", "invalid": true}, + "VIAL_UNLOCK_COMBO_COLS": {"info_key": "_invalid.vial_unlock_cols", "invalid": true}, + "VIAL_UNLOCK_COMBO_ROWS": {"info_key": "_invalid.vial_unlock_rows", "invalid": true} } From c133bd1234ffe53606ccec4314ff43f9b4583512 Mon Sep 17 00:00:00 2001 From: Brian Choromanski Date: Sat, 28 Oct 2023 01:25:30 -0400 Subject: [PATCH 16/51] Removed clueboard link as the website has been parked for some time (#22290) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5649ddfa097..f0e49a08e95 100644 --- a/readme.md +++ b/readme.md @@ -6,7 +6,7 @@ [![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) [![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/) -This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR and ARM controllers, and more specifically, the [OLKB product line](https://olkb.com), the [ErgoDox EZ](https://ergodox-ez.com) keyboard, and the [Clueboard product line](https://clueboard.co). +This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR and ARM controllers, and more specifically, the [OLKB product line](https://olkb.com), the [ErgoDox EZ](https://ergodox-ez.com) keyboard, and the Clueboard product line. ## Documentation From 46dedfaaa479332159fde74481f74d35215388b5 Mon Sep 17 00:00:00 2001 From: yuezp <49514776+LXF-YZP@users.noreply.github.com> Date: Sun, 29 Oct 2023 04:28:03 +0800 Subject: [PATCH 17/51] [Keyboard] add enter67 keyboard (#22346) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: “yuezp” <“yuezpchn@126.com”> --- keyboards/enter67/info.json | 106 +++++++++++++++++++++ keyboards/enter67/keymaps/default/keymap.c | 35 +++++++ keyboards/enter67/keymaps/via/keymap.c | 35 +++++++ keyboards/enter67/keymaps/via/rules.mk | 1 + keyboards/enter67/readme.md | 26 +++++ keyboards/enter67/rules.mk | 1 + 6 files changed, 204 insertions(+) create mode 100644 keyboards/enter67/info.json create mode 100644 keyboards/enter67/keymaps/default/keymap.c create mode 100644 keyboards/enter67/keymaps/via/keymap.c create mode 100644 keyboards/enter67/keymaps/via/rules.mk create mode 100644 keyboards/enter67/readme.md create mode 100644 keyboards/enter67/rules.mk diff --git a/keyboards/enter67/info.json b/keyboards/enter67/info.json new file mode 100644 index 00000000000..df1d7f6b5b3 --- /dev/null +++ b/keyboards/enter67/info.json @@ -0,0 +1,106 @@ +{ + "manufacturer": "KipperSun", + "keyboard_name": "enter67", + "maintainer": "KipperSun", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B15", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A7", "B0", "B1", "B2", "B10", "B11", "B12", "B14", "A9", "A10", "A8", "B6", "B7", "B5", "B4"], + "rows": ["A1", "A2", "A3", "A4", "A5"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0xAA66", + "vid": "0x4040" + }, + "community_layouts": ["65_ansi_blocker"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Delete", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Home", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "k90", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PgUp", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 2], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 3], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 4], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 5], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 7], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 8], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 9], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 10], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "PgDn", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K91", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "K92", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Left", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "Down", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "Right", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/enter67/keymaps/default/keymap.c b/keyboards/enter67/keymaps/default/keymap.c new file mode 100644 index 00000000000..1f3d16c0953 --- /dev/null +++ b/keyboards/enter67/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_65_ansi_blocker( + 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_HOME, + 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_END, + 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_PGUP, + 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_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/enter67/keymaps/via/keymap.c b/keyboards/enter67/keymaps/via/keymap.c new file mode 100644 index 00000000000..1f3d16c0953 --- /dev/null +++ b/keyboards/enter67/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_65_ansi_blocker( + 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_HOME, + 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_END, + 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_PGUP, + 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_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/enter67/keymaps/via/rules.mk b/keyboards/enter67/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/enter67/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/enter67/readme.md b/keyboards/enter67/readme.md new file mode 100644 index 00000000000..8a4890ff1d5 --- /dev/null +++ b/keyboards/enter67/readme.md @@ -0,0 +1,26 @@ +# ENTER67 - PCB + +![enter67](https://imgur.com/igF8Lurh.jpg) + +67 layout PCB, with option for stepped Caps Lock + +* Keyboard Maintainer: https://github.com/LXF-YZP +* Hardware Supported: enter67 PCB + +Make example for this keyboard (after setting up your build environment): + + make enter67:default + +Flashing example for this keyboard: + + make enter67: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 \ No newline at end of file diff --git a/keyboards/enter67/rules.mk b/keyboards/enter67/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/enter67/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 538b79657e77fa3f0429cc766a0b73c72fc0c702 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 31 Oct 2023 02:31:58 +0100 Subject: [PATCH 18/51] Fix for swapped PID and VID (#22372) --- keyboards/cannonkeys/is0gr/info.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/cannonkeys/is0gr/info.json b/keyboards/cannonkeys/is0gr/info.json index 3fd95577d89..49aaaddd525 100644 --- a/keyboards/cannonkeys/is0gr/info.json +++ b/keyboards/cannonkeys/is0gr/info.json @@ -18,8 +18,8 @@ "url": "https://cannonkeys.com", "usb": { "device_version": "0.0.1", - "pid": "0xCA04", - "vid": "0x0028" + "pid": "0x0028", + "vid": "0xCA04" }, "community_layouts": ["ortho_1x1"], "layouts": { @@ -29,4 +29,4 @@ ] } } -} \ No newline at end of file +} From cb9705428bb7e34a07f619a9efeb16c21d5f1e1a Mon Sep 17 00:00:00 2001 From: Matt Chan <5021+mattchan@users.noreply.github.com> Date: Mon, 30 Oct 2023 21:51:29 -0400 Subject: [PATCH 19/51] Add Kindakeyboards Conone65 Via support (#22320) --- .../conone65/keymaps/default/keymap.c | 2 +- .../conone65/keymaps/default/readme.md | 1 - .../conone65/keymaps/via/keymap.c | 39 +++++++++++++++++++ .../conone65/keymaps/via/rules.mk | 1 + keyboards/kindakeyboards/conone65/readme.md | 16 ++++++-- 5 files changed, 54 insertions(+), 5 deletions(-) delete mode 100644 keyboards/kindakeyboards/conone65/keymaps/default/readme.md create mode 100644 keyboards/kindakeyboards/conone65/keymaps/via/keymap.c create mode 100644 keyboards/kindakeyboards/conone65/keymaps/via/rules.mk diff --git a/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c b/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c index a3cf3191611..4c0d09aa3a0 100644 --- a/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c +++ b/keyboards/kindakeyboards/conone65/keymaps/default/keymap.c @@ -35,5 +35,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), + ) }; diff --git a/keyboards/kindakeyboards/conone65/keymaps/default/readme.md b/keyboards/kindakeyboards/conone65/keymaps/default/readme.md deleted file mode 100644 index 2f161963477..00000000000 --- a/keyboards/kindakeyboards/conone65/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Conone 65 diff --git a/keyboards/kindakeyboards/conone65/keymaps/via/keymap.c b/keyboards/kindakeyboards/conone65/keymaps/via/keymap.c new file mode 100644 index 00000000000..a70f5041840 --- /dev/null +++ b/keyboards/kindakeyboards/conone65/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Matt Chan + * + * 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 + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + 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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + 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_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_all( + 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_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kindakeyboards/conone65/keymaps/via/rules.mk b/keyboards/kindakeyboards/conone65/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/kindakeyboards/conone65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kindakeyboards/conone65/readme.md b/keyboards/kindakeyboards/conone65/readme.md index f3429142dca..d0694fcc03b 100644 --- a/keyboards/kindakeyboards/conone65/readme.md +++ b/keyboards/kindakeyboards/conone65/readme.md @@ -1,10 +1,12 @@ # Conone 65 +![Conone65 PCB](https://i.imgur.com/50dKAqh.jpeg) + The Conone 65 is a custom keyboard designed and machined in Belgium. -* Keyboard Maintainer: [Evyd13](https://github.com/evyd13) -* Hardware Supported: Conone 65 PCB -* Hardware Availability: [Group buy](https://forms.gle/nEFTxzBxy4KDm3nG8) +* Keyboard Maintainer: [Evyd13](https://github.com/evyd13), [Matt Chan](https://github.com/mattchan) +* Hardware Supported: Conone 65 PCB, ATMega32u4 +* Hardware Availability: https://www.kindakeyboards.be/conone65 Make example for this keyboard (after setting up your build environment): @@ -15,3 +17,11 @@ Flashing example for this keyboard: make kindakeyboards/conone65: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 \ No newline at end of file From 2192098f57a0dce1812a5d12fe57ed593d892d71 Mon Sep 17 00:00:00 2001 From: gregandcin Date: Tue, 31 Oct 2023 20:17:43 -0400 Subject: [PATCH 20/51] [Keyboard] Add TeaQueen (#22352) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/gregandcin/teaqueen/info.json | 106 ++++++++++++++++++ .../teaqueen/keymaps/default/config.h | 9 ++ .../teaqueen/keymaps/default/keymap.c | 40 +++++++ .../gregandcin/teaqueen/keymaps/via/config.h | 9 ++ .../gregandcin/teaqueen/keymaps/via/keymap.c | 40 +++++++ .../gregandcin/teaqueen/keymaps/via/rules.mk | 1 + keyboards/gregandcin/teaqueen/readme.md | 26 +++++ keyboards/gregandcin/teaqueen/rules.mk | 1 + 8 files changed, 232 insertions(+) create mode 100644 keyboards/gregandcin/teaqueen/info.json create mode 100644 keyboards/gregandcin/teaqueen/keymaps/default/config.h create mode 100644 keyboards/gregandcin/teaqueen/keymaps/default/keymap.c create mode 100644 keyboards/gregandcin/teaqueen/keymaps/via/config.h create mode 100644 keyboards/gregandcin/teaqueen/keymaps/via/keymap.c create mode 100644 keyboards/gregandcin/teaqueen/keymaps/via/rules.mk create mode 100644 keyboards/gregandcin/teaqueen/readme.md create mode 100644 keyboards/gregandcin/teaqueen/rules.mk diff --git a/keyboards/gregandcin/teaqueen/info.json b/keyboards/gregandcin/teaqueen/info.json new file mode 100644 index 00000000000..6804ce003be --- /dev/null +++ b/keyboards/gregandcin/teaqueen/info.json @@ -0,0 +1,106 @@ +{ + "manufacturer": "gregandcin", + "keyboard_name": "gregandcin/teaqueen", + "maintainer": "gregandcin", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "NO_PIN"], + "rows": ["GP5", "GP6", "GP7", "GP8", "GP9"] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "GP21"], + "rows": ["GP5", "GP6", "GP7", "GP8", "GP9"] + } + }, + "soft_serial_pin": "GP3" + }, + "url": "https://github.com/gregandcin/teaqueen", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x4743" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 2, "y": 1}, + {"matrix": [0, 1], "x": 3, "y": 1}, + {"matrix": [0, 2], "x": 4, "y": 0.9}, + {"matrix": [0, 3], "x": 5, "y": 0, "r": 12}, + {"matrix": [0, 4], "x": 6, "y": 0, "r": 12}, + {"matrix": [0, 5], "x": 7, "y": 0, "r": 12}, + {"matrix": [0, 6], "x": 8, "y": 0, "r": 12}, + {"matrix": [5, 0], "x": 11.5, "y": 0.75, "r": -12}, + {"matrix": [5, 1], "x": 12.5, "y": 0.75, "r": -12}, + {"matrix": [5, 2], "x": 13.5, "y": 0.75, "r": -12}, + {"matrix": [5, 3], "x": 14.5, "y": 0.75, "r": -12}, + {"matrix": [5, 4], "x": 13.4, "y": 0.9}, + {"matrix": [5, 5], "x": 14.4, "y": 1}, + {"matrix": [5, 6], "x": 15.4, "y": 1, "w": 2}, + {"matrix": [1, 0], "x": 1.75, "y": 2, "w": 1.5}, + {"matrix": [1, 2], "x": 3.25, "y": 2}, + {"matrix": [1, 3], "x": 4.5, "y": 1, "r": 12}, + {"matrix": [1, 4], "x": 5.5, "y": 1, "r": 12}, + {"matrix": [1, 5], "x": 6.5, "y": 1, "r": 12}, + {"matrix": [1, 6], "x": 7.5, "y": 1, "r": 12}, + {"matrix": [6, 0], "x": 11, "y": 1.75, "r": -12}, + {"matrix": [6, 1], "x": 12, "y": 1.75, "r": -12}, + {"matrix": [6, 2], "x": 13, "y": 1.75, "r": -12}, + {"matrix": [6, 3], "x": 14, "y": 1.75, "r": -12}, + {"matrix": [6, 4], "x": 13.13, "y": 1.95}, + {"matrix": [6, 5], "x": 14.15, "y": 2}, + {"matrix": [6, 6], "x": 15.15, "y": 2}, + {"matrix": [6, 7], "x": 16.15, "y": 2, "w": 1.5}, + {"matrix": [2, 0], "x": 1.6, "y": 3, "w": 1.76}, + {"matrix": [2, 2], "x": 3.35, "y": 3}, + {"matrix": [2, 3], "x": 4.75, "y": 2, "r": 12}, + {"matrix": [2, 4], "x": 5.75, "y": 2, "r": 12}, + {"matrix": [2, 5], "x": 6.75, "y": 2, "r": 12}, + {"matrix": [2, 6], "x": 7.75, "y": 2, "r": 12}, + {"matrix": [7, 0], "x": 11.25, "y": 2.75, "r": -12}, + {"matrix": [7, 1], "x": 12.25, "y": 2.75, "r": -12}, + {"matrix": [7, 2], "x": 13.25, "y": 2.75, "r": -12}, + {"matrix": [7, 3], "x": 14.25, "y": 2.75, "r": -12}, + {"matrix": [7, 4], "x": 13.6, "y": 3}, + {"matrix": [7, 5], "x": 14.6, "y": 3}, + {"matrix": [7, 7], "x": 15.6, "y": 3, "w": 2.25}, + {"matrix": [3, 0], "x": 1.4, "y": 4, "w": 2.25}, + {"matrix": [3, 2], "x": 3.65, "y": 4}, + {"matrix": [3, 3], "x": 5.25, "y": 3, "r": 12}, + {"matrix": [3, 4], "x": 6.25, "y": 3, "r": 12}, + {"matrix": [3, 5], "x": 7.25, "y": 3, "r": 12}, + {"matrix": [3, 6], "x": 8.25, "y": 3, "r": 12}, + {"matrix": [8, 0], "x": 10.75, "y": 3.75, "r": -12}, + {"matrix": [8, 1], "x": 11.75, "y": 3.75, "r": -12}, + {"matrix": [8, 2], "x": 12.75, "y": 3.75, "r": -12}, + {"matrix": [8, 3], "x": 13.75, "y": 3.75, "r": -12}, + {"matrix": [8, 4], "x": 13.3, "y": 4}, + {"matrix": [8, 5], "x": 14.3, "y": 4}, + {"matrix": [8, 6], "x": 15.3, "y": 4, "w": 1.75}, + {"matrix": [8, 7], "x": 17.05, "y": 4}, + {"matrix": [4, 0], "x": 1.6, "y": 5, "w": 1.5}, + {"matrix": [4, 1], "x": 3.1, "y": 5}, + {"matrix": [4, 3], "x": 5.4, "y": 4.3, "w": 1.5, "r": 12}, + {"matrix": [4, 5], "x": 6.75, "y": 4, "w": 2, "r": 12}, + {"matrix": [4, 6], "x": 8.75, "y": 4, "r": 12}, + {"matrix": [9, 1], "x": 10.75, "y": 4.75, "w": 2.75, "r": -12}, + {"matrix": [9, 3], "x": 13.6, "y": 4.8, "w": 1.5, "r": -12}, + {"matrix": [9, 6], "x": 15.35, "y": 5}, + {"matrix": [9, 7], "x": 16.35, "y": 5, "w": 1.5} + ] + } + } +} diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/config.h b/keyboards/gregandcin/teaqueen/keymaps/default/config.h new file mode 100644 index 00000000000..3a125fdf63b --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/default/config.h @@ -0,0 +1,9 @@ +// Copyright 2023 gregandcin (@gregandcin) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Select hand configuration */ +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c new file mode 100644 index 00000000000..abc6086270b --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _QWERTY, + _SYMB, + _NAV +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + [_SYMB] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/gregandcin/teaqueen/keymaps/via/config.h b/keyboards/gregandcin/teaqueen/keymaps/via/config.h new file mode 100644 index 00000000000..3a125fdf63b --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/via/config.h @@ -0,0 +1,9 @@ +// Copyright 2023 gregandcin (@gregandcin) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Select hand configuration */ +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS diff --git a/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c new file mode 100644 index 00000000000..abc6086270b --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _QWERTY, + _SYMB, + _NAV +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + [_SYMB] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/gregandcin/teaqueen/keymaps/via/rules.mk b/keyboards/gregandcin/teaqueen/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/gregandcin/teaqueen/readme.md b/keyboards/gregandcin/teaqueen/readme.md new file mode 100644 index 00000000000..2d259e644d2 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/readme.md @@ -0,0 +1,26 @@ +# gregandcin/teaqueen + +![gregandcin/teaqueen](https://i.imgur.com/Wf1EIqwh.png) + +An Alice inspired, split layout keyboar featuring Kailh hotswap sockets. + +* Keyboard Maintainer: [gregandcin](https://github.com/gregandcin) +* Hardware Supported: Elite-Pi, other RP2040 Community Edition Boards + +Make example for this keyboard (after setting up your build environment): + + make gregandcin/teaqueen:default + +Flashing example for this keyboard: + + make gregandcin/teaqueen: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 diff --git a/keyboards/gregandcin/teaqueen/rules.mk b/keyboards/gregandcin/teaqueen/rules.mk new file mode 100644 index 00000000000..161ec22b16e --- /dev/null +++ b/keyboards/gregandcin/teaqueen/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From 999008f0eb8204f2d6d99113ae45aad2337dcf28 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Wed, 1 Nov 2023 09:40:25 +0900 Subject: [PATCH 21/51] [Keyboard] Add Klein_SD (#22371) Co-authored-by: Joel Challis --- keyboards/era/sirind/klein_sd/config.h | 25 + keyboards/era/sirind/klein_sd/halconf.h | 21 + keyboards/era/sirind/klein_sd/info.json | 588 ++++++++++++++++++ .../sirind/klein_sd/keymaps/default/keymap.c | 23 + .../era/sirind/klein_sd/keymaps/via/keymap.c | 23 + .../era/sirind/klein_sd/keymaps/via/rules.mk | 1 + keyboards/era/sirind/klein_sd/mcuconf.h | 22 + keyboards/era/sirind/klein_sd/readme.md | 23 + keyboards/era/sirind/klein_sd/rules.mk | 1 + 9 files changed, 727 insertions(+) create mode 100644 keyboards/era/sirind/klein_sd/config.h create mode 100644 keyboards/era/sirind/klein_sd/halconf.h create mode 100644 keyboards/era/sirind/klein_sd/info.json create mode 100644 keyboards/era/sirind/klein_sd/keymaps/default/keymap.c create mode 100644 keyboards/era/sirind/klein_sd/keymaps/via/keymap.c create mode 100644 keyboards/era/sirind/klein_sd/keymaps/via/rules.mk create mode 100644 keyboards/era/sirind/klein_sd/mcuconf.h create mode 100644 keyboards/era/sirind/klein_sd/readme.md create mode 100644 keyboards/era/sirind/klein_sd/rules.mk diff --git a/keyboards/era/sirind/klein_sd/config.h b/keyboards/era/sirind/klein_sd/config.h new file mode 100644 index 00000000000..ae1d4a9e1d0 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/config.h @@ -0,0 +1,25 @@ +/* Copyright 2023 eerraa + * + * 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 + +/* BACKLIGHT PWM */ +#define BACKLIGHT_PWM_DRIVER PWMD7 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +/* RGB Matrix */ +#define RGB_MATRIX_DEFAULT_VAL 60 +#define RGB_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/halconf.h b/keyboards/era/sirind/klein_sd/halconf.h new file mode 100644 index 00000000000..f57e86df018 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/info.json b/keyboards/era/sirind/klein_sd/info.json new file mode 100644 index 00000000000..53f89f2cb70 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/info.json @@ -0,0 +1,588 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Klein_SD", + "maintainer": "eerraa", + "backlight": { + "pin": "GP15" + }, + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "GP16", + "on_state": 0, + "scroll_lock": "GP17" + }, + "matrix_pins": { + "cols": ["GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP11", "GP10", "GP9", "GP7", "GP6", "GP5", "GP4", "GP3"], + "rows": ["GP18", "GP19", "GP20", "GP21", "GP14", "GP2", "GP1", "GP8", "GP12", "GP13"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 7], "x": 97, "y": 10, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 8, "flags": 4}, + {"matrix": [0, 5], "x": 72, "y": 5, "flags": 4}, + {"matrix": [0, 4], "x": 59, "y": 3, "flags": 4}, + {"matrix": [0, 3], "x": 46, "y": 1, "flags": 4}, + {"matrix": [0, 2], "x": 33, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 20, "y": 2, "flags": 4}, + {"matrix": [0, 0], "x": 4, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 1, "y": 13, "flags": 1}, + {"matrix": [1, 1], "x": 21, "y": 15, "flags": 1}, + {"matrix": [1, 2], "x": 37, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 50, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 63, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 76, "y": 20, "flags": 4}, + {"matrix": [1, 6], "x": 88, "y": 22, "flags": 4}, + {"matrix": [1, 7], "x": 101, "y": 24, "flags": 4}, + {"matrix": [2, 6], "x": 90, "y": 36, "flags": 4}, + {"matrix": [2, 5], "x": 78, "y": 33, "flags": 4}, + {"matrix": [2, 4], "x": 65, "y": 31, "flags": 4}, + {"matrix": [2, 3], "x": 52, "y": 29, "flags": 4}, + {"matrix": [2, 2], "x": 39, "y": 29, "flags": 4}, + {"matrix": [2, 1], "x": 18, "y": 29, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 27, "flags": 1}, + {"matrix": [3, 1], "x": 21, "y": 42, "flags": 1}, + {"matrix": [3, 2], "x": 42, "y": 42, "flags": 4}, + {"matrix": [3, 3], "x": 55, "y": 43, "flags": 4}, + {"matrix": [3, 4], "x": 68, "y": 45, "flags": 4}, + {"matrix": [3, 5], "x": 81, "y": 47, "flags": 4}, + {"matrix": [3, 6], "x": 93, "y": 50, "flags": 4}, + {"matrix": [4, 6], "x": 97, "y": 64, "flags": 1}, + {"matrix": [4, 5], "x": 77, "y": 60, "flags": 4}, + {"matrix": [4, 3], "x": 53, "y": 57, "flags": 1}, + {"matrix": [4, 1], "x": 16, "y": 55, "flags": 1}, + {"matrix": [0, 8], "x": 130, "y": 9, "flags": 4}, + {"matrix": [0, 9], "x": 143, "y": 7, "flags": 4}, + {"matrix": [0, 10], "x": 156, "y": 4, "flags": 4}, + {"matrix": [0, 11], "x": 168, "y": 2, "flags": 4}, + {"matrix": [0, 12], "x": 182, "y": 1, "flags": 4}, + {"matrix": [0, 13], "x": 195, "y": 2, "flags": 4}, + {"matrix": [0, 15], "x": 214, "y": 2, "flags": 1}, + {"matrix": [1, 15], "x": 220, "y": 15, "flags": 4}, + {"matrix": [1, 14], "x": 203, "y": 15, "flags": 4}, + {"matrix": [1, 13], "x": 191, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 178, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 164, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 152, "y": 18, "flags": 4}, + {"matrix": [1, 9], "x": 139, "y": 21, "flags": 4}, + {"matrix": [1, 8], "x": 126, "y": 23, "flags": 4}, + {"matrix": [2, 8], "x": 131, "y": 36, "flags": 4}, + {"matrix": [2, 9], "x": 144, "y": 33, "flags": 4}, + {"matrix": [2, 10], "x": 156, "y": 31, "flags": 4}, + {"matrix": [2, 11], "x": 169, "y": 29, "flags": 4}, + {"matrix": [2, 12], "x": 182, "y": 29, "flags": 4}, + {"matrix": [2, 13], "x": 195, "y": 29, "flags": 4}, + {"matrix": [2, 15], "x": 216, "y": 29, "flags": 1}, + {"matrix": [3, 15], "x": 216, "y": 42, "flags": 1}, + {"matrix": [3, 13], "x": 192, "y": 42, "flags": 4}, + {"matrix": [3, 12], "x": 179, "y": 42, "flags": 4}, + {"matrix": [3, 11], "x": 166, "y": 43, "flags": 4}, + {"matrix": [3, 10], "x": 153, "y": 45, "flags": 4}, + {"matrix": [3, 9], "x": 140, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 128, "y": 50, "flags": 4}, + {"matrix": [4, 9], "x": 141, "y": 61, "flags": 4}, + {"matrix": [4, 11], "x": 168, "y": 57, "flags": 1}, + {"matrix": [4, 13], "x": 192, "y": 55, "flags": 1}, + {"matrix": [4, 14], "x": 205, "y": 55, "flags": 1}, + {"matrix": [4, 15], "x": 224, "y": 55, "flags": 1} + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0005", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_bs_rsft": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c b/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c new file mode 100644 index 00000000000..88878bbcd93 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c b/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c new file mode 100644 index 00000000000..88878bbcd93 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk b/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/mcuconf.h b/keyboards/era/sirind/klein_sd/mcuconf.h new file mode 100644 index 00000000000..b82cc49d7d0 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 eerraa + * + * 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_PWM_USE_PWM7 +#define RP_PWM_USE_PWM7 TRUE \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/readme.md b/keyboards/era/sirind/klein_sd/readme.md new file mode 100644 index 00000000000..a021b843d78 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/readme.md @@ -0,0 +1,23 @@ +# Mont Cervin Klein + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Klein_SD +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/sirind/klein_sd:default + +Flashing example for this keyboard: + + make era/sirind/klein_sd: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 ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/rules.mk b/keyboards/era/sirind/klein_sd/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 837cae95ba8ae9b7d92d4e96ce91dfdf0a5f6374 Mon Sep 17 00:00:00 2001 From: ID64F <54159272+ID64F@users.noreply.github.com> Date: Thu, 2 Nov 2023 09:36:56 -0700 Subject: [PATCH 22/51] boardsource/unicorne - Fixed OLED layers being all set to zero (#22389) --- keyboards/boardsource/unicorne/unicorne.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/boardsource/unicorne/unicorne.c b/keyboards/boardsource/unicorne/unicorne.c index 0c443722e02..22cd1e4a37d 100644 --- a/keyboards/boardsource/unicorne/unicorne.c +++ b/keyboards/boardsource/unicorne/unicorne.c @@ -20,13 +20,13 @@ bool oled_task_kb(void) { oled_write_raw(layer_zero, sizeof(layer_zero)); break; case 1: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_one, sizeof(layer_one)); break; case 2: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_two, sizeof(layer_two)); break; case 3: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_three, sizeof(layer_three)); break; } } else { From ace510ffa0f8d51e1393ae9fcd17da00a5404c37 Mon Sep 17 00:00:00 2001 From: Kiryl Mialeshka <8974488+meskill@users.noreply.github.com> Date: Sat, 4 Nov 2023 00:14:18 +0100 Subject: [PATCH 23/51] docs(rgblight): fix typos (#22399) --- docs/feature_rgblight.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index 39b7e6a6f1e..0288fb04b2a 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -524,7 +524,6 @@ By defining `RGBLIGHT_LED_MAP` as in the example below, you can specify the LED ``` simple mapped -``` ## Clipping Range Using the `rgblight_set_clipping_range()` function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous. @@ -544,8 +543,8 @@ In addition to setting the Clipping Range, you can use `RGBLIGHT_LED_MAP` togeth #define RGBLED_NUM 8 #define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 } -// some soruce - rgblight_set_clipping_range(3, 4); +// some source +rgblight_set_clipping_range(3, 4); ``` clip mapped From 67ff0defe2ea732255453c04eb8ce2f1d40de1cb Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Tue, 7 Nov 2023 00:43:04 +0000 Subject: [PATCH 24/51] Teaqueen: correct layout data (#22406) --- keyboards/gregandcin/teaqueen/info.json | 137 +++++++++++++----------- 1 file changed, 73 insertions(+), 64 deletions(-) diff --git a/keyboards/gregandcin/teaqueen/info.json b/keyboards/gregandcin/teaqueen/info.json index 6804ce003be..841c524e62d 100644 --- a/keyboards/gregandcin/teaqueen/info.json +++ b/keyboards/gregandcin/teaqueen/info.json @@ -36,70 +36,79 @@ "layouts": { "LAYOUT": { "layout": [ - {"matrix": [0, 0], "x": 2, "y": 1}, - {"matrix": [0, 1], "x": 3, "y": 1}, - {"matrix": [0, 2], "x": 4, "y": 0.9}, - {"matrix": [0, 3], "x": 5, "y": 0, "r": 12}, - {"matrix": [0, 4], "x": 6, "y": 0, "r": 12}, - {"matrix": [0, 5], "x": 7, "y": 0, "r": 12}, - {"matrix": [0, 6], "x": 8, "y": 0, "r": 12}, - {"matrix": [5, 0], "x": 11.5, "y": 0.75, "r": -12}, - {"matrix": [5, 1], "x": 12.5, "y": 0.75, "r": -12}, - {"matrix": [5, 2], "x": 13.5, "y": 0.75, "r": -12}, - {"matrix": [5, 3], "x": 14.5, "y": 0.75, "r": -12}, - {"matrix": [5, 4], "x": 13.4, "y": 0.9}, - {"matrix": [5, 5], "x": 14.4, "y": 1}, - {"matrix": [5, 6], "x": 15.4, "y": 1, "w": 2}, - {"matrix": [1, 0], "x": 1.75, "y": 2, "w": 1.5}, - {"matrix": [1, 2], "x": 3.25, "y": 2}, - {"matrix": [1, 3], "x": 4.5, "y": 1, "r": 12}, - {"matrix": [1, 4], "x": 5.5, "y": 1, "r": 12}, - {"matrix": [1, 5], "x": 6.5, "y": 1, "r": 12}, - {"matrix": [1, 6], "x": 7.5, "y": 1, "r": 12}, - {"matrix": [6, 0], "x": 11, "y": 1.75, "r": -12}, - {"matrix": [6, 1], "x": 12, "y": 1.75, "r": -12}, - {"matrix": [6, 2], "x": 13, "y": 1.75, "r": -12}, - {"matrix": [6, 3], "x": 14, "y": 1.75, "r": -12}, - {"matrix": [6, 4], "x": 13.13, "y": 1.95}, - {"matrix": [6, 5], "x": 14.15, "y": 2}, - {"matrix": [6, 6], "x": 15.15, "y": 2}, - {"matrix": [6, 7], "x": 16.15, "y": 2, "w": 1.5}, - {"matrix": [2, 0], "x": 1.6, "y": 3, "w": 1.76}, - {"matrix": [2, 2], "x": 3.35, "y": 3}, - {"matrix": [2, 3], "x": 4.75, "y": 2, "r": 12}, - {"matrix": [2, 4], "x": 5.75, "y": 2, "r": 12}, - {"matrix": [2, 5], "x": 6.75, "y": 2, "r": 12}, - {"matrix": [2, 6], "x": 7.75, "y": 2, "r": 12}, - {"matrix": [7, 0], "x": 11.25, "y": 2.75, "r": -12}, - {"matrix": [7, 1], "x": 12.25, "y": 2.75, "r": -12}, - {"matrix": [7, 2], "x": 13.25, "y": 2.75, "r": -12}, - {"matrix": [7, 3], "x": 14.25, "y": 2.75, "r": -12}, - {"matrix": [7, 4], "x": 13.6, "y": 3}, - {"matrix": [7, 5], "x": 14.6, "y": 3}, - {"matrix": [7, 7], "x": 15.6, "y": 3, "w": 2.25}, - {"matrix": [3, 0], "x": 1.4, "y": 4, "w": 2.25}, - {"matrix": [3, 2], "x": 3.65, "y": 4}, - {"matrix": [3, 3], "x": 5.25, "y": 3, "r": 12}, - {"matrix": [3, 4], "x": 6.25, "y": 3, "r": 12}, - {"matrix": [3, 5], "x": 7.25, "y": 3, "r": 12}, - {"matrix": [3, 6], "x": 8.25, "y": 3, "r": 12}, - {"matrix": [8, 0], "x": 10.75, "y": 3.75, "r": -12}, - {"matrix": [8, 1], "x": 11.75, "y": 3.75, "r": -12}, - {"matrix": [8, 2], "x": 12.75, "y": 3.75, "r": -12}, - {"matrix": [8, 3], "x": 13.75, "y": 3.75, "r": -12}, - {"matrix": [8, 4], "x": 13.3, "y": 4}, - {"matrix": [8, 5], "x": 14.3, "y": 4}, - {"matrix": [8, 6], "x": 15.3, "y": 4, "w": 1.75}, - {"matrix": [8, 7], "x": 17.05, "y": 4}, - {"matrix": [4, 0], "x": 1.6, "y": 5, "w": 1.5}, - {"matrix": [4, 1], "x": 3.1, "y": 5}, - {"matrix": [4, 3], "x": 5.4, "y": 4.3, "w": 1.5, "r": 12}, - {"matrix": [4, 5], "x": 6.75, "y": 4, "w": 2, "r": 12}, - {"matrix": [4, 6], "x": 8.75, "y": 4, "r": 12}, - {"matrix": [9, 1], "x": 10.75, "y": 4.75, "w": 2.75, "r": -12}, - {"matrix": [9, 3], "x": 13.6, "y": 4.8, "w": 1.5, "r": -12}, - {"matrix": [9, 6], "x": 15.35, "y": 5}, - {"matrix": [9, 7], "x": 16.35, "y": 5, "w": 1.5} + {"matrix": [0, 0], "x": 0.6, "y": 0}, + {"matrix": [0, 1], "x": 1.6, "y": 0}, + {"matrix": [0, 2], "x": 2.6, "y": 0}, + {"matrix": [0, 3], "x": 3.6, "y": 0}, + {"matrix": [0, 4], "x": 4.6, "y": 0}, + {"matrix": [0, 5], "x": 5.6, "y": 0}, + {"matrix": [0, 6], "x": 6.6, "y": 0}, + + {"matrix": [5, 0], "x": 8.5, "y": 0}, + {"matrix": [5, 1], "x": 9.5, "y": 0}, + {"matrix": [5, 2], "x": 10.5, "y": 0}, + {"matrix": [5, 3], "x": 11.5, "y": 0}, + {"matrix": [5, 4], "x": 12.5, "y": 0}, + {"matrix": [5, 5], "x": 13.5, "y": 0}, + {"matrix": [5, 6], "x": 14.5, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0.35, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.85, "y": 1}, + {"matrix": [1, 3], "x": 2.85, "y": 1}, + {"matrix": [1, 4], "x": 3.85, "y": 1}, + {"matrix": [1, 5], "x": 4.85, "y": 1}, + {"matrix": [1, 6], "x": 5.85, "y": 1}, + + {"matrix": [6, 0], "x": 8.25, "y": 1}, + {"matrix": [6, 1], "x": 9.25, "y": 1}, + {"matrix": [6, 2], "x": 10.25, "y": 1}, + {"matrix": [6, 3], "x": 11.25, "y": 1}, + {"matrix": [6, 4], "x": 12.25, "y": 1}, + {"matrix": [6, 5], "x": 13.25, "y": 1}, + {"matrix": [6, 6], "x": 14.25, "y": 1}, + {"matrix": [6, 7], "x": 15.25, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0.2, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.95, "y": 2}, + {"matrix": [2, 3], "x": 2.95, "y": 2}, + {"matrix": [2, 4], "x": 3.95, "y": 2}, + {"matrix": [2, 5], "x": 4.95, "y": 2}, + {"matrix": [2, 6], "x": 5.95, "y": 2}, + + {"matrix": [7, 0], "x": 8.75, "y": 2}, + {"matrix": [7, 1], "x": 9.75, "y": 2}, + {"matrix": [7, 2], "x": 10.75, "y": 2}, + {"matrix": [7, 3], "x": 11.75, "y": 2}, + {"matrix": [7, 4], "x": 12.75, "y": 2}, + {"matrix": [7, 5], "x": 13.75, "y": 2}, + {"matrix": [7, 7], "x": 14.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": [8, 0], "x": 8.45, "y": 3}, + {"matrix": [8, 1], "x": 9.45, "y": 3}, + {"matrix": [8, 2], "x": 10.45, "y": 3}, + {"matrix": [8, 3], "x": 11.45, "y": 3}, + {"matrix": [8, 4], "x": 12.45, "y": 3}, + {"matrix": [8, 5], "x": 13.45, "y": 3}, + {"matrix": [8, 6], "x": 14.45, "y": 3, "w": 1.75}, + {"matrix": [8, 7], "x": 16.20, "y": 3}, + + {"matrix": [4, 0], "x": 0.2, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.7, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 6.75, "y": 4}, + + {"matrix": [9, 1], "x": 8.45, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 11.20, "y": 4, "w": 1.5}, + {"matrix": [9, 6], "x": 14.5, "y": 4}, + {"matrix": [9, 7], "x": 15.5, "y": 4, "w": 1.5} ] } } From 5b25a8aa32e79b12644be05359d2f6c1d599e40d Mon Sep 17 00:00:00 2001 From: Leo Lou Date: Tue, 7 Nov 2023 08:43:41 +0800 Subject: [PATCH 25/51] [Keyboard] Add Piantor Pro (#22361) Co-authored-by: Duncan Sutherland Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/beekeeb/piantor_pro/config.h | 17 ++++ keyboards/beekeeb/piantor_pro/info.json | 78 +++++++++++++++++++ .../piantor_pro/keymaps/default/keymap.c | 55 +++++++++++++ keyboards/beekeeb/piantor_pro/readme.md | 20 +++++ keyboards/beekeeb/piantor_pro/rules.mk | 1 + 5 files changed, 171 insertions(+) create mode 100644 keyboards/beekeeb/piantor_pro/config.h create mode 100644 keyboards/beekeeb/piantor_pro/info.json create mode 100644 keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c create mode 100644 keyboards/beekeeb/piantor_pro/readme.md create mode 100644 keyboards/beekeeb/piantor_pro/rules.mk diff --git a/keyboards/beekeeb/piantor_pro/config.h b/keyboards/beekeeb/piantor_pro/config.h new file mode 100644 index 00000000000..4f0be6dbbea --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/config.h @@ -0,0 +1,17 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 +#define SERIAL_USART_PIN_SWAP + +#define USB_VBUS_PIN GP19 + +#define SPLIT_HAND_PIN GP17 +#define SPLIT_HAND_PIN_LOW_IS_LEFT diff --git a/keyboards/beekeeb/piantor_pro/info.json b/keyboards/beekeeb/piantor_pro/info.json new file mode 100644 index 00000000000..c85247550e2 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/info.json @@ -0,0 +1,78 @@ +{ + "manufacturer": "beekeeb", + "keyboard_name": "piantor_pro", + "maintainer": "beekeeb", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP11", "GP12", "GP13", "GP14", "GP15", "GP16"], + "rows": ["GP7", "GP8", "GP9", "GP10"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0xBEEB" + }, + "split": { + "enabled": true + }, + "community_layouts": [ "split_3x6_3" ], + "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/beekeeb/piantor_pro/keymaps/default/keymap.c b/keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c new file mode 100644 index 00000000000..ed09dd7d069 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +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_RIGHT, 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, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ) +}; diff --git a/keyboards/beekeeb/piantor_pro/readme.md b/keyboards/beekeeb/piantor_pro/readme.md new file mode 100644 index 00000000000..08012e43dff --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/readme.md @@ -0,0 +1,20 @@ +# Piantor Pro + +![Piantor Pro](https://i.imgur.com/UPRI64ch.jpg) + +A 42 key hotswappable keyboard with RP2040. + +* Keyboard Maintainer: [beekeeb](https://github.com/beekeeb) +* Hardware Availability: [beekeeb.shop](https://beekeeb.shop) + +Make example for this keyboard (after setting up your build environment): + + make beekeeb/piantor_pro: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). + +## Flashing + +To enter the bootloader mode, disconnect the keyboard from the computer. While holding the BOOT button, connect the keyboard to the computer. + +Run `make beekeeb/piantor_pro:default:flash` or copy the compiled uf2 firmware to the USB mass storage device. diff --git a/keyboards/beekeeb/piantor_pro/rules.mk b/keyboards/beekeeb/piantor_pro/rules.mk new file mode 100644 index 00000000000..161ec22b16e --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From 7324650714d53142ec643bb019f6afa7e9cd9dbd Mon Sep 17 00:00:00 2001 From: Ming-Gih Lam Date: Tue, 7 Nov 2023 18:18:09 -0800 Subject: [PATCH 26/51] Red Herring PCB support (#22409) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/dcpedit/redherring/config.h | 10 ++ keyboards/dcpedit/redherring/info.json | 139 ++++++++++++++++++ .../redherring/keymaps/default/keymap.c | 29 ++++ .../redherring/keymaps/default/rules.mk | 1 + .../dcpedit/redherring/keymaps/via/keymap.c | 31 ++++ .../dcpedit/redherring/keymaps/via/rules.mk | 2 + keyboards/dcpedit/redherring/readme.md | 27 ++++ keyboards/dcpedit/redherring/redherring.c | 91 ++++++++++++ keyboards/dcpedit/redherring/rules.mk | 2 + 9 files changed, 332 insertions(+) create mode 100755 keyboards/dcpedit/redherring/config.h create mode 100644 keyboards/dcpedit/redherring/info.json create mode 100644 keyboards/dcpedit/redherring/keymaps/default/keymap.c create mode 100644 keyboards/dcpedit/redherring/keymaps/default/rules.mk create mode 100644 keyboards/dcpedit/redherring/keymaps/via/keymap.c create mode 100644 keyboards/dcpedit/redherring/keymaps/via/rules.mk create mode 100644 keyboards/dcpedit/redherring/readme.md create mode 100644 keyboards/dcpedit/redherring/redherring.c create mode 100644 keyboards/dcpedit/redherring/rules.mk diff --git a/keyboards/dcpedit/redherring/config.h b/keyboards/dcpedit/redherring/config.h new file mode 100755 index 00000000000..115be3306e5 --- /dev/null +++ b/keyboards/dcpedit/redherring/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE +#define SOLENOID_PIN B5 +#define OLED_IC OLED_IC_SH1107 +#define OLED_DISPLAY_64X128 \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/info.json b/keyboards/dcpedit/redherring/info.json new file mode 100644 index 00000000000..2a91291fcb1 --- /dev/null +++ b/keyboards/dcpedit/redherring/info.json @@ -0,0 +1,139 @@ +{ + "manufacturer": "dcpedit", + "keyboard_name": "Red Herring", + "maintainer": "dcpedit", + "bootloader": "usbasploader", + "bootmagic": { + "matrix": [5, 14] + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C2", "pin_b": "D7"} + ] + }, + "indicators": { + "caps_lock": "A0" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "encoder": true, + "oled": true, + "haptic": true + }, + "matrix_pins": { + "cols": ["A1", "A2", "A3", "B0", "B1", "B2", "B3", "B4", "D0", "D1", "D5", "D6", "C5", "C4", "C3"], + "rows": ["C6", "A6", "A7", "A4", "C7", "A5"] + }, + "processor": "atmega32a", + "qmk": { + "tap_keycode_delay": 10 + }, + "url": "https://github.com/dcpedit/redherring", + "usb": { + "device_version": "1.0.0", + "pid": "0x12ED", + "vid": "0xDC9E" + }, + "dynamic_keymap": { + "layer_count": 2 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "5,14", "matrix": [5, 14], "x": 0.75, "y": 0.25}, + {"label": "0,0", "matrix": [0, 0], "x": 2.25, "y": 0.25}, + {"label": "0,1", "matrix": [0, 1], "x": 3.25, "y": 0.25}, + {"label": "0,2", "matrix": [0, 2], "x": 4.75, "y": 0.25}, + {"label": "0,3", "matrix": [0, 3], "x": 5.75, "y": 0.13}, + {"label": "0,4", "matrix": [0, 4], "x": 6.75, "y": 0.25}, + {"label": "0,5", "matrix": [0, 5], "x": 7.75, "y": 0.38}, + {"label": "0,6", "matrix": [0, 6], "x": 11.5, "y": 0.38}, + {"label": "0,7", "matrix": [0, 7], "x": 12.5, "y": 0.25}, + {"label": "0,8", "matrix": [0, 8], "x": 13.5, "y": 0.13}, + {"label": "0,9", "matrix": [0, 9], "x": 14.5, "y": 0.25}, + {"label": "0,10", "matrix": [0, 10], "x": 16, "y": 0.25}, + {"label": "0,11", "matrix": [0, 11], "x": 17, "y": 0.25}, + {"label": "0,12", "matrix": [0, 12], "x": 18.13, "y": 0.25}, + {"label": "0,13", "matrix": [0, 13], "x": 19.13, "y": 0.25}, + {"label": "0,14", "matrix": [0, 14], "x": 21, "y": 0.25}, + {"label": "1,0", "matrix": [1, 0], "x": 2, "y": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 3, "y": 1.5}, + {"label": "1,2", "matrix": [1, 2], "x": 4.75, "y": 1.5}, + {"label": "1,3", "matrix": [1, 3], "x": 5.75, "y": 1.38}, + {"label": "1,4", "matrix": [1, 4], "x": 6.75, "y": 1.5}, + {"label": "1,5", "matrix": [1, 5], "x": 7.75, "y": 1.63}, + {"label": "1,6", "matrix": [1, 6], "x": 11.5, "y": 1.63}, + {"label": "1,7", "matrix": [1, 7], "x": 12.5, "y": 1.5}, + {"label": "1,8", "matrix": [1, 8], "x": 13.5, "y": 1.38}, + {"label": "1,9", "matrix": [1, 9], "x": 14.5, "y": 1.5}, + {"label": "1,10", "matrix": [1, 10], "x": 16.25, "y": 1.5}, + {"label": "1,11", "matrix": [1, 11], "x": 17.25, "y": 1.5}, + {"label": "1,12", "matrix": [1, 12], "x": 18.25, "y": 1.5}, + {"label": "1,13", "matrix": [1, 13], "x": 19.25, "y": 1.5}, + {"label": "1,14", "matrix": [1, 14], "x": 20.25, "y": 1.5}, + {"label": "2,14", "matrix": [2, 14], "x": 21.75, "y": 1.5}, + {"label": "2,0", "matrix": [2, 0], "x": 1.25, "y": 2.5, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 2.75, "y": 2.5}, + {"label": "2,2", "matrix": [2, 2], "x": 4.75, "y": 2.5}, + {"label": "2,3", "matrix": [2, 3], "x": 5.75, "y": 2.38}, + {"label": "2,4", "matrix": [2, 4], "x": 6.75, "y": 2.5}, + {"label": "2,5", "matrix": [2, 5], "x": 7.75, "y": 2.63}, + {"label": "2,6", "matrix": [2, 6], "x": 11.5, "y": 2.63}, + {"label": "2,7", "matrix": [2, 7], "x": 12.5, "y": 2.5}, + {"label": "2,8", "matrix": [2, 8], "x": 13.5, "y": 2.38}, + {"label": "2,9", "matrix": [2, 9], "x": 14.5, "y": 2.5}, + {"label": "2,10", "matrix": [2, 10], "x": 16.5, "y": 2.5}, + {"label": "2,11", "matrix": [2, 11], "x": 17.5, "y": 2.5}, + {"label": "2,12", "matrix": [2, 12], "x": 18.5, "y": 2.5}, + {"label": "2,13", "matrix": [2, 13], "x": 19.5, "y": 2.5, "w": 1.5}, + {"label": "3,13", "matrix": [3, 13], "x": 21.5, "y": 2.5}, + {"label": "3,0", "matrix": [3, 0], "x": 0.75, "y": 3.5, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 2.5, "y": 3.5}, + {"label": "3,2", "matrix": [3, 2], "x": 4.75, "y": 3.5}, + {"label": "3,3", "matrix": [3, 3], "x": 5.75, "y": 3.38}, + {"label": "3,4", "matrix": [3, 4], "x": 6.75, "y": 3.5}, + {"label": "3,5", "matrix": [3, 5], "x": 7.75, "y": 3.63}, + {"label": "3,6", "matrix": [3, 6], "x": 11.5, "y": 3.63}, + {"label": "3,7", "matrix": [3, 7], "x": 12.5, "y": 3.5}, + {"label": "3,8", "matrix": [3, 8], "x": 13.5, "y": 3.38}, + {"label": "3,9", "matrix": [3, 9], "x": 14.5, "y": 3.5}, + {"label": "3,10", "matrix": [3, 10], "x": 16.75, "y": 3.5}, + {"label": "3,11", "matrix": [3, 11], "x": 17.75, "y": 3.5}, + {"label": "3,12", "matrix": [3, 12], "x": 18.75, "y": 3.5, "w": 2.25}, + {"label": "3,14", "matrix": [3, 14], "x": 21.25, "y": 3.5}, + {"label": "4,14", "matrix": [4, 14], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "4,0", "matrix": [4, 0], "x": 1.25, "y": 4.5}, + {"label": "4,1", "matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"label": "4,2", "matrix": [4, 2], "x": 4.75, "y": 4.5}, + {"label": "4,3", "matrix": [4, 3], "x": 5.75, "y": 4.38}, + {"label": "4,4", "matrix": [4, 4], "x": 6.75, "y": 4.5}, + {"label": "4,5", "matrix": [4, 5], "x": 7.75, "y": 4.63}, + {"label": "5,5", "matrix": [5, 5], "x": 8.75, "y": 4.63}, + {"label": "5,6", "matrix": [5, 6], "x": 10.5, "y": 4.63}, + {"label": "4,6", "matrix": [4, 6], "x": 11.5, "y": 4.63}, + {"label": "4,7", "matrix": [4, 7], "x": 12.5, "y": 4.5}, + {"label": "4,8", "matrix": [4, 8], "x": 13.5, "y": 4.38}, + {"label": "4,9", "matrix": [4, 9], "x": 14.5, "y": 4.5}, + {"label": "4,10", "matrix": [4, 10], "x": 17, "y": 4.5}, + {"label": "4,11", "matrix": [4, 11], "x": 18, "y": 4.5}, + {"label": "4,12", "matrix": [4, 12], "x": 19, "y": 4.5, "w": 1.25}, + {"label": "4,13", "matrix": [4, 13], "x": 20.5, "y": 4.75}, + {"label": "5,0", "matrix": [5, 0], "x": 0.5, "y": 5.5, "w": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 1.75, "y": 5.5, "w": 1.25}, + {"label": "5,2", "matrix": [5, 2], "x": 5.25, "y": 5.5, "w": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 6.5, "y": 5.5, "w": 1.25}, + {"label": "5,4", "matrix": [5, 4], "x": 7.75, "y": 5.63, "w": 2}, + {"label": "5,7", "matrix": [5, 7], "x": 10.5, "y": 5.63, "w": 2.75}, + {"label": "5,8", "matrix": [5, 8], "x": 13.25, "y": 5.5, "w": 1.25}, + {"label": "5,9", "matrix": [5, 9], "x": 16.75, "y": 5.5, "w": 1.25}, + {"label": "5,10", "matrix": [5, 10], "x": 18, "y": 5.5, "w": 1.25}, + {"label": "5,11", "matrix": [5, 11], "x": 19.5, "y": 5.75}, + {"label": "5,12", "matrix": [5, 12], "x": 20.5, "y": 5.75}, + {"label": "5,13", "matrix": [5, 13], "x": 21.5, "y": 5.75} + ] + } + } +} diff --git a/keyboards/dcpedit/redherring/keymaps/default/keymap.c b/keyboards/dcpedit/redherring/keymaps/default/keymap.c new file mode 100644 index 00000000000..36711740506 --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + 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_MUTE, + 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_BSLS, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_MENU, KC_SPC, KC_SPC, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + + [1] = LAYOUT( + QK_RBT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, HF_TOGG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/keymaps/default/rules.mk b/keyboards/dcpedit/redherring/keymaps/default/rules.mk new file mode 100644 index 00000000000..a40474b4d5c --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/keymaps/via/keymap.c b/keyboards/dcpedit/redherring/keymaps/via/keymap.c new file mode 100644 index 00000000000..de67f00042c --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + + 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_MUTE, + 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_BSLS, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_MENU, KC_SPC, KC_SPC, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + + [1] = LAYOUT( + + QK_RBT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, HF_TOGG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/keymaps/via/rules.mk b/keyboards/dcpedit/redherring/keymaps/via/rules.mk new file mode 100644 index 00000000000..4253f570f0b --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/readme.md b/keyboards/dcpedit/redherring/readme.md new file mode 100644 index 00000000000..67f2bdf33db --- /dev/null +++ b/keyboards/dcpedit/redherring/readme.md @@ -0,0 +1,27 @@ +# Red Herring + +![Red Herring](https://i.imgur.com/b6lKmW0h.jpg) + +Unibody ergonomic orthilinar keyboard with through-hole components. Supports standard keycaps, a 64x128 OLED, large rotary encoder knob, and a solenoid. + +* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit) +* Hardware Supported: ATMEGA32A +* Hardware Availability: https://github.com/dcpedit/redherring + +Make example for this keyboard (after setting up your build environment): + + make dcpedit/redherring:default + +Flashing example for this keyboard: + + make dcpedit/redherring: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 ESC key (top-left key) and plug in the keyboard +* **Physical reset button**: On the PCB, while holding down the BOOT button, press and release the RESET button +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/redherring.c b/keyboards/dcpedit/redherring/redherring.c new file mode 100644 index 00000000000..b2c25eb703c --- /dev/null +++ b/keyboards/dcpedit/redherring/redherring.c @@ -0,0 +1,91 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#define LOGO_SIZE 1024 + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM oled_logo[LOGO_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc3, 0x06, 0x18, 0xe1, 0x03, 0x0c, 0xb0, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x00, 0x00, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x04, 0x78, 0x80, 0x00, + 0x00, 0x38, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x1f, 0x3f, 0xfe, 0x3e, 0x7f, 0xfe, 0x7c, 0x7f, 0x7c, + 0x3c, 0x20, 0x20, 0xe0, 0x7c, 0x43, 0x40, 0xc0, 0xf8, 0x87, 0x80, 0x80, 0xe0, 0x1e, 0x01, 0x00, + 0xc0, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x07, 0x78, + 0x80, 0x80, 0x83, 0xbf, 0xff, 0xff, 0xe3, 0xc1, 0xc1, 0xc1, 0xc1, 0xf7, 0xfe, 0xfe, 0xfc, 0x78, + 0x00, 0x00, 0x10, 0x90, 0x88, 0x4c, 0x64, 0x22, 0x12, 0x11, 0x08, 0x0c, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x03, 0x00, 0x80, 0x78, 0x07, 0x00, 0x00, 0xe0, 0x1e, 0x01, 0x01, 0xc1, 0x3d, + 0x07, 0x02, 0x02, 0xf2, 0x0e, 0x02, 0x02, 0x06, 0x7e, 0xc2, 0x02, 0x03, 0x1f, 0xe1, 0x01, 0x01, + 0x07, 0x78, 0x80, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x03, 0x00, 0x00, + 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x20, 0x1e, 0x01, 0x00, 0xc0, 0x7c, 0x07, 0x00, + 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7c, 0xc0, 0x00, 0x01, 0x1e, 0xe0, + 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x03, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xfe, 0xc7, 0x83, 0xff, 0xff, 0x01, 0x81, 0x03, 0x0f, 0xfe, 0xf0, 0x00, 0xff, 0xff, 0x01, + 0x01, 0x61, 0xff, 0x9f, 0x01, 0xfe, 0xef, 0x83, 0xff, 0xff, 0x01, 0x01, 0x03, 0x07, 0xfe, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x19, 0xff, 0xff, 0x3b, 0x79, 0xf8, 0xcf, 0x07, 0x01, 0x00, 0xf1, 0xff, 0x0e, + 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xff, 0x03, 0x01, 0x00, 0x80, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0xf0, 0xf0, 0x00, 0x00, 0x10, 0xf0, 0xf0, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0xb0, 0xf0, + 0x70, 0x90, 0xc0, 0xe2, 0xf3, 0xf3, 0x70, 0x30, 0x31, 0x63, 0xe3, 0xc2, 0x00, 0x83, 0xc3, 0xe3, + 0xf3, 0xf3, 0x73, 0x33, 0x33, 0x60, 0xe0, 0x82, 0x03, 0xf3, 0xf3, 0x13, 0x63, 0xf3, 0xb1, 0xf0, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0xf0, 0xf0, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0xe0, 0xc0, + + 0x00, 0xff, 0xff, 0x30, 0x30, 0x30, 0xff, 0xff, 0x80, 0x1f, 0x7f, 0xe0, 0xc0, 0xc0, 0x9f, 0x1f, + 0x00, 0x07, 0x1f, 0x38, 0xff, 0xff, 0x60, 0x60, 0x10, 0x80, 0xff, 0xff, 0x00, 0x0f, 0x1f, 0x38, + 0xff, 0xff, 0x60, 0x60, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x03, 0xff, + 0xff, 0x1c, 0x78, 0xe0, 0xc0, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x04, 0xe6, 0xe7, 0x63, + 0x60, 0x7f, 0x7f, 0x00, 0x02, 0x46, 0x7f, 0x7f, 0x00, 0x7c, 0x7f, 0x63, 0x61, 0x61, 0x60, 0x60, + 0x60, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x47, 0x07, 0x0f, 0x3f, 0x79, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x7f, 0x7f, 0x47, 0x07, 0x0f, 0x3f, 0x71, 0x40, 0x00, 0x7f, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x40, 0x00, 0x00, 0x47, 0x7f, 0x7f, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x7f, 0x7f, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(oled_logo, LOGO_SIZE); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/rules.mk b/keyboards/dcpedit/redherring/rules.mk new file mode 100644 index 00000000000..35c76d4cf1c --- /dev/null +++ b/keyboards/dcpedit/redherring/rules.mk @@ -0,0 +1,2 @@ +F_CPU = 16000000 +HAPTIC_DRIVER = solenoid \ No newline at end of file From 2337cd1186e6a7b3f085cdafac5c1da87074015b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reibl=20J=C3=A1nos=20D=C3=A1niel?= Date: Wed, 8 Nov 2023 09:31:06 +0100 Subject: [PATCH 27/51] Add riblee handwired split keyboard (#22277) --- keyboards/handwired/riblee_split/config.h | 11 ++ keyboards/handwired/riblee_split/halconf.h | 8 + keyboards/handwired/riblee_split/info.json | 108 ++++++++++++ .../riblee_split/keymaps/default/keymap.c | 155 ++++++++++++++++++ keyboards/handwired/riblee_split/mcuconf.h | 7 + keyboards/handwired/riblee_split/readme.md | 24 +++ keyboards/handwired/riblee_split/rules.mk | 1 + 7 files changed, 314 insertions(+) create mode 100644 keyboards/handwired/riblee_split/config.h create mode 100644 keyboards/handwired/riblee_split/halconf.h create mode 100644 keyboards/handwired/riblee_split/info.json create mode 100644 keyboards/handwired/riblee_split/keymaps/default/keymap.c create mode 100644 keyboards/handwired/riblee_split/mcuconf.h create mode 100644 keyboards/handwired/riblee_split/readme.md create mode 100644 keyboards/handwired/riblee_split/rules.mk diff --git a/keyboards/handwired/riblee_split/config.h b/keyboards/handwired/riblee_split/config.h new file mode 100644 index 00000000000..c3b0720ba5d --- /dev/null +++ b/keyboards/handwired/riblee_split/config.h @@ -0,0 +1,11 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// If the pin is high, then the controller assumes it is the left hand, and if it’s low, it’s assumed to be the right side. +#define SPLIT_HAND_PIN C15 + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN B6 +#define SERIAL_USART_RX_PIN B7 diff --git a/keyboards/handwired/riblee_split/halconf.h b/keyboards/handwired/riblee_split/halconf.h new file mode 100644 index 00000000000..1d5c3fd700f --- /dev/null +++ b/keyboards/handwired/riblee_split/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/handwired/riblee_split/info.json b/keyboards/handwired/riblee_split/info.json new file mode 100644 index 00000000000..49b5ca3a54f --- /dev/null +++ b/keyboards/handwired/riblee_split/info.json @@ -0,0 +1,108 @@ +{ + "manufacturer": "Riblee", + "keyboard_name": "Split", + "maintainer": "riblee", + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B10", "B1", "B0", "A7", "A6", "A5"], + "rows": ["A4", "A3", "A2", "A1", "A0"] + }, + "development_board": "blackpill_f411", + "url": "", + "usb": { + "device_version": "1.0.0", + "vid": "0xFEED", + "pid": "0x2B2B" + }, + "split": { + "enabled": true, + "transport": { + "sync_matrix_state": true + } + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + } + } +} diff --git a/keyboards/handwired/riblee_split/keymaps/default/keymap.c b/keyboards/handwired/riblee_split/keymaps/default/keymap.c new file mode 100644 index 00000000000..f954599c90e --- /dev/null +++ b/keyboards/handwired/riblee_split/keymaps/default/keymap.c @@ -0,0 +1,155 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, 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_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_DVORAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_5x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME,KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_ortho_5x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; diff --git a/keyboards/handwired/riblee_split/mcuconf.h b/keyboards/handwired/riblee_split/mcuconf.h new file mode 100644 index 00000000000..4ea061c7bf3 --- /dev/null +++ b/keyboards/handwired/riblee_split/mcuconf.h @@ -0,0 +1,7 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include_next + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/handwired/riblee_split/readme.md b/keyboards/handwired/riblee_split/readme.md new file mode 100644 index 00000000000..b0acf5b3ba6 --- /dev/null +++ b/keyboards/handwired/riblee_split/readme.md @@ -0,0 +1,24 @@ +# Handwired Split + +This is a compact (12x5) ortholinear split keyboard. + +* Keyboard Maintainer: [Daniel Reibl](https://github.com/riblee) +* Hardware Supported: STM32F411 BlackPill + +Make example for this keyboard (after setting up your build environment): + + make handwired/riblee_split:default + +Flashing example for this keyboard: + + make handwired/riblee_split: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 diff --git a/keyboards/handwired/riblee_split/rules.mk b/keyboards/handwired/riblee_split/rules.mk new file mode 100644 index 00000000000..c6e29883213 --- /dev/null +++ b/keyboards/handwired/riblee_split/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = usart From ebac02a7b2c9221387364b3116bcf912c191e333 Mon Sep 17 00:00:00 2001 From: ai03 Date: Thu, 9 Nov 2023 02:39:13 +0900 Subject: [PATCH 28/51] [Keyboard] Add Duet Switch Tester (#22367) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/ai03/duet/config.h | 6 + keyboards/ai03/duet/info.json | 139 ++++++++++++++++++ .../ai03/duet/keymaps/coordinate/keymap.c | 34 +++++ .../ai03/duet/keymaps/coordinate/readme.md | 4 + keyboards/ai03/duet/keymaps/default/keymap.c | 14 ++ keyboards/ai03/duet/keymaps/default/readme.md | 4 + keyboards/ai03/duet/readme.md | 28 ++++ keyboards/ai03/duet/rules.mk | 1 + 8 files changed, 230 insertions(+) create mode 100644 keyboards/ai03/duet/config.h create mode 100644 keyboards/ai03/duet/info.json create mode 100644 keyboards/ai03/duet/keymaps/coordinate/keymap.c create mode 100644 keyboards/ai03/duet/keymaps/coordinate/readme.md create mode 100644 keyboards/ai03/duet/keymaps/default/keymap.c create mode 100644 keyboards/ai03/duet/keymaps/default/readme.md create mode 100644 keyboards/ai03/duet/readme.md create mode 100644 keyboards/ai03/duet/rules.mk diff --git a/keyboards/ai03/duet/config.h b/keyboards/ai03/duet/config.h new file mode 100644 index 00000000000..9cebd11c6ba --- /dev/null +++ b/keyboards/ai03/duet/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 128 diff --git a/keyboards/ai03/duet/info.json b/keyboards/ai03/duet/info.json new file mode 100644 index 00000000000..1d11c868a37 --- /dev/null +++ b/keyboards/ai03/duet/info.json @@ -0,0 +1,139 @@ +{ + "manufacturer": "ai03 Design Studio", + "keyboard_name": "Duet Switch Tester", + "maintainer": "ai03-2725", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6"], + "rows": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0028", + "vid": "0xA103" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.75, "y": 0}, + {"matrix": [0, 7], "x": 7.75, "y": 0}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10, "y": 0}, + {"matrix": [0, 10], "x": 11.25, "y": 0}, + {"matrix": [0, 11], "x": 12.25, "y": 0}, + {"matrix": [0, 12], "x": 13.5, "y": 0}, + {"matrix": [0, 13], "x": 14.5, "y": 0}, + {"matrix": [0, 14], "x": 15.75, "y": 0}, + {"matrix": [0, 15], "x": 16.75, "y": 0}, + {"matrix": [0, 16], "x": 18, "y": 0}, + {"matrix": [0, 17], "x": 19, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 9, "y": 1}, + {"matrix": [1, 9], "x": 10, "y": 1}, + {"matrix": [1, 10], "x": 11.25, "y": 1}, + {"matrix": [1, 11], "x": 12.25, "y": 1}, + {"matrix": [1, 12], "x": 13.5, "y": 1}, + {"matrix": [1, 13], "x": 14.5, "y": 1}, + {"matrix": [1, 14], "x": 15.75, "y": 1}, + {"matrix": [1, 15], "x": 16.75, "y": 1}, + {"matrix": [1, 16], "x": 18, "y": 1}, + {"matrix": [1, 17], "x": 19, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11.25, "y": 2}, + {"matrix": [2, 11], "x": 12.25, "y": 2}, + {"matrix": [2, 12], "x": 13.5, "y": 2}, + {"matrix": [2, 13], "x": 14.5, "y": 2}, + {"matrix": [2, 14], "x": 15.75, "y": 2}, + {"matrix": [2, 15], "x": 16.75, "y": 2}, + {"matrix": [2, 16], "x": 18, "y": 2}, + {"matrix": [2, 17], "x": 19, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3}, + {"matrix": [3, 12], "x": 13.5, "y": 3}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.75, "y": 3}, + {"matrix": [3, 15], "x": 16.75, "y": 3}, + {"matrix": [3, 16], "x": 18, "y": 3}, + {"matrix": [3, 17], "x": 19, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.5, "y": 4}, + {"matrix": [4, 5], "x": 5.5, "y": 4}, + {"matrix": [4, 6], "x": 6.75, "y": 4}, + {"matrix": [4, 7], "x": 7.75, "y": 4}, + {"matrix": [4, 8], "x": 9, "y": 4}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11.25, "y": 4}, + {"matrix": [4, 11], "x": 12.25, "y": 4}, + {"matrix": [4, 12], "x": 13.5, "y": 4}, + {"matrix": [4, 13], "x": 14.5, "y": 4}, + {"matrix": [4, 14], "x": 15.75, "y": 4}, + {"matrix": [4, 15], "x": 16.75, "y": 4}, + {"matrix": [4, 16], "x": 18, "y": 4}, + {"matrix": [4, 17], "x": 19, "y": 4}, + {"matrix": [5, 0], "x": 0, "y": 5}, + {"matrix": [5, 1], "x": 1, "y": 5}, + {"matrix": [5, 2], "x": 2.25, "y": 5}, + {"matrix": [5, 3], "x": 3.25, "y": 5}, + {"matrix": [5, 4], "x": 4.5, "y": 5}, + {"matrix": [5, 5], "x": 5.5, "y": 5}, + {"matrix": [5, 6], "x": 6.75, "y": 5}, + {"matrix": [5, 7], "x": 7.75, "y": 5}, + {"matrix": [5, 8], "x": 9, "y": 5}, + {"matrix": [5, 9], "x": 10, "y": 5}, + {"matrix": [5, 10], "x": 11.25, "y": 5}, + {"matrix": [5, 11], "x": 12.25, "y": 5}, + {"matrix": [5, 12], "x": 13.5, "y": 5}, + {"matrix": [5, 13], "x": 14.5, "y": 5}, + {"matrix": [5, 14], "x": 15.75, "y": 5}, + {"matrix": [5, 15], "x": 16.75, "y": 5}, + {"matrix": [5, 16], "x": 18, "y": 5}, + {"matrix": [5, 17], "x": 19, "y": 5} + ] + } + } +} diff --git a/keyboards/ai03/duet/keymaps/coordinate/keymap.c b/keyboards/ai03/duet/keymaps/coordinate/keymap.c new file mode 100644 index 00000000000..821c0295343 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/coordinate/keymap.c @@ -0,0 +1,34 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + + +/* Coordinate keymap - designed to send a string in the format [a-r][0-5] corresponding to the matrix position, where a0 is the top left and r5 is bottom right */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0 + ), +}; + + +/* String generation */ + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + if (record->event.pressed) { + char col = record->event.key.col + 'a'; + char row = record->event.key.row + '0'; + char result[2] = {col, row}; + send_string(result); + } + + return false; +} diff --git a/keyboards/ai03/duet/keymaps/coordinate/readme.md b/keyboards/ai03/duet/keymaps/coordinate/readme.md new file mode 100644 index 00000000000..de8245875d1 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/coordinate/readme.md @@ -0,0 +1,4 @@ +# The coordinate keymap for Duet + +An example keymap which sends a string `[a-r][0-5]` corresponding to the column-row position of the pressed switch. +Possibly useful for pairing to a kiosk device provided the display application can parse and handle this format. diff --git a/keyboards/ai03/duet/keymaps/default/keymap.c b/keyboards/ai03/duet/keymaps/default/keymap.c new file mode 100644 index 00000000000..29f63678a80 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/default/keymap.c @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0 + ), +}; diff --git a/keyboards/ai03/duet/keymaps/default/readme.md b/keyboards/ai03/duet/keymaps/default/readme.md new file mode 100644 index 00000000000..fdf727dc96f --- /dev/null +++ b/keyboards/ai03/duet/keymaps/default/readme.md @@ -0,0 +1,4 @@ +# The default keymap for Duet + +Since this is a very irregular keyboard with unique use cases, the keymap should be customized to meet one's needs and to match the requirements of the corresponding display software (if any). +By default, all keys send `KC_0` to simply notify the host that an arbitrary key has been pressed. diff --git a/keyboards/ai03/duet/readme.md b/keyboards/ai03/duet/readme.md new file mode 100644 index 00000000000..43c3d6f7c59 --- /dev/null +++ b/keyboards/ai03/duet/readme.md @@ -0,0 +1,28 @@ +# Duet Switch Tester + +![Cover image](https://i.imgur.com/sFuHJbLh.png) + +A switch tester intended for event/storefront use + +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) +* Hardware Supported: The [Duet PCB](https://github.com/ai03-2725/duet-switch-tester/tree/main/Duet-MainPCB), powered by the RP2040 +* Hardware Availability: [Open-source](https://github.com/ai03-2725/duet-switch-tester) + + +Make example for this keyboard (after setting up your build environment): + + make ai03/duet:default + +Flashing example for this keyboard: + + make ai03/duet: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**: Press the reset button on the back of the PCB while holding the Bootmode switch +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/ai03/duet/rules.mk b/keyboards/ai03/duet/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/ai03/duet/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 80708a91efd38f0a8b7c0c3b58a0992f33459e8f Mon Sep 17 00:00:00 2001 From: Kelwin0313 <139501176+Kelwin0313@users.noreply.github.com> Date: Thu, 9 Nov 2023 01:40:28 +0800 Subject: [PATCH 29/51] [Keyboard] Add PCB Utopia88 (#22257) --- keyboards/kelwin/utopia88/info.json | 131 ++++++++++++++++++ .../kelwin/utopia88/keymaps/default/keymap.c | 36 +++++ .../kelwin/utopia88/keymaps/via/keymap.c | 36 +++++ .../kelwin/utopia88/keymaps/via/rules.mk | 1 + keyboards/kelwin/utopia88/readme.md | 25 ++++ keyboards/kelwin/utopia88/rules.mk | 1 + 6 files changed, 230 insertions(+) create mode 100644 keyboards/kelwin/utopia88/info.json create mode 100644 keyboards/kelwin/utopia88/keymaps/default/keymap.c create mode 100644 keyboards/kelwin/utopia88/keymaps/via/keymap.c create mode 100644 keyboards/kelwin/utopia88/keymaps/via/rules.mk create mode 100644 keyboards/kelwin/utopia88/readme.md create mode 100644 keyboards/kelwin/utopia88/rules.mk diff --git a/keyboards/kelwin/utopia88/info.json b/keyboards/kelwin/utopia88/info.json new file mode 100644 index 00000000000..406642d41c7 --- /dev/null +++ b/keyboards/kelwin/utopia88/info.json @@ -0,0 +1,131 @@ +{ + "keyboard_name": "Utopia88", + "manufacturer": "Kelwin Studio", + "maintainer": "Kelwin Studio", + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + "indicators": { + "caps_lock": "B0" + }, + "matrix_pins": { + "cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "B2", "B3", "B1"], + "rows": ["B7", "D5", "D3", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4B53" + }, + "community_layouts": ["tkl_f13_ansi_tsangan"], + "layouts": { + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix":[0,0], "x":0, "y":0}, + {"matrix":[0,1], "x":1.25, "y":0}, + {"matrix":[0,2], "x":2.25, "y":0}, + {"matrix":[0,3], "x":3.25, "y":0}, + {"matrix":[0,4], "x":4.25, "y":0}, + {"matrix":[0,6], "x":5.5, "y":0}, + {"matrix":[0,7], "x":6.5, "y":0}, + {"matrix":[0,8], "x":7.5, "y":0}, + {"matrix":[0,9], "x":8.5, "y":0}, + {"matrix":[0,10], "x":9.75, "y":0}, + {"matrix":[0,11], "x":10.75, "y":0}, + {"matrix":[0,12], "x":11.75, "y":0}, + {"matrix":[0,13], "x":12.75, "y":0}, + {"matrix":[0,14], "x":14, "y":0}, + {"matrix":[0,15], "x":15.25, "y":0}, + {"matrix":[0,16], "x":16.25, "y":0}, + {"matrix":[0,17], "x":17.25, "y":0}, + + {"matrix":[1,0], "x":0, "y":1.25}, + {"matrix":[1,1], "x":1, "y":1.25}, + {"matrix":[1,2], "x":2, "y":1.25}, + {"matrix":[1,3], "x":3, "y":1.25}, + {"matrix":[1,4], "x":4, "y":1.25}, + {"matrix":[1,5], "x":5, "y":1.25}, + {"matrix":[1,6], "x":6, "y":1.25}, + {"matrix":[1,7], "x":7, "y":1.25}, + {"matrix":[1,8], "x":8, "y":1.25}, + {"matrix":[1,9], "x":9, "y":1.25}, + {"matrix":[1,10], "x":10, "y":1.25}, + {"matrix":[1,11], "x":11, "y":1.25}, + {"matrix":[1,12], "x":12, "y":1.25}, + {"matrix":[1,14], "x":13, "y":1.25, "w":2}, + {"matrix":[1,15], "x":15.25, "y":1.25}, + {"matrix":[1,16], "x":16.25, "y":1.25}, + {"matrix":[1,17], "x":17.25, "y":1.25}, + + {"matrix":[2,0], "x":0, "y":2.25, "w":1.5}, + {"matrix":[2,2], "x":1.5, "y":2.25}, + {"matrix":[2,3], "x":2.5, "y":2.25}, + {"matrix":[2,4], "x":3.5, "y":2.25}, + {"matrix":[2,5], "x":4.5, "y":2.25}, + {"matrix":[2,6], "x":5.5, "y":2.25}, + {"matrix":[2,7], "x":6.5, "y":2.25}, + {"matrix":[2,8], "x":7.5, "y":2.25}, + {"matrix":[2,9], "x":8.5, "y":2.25}, + {"matrix":[2,10], "x":9.5, "y":2.25}, + {"matrix":[2,11], "x":10.5, "y":2.25}, + {"matrix":[2,12], "x":11.5, "y":2.25}, + {"matrix":[2,13], "x":12.5, "y":2.25}, + {"matrix":[2,14], "x":13.5, "y":2.25, "w":1.5}, + {"matrix":[2,15], "x":15.25, "y":2.25}, + {"matrix":[2,16], "x":16.25, "y":2.25}, + {"matrix":[2,17], "x":17.25, "y":2.25}, + + {"matrix":[3,0], "x":0, "y":3.25, "w":1.75}, + {"matrix":[3,2], "x":1.75, "y":3.25}, + {"matrix":[3,3], "x":2.75, "y":3.25}, + {"matrix":[3,4], "x":3.75, "y":3.25}, + {"matrix":[3,5], "x":4.75, "y":3.25}, + {"matrix":[3,6], "x":5.75, "y":3.25}, + {"matrix":[3,7], "x":6.75, "y":3.25}, + {"matrix":[3,8], "x":7.75, "y":3.25}, + {"matrix":[3,9], "x":8.75, "y":3.25}, + {"matrix":[3,10], "x":9.75, "y":3.25}, + {"matrix":[3,11], "x":10.75, "y":3.25}, + {"matrix":[3,12], "x":11.75, "y":3.25}, + {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25}, + {"matrix":[4,1], "x":0, "y":4.25, "w":2.25}, + {"matrix":[4,2], "x":2.25, "y":4.25}, + {"matrix":[4,3], "x":3.25, "y":4.25}, + {"matrix":[4,4], "x":4.25, "y":4.25}, + {"matrix":[4,5], "x":5.25, "y":4.25}, + {"matrix":[4,6], "x":6.25, "y":4.25}, + {"matrix":[4,7], "x":7.25, "y":4.25}, + {"matrix":[4,8], "x":8.25, "y":4.25}, + {"matrix":[4,9], "x":9.25, "y":4.25}, + {"matrix":[4,10], "x":10.25, "y":4.25}, + {"matrix":[4,11], "x":11.25, "y":4.25}, + {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75}, + {"matrix":[4,16], "x":16.25, "y":4.25}, + + {"matrix":[5,0], "x":0, "y":5.25, "w":1.5}, + {"matrix":[5,2], "x":1.5, "y":5.25}, + {"matrix":[5,3], "x":2.5, "y":5.25, "w":1.5}, + {"matrix":[5,7], "x":4, "y":5.25, "w":7}, + {"matrix":[5,11], "x":11, "y":5.25, "w":1.5}, + {"matrix":[5,13], "x":12.5, "y":5.25}, + {"matrix":[5,14], "x":13.5, "y":5.25, "w":1.5}, + {"matrix":[5,15], "x":15.25, "y":5.25}, + {"matrix":[5,16], "x":16.25, "y":5.25}, + {"matrix":[5,17], "x":17.25, "y":5.25} + ] + } + } +} + \ No newline at end of file diff --git a/keyboards/kelwin/utopia88/keymaps/default/keymap.c b/keyboards/kelwin/utopia88/keymaps/default/keymap.c new file mode 100644 index 00000000000..d7afaf0877a --- /dev/null +++ b/keyboards/kelwin/utopia88/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2023 kelwin + * + * 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_tkl_f13_ansi_tsangan( + 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_NO, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kelwin/utopia88/keymaps/via/keymap.c b/keyboards/kelwin/utopia88/keymaps/via/keymap.c new file mode 100644 index 00000000000..d7afaf0877a --- /dev/null +++ b/keyboards/kelwin/utopia88/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2023 kelwin + * + * 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_tkl_f13_ansi_tsangan( + 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_NO, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kelwin/utopia88/keymaps/via/rules.mk b/keyboards/kelwin/utopia88/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/kelwin/utopia88/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kelwin/utopia88/readme.md b/keyboards/kelwin/utopia88/readme.md new file mode 100644 index 00000000000..f34e3540ec8 --- /dev/null +++ b/keyboards/kelwin/utopia88/readme.md @@ -0,0 +1,25 @@ +# Utopia88 + +![Utopia88](https://i.imgur.com/pRKQIIHh.jpeg) + +* Keyboard Maintainer: [kelwin](https://github.com/Kelwin0313) +* Hardware Supported: Utopia88 PCBs, atmega32u4 +* Hardware Availability: Private Group-Buy + +Make example for this keyboard (after setting up your build environment): + + make kelwin/utopia88:default + +Flashing example for this keyboard: + + make kelwin/utopia88: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 diff --git a/keyboards/kelwin/utopia88/rules.mk b/keyboards/kelwin/utopia88/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/kelwin/utopia88/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 64bbeff57d34d8795cc1f6952d66bc96141c9cb5 Mon Sep 17 00:00:00 2001 From: Yak <68242321+yakMM@users.noreply.github.com> Date: Wed, 8 Nov 2023 18:42:08 +0100 Subject: [PATCH 30/51] Fix Herringbone pro Layouts (#22317) Co-authored-by: Duncan Sutherland --- keyboards/rmi_kb/herringbone/pro/info.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/rmi_kb/herringbone/pro/info.json b/keyboards/rmi_kb/herringbone/pro/info.json index bbef69f28aa..caab0f11e15 100644 --- a/keyboards/rmi_kb/herringbone/pro/info.json +++ b/keyboards/rmi_kb/herringbone/pro/info.json @@ -15,7 +15,7 @@ "diode_direction": "COL2ROW", "encoder": { "rotary": [ - {"pin_a": "C3", "pin_b": "C2"} + {"pin_a": "C3", "pin_b": "C2", "resolution": 2} ] }, "processor": "atmega32a", @@ -247,9 +247,7 @@ {"matrix": [0, 13], "x": 14, "y": 0}, - {"matrix": [6, 0], "x": 15.25, "y": 0}, - {"matrix": [0, 14], "x": 16.25, "y": 0}, - {"matrix": [6, 1], "x": 17.25, "y": 0}, + {"matrix": [0, 14], "x": 15.5, "y": 0}, {"matrix": [1, 0], "x": 0, "y": 1.25}, {"matrix": [1, 1], "x": 1, "y": 1.25}, @@ -329,7 +327,9 @@ {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.5}, {"matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 13], "x": 14.25, "y": 5.5} + {"matrix": [5, 12], "x": 13.25, "y": 5.5}, + {"matrix": [5, 13], "x": 14.25, "y": 5.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.5} ] } } From 72f93e7fc2f6eae29c4b4a5a0875714c48e1a69b Mon Sep 17 00:00:00 2001 From: "Fredrik A. Kristiansen" Date: Wed, 8 Nov 2023 22:00:48 +0100 Subject: [PATCH 31/51] Add iso85k keyboard (#22411) Co-authored-by: Duncan Sutherland --- keyboards/handwired/iso85k/info.json | 123 ++++++++++++++++++ .../handwired/iso85k/keymaps/default/keymap.c | 28 ++++ .../handwired/iso85k/keymaps/via/keymap.c | 28 ++++ .../handwired/iso85k/keymaps/via/rules.mk | 1 + keyboards/handwired/iso85k/readme.md | 25 ++++ keyboards/handwired/iso85k/rules.mk | 1 + 6 files changed, 206 insertions(+) create mode 100644 keyboards/handwired/iso85k/info.json create mode 100644 keyboards/handwired/iso85k/keymaps/default/keymap.c create mode 100644 keyboards/handwired/iso85k/keymaps/via/keymap.c create mode 100644 keyboards/handwired/iso85k/keymaps/via/rules.mk create mode 100644 keyboards/handwired/iso85k/readme.md create mode 100644 keyboards/handwired/iso85k/rules.mk diff --git a/keyboards/handwired/iso85k/info.json b/keyboards/handwired/iso85k/info.json new file mode 100644 index 00000000000..625a356e307 --- /dev/null +++ b/keyboards/handwired/iso85k/info.json @@ -0,0 +1,123 @@ +{ + "manufacturer": "Fredrik A. Kristiansen", + "keyboard_name": "iso85k", + "maintainer": "FredrikAleksander", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + "matrix_pins": { + "cols": ["A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "C10", "C11", "C12", "B3", "B4", "B5", "B8", "B9"], + "rows": ["C7", "C6", "B15", "B14", "B13", "B12"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0xCAFE", + "vid": "0xD666" + }, + "community_layouts": ["75_iso"], + "layouts": { + "LAYOUT_75_iso": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "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": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 14], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 15], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 12], "x": 12.75, "y": 3}, + {"matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [3, 15], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 11], "x": 11.25, "y": 4}, + {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5}, + {"matrix": [5, 11], "x": 11, "y": 5}, + {"matrix": [5, 12], "x": 12, "y": 5}, + {"matrix": [5, 13], "x": 13, "y": 5}, + {"matrix": [5, 14], "x": 14, "y": 5}, + {"matrix": [5, 15], "x": 15, "y": 5} + ] + } + } +} diff --git a/keyboards/handwired/iso85k/keymaps/default/keymap.c b/keyboards/handwired/iso85k/keymaps/default/keymap.c new file mode 100644 index 00000000000..aaba9c1ea1e --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2023 Fredrik A. Kristiansen (fredrikaxk@gmail.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BL, + _FL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_75_iso( + 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_PAUS, KC_DEL, + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_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_PGDN, + 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_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FL] = LAYOUT_75_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUM, KC_SCRL, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/iso85k/keymaps/via/keymap.c b/keyboards/handwired/iso85k/keymaps/via/keymap.c new file mode 100644 index 00000000000..3d64364cc69 --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2023 Fredrik A. Kristiansen (fredrikaxk@gmail.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BL, + _FL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_75_iso( + 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_PAUS, KC_DEL, + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_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_PGDN, + 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_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FL] = LAYOUT_75_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUM, KC_SCRL, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/iso85k/keymaps/via/rules.mk b/keyboards/handwired/iso85k/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/iso85k/readme.md b/keyboards/handwired/iso85k/readme.md new file mode 100644 index 00000000000..89e3d60d2ae --- /dev/null +++ b/keyboards/handwired/iso85k/readme.md @@ -0,0 +1,25 @@ +# iso85k + +*A 85-key ISO keyboard* + +* Keyboard Maintainer: [Fredrik A. Kristiansen](https://github.com/FredrikAleksander) +* Hardware Supported: Custom PCB using STM32F072 +* Hardware Availability: PCB gerbers available upon request (fredrikaxk@gmail.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/iso85k:via + +Flashing example for this keyboard: + + make handwired/iso85k:via: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, while shorting the pins marked BOOT0 +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/iso85k/rules.mk b/keyboards/handwired/iso85k/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/handwired/iso85k/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 10cdd007515788c3bd95bbe3b485f14548f7fb31 Mon Sep 17 00:00:00 2001 From: John Barbero Date: Thu, 9 Nov 2023 02:55:08 +0100 Subject: [PATCH 32/51] Fix corne keylog (#22420) * [Keyboard] Fix bug in set_keylog function Fixes issue where some keys would not trigger the oled to output the row and column of a pressed key (would happen with LT(...) for my keymap) * [Keyboard] Tiny improvement to oled_render_keylog for crkbd Added improvement suggestion I got for another keyboard --- keyboards/crkbd/crkbd.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c index 3c1cd5565be..2ac0e63125f 100644 --- a/keyboards/crkbd/crkbd.c +++ b/keyboards/crkbd/crkbd.c @@ -71,6 +71,10 @@ uint8_t last_col; static const char PROGMEM code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; static void set_keylog(uint16_t keycode, keyrecord_t *record) { + // save the row and column (useful even if we can't find a keycode to show) + last_row = record->event.key.row; + last_col = record->event.key.col; + key_name = ' '; last_keycode = keycode; if (IS_QK_MOD_TAP(keycode)) { @@ -92,8 +96,6 @@ static void set_keylog(uint16_t keycode, keyrecord_t *record) { // update keylog key_name = pgm_read_byte(&code_to_name[keycode]); - last_row = record->event.key.row; - last_col = record->event.key.col; } static const char *depad_str(const char *depad_str, char depad_char) { @@ -103,11 +105,9 @@ static const char *depad_str(const char *depad_str, char depad_char) { } static void oled_render_keylog(void) { - const char *last_row_str = get_u8_str(last_row, ' '); - oled_write(depad_str(last_row_str, ' '), false); + oled_write_char('0' + last_row, false); oled_write_P(PSTR("x"), false); - const char *last_col_str = get_u8_str(last_col, ' '); - oled_write(depad_str(last_col_str, ' '), false); + oled_write_char('0' + last_col, false); oled_write_P(PSTR(", k"), false); const char *last_keycode_str = get_u16_str(last_keycode, ' '); oled_write(depad_str(last_keycode_str, ' '), false); From 0b7dba156c14fad4aeb2e918bf069a3c3f8f2815 Mon Sep 17 00:00:00 2001 From: Matthias Liffers Date: Thu, 9 Nov 2023 09:57:16 +0800 Subject: [PATCH 33/51] Fix indicator LED definition for Sofle RGB. (#22408) --- keyboards/sofle/rev1/rev1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/sofle/rev1/rev1.c b/keyboards/sofle/rev1/rev1.c index d0197ffba55..df0f23a26cc 100644 --- a/keyboards/sofle/rev1/rev1.c +++ b/keyboards/sofle/rev1/rev1.c @@ -68,14 +68,14 @@ led_config_t g_led_config = { {144, 10}, {144, 22}, {144, 34}, {144, 47}, }, { - LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, From daabe2d8c5eab9d9d605f8e079dfae82d2b06a8d Mon Sep 17 00:00:00 2001 From: Panos Sakkos Date: Thu, 9 Nov 2023 04:03:07 +0200 Subject: [PATCH 34/51] Update layer state of Lily58 from 'Default' to 'Base' (#22397) --- keyboards/lily58/lib/layer_state_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lily58/lib/layer_state_reader.c b/keyboards/lily58/lib/layer_state_reader.c index ffc2c4e2c67..69b46130931 100644 --- a/keyboards/lily58/lib/layer_state_reader.c +++ b/keyboards/lily58/lib/layer_state_reader.c @@ -13,7 +13,7 @@ const char *read_layer_state(void) { switch (layer_state) { case L_BASE: - snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default"); + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Base"); break; case L_RAISE: snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise"); From 39d0a14258cbd1dd640405cdbc806dadb01521a8 Mon Sep 17 00:00:00 2001 From: John Barbero Date: Thu, 9 Nov 2023 18:52:47 +0100 Subject: [PATCH 35/51] Add SNES Macropad keyboard (#22377) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/snes_macropad/config.h | 12 ++ keyboards/snes_macropad/halconf.h | 8 + keyboards/snes_macropad/info.json | 79 ++++++++++ .../snes_macropad/keymaps/default/keymap.c | 75 +++++++++ .../snes_macropad/keymaps/jbarberu/keymap.c | 99 ++++++++++++ keyboards/snes_macropad/keymaps/test/keymap.c | 75 +++++++++ keyboards/snes_macropad/matrix.c | 146 ++++++++++++++++++ keyboards/snes_macropad/mcuconf.h | 18 +++ keyboards/snes_macropad/readme.md | 36 +++++ keyboards/snes_macropad/rules.mk | 4 + keyboards/snes_macropad/snes_macropad.c | 130 ++++++++++++++++ 11 files changed, 682 insertions(+) create mode 100644 keyboards/snes_macropad/config.h create mode 100644 keyboards/snes_macropad/halconf.h create mode 100644 keyboards/snes_macropad/info.json create mode 100644 keyboards/snes_macropad/keymaps/default/keymap.c create mode 100644 keyboards/snes_macropad/keymaps/jbarberu/keymap.c create mode 100644 keyboards/snes_macropad/keymaps/test/keymap.c create mode 100644 keyboards/snes_macropad/matrix.c create mode 100644 keyboards/snes_macropad/mcuconf.h create mode 100644 keyboards/snes_macropad/readme.md create mode 100644 keyboards/snes_macropad/rules.mk create mode 100644 keyboards/snes_macropad/snes_macropad.c diff --git a/keyboards/snes_macropad/config.h b/keyboards/snes_macropad/config.h new file mode 100644 index 00000000000..c5edeb55f1d --- /dev/null +++ b/keyboards/snes_macropad/config.h @@ -0,0 +1,12 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25 +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP14 +#define I2C1_SCL_PIN GP15 diff --git a/keyboards/snes_macropad/halconf.h b/keyboards/snes_macropad/halconf.h new file mode 100644 index 00000000000..3fcb2f4eb60 --- /dev/null +++ b/keyboards/snes_macropad/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/snes_macropad/info.json b/keyboards/snes_macropad/info.json new file mode 100644 index 00000000000..c54e9bb0b26 --- /dev/null +++ b/keyboards/snes_macropad/info.json @@ -0,0 +1,79 @@ +{ + "manufacturer": "JBarberU's", + "keyboard_name": "SNES Macropad", + "maintainer": "jbarberu", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true, + "oled": true + }, + "ws2812": { + "pin": "GP5", + "driver": "vendor" + }, + "processor": "RP2040", + "matrix_size": { + "cols": 4, + "rows": 6 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "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": [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": [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": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [5, 0], "x": 0, "y": 5}, + {"matrix": [5, 1], "x": 1, "y": 5}, + {"matrix": [5, 2], "x": 2, "y": 5}, + {"matrix": [5, 3], "x": 3, "y": 5} + ] + } + }, + "rgblight": { + "led_count": 12, + "max_brightness": 80, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + } +} diff --git a/keyboards/snes_macropad/keymaps/default/keymap.c b/keyboards/snes_macropad/keymaps/default/keymap.c new file mode 100644 index 00000000000..34f4f6248a0 --- /dev/null +++ b/keyboards/snes_macropad/keymaps/default/keymap.c @@ -0,0 +1,75 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum Layer { + L_Numpad = 0, + L_Symbols, + L_RGB, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * Macropad Button Order + * ┌───┬───┬───┬───┐ + * │ 7 │ 8 │ 9 │ - │ + * ├───┼───┼───┼───┤ + * │ 4 │ 5 │ 6 │ + │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ 0 │ + * └───┴───┴───┴───┘ + * + * SNES Button Order + * ┌────────┬────────┬────────┬────────┐ + * │ LT │ RT │ START │ SELECT │ + * ├────────┼────────┼────────┼────────┤ + * │ UP │ DOWN │ LEFT │ RIGHT │ + * ├────────┼────────┼────────┼────────┤ + * │ A │ B │ X │ Y │ + * └────────┴────────┴────────┴────────┘ + * + */ + [L_Numpad] = LAYOUT( + KC_P7, KC_P8, KC_P9, TO(L_RGB) + , KC_P4, KC_P5, KC_P6, LT(L_Symbols, KC_PCMM) + , KC_P1, KC_P2, KC_P3, KC_P0 + + , KC_A, KC_S, KC_ENT, KC_BSPC + , KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT + , KC_X, KC_Z, LSFT(KC_F1),KC_TAB + ), + [L_RGB] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_TOG, KC_NO + , RGB_MOD, RGB_HUI, RGB_VAI, TO(L_Numpad) + , RGB_RMOD, RGB_HUD, RGB_VAD, KC_NO + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ), + [L_Symbols] = LAYOUT( + KC_PPLS, KC_PMNS, KC_PEQL, KC_NO + , KC_PAST, KC_PSLS, KC_ENT, KC_TRNS + , KC_NUM, KC_NO, KC_NO, QK_BOOT + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ) +}; +// clang-format on + +const char* get_layer_name_user(int layer) { + switch (layer) { + case L_Numpad: + return "Numpad"; + case L_RGB: + return "RGB Controls"; + case L_Symbols: + return "Symbols"; + default: + return "Undef"; + } +} diff --git a/keyboards/snes_macropad/keymaps/jbarberu/keymap.c b/keyboards/snes_macropad/keymaps/jbarberu/keymap.c new file mode 100644 index 00000000000..0fbe0fa6266 --- /dev/null +++ b/keyboards/snes_macropad/keymaps/jbarberu/keymap.c @@ -0,0 +1,99 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum Layer { + L_Numpad = 0, + L_Symbols, + L_EasyEDA, + L_RGB, + L_Adjust +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * Macropad Button Order + * ┌───┬───┬───┬───┐ + * │ 7 │ 8 │ 9 │ - │ + * ├───┼───┼───┼───┤ + * │ 4 │ 5 │ 6 │ + │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ 0 │ + * └───┴───┴───┴───┘ + * + * SNES Button Order + * ┌────────┬────────┬────────┬────────┐ + * │ LT │ RT │ START │ SELECT │ + * ├────────┼────────┼────────┼────────┤ + * │ UP │ DOWN │ LEFT │ RIGHT │ + * ├────────┼────────┼────────┼────────┤ + * │ A │ B │ X │ Y │ + * └────────┴────────┴────────┴────────┘ + * + */ + [L_Numpad] = LAYOUT( + KC_P7, KC_P8, KC_P9, TO(L_EasyEDA) + , KC_P4, KC_P5, KC_P6, LT(L_Symbols, KC_PCMM) + , KC_P1, KC_P2, KC_P3, KC_P0 + + , KC_A, KC_S, KC_ENT, KC_BSPC + , KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT + , KC_X, KC_Z, LSFT(KC_F1), KC_TAB + ), + [L_EasyEDA] = LAYOUT( + KC_COMM, KC_DOT, KC_K, TO(L_RGB) + , KC_LSFT, KC_M, KC_N, TO(L_Numpad) + , KC_LCTL, KC_SPC, KC_DEL, KC_BSPC + + , KC_A, KC_B, KC_C, KC_D + , QK_BOOT, KC_TRNS, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ), + [L_RGB] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_TOG, TO(L_Adjust) + , RGB_MOD, RGB_HUI, RGB_VAI, TO(L_Numpad) + , RGB_RMOD, RGB_HUD, RGB_VAD, KC_NO + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ), + [L_Adjust] = LAYOUT( + KC_NO, KC_P8, KC_NO, KC_NO + , KC_NO, RGB_HUD, KC_NO, TO(L_Numpad) + , RGB_HUI, KC_NO, KC_TRNS, KC_NO + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ), + [L_Symbols] = LAYOUT( + KC_PPLS, KC_PMNS, KC_PEQL, KC_NO + , KC_PAST, KC_PSLS, KC_ENT, KC_TRNS + , KC_NUM, KC_NO, KC_NO, QK_BOOT + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ) +}; +// clang-format on + +const char * get_layer_name_user(int layer) { + switch (layer) { + case L_Numpad: + return "Numpad"; + case L_EasyEDA: + return "EasyEDA"; + case L_RGB: + return "RGB Controls"; + case L_Adjust: + return "Adjust"; + case L_Symbols: + return "Symbols"; + default: + return "Undef"; + } +} diff --git a/keyboards/snes_macropad/keymaps/test/keymap.c b/keyboards/snes_macropad/keymaps/test/keymap.c new file mode 100644 index 00000000000..86dd6699657 --- /dev/null +++ b/keyboards/snes_macropad/keymaps/test/keymap.c @@ -0,0 +1,75 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum Layer { + L_Numpad = 0, + L_Symbols, + L_RGB +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * Macropad Button Order + * ┌───┬───┬───┬───┐ + * │ 7 │ 8 │ 9 │ - │ + * ├───┼───┼───┼───┤ + * │ 4 │ 5 │ 6 │ + │ + * ├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ 0 │ + * └───┴───┴───┴───┘ + * + * SNES Button Order + * ┌────────┬────────┬────────┬────────┐ + * │ LT │ RT │ START │ SELECT │ + * ├────────┼────────┼────────┼────────┤ + * │ UP │ DOWN │ LEFT │ RIGHT │ + * ├────────┼────────┼────────┼────────┤ + * │ A │ B │ X │ Y │ + * └────────┴────────┴────────┴────────┘ + * + */ + [L_Numpad] = LAYOUT( + KC_1, KC_2, KC_3, KC_4 + , KC_5, KC_6, KC_7, KC_8 + , KC_9, KC_0, KC_A, KC_S + + , KC_A, KC_S, KC_ENT, KC_BSPC + , KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT + , KC_X, KC_Z, LSFT(KC_F1),KC_TAB + ), + [L_RGB] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_TOG, KC_NO + , RGB_MOD, RGB_HUI, RGB_VAI, TO(L_Numpad) + , RGB_RMOD, RGB_HUD, RGB_VAD, KC_NO + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ), + [L_Symbols] = LAYOUT( + KC_PPLS, KC_PMNS, KC_PEQL, KC_NO + , KC_PAST, KC_PSLS, KC_ENT, KC_TRNS + , KC_NUM, KC_NO, KC_NO, QK_BOOT + + , KC_A, KC_B, KC_C, KC_D + , KC_E, KC_F, KC_G, KC_H + , KC_I, KC_J, KC_K, KC_L + ) +}; +// clang-format on + +const char * get_layer_name_user(int layer) { + switch (layer) { + case L_Numpad: + return "Numpad"; + case L_RGB: + return "RGB Controls"; + case L_Symbols: + return "Symbols"; + default: + return "Undef"; + } +} diff --git a/keyboards/snes_macropad/matrix.c b/keyboards/snes_macropad/matrix.c new file mode 100644 index 00000000000..28d036aca9c --- /dev/null +++ b/keyboards/snes_macropad/matrix.c @@ -0,0 +1,146 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "matrix.h" +#include "gpio.h" +#include "wait.h" +#include "string.h" + +#define SNES_CLOCK GP0 +#define SNES_LATCH GP1 +#define SNES_D0 GP2 +#define SNES_D1 GP3 +#define SNES_IO GP4 + +#define KBD_ROW0 GP24 +#define KBD_ROW1 GP23 +#define KBD_ROW2 GP22 +#define KBD_NUM_ROWS 3 + +#define KBD_COL0 GP18 +#define KBD_COL1 GP19 +#define KBD_COL2 GP20 +#define KBD_COL3 GP21 +#define KBD_ROW_SETUP_DELAY_US 5 + +// The real snes will clock 16 bits out of the controller, but only really has 12 bits of data +#define SNES_DATA_BITS 16 +#define SNES_DATA_SETUP_DELAY_US 10 +#define SNES_CLOCK_PULSE_DURATION 10 + +static const int kbd_pin_map[] = { + KBD_ROW0, + KBD_ROW1, + KBD_ROW2 +}; + +void matrix_init_custom(void) { + // init snes controller + setPinInputHigh(SNES_D0); + // todo: look into protocol for other strange snes controllers that use D1 and IO + // setPinInputHigh(SNES_D1); + // setPinInputHigh(SNES_IO); + setPinOutput(SNES_CLOCK); + setPinOutput(SNES_LATCH); + writePinLow(SNES_CLOCK); + writePinLow(SNES_LATCH); + + // init rows + setPinOutput(KBD_ROW0); + setPinOutput(KBD_ROW1); + setPinOutput(KBD_ROW2); + writePinHigh(KBD_ROW0); + writePinHigh(KBD_ROW1); + writePinHigh(KBD_ROW2); + + // init columns + setPinInputHigh(KBD_COL0); + setPinInputHigh(KBD_COL1); + setPinInputHigh(KBD_COL2); + setPinInputHigh(KBD_COL3); +} + +static matrix_row_t readRow(size_t row, int setupDelay) { + const int pin = kbd_pin_map[row]; + + // select the row + setPinOutput(pin); + writePinLow(pin); + wait_us(setupDelay); + + // read the column data + const matrix_row_t ret = + (readPin(KBD_COL0) ? 0 : 1 << 0) + | (readPin(KBD_COL1) ? 0 : 1 << 1) + | (readPin(KBD_COL2) ? 0 : 1 << 2) + | (readPin(KBD_COL3) ? 0 : 1 << 3); + + // deselect the row + setPinOutput(pin); + writePinHigh(pin); + + return ret; +} + +static void readKeyboard(matrix_row_t current_matrix[]) { + for (size_t row = 0; row < KBD_NUM_ROWS; ++row) { + current_matrix[row] = readRow(row, KBD_ROW_SETUP_DELAY_US); + } +} + +static matrix_row_t getBits(uint16_t value, size_t bit0, size_t bit1, size_t bit2, size_t bit3) { + matrix_row_t ret = 0; + ret |= (value >> bit3) & 1; + ret <<= 1; + ret |= (value >> bit2) & 1; + ret <<= 1; + ret |= (value >> bit1) & 1; + ret <<= 1; + ret |= (value >> bit0) & 1; + return ret; +} + +static void readSnesController(matrix_row_t current_matrix[]) { + uint16_t controller = 0; + + writePinHigh(SNES_LATCH); + + for (size_t bit = 0; bit < SNES_DATA_BITS; ++bit) { + // Wait for shift register to setup the data line + wait_us(SNES_DATA_SETUP_DELAY_US); + + // Shift accumulated data and read data pin + controller <<= 1; + controller |= readPin(SNES_D0) ? 0 : 1; + // todo: maybe read D1 and IO here too + + // Shift next bit in + writePinHigh(SNES_CLOCK); + wait_us(SNES_CLOCK_PULSE_DURATION); + writePinLow(SNES_CLOCK); + } + + writePinLow(SNES_LATCH); + + controller >>= 4; + + // SNES button order is pretty random, and we'd like them to be a bit tidier + current_matrix[3] = getBits(controller, 1, 0, 8, 9); + current_matrix[4] = getBits(controller, 7, 6, 5, 4); + current_matrix[5] = getBits(controller, 3, 11, 2, 10); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + const size_t MATRIX_ARRAY_SIZE = MATRIX_ROWS * sizeof(matrix_row_t); + + // create a copy of the current_matrix, before we read hardware state + matrix_row_t last_value[MATRIX_ROWS]; + memcpy(last_value, current_matrix, MATRIX_ARRAY_SIZE); + + // read hardware state into current_matrix + readKeyboard(current_matrix); + readSnesController(current_matrix); + + // check if anything changed + return memcmp(last_value, current_matrix, MATRIX_ARRAY_SIZE) != 0; +} diff --git a/keyboards/snes_macropad/mcuconf.h b/keyboards/snes_macropad/mcuconf.h new file mode 100644 index 00000000000..0bbd4fef628 --- /dev/null +++ b/keyboards/snes_macropad/mcuconf.h @@ -0,0 +1,18 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM0 +#define RP_PWM_USE_PWM0 TRUE + +#undef RP_PWM_USE_PWM4 +#define RP_PWM_USE_PWM4 TRUE + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 FALSE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/snes_macropad/readme.md b/keyboards/snes_macropad/readme.md new file mode 100644 index 00000000000..9ef5e041496 --- /dev/null +++ b/keyboards/snes_macropad/readme.md @@ -0,0 +1,36 @@ +# snes_macropad + +![Completed Build](https://i.imgur.com/WzzPJ3Yh.jpg) +*Completed Build* + +![Completed Build, closer with RGB off](https://i.imgur.com/D7ki7Kkh.jpg) +*Completed Build, closer with RGB off* + +![PCB and FR4 top/bottom plates](https://i.imgur.com/TgOev7lh.jpg) +*PCB and FR4 top/bottom plates* + +The SNES Macropad is, as it sounds, a macropad that features a SNES connector. In addition it has a qwiic connector and a 3.5mm jack for 3.3V I2C (not audio), allowing additional expansion. + +This QMK implementation exposes the SNES controller as a part of the keyboard, meaning you can map the controller to do anything a qmk keyboard can. The layout is thus a 4x6 keyboard logically, split with the 3 first rows being on the macro pad and the 3 following being buttons on the snes controller. + +* Keyboard Maintainer: [JBarberU](https://github.com/jbarberu) +* Hardware Supported: SNES Macropad Rev 1, with a Raspberry Pi Pico Lite (AliExpress clone of Raspberry Pico with fewer grounds and all GPIO's exposed on the headers) +* Hardware Availability: The SNES Macro pad can be found [here](https://www.tindie.com/products/jbarberu/snes-macropad/) either as a kit, partially built or fully built. + +Make example for this keyboard (after setting up your build environment): + + make snes_macropad:default + +Flashing example for this keyboard: + + make snes_macropad: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: + +* **Physical bootsel button**: Hold down the bootsel button on the RPi Pico while plugging in the keyboard, or while pressing the reset button +* **Physical reset button**: Quickly double press the reset button +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/snes_macropad/rules.mk b/keyboards/snes_macropad/rules.mk new file mode 100644 index 00000000000..52cdd84a78b --- /dev/null +++ b/keyboards/snes_macropad/rules.mk @@ -0,0 +1,4 @@ +# Enable features +CUSTOM_MATRIX = lite + +SRC += matrix.c diff --git a/keyboards/snes_macropad/snes_macropad.c b/keyboards/snes_macropad/snes_macropad.c new file mode 100644 index 00000000000..a8e04c8c32a --- /dev/null +++ b/keyboards/snes_macropad/snes_macropad.c @@ -0,0 +1,130 @@ +// Copyright 2023 John Barbero Unenge (@jbarberu) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// oled keylog rendering has been kindly borrowed from crkbd <3 + +char key_name = ' '; +uint16_t last_keycode; +uint8_t last_row; +uint8_t last_col; + +static const char PROGMEM code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +static void set_keylog(uint16_t keycode, keyrecord_t *record) { + last_row = record->event.key.row; + last_col = record->event.key.col; + + key_name = ' '; + last_keycode = keycode; + if (IS_QK_MOD_TAP(keycode)) { + if (record->tap.count) { + keycode = QK_MOD_TAP_GET_TAP_KEYCODE(keycode); + } else { + keycode = 0xE0 + biton(QK_MOD_TAP_GET_MODS(keycode) & 0xF) + biton(QK_MOD_TAP_GET_MODS(keycode) & 0x10); + } + } else if (IS_QK_LAYER_TAP(keycode) && record->tap.count) { + keycode = QK_LAYER_TAP_GET_TAP_KEYCODE(keycode); + } else if (IS_QK_MODS(keycode)) { + keycode = QK_MODS_GET_BASIC_KEYCODE(keycode); + } else if (IS_QK_ONE_SHOT_MOD(keycode)) { + keycode = 0xE0 + biton(QK_ONE_SHOT_MOD_GET_MODS(keycode) & 0xF) + biton(QK_ONE_SHOT_MOD_GET_MODS(keycode) & 0x10); + } + if (keycode > ARRAY_SIZE(code_to_name)) { + return; + } + + // update keylog + key_name = pgm_read_byte(&code_to_name[keycode]); +} + +static const char *depad_str(const char *depad_str, char depad_char) { + while (*depad_str == depad_char) { + ++depad_str; + } + return depad_str; +} + +static void oled_render_keylog(void) { + oled_write_char('0' + last_row, false); + oled_write("x", false); + oled_write_char('0' + last_col, false); + oled_write(", k", false); + const char *last_keycode_str = get_u16_str(last_keycode, ' '); + oled_write(depad_str(last_keycode_str, ' '), false); + oled_write(":", false); + oled_write_char(key_name, false); +} + +__attribute__((weak)) const char * get_layer_name_user(int layer) { + return "Unknown"; +} + +static void oled_render_layer(void) { + oled_write("Layer: ", false); + oled_write_ln(get_layer_name_user(get_highest_layer(layer_state)), false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + oled_render_layer(); + oled_render_keylog(); + oled_advance_page(true); + return false; +} + +static void setupForFlashing(void) { + oled_clear(); + oled_write(" ", false); + oled_write(" In flash mode... ", false); + oled_write(" ", false); + oled_write(" ", false); + + // QMK is clever about only rendering a certain number of chunks per frame, + // but since the device will go into flash mode right after this call, + // we want to override this behavior and force all the chunks to be sent to + // the display immediately. + const size_t numIterations = OLED_DISPLAY_WIDTH * OLED_DISPLAY_HEIGHT / OLED_UPDATE_PROCESS_LIMIT; + for (size_t num = 0; num < numIterations; ++num) { + oled_render(); + } + // todo: Replace the above hack with this, once develop branch is merged at the end of November 2023 + // oled_render_dirty(true); + + // Set alternating backlight colors + const uint8_t max = 20; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + for (size_t i = 0; i < RGBLED_NUM; ++i) { + LED_TYPE *led_ = (LED_TYPE *)&led[i]; + switch (i % 2) { + case 0: + setrgb(max, 0, max, led_); + break; + case 1: + setrgb(0, max, max, led_); + break; + } + } + rgblight_set(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + if (keycode == QK_BOOT) { + setupForFlashing(); + } + return process_record_user(keycode, record); +} + +void keyboard_post_init_kb(void) { + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(HSV_MAGENTA); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); + keyboard_post_init_user(); +} From e5b7685e7ad2785238b35e68a0c93425af10f951 Mon Sep 17 00:00:00 2001 From: gregandcin Date: Thu, 9 Nov 2023 17:53:35 +0000 Subject: [PATCH 36/51] Update gregandcin/teaqueen (#22402) --- keyboards/gregandcin/teaqueen/keymaps/default/config.h | 9 --------- keyboards/gregandcin/teaqueen/keymaps/default/keymap.c | 2 +- keyboards/gregandcin/teaqueen/keymaps/via/config.h | 9 --------- keyboards/gregandcin/teaqueen/keymaps/via/keymap.c | 2 +- 4 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 keyboards/gregandcin/teaqueen/keymaps/default/config.h delete mode 100644 keyboards/gregandcin/teaqueen/keymaps/via/config.h diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/config.h b/keyboards/gregandcin/teaqueen/keymaps/default/config.h deleted file mode 100644 index 3a125fdf63b..00000000000 --- a/keyboards/gregandcin/teaqueen/keymaps/default/config.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2023 gregandcin (@gregandcin) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -/* Select hand configuration */ -// #define MASTER_LEFT -// #define MASTER_RIGHT -#define EE_HANDS diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c index abc6086270b..2bcc085b777 100644 --- a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c +++ b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -// Copyright 2023 QMK +// Copyright 2018-2023 Mattia Dal Ben gregandcin // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H diff --git a/keyboards/gregandcin/teaqueen/keymaps/via/config.h b/keyboards/gregandcin/teaqueen/keymaps/via/config.h deleted file mode 100644 index 3a125fdf63b..00000000000 --- a/keyboards/gregandcin/teaqueen/keymaps/via/config.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2023 gregandcin (@gregandcin) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -/* Select hand configuration */ -// #define MASTER_LEFT -// #define MASTER_RIGHT -#define EE_HANDS diff --git a/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c index abc6086270b..2bcc085b777 100644 --- a/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c +++ b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -// Copyright 2023 QMK +// Copyright 2018-2023 Mattia Dal Ben gregandcin // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H From aee2a9d696b9510ba60e9dcde7b036e38e053f32 Mon Sep 17 00:00:00 2001 From: temp4gh Date: Fri, 10 Nov 2023 03:57:14 +0800 Subject: [PATCH 37/51] [Keyboard] Add alpaca/wfeclipse (#22230) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre --- keyboards/alpaca/wfeclipse/info.json | 210 ++++++++++++++++++ .../alpaca/wfeclipse/keymaps/default/keymap.c | 39 ++++ .../alpaca/wfeclipse/keymaps/via/keymap.c | 39 ++++ .../alpaca/wfeclipse/keymaps/via/rules.mk | 1 + keyboards/alpaca/wfeclipse/readme.md | 26 +++ keyboards/alpaca/wfeclipse/rules.mk | 1 + 6 files changed, 316 insertions(+) create mode 100644 keyboards/alpaca/wfeclipse/info.json create mode 100644 keyboards/alpaca/wfeclipse/keymaps/default/keymap.c create mode 100644 keyboards/alpaca/wfeclipse/keymaps/via/keymap.c create mode 100644 keyboards/alpaca/wfeclipse/keymaps/via/rules.mk create mode 100644 keyboards/alpaca/wfeclipse/readme.md create mode 100644 keyboards/alpaca/wfeclipse/rules.mk diff --git a/keyboards/alpaca/wfeclipse/info.json b/keyboards/alpaca/wfeclipse/info.json new file mode 100644 index 00000000000..47288bb190d --- /dev/null +++ b/keyboards/alpaca/wfeclipse/info.json @@ -0,0 +1,210 @@ +{ + "manufacturer": "Alpaca", + "keyboard_name": "WFEclipse", + "bootloader": "stm32duino", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C11", "C10", "A15", "A10", "A9", "A8", "C9", "C8", "C7", "C6", "B1", "B0", "C5", "C4", "A7", "A6"], + "rows": ["A0", "A1", "A2", "A3", "A4"] + }, + "processor": "STM32F103", + "rgb_matrix": { + "animations": { + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_wave": true, + "pixel_fractal": true, + "solid_color": true, + "solid_reactive_simple": true, + "solid_splash": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [4, 15], "x": 198, "y": 54, "flags": 1}, + {"matrix": [4, 14], "x": 186, "y": 54, "flags": 1}, + {"matrix": [4, 13], "x": 174, "y": 54, "flags": 1}, + {"matrix": [4, 12], "x": 150, "y": 54, "flags": 1}, + {"matrix": [4, 11], "x": 138, "y": 54, "flags": 1}, + {"matrix": [4, 10], "x": 126, "y": 54, "flags": 1}, + {"matrix": [4, 6], "x": 51, "y": 54, "flags": 1}, + {"matrix": [4, 2], "x": 36, "y": 54, "flags": 1}, + {"matrix": [4, 1], "x": 21, "y": 54, "flags": 1}, + {"matrix": [4, 0], "x": 6, "y": 54, "flags": 1}, + {"matrix": [3, 15], "x": 198, "y": 42, "flags": 1}, + {"matrix": [3, 14], "x": 186, "y": 42, "flags": 1}, + {"matrix": [3, 13], "x": 153, "y": 42, "flags": 1}, + {"matrix": [3, 11], "x": 141, "y": 42, "flags": 1}, + {"matrix": [3, 10], "x": 129, "y": 42, "flags": 1}, + {"matrix": [3, 9], "x": 117, "y": 42, "flags": 1}, + {"matrix": [3, 8], "x": 105, "y": 42, "flags": 1}, + {"matrix": [3, 7], "x": 93, "y": 42, "flags": 1}, + {"matrix": [3, 6], "x": 81, "y": 42, "flags": 1}, + {"matrix": [3, 5], "x": 69, "y": 42, "flags": 1}, + {"matrix": [3, 4], "x": 57, "y": 42, "flags": 1}, + {"matrix": [3, 3], "x": 45, "y": 42, "flags": 1}, + {"matrix": [3, 2], "x": 33, "y": 42, "flags": 1}, + {"matrix": [3, 0], "x": 6, "y": 42, "flags": 1}, + {"matrix": [2, 15], "x": 198, "y": 30, "flags": 1}, + {"matrix": [2, 14], "x": 186, "y": 30, "flags": 1}, + {"matrix": [2, 13], "x": 159, "y": 30, "flags": 1}, + {"matrix": [2, 11], "x": 147, "y": 30, "flags": 1}, + {"matrix": [2, 10], "x": 135, "y": 30, "flags": 1}, + {"matrix": [2, 9], "x": 123, "y": 30, "flags": 1}, + {"matrix": [2, 8], "x": 111, "y": 30, "flags": 1}, + {"matrix": [2, 7], "x": 99, "y": 30, "flags": 1}, + {"matrix": [2, 6], "x": 87, "y": 30, "flags": 1}, + {"matrix": [2, 5], "x": 75, "y": 30, "flags": 1}, + {"matrix": [2, 4], "x": 63, "y": 30, "flags": 1}, + {"matrix": [2, 3], "x": 51, "y": 30, "flags": 1}, + {"matrix": [2, 2], "x": 39, "y": 30, "flags": 1}, + {"matrix": [2, 1], "x": 27, "y": 30, "flags": 1}, + {"matrix": [2, 0], "x": 6, "y": 30, "flags": 1}, + {"matrix": [1, 15], "x": 198, "y": 18, "flags": 1}, + {"matrix": [1, 14], "x": 186, "y": 18, "flags": 1}, + {"matrix": [1, 13], "x": 168, "y": 18, "flags": 1}, + {"matrix": [1, 12], "x": 156, "y": 18, "flags": 1}, + {"matrix": [1, 11], "x": 144, "y": 18, "flags": 1}, + {"matrix": [1, 10], "x": 132, "y": 18, "flags": 1}, + {"matrix": [1, 9], "x": 120, "y": 18, "flags": 1}, + {"matrix": [1, 8], "x": 108, "y": 18, "flags": 1}, + {"matrix": [1, 7], "x": 96, "y": 18, "flags": 1}, + {"matrix": [1, 6], "x": 84, "y": 18, "flags": 1}, + {"matrix": [1, 5], "x": 72, "y": 18, "flags": 1}, + {"matrix": [1, 4], "x": 60, "y": 18, "flags": 1}, + {"matrix": [1, 3], "x": 48, "y": 18, "flags": 1}, + {"matrix": [1, 2], "x": 36, "y": 18, "flags": 1}, + {"matrix": [1, 1], "x": 24, "y": 18, "flags": 1}, + {"matrix": [1, 0], "x": 6, "y": 18, "flags": 1}, + {"matrix": [0, 15], "x": 198, "y": 6, "flags": 1}, + {"matrix": [0, 14], "x": 186, "y": 6, "flags": 1}, + {"matrix": [0, 13], "x": 162, "y": 6, "flags": 1}, + {"matrix": [0, 12], "x": 150, "y": 6, "flags": 1}, + {"matrix": [0, 11], "x": 138, "y": 6, "flags": 1}, + {"matrix": [0, 10], "x": 126, "y": 6, "flags": 1}, + {"matrix": [0, 9], "x": 114, "y": 6, "flags": 1}, + {"matrix": [0, 8], "x": 102, "y": 6, "flags": 1}, + {"matrix": [0, 7], "x": 90, "y": 6, "flags": 1}, + {"matrix": [0, 6], "x": 78, "y": 6, "flags": 1}, + {"matrix": [0, 5], "x": 66, "y": 6, "flags": 1}, + {"matrix": [0, 4], "x": 54, "y": 6, "flags": 1}, + {"matrix": [0, 3], "x": 42, "y": 6, "flags": 1}, + {"matrix": [0, 2], "x": 30, "y": 6, "flags": 1}, + {"matrix": [0, 1], "x": 18, "y": 6, "flags": 1}, + {"matrix": [0, 0], "x": 6, "y": 6, "flags": 1}, + {"x": 125, "y": 1, "flags": 4}, + {"x": 125, "y": 2, "flags": 4}, + {"x": 125, "y": 3, "flags": 4}, + {"x": 125, "y": 4, "flags": 4}, + {"x": 125, "y": 5, "flags": 4}, + {"x": 125, "y": 6, "flags": 4}, + {"x": 125, "y": 7, "flags": 4}, + {"x": 125, "y": 8, "flags": 4}, + {"x": 125, "y": 9, "flags": 4}, + {"x": 125, "y": 10, "flags": 4}, + {"x": 125, "y": 11, "flags": 4}, + {"x": 125, "y": 12, "flags": 4} + ], + "max_brightness": 50 + }, + "usb": { + "device_version": "1.0.4", + "pid": "0x0038", + "vid": "0x308F" + }, + "ws2812": { + "pin": "B8" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "MINS", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "EQL", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BSPC", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "DEL", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "INS", "matrix": [0, 15], "x": 16, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "LBRC", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "RBRC", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "BSLS", "matrix": [1, 13], "x": 13.5, "y": 1}, + {"label": "HOME", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "PGUP", "matrix": [1, 15], "x": 16, "y": 1}, + {"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "SCLN", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "QUOT", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ENT", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "END", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "PGDN", "matrix": [2, 15], "x": 16, "y": 2}, + {"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "COMM", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "DOT", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "SLSH", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RSFT", "matrix": [3, 13], "x": 12.25, "y": 3}, + {"label": "UP", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "MO(1)", "matrix": [3, 15], "x": 16, "y": 3}, + {"label": "LCTL", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "LGUI", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LALT", "matrix": [4, 2], "x": 2.5, "y": 4}, + {"label": "SPC", "matrix": [4, 6], "x": 3.75, "y": 4}, + {"label": "RALT", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "RGUI", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "RCTL", "matrix": [4, 12], "x": 12, "y": 4}, + {"label": "LEFT", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "DOWN", "matrix": [4, 14], "x": 15, "y": 4}, + {"label": "RGHT", "matrix": [4, 15], "x": 16, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c b/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c new file mode 100644 index 00000000000..3849b2889c1 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 temp4gh + * + * 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_names { + WIN_BASE, + WIN_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [WIN_BASE] =LAYOUT( + 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_DEL, KC_INS, + 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_HOME, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [WIN_FN] =LAYOUT( + KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c b/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c new file mode 100644 index 00000000000..ed0d448fb19 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 temp4gh + * + * 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_names { + WIN_BASE, + WIN_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [WIN_BASE] =LAYOUT( + 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_DEL, KC_INS, + 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_HOME, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [WIN_FN] =LAYOUT( + KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/alpaca/wfeclipse/keymaps/via/rules.mk b/keyboards/alpaca/wfeclipse/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/alpaca/wfeclipse/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/alpaca/wfeclipse/readme.md b/keyboards/alpaca/wfeclipse/readme.md new file mode 100644 index 00000000000..55570e1e7ad --- /dev/null +++ b/keyboards/alpaca/wfeclipse/readme.md @@ -0,0 +1,26 @@ +# Alpaca Keyboards whitefox-eclipse + +![Alpaca Keyboards whitefox-eclipse](https://i.imgur.com/VlyDBYGh.jpg) + +A customizable 68% keyboard. + +- Keyboard Maintainer: [temp4gh](https://github.com/temp4gh) +- Hardware Supported: whitefox-eclipse PCB +- Hardware Availability: https://kono.store/collections/all-products-list/products/whitefox-eclipse?variant=43224249991367 + +Make example for this keyboard (after setting up your build environment): + + make alpaca/wfeclipse:default + +Flashing example for this keyboard: + + make alpaca/wfeclipse: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 +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/alpaca/wfeclipse/rules.mk b/keyboards/alpaca/wfeclipse/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 38d6e9a75a4cff4ae5bd32209fc0cecb83c6f23b Mon Sep 17 00:00:00 2001 From: ploopyco <54917504+ploopyco@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:42:15 -0500 Subject: [PATCH 38/51] Add Ploopy Madromys mouse (#21989) Added PloopyCo madromys/adept mouse Co-authored-by: Drashna Jaelre --- keyboards/ploopyco/madromys/config.h | 29 +++ keyboards/ploopyco/madromys/info.json | 35 ++++ .../madromys/keymaps/default/keymap.c | 22 +++ .../ploopyco/madromys/keymaps/via/keymap.c | 22 +++ .../ploopyco/madromys/keymaps/via/readme.md | 1 + .../ploopyco/madromys/keymaps/via/rules.mk | 1 + keyboards/ploopyco/madromys/madromys.c | 176 ++++++++++++++++++ keyboards/ploopyco/madromys/madromys.h | 37 ++++ keyboards/ploopyco/madromys/readme.md | 43 +++++ .../ploopyco/madromys/rev1_001/info.json | 23 +++ .../ploopyco/madromys/rev1_001/readme.md | 3 + keyboards/ploopyco/madromys/rev1_001/rules.mk | 0 keyboards/ploopyco/madromys/rules.mk | 3 + 13 files changed, 395 insertions(+) create mode 100644 keyboards/ploopyco/madromys/config.h create mode 100644 keyboards/ploopyco/madromys/info.json create mode 100644 keyboards/ploopyco/madromys/keymaps/default/keymap.c create mode 100644 keyboards/ploopyco/madromys/keymaps/via/keymap.c create mode 100644 keyboards/ploopyco/madromys/keymaps/via/readme.md create mode 100644 keyboards/ploopyco/madromys/keymaps/via/rules.mk create mode 100644 keyboards/ploopyco/madromys/madromys.c create mode 100644 keyboards/ploopyco/madromys/madromys.h create mode 100644 keyboards/ploopyco/madromys/readme.md create mode 100644 keyboards/ploopyco/madromys/rev1_001/info.json create mode 100644 keyboards/ploopyco/madromys/rev1_001/readme.md create mode 100644 keyboards/ploopyco/madromys/rev1_001/rules.mk create mode 100644 keyboards/ploopyco/madromys/rules.mk diff --git a/keyboards/ploopyco/madromys/config.h b/keyboards/ploopyco/madromys/config.h new file mode 100644 index 00000000000..19fa1fada40 --- /dev/null +++ b/keyboards/ploopyco/madromys/config.h @@ -0,0 +1,29 @@ +/* Copyright 2023 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * + * 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 ROTATIONAL_TRANSFORM_ANGLE 0 +#define POINTING_DEVICE_INVERT_Y + +/* PMW3360 Settings */ +#define PMW33XX_LIFTOFF_DISTANCE 0x00 +#define PMW33XX_CS_PIN GP5 +#define SPI_SCK_PIN GP2 +#define SPI_MISO_PIN GP0 +#define SPI_MOSI_PIN GP7 \ No newline at end of file diff --git a/keyboards/ploopyco/madromys/info.json b/keyboards/ploopyco/madromys/info.json new file mode 100644 index 00000000000..e39f593df9f --- /dev/null +++ b/keyboards/ploopyco/madromys/info.json @@ -0,0 +1,35 @@ +{ + "keyboard_name": "Ploopy Adept Trackball", + "url": "www.ploopy.co", + "maintainer": "ploopyco", + "manufacturer": "Ploopy Corporation", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x5043", + "pid": "0x5C47", + "max_power": 100 + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "pointing_device": true, + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 1], "label":"Top Left Left", "x":0, "y":0, "h":2}, + {"matrix": [0, 2], "label":"Top Left", "x":1.25, "y":0, "h":1.25}, + {"matrix": [0, 3], "label":"Top Right", "x":2.5, "y":0, "h":1.25}, + {"matrix": [0, 4], "label":"Top Right Right", "x":3.75, "y":0, "h":2}, + {"matrix": [0, 0], "label":"Bottom Left", "x":0, "y":2.25, "w":1.75, "h":2}, + {"matrix": [0, 5], "label":"Bottom Right", "x":3, "y":2.25, "w":1.75, "h":2} + ] + } + }, + "dynamic_keymap": { + "layer_count": 8 + }, +} diff --git a/keyboards/ploopyco/madromys/keymaps/default/keymap.c b/keyboards/ploopyco/madromys/keymaps/default/keymap.c new file mode 100644 index 00000000000..bc8265b39d0 --- /dev/null +++ b/keyboards/ploopyco/madromys/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* Copyright 2023 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * + * 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( KC_BTN4, KC_BTN5, DRAG_SCROLL, KC_BTN2, KC_BTN1, KC_BTN3 ) +}; diff --git a/keyboards/ploopyco/madromys/keymaps/via/keymap.c b/keyboards/ploopyco/madromys/keymaps/via/keymap.c new file mode 100644 index 00000000000..bc8265b39d0 --- /dev/null +++ b/keyboards/ploopyco/madromys/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +/* Copyright 2023 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * + * 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( KC_BTN4, KC_BTN5, DRAG_SCROLL, KC_BTN2, KC_BTN1, KC_BTN3 ) +}; diff --git a/keyboards/ploopyco/madromys/keymaps/via/readme.md b/keyboards/ploopyco/madromys/keymaps/via/readme.md new file mode 100644 index 00000000000..c8717fe1f74 --- /dev/null +++ b/keyboards/ploopyco/madromys/keymaps/via/readme.md @@ -0,0 +1 @@ +This is the VIA keymap for Ploopyco Madromys Trackball, which can be used to customise the key layout. See [the VIA online app](https://usevia.app/) for how to do this. diff --git a/keyboards/ploopyco/madromys/keymaps/via/rules.mk b/keyboards/ploopyco/madromys/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/ploopyco/madromys/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ploopyco/madromys/madromys.c b/keyboards/ploopyco/madromys/madromys.c new file mode 100644 index 00000000000..8ea1bcdbd78 --- /dev/null +++ b/keyboards/ploopyco/madromys/madromys.c @@ -0,0 +1,176 @@ +/* Copyright 2023 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * + * 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 "madromys.h" + +#ifndef PLOOPY_DPI_OPTIONS +# define PLOOPY_DPI_OPTIONS \ + { 600, 900, 1200, 1600 } +# ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 1 +# endif +#endif +#ifndef PLOOPY_DPI_DEFAULT +# define PLOOPY_DPI_DEFAULT 0 +#endif +#ifndef PLOOPY_DRAGSCROLL_DPI +# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll +#endif +#ifndef PLOOPY_DRAGSCROLL_FIXED +# define PLOOPY_DRAGSCROLL_FIXED 1 +#endif +#ifndef PLOOPY_DRAGSCROLL_MULTIPLIER +# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll +#endif +#ifndef PLOOPY_DRAGSCROLL_SEMAPHORE +# define PLOOPY_DRAGSCROLL_SEMAPHORE 4 +#endif +#ifndef PLOOPY_DRAGSCROLL_MOMENTARY +# define PLOOPY_DRAGSCROLL_MOMENTARY 1 +#endif +#ifndef PLOOPY_DRAGSCROLL_INVERT +# define PLOOPY_DRAGSCROLL_INVERT 1 +#endif + +keyboard_config_t keyboard_config; +uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; +#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) + +// TODO: Implement libinput profiles +// https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html +// Compile time accel selection +// Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC + +// Trackball State +bool is_drag_scroll = false; + +// drag scroll divisor state +int8_t drag_scroll_x_semaphore = 0; +int8_t drag_scroll_y_semaphore = 0; + +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + if (is_drag_scroll) { + int16_t mouse_report_x_temp = mouse_report.x; + int16_t mouse_report_y_temp = mouse_report.y; + int16_t mouse_report_x_calc = 0; + int16_t mouse_report_y_calc = 0; + int16_t valx = (mouse_report_x_temp > 0) ? -1 : 1; + int16_t valy = (mouse_report_y_temp > 0) ? -1 : 1; + + while (mouse_report_x_temp != 0) { + mouse_report_x_temp += valx; + drag_scroll_x_semaphore -= valx; + + if (abs(drag_scroll_x_semaphore) >= PLOOPY_DRAGSCROLL_SEMAPHORE) { + mouse_report_x_calc -= valx; + drag_scroll_x_semaphore = 0; + } + } + + while (mouse_report_y_temp != 0) { + mouse_report_y_temp += valy; + drag_scroll_y_semaphore -= valy; + + if (abs(drag_scroll_y_semaphore) >= PLOOPY_DRAGSCROLL_SEMAPHORE) { + mouse_report_y_calc -= valy; + drag_scroll_y_semaphore = 0; + } + } + + mouse_report.h = mouse_report_x_calc; + +#ifdef PLOOPY_DRAGSCROLL_INVERT + // Invert vertical scroll direction + mouse_report.v = -mouse_report_y_calc; +#else + mouse_report.v = mouse_report_y_calc; +#endif + mouse_report.x = 0; + mouse_report.y = 0; + } + + return pointing_device_task_user(mouse_report); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (!process_record_user(keycode, record)) { + return false; + } + + if (keycode == DPI_CONFIG && record->event.pressed) { + keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; + eeconfig_update_kb(keyboard_config.raw); + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); + } + + if (keycode == DRAG_SCROLL) { +#ifndef PLOOPY_DRAGSCROLL_MOMENTARY + if (record->event.pressed) +#endif + { + is_drag_scroll ^= 1; + } +#ifdef PLOOPY_DRAGSCROLL_FIXED + pointing_device_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); +#else + pointing_device_set_cpi(is_drag_scroll ? (dpi_array[keyboard_config.dpi_config] * PLOOPY_DRAGSCROLL_MULTIPLIER) : dpi_array[keyboard_config.dpi_config]); +#endif + } + + return true; +} + +// Hardware Setup +void keyboard_pre_init_kb(void) { + // debug_enable = true; + // debug_matrix = true; + // debug_mouse = true; + // debug_encoder = true; + + /* Ground all output pins connected to ground. This provides additional + * pathways to ground. If you're messing with this, know this: driving ANY + * of these pins high will cause a short. On the MCU. Ka-blooey. + */ + const pin_t unused_pins[] = { GP1, GP3, GP4, GP6, GP8, GP10, GP14, GP16, + GP18, GP20, GP22, GP24, GP25, GP26, GP27, GP28, GP29 }; + + for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) { + setPinOutput(unused_pins[i]); + writePinLow(unused_pins[i]); + } + + keyboard_pre_init_user(); +} + +void pointing_device_init_kb(void) { pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } + +void eeconfig_init_kb(void) { + keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; + eeconfig_update_kb(keyboard_config.raw); + eeconfig_init_user(); +} + +void matrix_init_kb(void) { + // is safe to just read DPI setting since matrix init + // comes before pointing device init. + keyboard_config.raw = eeconfig_read_kb(); + if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { + eeconfig_init_kb(); + } + matrix_init_user(); +} diff --git a/keyboards/ploopyco/madromys/madromys.h b/keyboards/ploopyco/madromys/madromys.h new file mode 100644 index 00000000000..944cce937b4 --- /dev/null +++ b/keyboards/ploopyco/madromys/madromys.h @@ -0,0 +1,37 @@ +/* Copyright 2023 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * + * 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 "quantum.h" + +typedef union { + uint32_t raw; + struct { + uint8_t dpi_config; + }; +} keyboard_config_t; +_Static_assert(sizeof(keyboard_config_t) == sizeof(uint32_t), "keyboard_config_t size mismatch compared to EEPROM area"); + +extern keyboard_config_t keyboard_config; +extern uint16_t dpi_array[]; + +enum ploopy_keycodes { + DPI_CONFIG = QK_KB_0, + DRAG_SCROLL, +}; diff --git a/keyboards/ploopyco/madromys/readme.md b/keyboards/ploopyco/madromys/readme.md new file mode 100644 index 00000000000..456a3c7db20 --- /dev/null +++ b/keyboards/ploopyco/madromys/readme.md @@ -0,0 +1,43 @@ + +# Ploopyco Madromys Trackball + +It's a DIY, QMK-powered trackball! + +* Keyboard Maintainer: [PloopyCo](https://github.com/ploopyco) +* Hardware Supported: RP2040 +* Hardware Availability: [Store](https://ploopy.co), [GitHub](https://github.com/ploopyco) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ploopyco/madromys -km default + +# Building Firmware + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Triggering the Bootloader + +[Do you see those two golden holes in the board](https://ploopy.co/wp-content/uploads/2023/11/boot.jpg)? Those are called **vias**. They act exactly like a switch does. Right now, that switch is OFF. However, if you take a paperclip or a pair of metal tweezers and touch those two vias, the two vias will form an electrical connection. Effectively, that switch turns ON. + +Go ahead and connect the two vias, and then (while the vias are connected) plug in the Madromys board into your computer. + +The computer should recognise that a mass storage device was just plugged in. Once this is done, you should be able to drag and drop files onto the Madromys board, as if the board was a USB drive. Feel free to remove the tweezers or paperclip at this point. + +If you want to upload a new firmware file (a ".uf2" file, like "madromys_awesome_version.uf2" or something), just drag it into the folder, and it'll automatically install on the Madromys board and restart itself, in normal operating mode. You're done! + +**TIP**: If your firmware is in some kind of strange state and uploading new firmware isn't fixing it, try uploading [a flash nuke](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython#flash-resetting-uf2-3083182) to the Madromys board before flashing the new firmware. It wipes the memory of the Madromys board completely clean, which can help clear a few types of errors. + +# Drag Scroll + +Drag Scroll is a custom keycode for Ploopy devices that allows you to hold or tap a button and have the mouse movement translate into scrolling instead. + +Nothing needs to be enabled to use this functionality; it's enabled on Madromys by default. + +### Drag Scroll Configuration + +* `#define PLOOPY_DRAGSCROLL_MOMENTARY` - Makes the key into a momentary key, rather than a toggle. +* `#define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75` - Sets the DPI multiplier to use when drag scroll is enabled. +* `#define PLOOPY_DRAGSCROLL_FIXED` - Normally, when activating Drag Scroll, it uses a fraction of the current DPI. You can define this to use a specific, set DPI rather than a fraction of the current DPI. + * `#define PLOOPY_DRAGSCROLL_DPI 100` - When the fixed DPI option is enabled, this sets the DPI to be used for Drag Scroll. +* `#define PLOOPY_DRAGSCROLL_INVERT` - This reverses the direction that the scroll is performed. +* `#define PLOOPY_DRAGSCROLL_SEMAPHORE` - This is a divisor on the drag scroll sensitivity. The default is 0, which means that the drag scroll is at maximum sensitivity. A value of 4 would mean that the drag scroll is 4 times less sensitive. \ No newline at end of file diff --git a/keyboards/ploopyco/madromys/rev1_001/info.json b/keyboards/ploopyco/madromys/rev1_001/info.json new file mode 100644 index 00000000000..5cb4ee39381 --- /dev/null +++ b/keyboards/ploopyco/madromys/rev1_001/info.json @@ -0,0 +1,23 @@ +{ + "usb": { + "device_version": "1.0.0" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "direct": [ + ["GP15", "GP17", "GP19", "GP21", "GP23", "GP11"] + ] + }, + "rgblight": { + "led_count": 3, + "max_brightness": 40, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true + } + }, + "ws2812": { + "pin": "GP12" + } +} diff --git a/keyboards/ploopyco/madromys/rev1_001/readme.md b/keyboards/ploopyco/madromys/rev1_001/readme.md new file mode 100644 index 00000000000..b9a2e106dbd --- /dev/null +++ b/keyboards/ploopyco/madromys/rev1_001/readme.md @@ -0,0 +1,3 @@ +This is the R1.001+ version of Madromys. Future versions may have other features. + +See the [main readme](../readme.md) for more details. diff --git a/keyboards/ploopyco/madromys/rev1_001/rules.mk b/keyboards/ploopyco/madromys/rev1_001/rules.mk new file mode 100644 index 00000000000..e69de29bb2d diff --git a/keyboards/ploopyco/madromys/rules.mk b/keyboards/ploopyco/madromys/rules.mk new file mode 100644 index 00000000000..b7e33d92f92 --- /dev/null +++ b/keyboards/ploopyco/madromys/rules.mk @@ -0,0 +1,3 @@ +POINTING_DEVICE_DRIVER = pmw3360 + +DEFAULT_FOLDER = ploopyco/madromys/rev1_001 From 6876fbe51d02873ae4b63e555ac5cb0a7c36ee98 Mon Sep 17 00:00:00 2001 From: Maria <81305596+toril940@users.noreply.github.com> Date: Fri, 10 Nov 2023 21:39:00 +0000 Subject: [PATCH 39/51] [Keyboard] Add MariOrion v2.5 (#22273) * Pushed MariOrion v2.5 to the branch. Prod and proto version added. * Pushed MariOrion v2.5 to the branch. Prod and proto version added. * Proper addition of layout options Addition of split bs rshift tsangan layout options. Co-authored-by: Duncan Sutherland * Merge branch 'toril940mariorion_v25' of github.com:toril940/qmk_firmware into toril940mariorion_v25 * Merge branch 'toril940mariorion_v25' of github.com:toril940/qmk_firmware into toril940mariorion_v25 * Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/proto/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Updated readme.md with more information regarding make commands, and proto vs prod. * Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Duncan Sutherland * Amended some changes to info.json - community layouts changed from scope to array. * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Revert keyboards/gray_studio/think65/solder/solder.c Co-authored-by: Duncan Sutherland * Revert keyboards/gray_studio/think65/solder/solder.c Co-authored-by: Duncan Sutherland * Revert keyboards/gray_studio/think65/solder/solder.c Co-authored-by: Duncan Sutherland * Removed via.json from the via keymaps. Replaced with matrix_diagram.md. via.json file moved off to [public mariorion_v25 repo](https://github.com/toril940/orion-v25) * Revert keyboards/gray_studio/think65/solder/solder.c Co-authored-by: Duncan Sutherland * Removed via.json from the via keymaps. Replaced with matrix_diagram.md. via.json file moved off to [public mariorion_v25 repo](https://github.com/toril940/orion-v25) * Update keyboards/mariorion_v25/proto/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/rules.mk Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/proto/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/proto/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/proto/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Duncan Sutherland * Revert keyboards/gray_studio/think65/solder/solder.c Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/matrix_diagram.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/readme.md Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/proto/mariorion_v25.c Co-authored-by: Duncan Sutherland * Update keyboards/mariorion_v25/prod/mariorion_v25.c Co-authored-by: Duncan Sutherland * Pushed new info.json and keymap.c files. * Pushed new info.json and keymap.c files. * Fixes to LED driver wrt PWM definitions with STM. * Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/prod/info.json Co-authored-by: Ryan * Update keyboards/mariorion_v25/prod/mariorion_v25.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/info.json Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/config.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/mariorion_v25.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/mariorion_v25.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c Co-authored-by: Ryan * Committing a details update to readme.md. * Committing a details update to readme.md. * Update keyboards/mariorion_v25/prod/config.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/prod/mariorion_v25.c Co-authored-by: Ryan * Revert "Committing a details update to readme.md." This reverts commit 068a82a1fcf1996d87f7f97a10e9f5fbbee79a29. * Committing a details update to readme.md. * Update keyboards/mariorion_v25/halconf.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/mcuconf.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/prod/config.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/proto/config.h Co-authored-by: Ryan * Update keyboards/mariorion_v25/halconf.h Co-authored-by: Ryan * Production pictures replacing the standard ones in the readme.md :) * waffle87 requests bundled: - Licence headers added - Codeblocked matrix_diagram.md - Consolidated files where possible - Removed excess from config.h --------- Co-authored-by: toril940 Co-authored-by: Duncan Sutherland Co-authored-by: Ryan --- keyboards/mariorion_v25/halconf.h | 10 + .../mariorion_v25/keymaps/default/keymap.c | 32 + keyboards/mariorion_v25/keymaps/via/keymap.c | 32 + keyboards/mariorion_v25/keymaps/via/rules.mk | 1 + keyboards/mariorion_v25/mariorion_v25.c | 72 ++ keyboards/mariorion_v25/matrix_diagram.md | 29 + keyboards/mariorion_v25/mcuconf.h | 9 + keyboards/mariorion_v25/prod/config.h | 16 + keyboards/mariorion_v25/prod/info.json | 889 ++++++++++++++++++ keyboards/mariorion_v25/prod/rules.mk | 1 + keyboards/mariorion_v25/proto/config.h | 16 + keyboards/mariorion_v25/proto/info.json | 889 ++++++++++++++++++ keyboards/mariorion_v25/proto/rules.mk | 1 + keyboards/mariorion_v25/readme.md | 36 + keyboards/mariorion_v25/rules.mk | 1 + 15 files changed, 2034 insertions(+) create mode 100644 keyboards/mariorion_v25/halconf.h create mode 100644 keyboards/mariorion_v25/keymaps/default/keymap.c create mode 100644 keyboards/mariorion_v25/keymaps/via/keymap.c create mode 100644 keyboards/mariorion_v25/keymaps/via/rules.mk create mode 100644 keyboards/mariorion_v25/mariorion_v25.c create mode 100644 keyboards/mariorion_v25/matrix_diagram.md create mode 100644 keyboards/mariorion_v25/mcuconf.h create mode 100644 keyboards/mariorion_v25/prod/config.h create mode 100644 keyboards/mariorion_v25/prod/info.json create mode 100644 keyboards/mariorion_v25/prod/rules.mk create mode 100644 keyboards/mariorion_v25/proto/config.h create mode 100644 keyboards/mariorion_v25/proto/info.json create mode 100644 keyboards/mariorion_v25/proto/rules.mk create mode 100644 keyboards/mariorion_v25/readme.md create mode 100644 keyboards/mariorion_v25/rules.mk diff --git a/keyboards/mariorion_v25/halconf.h b/keyboards/mariorion_v25/halconf.h new file mode 100644 index 00000000000..a25bad2c7f9 --- /dev/null +++ b/keyboards/mariorion_v25/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI FALSE + +#include_next \ No newline at end of file diff --git a/keyboards/mariorion_v25/keymaps/default/keymap.c b/keyboards/mariorion_v25/keymaps/default/keymap.c new file mode 100644 index 00000000000..4bee23b2728 --- /dev/null +++ b/keyboards/mariorion_v25/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ - │ = │ Bk│ Bk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Fn │ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┼───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴─────────┴───┴──────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [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, EE_CLR, QK_BOOT, + + 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_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, RGB_TOG, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, RGB_MOD, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/mariorion_v25/keymaps/via/keymap.c b/keyboards/mariorion_v25/keymaps/via/keymap.c new file mode 100644 index 00000000000..95bbe9cfc28 --- /dev/null +++ b/keyboards/mariorion_v25/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │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 │ - │ = │ Bk│ Bk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Fn │ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┼───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴─────────┴───┴──────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [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_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_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, RGB_TOG, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, RGB_MOD, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/mariorion_v25/keymaps/via/rules.mk b/keyboards/mariorion_v25/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/mariorion_v25/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mariorion_v25/mariorion_v25.c b/keyboards/mariorion_v25/mariorion_v25.c new file mode 100644 index 00000000000..7c57c29dfd1 --- /dev/null +++ b/keyboards/mariorion_v25/mariorion_v25.c @@ -0,0 +1,72 @@ +// Copyright @ +// +// 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" + +// Optional override functions below. +// You can leave any or all of these undefined. +// These are only required if you want to perform custom actions. + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + setPinOutput(INDICATOR_0); + setPinOutput(INDICATOR_1); + setPinOutput(INDICATOR_2); + matrix_init_user(); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(state)) { + case 1: + writePinHigh(INDICATOR_0); + writePinLow(INDICATOR_1); + writePinLow(INDICATOR_2); + break; + case 2: + writePinLow(INDICATOR_0); + writePinHigh(INDICATOR_1); + writePinLow(INDICATOR_2); + break; + case 3: + writePinLow(INDICATOR_0); + writePinLow(INDICATOR_1); + writePinHigh(INDICATOR_2); + break; + default: + writePinHigh(INDICATOR_0); + writePinHigh(INDICATOR_1); + writePinHigh(INDICATOR_2); + break; + } + return layer_state_set_user(state); +} + +void suspend_power_down_kb(void) { + writePinLow(INDICATOR_0); + writePinLow(INDICATOR_1); + writePinLow(INDICATOR_2); + + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + writePinHigh(INDICATOR_0); + writePinHigh(INDICATOR_1); + writePinHigh(INDICATOR_2); + + suspend_wakeup_init_user(); +} diff --git a/keyboards/mariorion_v25/matrix_diagram.md b/keyboards/mariorion_v25/matrix_diagram.md new file mode 100644 index 00000000000..f37df5a6e10 --- /dev/null +++ b/keyboards/mariorion_v25/matrix_diagram.md @@ -0,0 +1,29 @@ +# Matrix Diagram for MariOrion v2.5 +``` +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0F │0G │0H │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │2F │1G │1H │ │1D │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │3F │2G │2H │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐3D │ ISO Enter +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘ +│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4G │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ +│50 │51 │52 │55 │5A │5B │5C │5D │ │5F │5G │5H │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ +┌────────┐ ┌──────────┐ +│40 │ 2.25u LShift 2.75u RShift │4C │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│50 │51 │52 │55 │5B │5C │5D │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────┐ +│50 │51 │52 │53 │55 │57 │5B │5C │5D │ Split 7u Spacebar +└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘ +┌─────┬───┬───────────────────────────────────────┬───┬─────┐ +│50 │51 │55 │5C │5D │ 10u Spacebar +└─────┴───┴───────────────────────────────────────┴───┴─────┘ +``` \ No newline at end of file diff --git a/keyboards/mariorion_v25/mcuconf.h b/keyboards/mariorion_v25/mcuconf.h new file mode 100644 index 00000000000..c2cf95aef2e --- /dev/null +++ b/keyboards/mariorion_v25/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#define STM32_PWM_USE_TIM17 TRUE +#define STM32_TIM17_SUPPRESS_ISR \ No newline at end of file diff --git a/keyboards/mariorion_v25/prod/config.h b/keyboards/mariorion_v25/prod/config.h new file mode 100644 index 00000000000..042f7662d8e --- /dev/null +++ b/keyboards/mariorion_v25/prod/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_EXTERNAL_PULLUP + +#define WS2812_PWM_DRIVER PWMD17 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_DMA_CHANNEL 1 +// #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM17_UP + +#define INDICATOR_0 C9 +#define INDICATOR_1 C8 +#define INDICATOR_2 C7 \ No newline at end of file diff --git a/keyboards/mariorion_v25/prod/info.json b/keyboards/mariorion_v25/prod/info.json new file mode 100644 index 00000000000..dd014be03ae --- /dev/null +++ b/keyboards/mariorion_v25/prod/info.json @@ -0,0 +1,889 @@ +{ + "manufacturer": "Maria", + "keyboard_name": "MariOrion v2.5", + "maintainer": "toril940", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight" : true + }, + "indicators": { + "caps_lock": "A6", + "num_lock": "A15", + "on_state": 0 + }, + "rgblight": { + "led_count": 25, + "animations": { + "static_light": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "christmas": true, + "static_gradient": true, + "twinkle": true + }, + "driver": "ws2812", + "led_map": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 24, 23, 22, 21, 20], + "sleep": true + }, + "ws2812": { + "driver": "pwm", + "pin": "B9" + }, + "matrix_pins": { + "cols": ["A4", "A5", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B13", "B14", "B15", "C6", "B12", + "F0", "C15", "C14"], + "rows": ["B5", "B4", "B3", "A2", "C13", "B8"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x6108" + }, + "community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift", "tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift", + "tkl_iso", "tkl_iso_split_bs_rshift", "tkl_iso_tsangan", "tkl_iso_tsangan_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 2.375}, + {"matrix": [5, 5], "x": 6.25, "y": 5.25}, + {"matrix": [5, 7], "x": 7.25, "y": 5.25, "w": 2.375}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/mariorion_v25/prod/rules.mk b/keyboards/mariorion_v25/prod/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/mariorion_v25/prod/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mariorion_v25/proto/config.h b/keyboards/mariorion_v25/proto/config.h new file mode 100644 index 00000000000..6865f2dbb01 --- /dev/null +++ b/keyboards/mariorion_v25/proto/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Maria (@toril940) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_EXTERNAL_PULLUP + +#define WS2812_PWM_DRIVER PWMD17 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_DMA_CHANNEL 1 +// #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM17_UP + +#define INDICATOR_0 C8 +#define INDICATOR_1 C7 +#define INDICATOR_2 C6 \ No newline at end of file diff --git a/keyboards/mariorion_v25/proto/info.json b/keyboards/mariorion_v25/proto/info.json new file mode 100644 index 00000000000..be00d447d2b --- /dev/null +++ b/keyboards/mariorion_v25/proto/info.json @@ -0,0 +1,889 @@ +{ + "manufacturer": "Maria", + "keyboard_name": "MariOrion v2.5", + "maintainer": "toril940", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 25, + "animations": { + "static_light": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "christmas": true, + "static_gradient": true, + "twinkle": true + }, + "driver": "ws2812", + "led_map": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 24, 23, 22, 21, 20], + "sleep": true + }, + "indicators": { + "caps_lock": "A5", + "num_lock": "A15", + "on_state": 0 + }, + "ws2812": { + "driver": "pwm", + "pin": "B9" + }, + "matrix_pins": { + "cols": ["A3", "A4", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B12", "B13", "B14", "B15", "B11", + "F0", "C15", "C14"], + "rows": ["B5", "B4", "B3", "A2", "C13", "B8"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x6108" + }, + "community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift", "tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift", + "tkl_iso", "tkl_iso_split_bs_rshift", "tkl_iso_tsangan", "tkl_iso_tsangan_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 2.375}, + {"matrix": [5, 5], "x": 6.25, "y": 5.25}, + {"matrix": [5, 7], "x": 7.25, "y": 5.25, "w": 2.375}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 15], "x":15.25, "y":2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "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.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [1, 15], "x": 15.25, "y": 1.25}, + {"matrix": [1, 16], "x": 16.25, "y": 1.25}, + {"matrix": [1, 17], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 15], "x": 15.25, "y": 2.25}, + {"matrix": [2, 16], "x": 16.25, "y": 2.25}, + {"matrix": [2, 17], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 16], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 5], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 15], "x": 15.25, "y": 5.25}, + {"matrix": [5, 16], "x": 16.25, "y": 5.25}, + {"matrix": [5, 17], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/mariorion_v25/proto/rules.mk b/keyboards/mariorion_v25/proto/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/mariorion_v25/proto/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mariorion_v25/readme.md b/keyboards/mariorion_v25/readme.md new file mode 100644 index 00000000000..13f2f9dc2ab --- /dev/null +++ b/keyboards/mariorion_v25/readme.md @@ -0,0 +1,36 @@ +# MariOrion v2.5 + +![mariorion_v25_1](https://i.imgur.com/PFb6AGo.jpg) +![mariorion_v25_2](https://i.imgur.com/Fgdm2fx.jpg) + +This project was a revival of the Duck Orion v2.5, where we don't have very many PCBs with modern features, and +especially Alps support as well. This PCB has both Alps and MX support as well as universal layout support! It also +features a 3u/1u/3u split spacebar variant for fun :) + +The prototype version is for use only by Maria, and it's the r0 run in essence. Please do use prod unless otherwise +stated (prod me if you're confused, @mawiaa on Discord)! + +* Keyboard Maintainer: [Maria](https://github.com/toril940) +* Hardware Supported: MariOrion v2.5 PCB +* Hardware Availability: Link coming soon, through Hineybush :) + +Make example for this keyboard (after setting up your build environment): + + make mariorion_v25/prod:default + make mariorion_v25/proto:default + +Flashing example for this keyboard: + + make mariorion_v25/prod:default:flash + make mariorion_v25/proto: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 the reset button on the back of the PCB for 4-10 seconds or so - +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/mariorion_v25/rules.mk b/keyboards/mariorion_v25/rules.mk new file mode 100644 index 00000000000..f0bfa47284c --- /dev/null +++ b/keyboards/mariorion_v25/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = mariorion_v25/prod From 211fbbd16d441343d8ce2cdba4acd853762db117 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sat, 11 Nov 2023 20:50:33 +1100 Subject: [PATCH 40/51] Add `qmk license-check` developer-level CLI command. (#22075) --- lib/python/qmk/cli/__init__.py | 1 + lib/python/qmk/cli/license_check.py | 116 ++++++++++++++++++++++++++ lib/python/qmk/constants.py | 123 ++++++++++++++++++++++++++++ 3 files changed, 240 insertions(+) create mode 100644 lib/python/qmk/cli/license_check.py diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index b8bc99aa0d3..695a1800661 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -69,6 +69,7 @@ subcommands = [ 'qmk.cli.import.keymap', 'qmk.cli.info', 'qmk.cli.json2c', + 'qmk.cli.license_check', 'qmk.cli.lint', 'qmk.cli.kle2json', 'qmk.cli.list.keyboards', diff --git a/lib/python/qmk/cli/license_check.py b/lib/python/qmk/cli/license_check.py new file mode 100644 index 00000000000..4bda272ec9b --- /dev/null +++ b/lib/python/qmk/cli/license_check.py @@ -0,0 +1,116 @@ +# Copyright 2023 Nick Brassel (@tzarc) +# SPDX-License-Identifier: GPL-2.0-or-later +import re +from pathlib import Path +from milc import cli +from qmk.constants import LICENSE_TEXTS + +L_PAREN = re.compile(r'\(\[\{\<') +R_PAREN = re.compile(r'\)\]\}\>') +PUNCTUATION = re.compile(r'[\.,;:]+') +TRASH_PREFIX = re.compile(r'^(\s|/|\*|#)+') +TRASH_SUFFIX = re.compile(r'(\s|/|\*|#|\\)+$') +SPACE = re.compile(r'\s+') +SUFFIXES = ['.c', '.h', '.cpp', '.cxx', '.hpp', '.hxx'] + + +def _simplify_text(input): + lines = input.lower().split('\n') + lines = [PUNCTUATION.sub('', line) for line in lines] + lines = [TRASH_PREFIX.sub('', line) for line in lines] + lines = [TRASH_SUFFIX.sub('', line) for line in lines] + lines = [SPACE.sub(' ', line) for line in lines] + lines = [L_PAREN.sub('(', line) for line in lines] + lines = [R_PAREN.sub(')', line) for line in lines] + lines = [line.strip() for line in lines] + lines = [line for line in lines if line is not None and line != ''] + return ' '.join(lines) + + +def _detect_license_from_file_contents(filename, absolute=False): + data = filename.read_text(encoding='utf-8', errors='ignore') + filename_out = str(filename.absolute()) if absolute else str(filename) + + if 'SPDX-License-Identifier:' in data: + res = data.split('SPDX-License-Identifier:') + license = re.split(r'\s|//|\*', res[1].strip())[0].strip() + found = False + for short_license, _ in LICENSE_TEXTS: + if license.lower() == short_license.lower(): + license = short_license + found = True + break + + if not found: + if cli.args.short: + print(f'{filename_out} UNKNOWN') + else: + cli.log.error(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- unknown license, or no license detected!') + return False + + if cli.args.short: + print(f'{filename_out} {license}') + else: + cli.log.info(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- license detected: {license} (SPDX License Identifier)') + return True + + else: + simple_text = _simplify_text(data) + for short_license, long_licenses in LICENSE_TEXTS: + for long_license in long_licenses: + if long_license in simple_text: + if cli.args.short: + print(f'{filename_out} {short_license}') + else: + cli.log.info(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- license detected: {short_license} (Full text)') + return True + + if cli.args.short: + print(f'{filename_out} UNKNOWN') + else: + cli.log.error(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- unknown license, or no license detected!') + + return False + + +@cli.argument('inputs', nargs='*', arg_only=True, type=Path, help='List of input files or directories.') +@cli.argument('-s', '--short', action='store_true', help='Short output.') +@cli.argument('-a', '--absolute', action='store_true', help='Print absolute paths.') +@cli.argument('-e', '--extension', arg_only=True, action='append', default=[], help='Override list of extensions. Can be specified multiple times for multiple extensions.') +@cli.subcommand('File license check.', hidden=False if cli.config.user.developer else True) +def license_check(cli): + def _default_suffix_condition(s): + return s in SUFFIXES + + conditional = _default_suffix_condition + + if len(cli.args.extension) > 0: + suffixes = [f'.{s}' if not s.startswith('.') else s for s in cli.args.extension] + + def _specific_suffix_condition(s): + return s in suffixes + + conditional = _specific_suffix_condition + + # Pre-format all the licenses + for _, long_licenses in LICENSE_TEXTS: + for i in range(len(long_licenses)): + long_licenses[i] = _simplify_text(long_licenses[i]) + + check_list = set() + for filename in sorted(cli.args.inputs): + if filename.is_dir(): + for file in sorted(filename.rglob('*')): + if file.is_file() and conditional(file.suffix): + check_list.add(file) + elif filename.is_file(): + if conditional(filename.suffix): + check_list.add(filename) + + failed = False + for filename in sorted(check_list): + if not _detect_license_from_file_contents(filename, absolute=cli.args.absolute): + failed = True + + if failed: + return False diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py index 97bd84aa234..1967441fc89 100644 --- a/lib/python/qmk/constants.py +++ b/lib/python/qmk/constants.py @@ -189,3 +189,126 @@ GENERATED_HEADER_SH_LIKE = '''\ # ################################################################################ ''' + +LICENSE_TEXTS = [ + ( + 'GPL-2.0-or-later', [ + """\ + 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 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 any later version. + """ + ] + ), + ('GPL-2.0-only', ["""\ + 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; version 2. + """]), + ( + 'GPL-3.0-or-later', [ + """\ + 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 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 any later version. + """ + ] + ), + ('GPL-3.0-only', ["""\ + 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, version 3. + """]), + ( + 'LGPL-2.1-or-later', [ + """\ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 + of the License, or (at your option) any later version. + """, """\ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 + of the License, or any later version. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 + of the License, or (at your option) any later version. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 + of the License, or any later version. + """ + ] + ), + ( + 'LGPL-2.1-only', [ + """\ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; version 2.1. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; version 2.1. + """ + ] + ), + ( + 'LGPL-3.0-or-later', [ + """\ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser 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 free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 3 + of the License, or any later version. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 3 + of the License, or any later version. + """ + ] + ), + ( + 'LGPL-3.0-only', [ + """\ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; version 3. + """, """\ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; version 3. + """ + ] + ), + ('Apache-2.0', ["""\ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + """]), +] From 935c894f83fbdaab07560886e7c2916d68343f82 Mon Sep 17 00:00:00 2001 From: "jonylee@hfd" <108282809+jonylee1986@users.noreply.github.com> Date: Sun, 12 Nov 2023 03:08:26 +0800 Subject: [PATCH 41/51] add 5087 keyboard (#20557) Co-authored-by: Drashna Jaelre Co-authored-by: Joel Challis Co-authored-by: Ryan Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> --- keyboards/akko/5087/5087.c | 190 ++++++++++++++ keyboards/akko/5087/config.h | 52 ++++ keyboards/akko/5087/halconf.h | 23 ++ keyboards/akko/5087/info.json | 253 +++++++++++++++++++ keyboards/akko/5087/keymaps/default/keymap.c | 79 ++++++ keyboards/akko/5087/keymaps/via/keymap.c | 79 ++++++ keyboards/akko/5087/keymaps/via/rules.mk | 1 + keyboards/akko/5087/mcuconf.h | 24 ++ keyboards/akko/5087/readme.md | 19 ++ keyboards/akko/5087/rules.mk | 3 + 10 files changed, 723 insertions(+) create mode 100644 keyboards/akko/5087/5087.c create mode 100644 keyboards/akko/5087/config.h create mode 100644 keyboards/akko/5087/halconf.h create mode 100644 keyboards/akko/5087/info.json create mode 100644 keyboards/akko/5087/keymaps/default/keymap.c create mode 100644 keyboards/akko/5087/keymaps/via/keymap.c create mode 100644 keyboards/akko/5087/keymaps/via/rules.mk create mode 100644 keyboards/akko/5087/mcuconf.h create mode 100644 keyboards/akko/5087/readme.md create mode 100644 keyboards/akko/5087/rules.mk diff --git a/keyboards/akko/5087/5087.c b/keyboards/akko/5087/5087.c new file mode 100644 index 00000000000..4d6cf949009 --- /dev/null +++ b/keyboards/akko/5087/5087.c @@ -0,0 +1,190 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * 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" +// clang-format off +#ifdef RGB_MATRIX_ENABLE +const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + /*row0*/ + {1, A_1, B_1, C_1}, + {1, A_2, B_2, C_2}, + {1, A_3, B_3, C_3}, + {1, A_4, B_4, C_4}, + {1, A_5, B_5, C_5}, + {1, A_6, B_6, C_6}, + {1, A_7, B_7, C_7}, + {1, A_8, B_8, C_8}, + {1, A_9, B_9, C_9}, + {1, A_10, B_10, C_10}, + {1, A_11, B_11, C_11}, + {1, A_12, B_12, C_12}, + {1, A_13, B_13, C_13}, + {1, A_14, B_14, C_14}, + {1, A_15, B_15, C_15}, + {1, A_16, B_16, C_16}, + + /*row1*/ + {0, A_1, B_1, C_1}, + {0, A_2, B_2, C_2}, + {0, A_3, B_3, C_3}, + {0, A_4, B_4, C_4}, + {0, A_5, B_5, C_5}, + {0, A_6, B_6, C_6}, + {0, A_7, B_7, C_7}, + {0, A_8, B_8, C_8}, + {0, A_9, B_9, C_9}, + {0, A_10, B_10, C_10}, + {0, A_11, B_11, C_11}, + {0, A_12, B_12, C_12}, + {0, A_13, B_13, C_13}, + {0, A_14, B_14, C_14}, + {1, D_1, E_1, F_1}, + {1, D_2, E_2, F_2}, + {1, D_3, E_3, F_3}, + + /*row2*/ + {0, D_1, E_1, F_1}, + {0, D_2, E_2, F_2}, + {0, D_3, E_3, F_3}, + {0, D_4, E_4, F_4}, + {0, D_5, E_5, F_5}, + {0, D_6, E_6, F_6}, + {0, D_7, E_7, F_7}, + {0, D_8, E_8, F_8}, + {0, D_9, E_9, F_9}, + {0, D_10, E_10, F_10}, + {0, D_11, E_11, F_11}, + {0, D_12, E_12, F_12}, + {0, D_13, E_13, F_13}, + {0, D_14, E_14, F_14}, + {1, G_1, H_1, I_1}, + {1, G_2, H_2, I_2}, + {1, G_3, H_3, I_3}, + + /*row3*/ + {0, G_1, H_1, I_1}, + {0, G_2, H_2, I_2}, + {0, G_3, H_3, I_3}, + {0, G_4, H_4, I_4}, + {0, G_5, H_5, I_5}, + {0, G_6, H_6, I_6}, + {0, G_7, H_7, I_7}, + {0, G_8, H_8, I_8}, + {0, G_9, H_9, I_9}, + {0, G_10, H_10, I_10}, + {0, G_11, H_11, I_11}, + {0, G_12, H_12, I_12}, + {0, G_13, H_13, I_13}, + + /*row4*/ + {0, J_1, K_1, L_1}, + {0, J_2, K_2, L_2}, + {0, J_3, K_3, L_3}, + {0, J_4, K_4, L_4}, + {0, J_5, K_5, L_5}, + {0, J_6, K_6, L_6}, + {0, J_7, K_7, L_7}, + {0, J_8, K_8, L_8}, + {0, J_9, K_9, L_9}, + {0, J_10, K_10, L_10}, + {0, J_11, K_11, L_11}, + {0, J_12, K_12, L_12}, + {1, J_4, K_4, L_4}, + + /*row5*/ + {0, J_13, K_13, L_13}, + {0, J_14, K_14, L_14}, + {0, J_15, K_15, L_15}, + {0, J_16, K_16, L_16}, + {0, G_14, H_14, I_14}, + {0, G_15, H_15, I_15}, + {0, G_16, H_16, I_16}, + {0, D_15, E_15, F_15}, + {1, J_1, K_1, L_1}, + {1, J_2, K_2, L_2}, + {1, J_3, K_3, L_3}, +}; +#endif // RGB_MATRIX_ENABLE + +enum __layers { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN, +}; + +// clang-format on + +void matrix_init_kb(void) { + setPinOutput(LED_MAC_OS_PIN); // LDE2 MAC\WIN + writePinLow(LED_MAC_OS_PIN); + setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock + writePinLow(LED_WIN_LOCK_PIN); + + matrix_init_user(); +} + +void housekeeping_task_kb(void){ + writePin(LED_MAC_OS_PIN, (get_highest_layer(default_layer_state) == 3)); + writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case DF(WIN_B): + if (record->event.pressed) { + set_single_persistent_default_layer(WIN_B); + } + return false; + case DF(MAC_B): + if (record->event.pressed) { + set_single_persistent_default_layer(MAC_B); + keymap_config.no_gui = 0; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } break; + } + } + if (!rgb_matrix_is_enabled()) { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable(); + } + return false; + default: + return true; + } +} diff --git a/keyboards/akko/5087/config.h b/keyboards/akko/5087/config.h new file mode 100644 index 00000000000..50a1f224f8b --- /dev/null +++ b/keyboards/akko/5087/config.h @@ -0,0 +1,52 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * 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 + + +/* LED Indicators */ +#define LED_MAC_OS_PIN C10 +#define LED_WIN_LOCK_PIN C11 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* SPI Config for spi flash*/ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 +#define SPI_MOSI_PAL_MODE 5 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 +#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) + +/* I2C Config for LED Driver */ +#define DRIVER_COUNT 2 +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_ADDR_2 0b1110111 +#define I2C1_OPMODE OPMODE_I2C +#define I2C1_CLOCK_SPEED 400000 /* 400000 */ + +#define RGB_MATRIX_LED_COUNT 87 + +#define RGB_TRIGGER_ON_KEYDOWN +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES + diff --git a/keyboards/akko/5087/halconf.h b/keyboards/akko/5087/halconf.h new file mode 100644 index 00000000000..55bfe5c9779 --- /dev/null +++ b/keyboards/akko/5087/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * 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 +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/akko/5087/info.json b/keyboards/akko/5087/info.json new file mode 100644 index 00000000000..43bec927db1 --- /dev/null +++ b/keyboards/akko/5087/info.json @@ -0,0 +1,253 @@ +{ + "keyboard_name": "5087", + "manufacturer": "Akko", + "url":"https://www.akkogear.com", + "maintainer": "jonylee@hfd", + "usb": { + "vid": "0xFFFE", + "pid": "0x000C", + "device_version": "1.0.4", + "suspend_wakeup_delay": 400, + "force_nkro": true + }, + "processor": "WB32FQ95", + "bootloader": "wb32-dfu", + "features": { + "bootmagic": true, + "mousekey": false, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "rgb_matrix": true + }, + "dynamic_keymap": { + "layer_count": 6 + }, + "matrix_pins": { + "cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10"], + "rows": ["B15", "C6", "C7", "C8", "C9", "A8"] + }, + "diode_direction": "ROW2COL", + "indicators": { + "caps_lock": "A15" + }, + "rgb_matrix": { + "driver": "ckled2001", + "max_brightness": 180, + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "raindrops": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "multisplash": true + }, + "layout":[ + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0}, + { "flags": 4, "matrix": [0, 1], "x": 24, "y": 0}, + { "flags": 4, "matrix": [0, 2], "x": 38, "y": 0}, + { "flags": 4, "matrix": [0, 3], "x": 52, "y": 0}, + { "flags": 4, "matrix": [0, 4], "x": 66, "y": 0}, + { "flags": 4, "matrix": [0, 5], "x": 82, "y": 0}, + { "flags": 4, "matrix": [0, 6], "x": 96, "y": 0}, + { "flags": 4, "matrix": [0, 7], "x":110, "y": 0}, + { "flags": 4, "matrix": [0, 8], "x":124, "y": 0}, + { "flags": 4, "matrix": [0, 9], "x":140, "y": 0}, + { "flags": 4, "matrix": [0, 10], "x":154, "y": 0}, + { "flags": 4, "matrix": [0, 11], "x":168, "y": 0}, + { "flags": 4, "matrix": [0, 12], "x":182, "y": 0}, + { "flags": 4, "matrix": [0, 14], "x":196, "y": 0}, + { "flags": 4, "matrix": [0, 15], "x":210, "y": 0}, + { "flags": 4, "matrix": [0, 16], "x":224, "y": 0}, + + { "flags": 4, "matrix": [1, 0], "x": 0, "y": 12}, + { "flags": 4, "matrix": [1, 1], "x": 13, "y": 12}, + { "flags": 4, "matrix": [1, 2], "x": 26, "y": 12}, + { "flags": 4, "matrix": [1, 3], "x": 39, "y": 12}, + { "flags": 4, "matrix": [1, 4], "x": 52, "y": 12}, + { "flags": 4, "matrix": [1, 5], "x": 65, "y": 12}, + { "flags": 4, "matrix": [1, 6], "x": 79, "y": 12}, + { "flags": 4, "matrix": [1, 7], "x": 92, "y": 12}, + { "flags": 4, "matrix": [1, 8], "x":105, "y": 12}, + { "flags": 4, "matrix": [1, 9], "x":118, "y": 12}, + { "flags": 4, "matrix": [1, 10], "x":131, "y": 12}, + { "flags": 4, "matrix": [1, 11], "x":144, "y": 12}, + { "flags": 4, "matrix": [1, 12], "x":158, "y": 12}, + { "flags": 4, "matrix": [1, 13], "x":171, "y": 12}, + { "flags": 4, "matrix": [1, 14], "x":184, "y": 12}, + { "flags": 4, "matrix": [1, 15], "x":197, "y": 12}, + { "flags": 4, "matrix": [1, 16], "x":210, "y": 12}, + + { "flags": 4, "matrix": [2, 0], "x": 0, "y": 26}, + { "flags": 4, "matrix": [2, 1], "x": 14, "y": 26}, + { "flags": 4, "matrix": [2, 2], "x": 28, "y": 26}, + { "flags": 4, "matrix": [2, 3], "x": 42, "y": 26}, + { "flags": 4, "matrix": [2, 4], "x": 56, "y": 26}, + { "flags": 4, "matrix": [2, 5], "x": 70, "y": 26}, + { "flags": 4, "matrix": [2, 6], "x": 84, "y": 26}, + { "flags": 4, "matrix": [2, 7], "x": 98, "y": 26}, + { "flags": 4, "matrix": [2, 8], "x":112, "y": 26}, + { "flags": 4, "matrix": [2, 9], "x":126, "y": 26}, + { "flags": 4, "matrix": [2, 10], "x":140, "y": 26}, + { "flags": 4, "matrix": [2, 11], "x":154, "y": 26}, + { "flags": 4, "matrix": [2, 12], "x":168, "y": 26}, + { "flags": 4, "matrix": [2, 13], "x":182, "y": 26}, + { "flags": 4, "matrix": [2, 14], "x":196, "y": 26}, + { "flags": 4, "matrix": [2, 15], "x":210, "y": 26}, + { "flags": 4, "matrix": [2, 16], "x":224, "y": 26}, + + { "flags": 4, "matrix": [3, 0], "x": 0, "y": 38}, + { "flags": 4, "matrix": [3, 1], "x": 14, "y": 38}, + { "flags": 4, "matrix": [3, 2], "x": 28, "y": 38}, + { "flags": 4, "matrix": [3, 3], "x": 42, "y": 38}, + { "flags": 4, "matrix": [3, 4], "x": 56, "y": 38}, + { "flags": 4, "matrix": [3, 5], "x": 70, "y": 38}, + { "flags": 4, "matrix": [3, 6], "x": 84, "y": 38}, + { "flags": 4, "matrix": [3, 7], "x": 98, "y": 38}, + { "flags": 4, "matrix": [3, 8], "x":112, "y": 38}, + { "flags": 4, "matrix": [3, 9], "x":126, "y": 38}, + { "flags": 4, "matrix": [3, 10], "x":140, "y": 38}, + { "flags": 4, "matrix": [3, 11], "x":154, "y": 38}, + { "flags": 4, "matrix": [3, 13], "x":182, "y": 38}, + + { "flags": 4, "matrix": [4, 0], "x": 0, "y": 51}, + { "flags": 4, "matrix": [4, 1], "x": 14, "y": 51}, + { "flags": 4, "matrix": [4, 2], "x": 28, "y": 51}, + { "flags": 4, "matrix": [4, 3], "x": 42, "y": 51}, + { "flags": 4, "matrix": [4, 4], "x": 56, "y": 51}, + { "flags": 4, "matrix": [4, 5], "x": 70, "y": 51}, + { "flags": 4, "matrix": [4, 6], "x": 84, "y": 51}, + { "flags": 4, "matrix": [4, 7], "x": 98, "y": 51}, + { "flags": 4, "matrix": [4, 8], "x":112, "y": 51}, + { "flags": 4, "matrix": [4, 9], "x":126, "y": 51}, + { "flags": 4, "matrix": [4, 10], "x":140, "y": 51}, + { "flags": 4, "matrix": [4, 13], "x":154, "y": 51}, + { "flags": 4, "matrix": [4, 15], "x":182, "y": 51}, + + { "flags": 4, "matrix": [5, 0], "x": 0, "y": 64}, + { "flags": 4, "matrix": [5, 1], "x": 14, "y": 64}, + { "flags": 4, "matrix": [5, 2], "x": 28, "y": 64}, + { "flags": 4, "matrix": [5, 5], "x": 70, "y": 64}, + { "flags": 4, "matrix": [5, 9], "x":126, "y": 64}, + { "flags": 4, "matrix": [5, 10], "x":140, "y": 64}, + { "flags": 4, "matrix": [5, 11], "x":154, "y": 64}, + { "flags": 4, "matrix": [5, 13], "x":182, "y": 64}, + { "flags": 4, "matrix": [5, 14], "x":196, "y": 64}, + { "flags": 4, "matrix": [5, 15], "x":210, "y": 64}, + { "flags": 4, "matrix": [5, 16], "x":224, "y": 64} + + ] + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "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": [0, 10], "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 }, + + { "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 }, + { "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 }, + { "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 }, + + { "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 }, + { "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 }, + + { "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 }, + + { "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 }, + { "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 }, + { "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 }, + { "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 }, + { "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 }, + { "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 }, + { "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 }, + { "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 }, + + { "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 }, + { "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 }, + { "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 } + + ] + } + } +} diff --git a/keyboards/akko/5087/keymaps/default/keymap.c b/keyboards/akko/5087/keymaps/default/keymap.c new file mode 100644 index 00000000000..07763ccc891 --- /dev/null +++ b/keyboards/akko/5087/keymaps/default/keymap.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum __layers { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [WIN_B] = LAYOUT_tkl_ansi( /* Base */ + 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D), + + + [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ + _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI), + + [MAC_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D), + [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI) +}; +// clang-format on diff --git a/keyboards/akko/5087/keymaps/via/keymap.c b/keyboards/akko/5087/keymaps/via/keymap.c new file mode 100644 index 00000000000..dd59925fa90 --- /dev/null +++ b/keyboards/akko/5087/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum __layers { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [WIN_B] = LAYOUT_tkl_ansi( /* Base */ + 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D), + + + [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ + _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI), + + [MAC_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_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_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D), + [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI) +}; +// clang-format on diff --git a/keyboards/akko/5087/keymaps/via/rules.mk b/keyboards/akko/5087/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/akko/5087/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/akko/5087/mcuconf.h b/keyboards/akko/5087/mcuconf.h new file mode 100644 index 00000000000..0d16f4f04e4 --- /dev/null +++ b/keyboards/akko/5087/mcuconf.h @@ -0,0 +1,24 @@ +/* Copyright (C) 2022 jonylee@hfd + * + * 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 WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/akko/5087/readme.md b/keyboards/akko/5087/readme.md new file mode 100644 index 00000000000..1d002fbb9f3 --- /dev/null +++ b/keyboards/akko/5087/readme.md @@ -0,0 +1,19 @@ +# 5087 + +A customizable 80% keyboard. + +* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986) +* Hardware Supported:Akko 5087 +* Hardware Availability: [akko](https://www.akkogear.com/) + +Make example for this keyboard (after setting up your build environment): + + make akko/5087:default + +Flashing example for this keyboard: + + make akko/5087:default:flash + +**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/akko/5087/rules.mk b/keyboards/akko/5087/rules.mk new file mode 100644 index 00000000000..0dc7a331420 --- /dev/null +++ b/keyboards/akko/5087/rules.mk @@ -0,0 +1,3 @@ +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash + From 0189c485b928f26a5835c7c78fdb397494a9d974 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Sun, 12 Nov 2023 05:19:43 +0000 Subject: [PATCH 42/51] studiokestra/line_tkl: correct layout data (#22455) * fix `layouts` data * add EoF --- keyboards/studiokestra/line_tkl/info.json | 363 +++++++++++----------- 1 file changed, 180 insertions(+), 183 deletions(-) diff --git a/keyboards/studiokestra/line_tkl/info.json b/keyboards/studiokestra/line_tkl/info.json index 312dd6e5cfd..ba6601a3304 100644 --- a/keyboards/studiokestra/line_tkl/info.json +++ b/keyboards/studiokestra/line_tkl/info.json @@ -12,6 +12,11 @@ "mousekey": true, "nkro": true }, + "indicators": { + "caps_lock": "B6", + "on_state": 1, + "scroll_lock": "D2" + }, "matrix_pins": { "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "B5", "D5", "D3"], "rows": ["D0", "D1", "B0", "B7", "B3", "E6", "C7", "C6", "B4", "D7", "D6", "D4"] @@ -23,196 +28,188 @@ "pid": "0x8704", "vid": "0x7C10" }, - "indicators": { - "caps_lock": "B6", - "scroll_lock": "D2", - "on_state": 1 - }, - "community_layouts": [ - "tkl_ansi_tsangan", - "tkl_ansi_tsangan_split_bs_rshift" - ], + "community_layouts": ["tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift"], "layouts": { "LAYOUT_tkl_ansi_tsangan": { "layout": [ - { "matrix": [0,0], "x":0, "y":0}, - { "matrix": [0,1], "x":2.25, "y":0}, - { "matrix": [0,2], "x":3.25, "y":0}, - { "matrix": [1,2], "x":4.25, "y":0}, - { "matrix": [0,3], "x":5.5, "y":0}, - { "matrix": [1,3], "x":6.5, "y":0}, - { "matrix": [0,4], "x":7.5, "y":0}, - { "matrix": [1,4], "x":8.5, "y":0}, - { "matrix": [0,5], "x":9.75, "y":0}, - { "matrix": [1,5], "x":10.75, "y":0}, - { "matrix": [0,6], "x":11.75, "y":0}, - { "matrix": [1,6], "x":12.75, "y":0}, - { "matrix": [0,7], "x":14, "y":0}, - { "matrix": [1,7], "x":15.25, "y":0}, - { "matrix": [0,8], "x":16.25, "y":0}, - { "matrix": [1,8], "x":17.25, "y":0}, - { "matrix": [2,0], "x":0, "y":1.25}, - { "matrix": [3,0], "x":1, "y":1.25}, - { "matrix": [2,1], "x":2, "y":1.25}, - { "matrix": [3,1], "x":3, "y":1.25}, - { "matrix": [2,2], "x":4, "y":1.25}, - { "matrix": [3,2], "x":5, "y":1.25}, - { "matrix": [2,3], "x":6, "y":1.25}, - { "matrix": [3,3], "x":7, "y":1.25}, - { "matrix": [2,4], "x":8, "y":1.25}, - { "matrix": [3,4], "x":9, "y":1.25}, - { "matrix": [2,5], "x":10, "y":1.25}, - { "matrix": [3,5], "x":11, "y":1.25}, - { "matrix": [2,6], "x":12, "y":1.25}, - { "matrix": [3,6], "x":13, "y":1.25}, - { "matrix": [3,7], "x":15.25, "y":1.25}, - { "matrix": [2,8], "x":16.25, "y":1.25}, - { "matrix": [3,8], "x":17.25, "y":1.25}, - { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, - { "matrix": [5,0], "x":1.5, "y":2.25}, - { "matrix": [4,1], "x":2.5, "y":2.25}, - { "matrix": [5,1], "x":3.5, "y":2.25}, - { "matrix": [4,2], "x":4.5, "y":2.25}, - { "matrix": [5,2], "x":5.5, "y":2.25}, - { "matrix": [4,3], "x":6.5, "y":2.25}, - { "matrix": [5,3], "x":7.5, "y":2.25}, - { "matrix": [4,4], "x":8.5, "y":2.25}, - { "matrix": [5,4], "x":9.5, "y":2.25}, - { "matrix": [4,5], "x":10.5, "y":2.25}, - { "matrix": [5,5], "x":11.5, "y":2.25}, - { "matrix": [4,6], "x":12.5, "y":2.25}, - { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, - { "matrix": [5,7], "x":15.25, "y":2.25}, - { "matrix": [4,8], "x":16.25, "y":2.25}, - { "matrix": [5,8], "x":17.25, "y":2.25}, - { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, - { "matrix": [7,0], "x":1.75, "y":3.25}, - { "matrix": [6,1], "x":2.75, "y":3.25}, - { "matrix": [7,1], "x":3.75, "y":3.25}, - { "matrix": [6,2], "x":4.75, "y":3.25}, - { "matrix": [7,2], "x":5.75, "y":3.25}, - { "matrix": [6,3], "x":6.75, "y":3.25}, - { "matrix": [7,3], "x":7.75, "y":3.25}, - { "matrix": [6,4], "x":8.75, "y":3.25}, - { "matrix": [7,4], "x":9.75, "y":3.25}, - { "matrix": [6,5], "x":10.75, "y":3.25}, - { "matrix": [7,5], "x":11.75, "y":3.25}, - { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, - { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, - { "matrix": [8,1], "x":2.25, "y":4.25}, - { "matrix": [9,1], "x":3.25, "y":4.25}, - { "matrix": [8,2], "x":4.25, "y":4.25}, - { "matrix": [9,2], "x":5.25, "y":4.25}, - { "matrix": [8,3], "x":6.25, "y":4.25}, - { "matrix": [9,3], "x":7.25, "y":4.25}, - { "matrix": [8,4], "x":8.25, "y":4.25}, - { "matrix": [9,4], "x":9.25, "y":4.25}, - { "matrix": [8,5], "x":10.25, "y":4.25}, - { "matrix": [9,5], "x":11.25, "y":4.25}, - { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, - { "matrix": [9,8], "x":16.25, "y":4.25}, - { "matrix": [10,0], "x":0, "y":5.25, "w":1.5}, - { "matrix": [11,0], "x":1.5,"y":5.25}, - { "matrix": [10,1], "x":2.5,"y":5.25,"w":1.5}, - { "matrix": [10,3], "x":4,"y":5.25,"w":7}, - { "matrix": [11,5], "x":11,"y":5.25,"w":1.5}, - { "matrix": [10,6], "x":12.5,"y":5.25}, - { "matrix": [10,7], "x":13.5,"y":5.25,"w":1.5}, - { "matrix": [11,7], "x":15.25, "y":5.25}, - { "matrix": [10,8], "x":16.25, "y":5.25}, - { "matrix": [11,8], "x":17.25, "y":5.25} + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 3], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6.5, "y": 0}, + {"matrix": [0, 4], "x": 7.5, "y": 0}, + {"matrix": [1, 4], "x": 8.5, "y": 0}, + {"matrix": [0, 5], "x": 9.5, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [1, 7], "x": 15.25, "y": 0}, + {"matrix": [0, 8], "x": 16.25, "y": 0}, + {"matrix": [1, 8], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1.25}, + {"matrix": [3, 0], "x": 1, "y": 1.25}, + {"matrix": [2, 1], "x": 2, "y": 1.25}, + {"matrix": [3, 1], "x": 3, "y": 1.25}, + {"matrix": [2, 2], "x": 4, "y": 1.25}, + {"matrix": [3, 2], "x": 5, "y": 1.25}, + {"matrix": [2, 3], "x": 6, "y": 1.25}, + {"matrix": [3, 3], "x": 7, "y": 1.25}, + {"matrix": [2, 4], "x": 8, "y": 1.25}, + {"matrix": [3, 4], "x": 9, "y": 1.25}, + {"matrix": [2, 5], "x": 10, "y": 1.25}, + {"matrix": [3, 5], "x": 11, "y": 1.25}, + {"matrix": [2, 6], "x": 12, "y": 1.25}, + {"matrix": [3, 6], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [3, 7], "x": 15.25, "y": 1.25}, + {"matrix": [2, 8], "x": 16.25, "y": 1.25}, + {"matrix": [3, 8], "x": 17.25, "y": 1.25}, + {"matrix": [4, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [5, 0], "x": 1.5, "y": 2.25}, + {"matrix": [4, 1], "x": 2.5, "y": 2.25}, + {"matrix": [5, 1], "x": 3.5, "y": 2.25}, + {"matrix": [4, 2], "x": 4.5, "y": 2.25}, + {"matrix": [5, 2], "x": 5.5, "y": 2.25}, + {"matrix": [4, 3], "x": 6.5, "y": 2.25}, + {"matrix": [5, 3], "x": 7.5, "y": 2.25}, + {"matrix": [4, 4], "x": 8.5, "y": 2.25}, + {"matrix": [5, 4], "x": 9.5, "y": 2.25}, + {"matrix": [4, 5], "x": 10.5, "y": 2.25}, + {"matrix": [5, 5], "x": 11.5, "y": 2.25}, + {"matrix": [4, 6], "x": 12.5, "y": 2.25}, + {"matrix": [4, 7], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [5, 7], "x": 15.25, "y": 2.25}, + {"matrix": [4, 8], "x": 16.25, "y": 2.25}, + {"matrix": [5, 8], "x": 17.25, "y": 2.25}, + {"matrix": [6, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [7, 0], "x": 1.75, "y": 3.25}, + {"matrix": [6, 1], "x": 2.75, "y": 3.25}, + {"matrix": [7, 1], "x": 3.75, "y": 3.25}, + {"matrix": [6, 2], "x": 4.75, "y": 3.25}, + {"matrix": [7, 2], "x": 5.75, "y": 3.25}, + {"matrix": [6, 3], "x": 6.75, "y": 3.25}, + {"matrix": [7, 3], "x": 7.75, "y": 3.25}, + {"matrix": [6, 4], "x": 8.75, "y": 3.25}, + {"matrix": [7, 4], "x": 9.75, "y": 3.25}, + {"matrix": [6, 5], "x": 10.75, "y": 3.25}, + {"matrix": [7, 5], "x": 11.75, "y": 3.25}, + {"matrix": [6, 6], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [8, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [8, 1], "x": 2.25, "y": 4.25}, + {"matrix": [9, 1], "x": 3.25, "y": 4.25}, + {"matrix": [8, 2], "x": 4.25, "y": 4.25}, + {"matrix": [9, 2], "x": 5.25, "y": 4.25}, + {"matrix": [8, 3], "x": 6.25, "y": 4.25}, + {"matrix": [9, 3], "x": 7.25, "y": 4.25}, + {"matrix": [8, 4], "x": 8.25, "y": 4.25}, + {"matrix": [9, 4], "x": 9.25, "y": 4.25}, + {"matrix": [8, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4.25}, + {"matrix": [8, 6], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [9, 8], "x": 16.25, "y": 4.25}, + {"matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [11, 0], "x": 1.5, "y": 5.25}, + {"matrix": [10, 1], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [11, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [10, 6], "x": 12.5, "y": 5.25}, + {"matrix": [10, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [11, 7], "x": 15.25, "y": 5.25}, + {"matrix": [10, 8], "x": 16.25, "y": 5.25}, + {"matrix": [11, 8], "x": 17.25, "y": 5.25} ] }, "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { "layout": [ - { "matrix": [0,0], "x":0, "y":0}, - { "matrix": [0,1], "x":2.25, "y":0}, - { "matrix": [0,2], "x":3.25, "y":0}, - { "matrix": [1,2], "x":4.25, "y":0}, - { "matrix": [0,3], "x":5.5, "y":0}, - { "matrix": [1,3], "x":6.5, "y":0}, - { "matrix": [0,4], "x":7.5, "y":0}, - { "matrix": [1,4], "x":8.5, "y":0}, - { "matrix": [0,5], "x":9.75, "y":0}, - { "matrix": [1,5], "x":10.75, "y":0}, - { "matrix": [0,6], "x":11.75, "y":0}, - { "matrix": [1,6], "x":12.75, "y":0}, - { "matrix": [0,7], "x":14, "y":0}, - { "matrix": [1,7], "x":15.25, "y":0}, - { "matrix": [0,8], "x":16.25, "y":0}, - { "matrix": [1,8], "x":17.25, "y":0}, - { "matrix": [2,0], "x":0, "y":1.25}, - { "matrix": [3,0], "x":1, "y":1.25}, - { "matrix": [2,1], "x":2, "y":1.25}, - { "matrix": [3,1], "x":3, "y":1.25}, - { "matrix": [2,2], "x":4, "y":1.25}, - { "matrix": [3,2], "x":5, "y":1.25}, - { "matrix": [2,3], "x":6, "y":1.25}, - { "matrix": [3,3], "x":7, "y":1.25}, - { "matrix": [2,4], "x":8, "y":1.25}, - { "matrix": [3,4], "x":9, "y":1.25}, - { "matrix": [2,5], "x":10, "y":1.25}, - { "matrix": [3,5], "x":11, "y":1.25}, - { "matrix": [2,6], "x":12, "y":1.25}, - { "matrix": [3,6], "x":13, "y":1.25}, - { "matrix": [2,7], "x":14, "y":1.25}, - { "matrix": [3,7], "x":15.25, "y":1.25}, - { "matrix": [2,8], "x":16.25, "y":1.25}, - { "matrix": [3,8], "x":17.25, "y":1.25}, - { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, - { "matrix": [5,0], "x":1.5, "y":2.25}, - { "matrix": [4,1], "x":2.5, "y":2.25}, - { "matrix": [5,1], "x":3.5, "y":2.25}, - { "matrix": [4,2], "x":4.5, "y":2.25}, - { "matrix": [5,2], "x":5.5, "y":2.25}, - { "matrix": [4,3], "x":6.5, "y":2.25}, - { "matrix": [5,3], "x":7.5, "y":2.25}, - { "matrix": [4,4], "x":8.5, "y":2.25}, - { "matrix": [5,4], "x":9.5, "y":2.25}, - { "matrix": [4,5], "x":10.5, "y":2.25}, - { "matrix": [5,5], "x":11.5, "y":2.25}, - { "matrix": [4,6], "x":12.5, "y":2.25}, - { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, - { "matrix": [5,7], "x":15.25, "y":2.25}, - { "matrix": [4,8], "x":16.25, "y":2.25}, - { "matrix": [5,8], "x":17.25, "y":2.25}, - { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, - { "matrix": [7,0], "x":1.75, "y":3.25}, - { "matrix": [6,1], "x":2.75, "y":3.25}, - { "matrix": [7,1], "x":3.75, "y":3.25}, - { "matrix": [6,2], "x":4.75, "y":3.25}, - { "matrix": [7,2], "x":5.75, "y":3.25}, - { "matrix": [6,3], "x":6.75, "y":3.25}, - { "matrix": [7,3], "x":7.75, "y":3.25}, - { "matrix": [6,4], "x":8.75, "y":3.25}, - { "matrix": [7,4], "x":9.75, "y":3.25}, - { "matrix": [6,5], "x":10.75, "y":3.25}, - { "matrix": [7,5], "x":11.75, "y":3.25}, - { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, - { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, - { "matrix": [8,1], "x":2.25, "y":4.25}, - { "matrix": [9,1], "x":3.25, "y":4.25}, - { "matrix": [8,2], "x":4.25, "y":4.25}, - { "matrix": [9,2], "x":5.25, "y":4.25}, - { "matrix": [8,3], "x":6.25, "y":4.25}, - { "matrix": [9,3], "x":7.25, "y":4.25}, - { "matrix": [8,4], "x":8.25, "y":4.25}, - { "matrix": [9,4], "x":9.25, "y":4.25}, - { "matrix": [8,5], "x":10.25, "y":4.25}, - { "matrix": [9,5], "x":11.25, "y":4.25}, - { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, - { "matrix": [9,6], "x":14, "y":4.25}, - { "matrix": [9,8], "x":16.25, "y":4.25}, - { "matrix": [10,0], "x":0, "y":5.25, "w":1.5}, - { "matrix": [11,0], "x":1.5,"y":5.25}, - { "matrix": [10,1], "x":2.5,"y":5.25,"w":1.5}, - { "matrix": [10,3], "x":4,"y":5.25,"w":7}, - { "matrix": [11,5], "x":11,"y":5.25,"w":1.5}, - { "matrix": [10,6], "x":12.5,"y":5.25}, - { "matrix": [10,7], "x":13.5,"y":5.25,"w":1.5}, - { "matrix": [11,7], "x":15.25, "y":5.25}, - { "matrix": [10,8], "x":16.25, "y":5.25}, - { "matrix": [11,8], "x":17.25, "y":5.25} + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 3], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6.5, "y": 0}, + {"matrix": [0, 4], "x": 7.5, "y": 0}, + {"matrix": [1, 4], "x": 8.5, "y": 0}, + {"matrix": [0, 5], "x": 9.5, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [1, 7], "x": 15.25, "y": 0}, + {"matrix": [0, 8], "x": 16.25, "y": 0}, + {"matrix": [1, 8], "x": 17.25, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1.25}, + {"matrix": [3, 0], "x": 1, "y": 1.25}, + {"matrix": [2, 1], "x": 2, "y": 1.25}, + {"matrix": [3, 1], "x": 3, "y": 1.25}, + {"matrix": [2, 2], "x": 4, "y": 1.25}, + {"matrix": [3, 2], "x": 5, "y": 1.25}, + {"matrix": [2, 3], "x": 6, "y": 1.25}, + {"matrix": [3, 3], "x": 7, "y": 1.25}, + {"matrix": [2, 4], "x": 8, "y": 1.25}, + {"matrix": [3, 4], "x": 9, "y": 1.25}, + {"matrix": [2, 5], "x": 10, "y": 1.25}, + {"matrix": [3, 5], "x": 11, "y": 1.25}, + {"matrix": [2, 6], "x": 12, "y": 1.25}, + {"matrix": [3, 6], "x": 13, "y": 1.25}, + {"matrix": [2, 7], "x": 14, "y": 1.25}, + {"matrix": [3, 7], "x": 15.25, "y": 1.25}, + {"matrix": [2, 8], "x": 16.25, "y": 1.25}, + {"matrix": [3, 8], "x": 17.25, "y": 1.25}, + {"matrix": [4, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [5, 0], "x": 1.5, "y": 2.25}, + {"matrix": [4, 1], "x": 2.5, "y": 2.25}, + {"matrix": [5, 1], "x": 3.5, "y": 2.25}, + {"matrix": [4, 2], "x": 4.5, "y": 2.25}, + {"matrix": [5, 2], "x": 5.5, "y": 2.25}, + {"matrix": [4, 3], "x": 6.5, "y": 2.25}, + {"matrix": [5, 3], "x": 7.5, "y": 2.25}, + {"matrix": [4, 4], "x": 8.5, "y": 2.25}, + {"matrix": [5, 4], "x": 9.5, "y": 2.25}, + {"matrix": [4, 5], "x": 10.5, "y": 2.25}, + {"matrix": [5, 5], "x": 11.5, "y": 2.25}, + {"matrix": [4, 6], "x": 12.5, "y": 2.25}, + {"matrix": [4, 7], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [5, 7], "x": 15.25, "y": 2.25}, + {"matrix": [4, 8], "x": 16.25, "y": 2.25}, + {"matrix": [5, 8], "x": 17.25, "y": 2.25}, + {"matrix": [6, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [7, 0], "x": 1.75, "y": 3.25}, + {"matrix": [6, 1], "x": 2.75, "y": 3.25}, + {"matrix": [7, 1], "x": 3.75, "y": 3.25}, + {"matrix": [6, 2], "x": 4.75, "y": 3.25}, + {"matrix": [7, 2], "x": 5.75, "y": 3.25}, + {"matrix": [6, 3], "x": 6.75, "y": 3.25}, + {"matrix": [7, 3], "x": 7.75, "y": 3.25}, + {"matrix": [6, 4], "x": 8.75, "y": 3.25}, + {"matrix": [7, 4], "x": 9.75, "y": 3.25}, + {"matrix": [6, 5], "x": 10.75, "y": 3.25}, + {"matrix": [7, 5], "x": 11.75, "y": 3.25}, + {"matrix": [6, 6], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [8, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [8, 1], "x": 2.25, "y": 4.25}, + {"matrix": [9, 1], "x": 3.25, "y": 4.25}, + {"matrix": [8, 2], "x": 4.25, "y": 4.25}, + {"matrix": [9, 2], "x": 5.25, "y": 4.25}, + {"matrix": [8, 3], "x": 6.25, "y": 4.25}, + {"matrix": [9, 3], "x": 7.25, "y": 4.25}, + {"matrix": [8, 4], "x": 8.25, "y": 4.25}, + {"matrix": [9, 4], "x": 9.25, "y": 4.25}, + {"matrix": [8, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4.25}, + {"matrix": [8, 6], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 6], "x": 14, "y": 4.25}, + {"matrix": [9, 8], "x": 16.25, "y": 4.25}, + {"matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [11, 0], "x": 1.5, "y": 5.25}, + {"matrix": [10, 1], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [11, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [10, 6], "x": 12.5, "y": 5.25}, + {"matrix": [10, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [11, 7], "x": 15.25, "y": 5.25}, + {"matrix": [10, 8], "x": 16.25, "y": 5.25}, + {"matrix": [11, 8], "x": 17.25, "y": 5.25} ] } } From c2326c05c0778025adc681b962a04626ea6dba77 Mon Sep 17 00:00:00 2001 From: John Barbero Date: Sun, 12 Nov 2023 06:30:31 +0100 Subject: [PATCH 43/51] [Keyboard] Fixes to make snes_macropad play nicer with qmk configurator (#22432) * [Keyboard] Change default implementation for get_layer_name_user Will now show the layer number instead of "Unknown", since this is what will be shown if QMK Configurator is used to compile the firmware. * [Keyboard] Update the layout info This makes it look sort of like a macropad + gamepad rather than an 4x6 ortholinear keyboard. * [Keyboard] Fix default implementation of get_layer_name_user Based on feedback from code review the implementation was swapped in favor of using get_u8_str. This implied a change to the argument type from int to uint8_t, which cascaded into the existing keymaps. (This made sense in general, since the return type of get_highest_layer is also a uint8_t.) --- keyboards/snes_macropad/info.json | 24 +++++++++---------- .../snes_macropad/keymaps/default/keymap.c | 2 +- .../snes_macropad/keymaps/jbarberu/keymap.c | 2 +- keyboards/snes_macropad/keymaps/test/keymap.c | 2 +- keyboards/snes_macropad/snes_macropad.c | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/keyboards/snes_macropad/info.json b/keyboards/snes_macropad/info.json index c54e9bb0b26..15e3c9ee678 100644 --- a/keyboards/snes_macropad/info.json +++ b/keyboards/snes_macropad/info.json @@ -45,18 +45,18 @@ {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [3, 0], "x": 0, "y": 3}, - {"matrix": [3, 1], "x": 1, "y": 3}, - {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [4, 0], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - {"matrix": [4, 2], "x": 2, "y": 4}, - {"matrix": [4, 3], "x": 3, "y": 4}, - {"matrix": [5, 0], "x": 0, "y": 5}, - {"matrix": [5, 1], "x": 1, "y": 5}, - {"matrix": [5, 2], "x": 2, "y": 5}, - {"matrix": [5, 3], "x": 3, "y": 5} + {"matrix": [3, 0], "x": 5.2, "y": 0, "w": 2, "h": 0.75}, + {"matrix": [3, 1], "x": 10.65, "y": 0, "w": 2, "h": 0.75}, + {"matrix": [3, 2], "x": 7.9, "y": 2.5, "w": 1, "h": 0.75}, + {"matrix": [3, 3], "x": 8.9, "y": 2.5, "w": 1, "h": 0.75}, + {"matrix": [4, 0], "x": 6, "y": 1, "w": 0.85, "h": 0.85}, + {"matrix": [4, 1], "x": 6, "y": 3, "w": 0.85, "h": 0.85}, + {"matrix": [4, 2], "x": 5.2, "y": 2, "w": 0.85, "h": 0.85}, + {"matrix": [4, 3], "x": 6.8, "y": 2, "w": 0.85, "h": 0.85}, + {"matrix": [5, 0], "x": 11.8, "y": 2, "w": 0.85, "h": 0.85}, + {"matrix": [5, 1], "x": 11, "y": 3, "w": 0.85, "h": 0.85}, + {"matrix": [5, 2], "x": 11, "y": 1, "w": 0.85, "h": 0.85}, + {"matrix": [5, 3], "x": 10.2, "y": 2, "w": 0.85, "h": 0.85} ] } }, diff --git a/keyboards/snes_macropad/keymaps/default/keymap.c b/keyboards/snes_macropad/keymaps/default/keymap.c index 34f4f6248a0..c4896b1f49b 100644 --- a/keyboards/snes_macropad/keymaps/default/keymap.c +++ b/keyboards/snes_macropad/keymaps/default/keymap.c @@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on -const char* get_layer_name_user(int layer) { +const char* get_layer_name_user(uint8_t layer) { switch (layer) { case L_Numpad: return "Numpad"; diff --git a/keyboards/snes_macropad/keymaps/jbarberu/keymap.c b/keyboards/snes_macropad/keymaps/jbarberu/keymap.c index 0fbe0fa6266..478d1461e25 100644 --- a/keyboards/snes_macropad/keymaps/jbarberu/keymap.c +++ b/keyboards/snes_macropad/keymaps/jbarberu/keymap.c @@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on -const char * get_layer_name_user(int layer) { +const char * get_layer_name_user(uint8_t layer) { switch (layer) { case L_Numpad: return "Numpad"; diff --git a/keyboards/snes_macropad/keymaps/test/keymap.c b/keyboards/snes_macropad/keymaps/test/keymap.c index 86dd6699657..72be941694c 100644 --- a/keyboards/snes_macropad/keymaps/test/keymap.c +++ b/keyboards/snes_macropad/keymaps/test/keymap.c @@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on -const char * get_layer_name_user(int layer) { +const char * get_layer_name_user(uint8_t layer) { switch (layer) { case L_Numpad: return "Numpad"; diff --git a/keyboards/snes_macropad/snes_macropad.c b/keyboards/snes_macropad/snes_macropad.c index a8e04c8c32a..ba4ce44bd1e 100644 --- a/keyboards/snes_macropad/snes_macropad.c +++ b/keyboards/snes_macropad/snes_macropad.c @@ -57,8 +57,8 @@ static void oled_render_keylog(void) { oled_write_char(key_name, false); } -__attribute__((weak)) const char * get_layer_name_user(int layer) { - return "Unknown"; +__attribute__((weak)) const char * get_layer_name_user(uint8_t layer) { + return get_u8_str(layer, ' '); } static void oled_render_layer(void) { From 56b6b28fe9429224bda9bff74e2e8f587d77e121 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Mon, 13 Nov 2023 02:02:46 +0000 Subject: [PATCH 44/51] add `68_ansi` Community Layout to nebula68b (#22433) --- keyboards/spaceholdings/nebula68b/info.json | 81 +++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/keyboards/spaceholdings/nebula68b/info.json b/keyboards/spaceholdings/nebula68b/info.json index 85236629768..c82e52299d3 100755 --- a/keyboards/spaceholdings/nebula68b/info.json +++ b/keyboards/spaceholdings/nebula68b/info.json @@ -21,7 +21,88 @@ "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "atmel-dfu", + "community_layouts": ["68_ansi"], "layouts": { + "LAYOUT_68_ansi": { + "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": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [2, 14], "x": 16.25, "y": 0}, + + {"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": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [3, 14], "x": 16.25, "y": 1}, + + {"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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [3, 13], "x": 15.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + + {"matrix": [4, 12], "x": 14.25, "y": 4}, + {"matrix": [4, 13], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4} + ] + }, "LAYOUT_68_ansi_split_bs": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, From 50844a8e67c37329d5a08f1f35cd57bb7c7a8c24 Mon Sep 17 00:00:00 2001 From: precondition <57645186+precondition@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:55:45 +0100 Subject: [PATCH 45/51] =?UTF-8?q?Fix=20typos:=20key-modifer=E2=86=92key-mo?= =?UTF-8?q?difier=20and=20interacton=E2=86=92interaction=20(#22464)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/feature_key_overrides.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/feature_key_overrides.md b/docs/feature_key_overrides.md index ec7efd4c017..59eced95c36 100644 --- a/docs/feature_key_overrides.md +++ b/docs/feature_key_overrides.md @@ -21,7 +21,7 @@ Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers: #### `ko_make_basic(modifiers, key, replacement)` -Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior. +Returns a `key_override_t`, which sends `replacement` (can be a key-modifier combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior. #### `ko_make_with_layers(modifiers, key, replacement, layers)` Additionally takes a bitmask `layers` that defines on which layers the override is used. @@ -224,7 +224,7 @@ The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT ## Difference to Combos :id=difference-to-combos -Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable. +Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interaction with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable. ## Solution to the problem of flashing modifiers :id=neutralize-flashing-modifiers From 44062b50560d7a1c44eec0ee09f4441f06591b65 Mon Sep 17 00:00:00 2001 From: cole smith <38364556+daysgobye@users.noreply.github.com> Date: Mon, 13 Nov 2023 17:49:15 -0800 Subject: [PATCH 46/51] Bs equals (#21690) Co-authored-by: Drashna Jaelre Co-authored-by: Ryan Co-authored-by: jack <0x6A73@pm.me> --- keyboards/boardsource/equals/48/config.h | 23 ++ keyboards/boardsource/equals/48/halconf.h | 9 + keyboards/boardsource/equals/48/info.json | 180 ++++++++++++++++ .../equals/48/keymaps/default/keymap.c | 33 +++ .../equals/48/keymaps/via/keymap.c | 34 +++ .../equals/48/keymaps/via/rules.mk | 1 + keyboards/boardsource/equals/48/mcuconf.h | 11 + keyboards/boardsource/equals/48/rules.mk | 3 + keyboards/boardsource/equals/60/config.h | 23 ++ keyboards/boardsource/equals/60/halconf.h | 9 + keyboards/boardsource/equals/60/info.json | 203 ++++++++++++++++++ .../equals/60/keymaps/default/keymap.c | 36 ++++ .../equals/60/keymaps/via/keymap.c | 36 ++++ .../equals/60/keymaps/via/rules.mk | 1 + keyboards/boardsource/equals/60/mcuconf.h | 11 + keyboards/boardsource/equals/60/rules.mk | 3 + keyboards/boardsource/equals/avr/config.h | 4 + keyboards/boardsource/equals/avr/info.json | 202 +++++++++++++++++ .../equals/avr/keymaps/default/keymap.c | 36 ++++ .../equals/avr/keymaps/via/keymap.c | 36 ++++ .../equals/avr/keymaps/via/rules.mk | 1 + keyboards/boardsource/equals/equals.c | 18 ++ .../equals/graphics/thintel15.qff.c | 69 ++++++ keyboards/boardsource/equals/info.json | 21 ++ keyboards/boardsource/equals/readme.md | 33 +++ keyboards/boardsource/equals/ui.c | 40 ++++ 26 files changed, 1076 insertions(+) create mode 100644 keyboards/boardsource/equals/48/config.h create mode 100644 keyboards/boardsource/equals/48/halconf.h create mode 100644 keyboards/boardsource/equals/48/info.json create mode 100644 keyboards/boardsource/equals/48/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/equals/48/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/equals/48/keymaps/via/rules.mk create mode 100644 keyboards/boardsource/equals/48/mcuconf.h create mode 100644 keyboards/boardsource/equals/48/rules.mk create mode 100644 keyboards/boardsource/equals/60/config.h create mode 100644 keyboards/boardsource/equals/60/halconf.h create mode 100644 keyboards/boardsource/equals/60/info.json create mode 100644 keyboards/boardsource/equals/60/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/equals/60/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/equals/60/keymaps/via/rules.mk create mode 100644 keyboards/boardsource/equals/60/mcuconf.h create mode 100644 keyboards/boardsource/equals/60/rules.mk create mode 100644 keyboards/boardsource/equals/avr/config.h create mode 100644 keyboards/boardsource/equals/avr/info.json create mode 100644 keyboards/boardsource/equals/avr/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/equals/avr/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/equals/avr/keymaps/via/rules.mk create mode 100644 keyboards/boardsource/equals/equals.c create mode 100644 keyboards/boardsource/equals/graphics/thintel15.qff.c create mode 100644 keyboards/boardsource/equals/info.json create mode 100644 keyboards/boardsource/equals/readme.md create mode 100644 keyboards/boardsource/equals/ui.c diff --git a/keyboards/boardsource/equals/48/config.h b/keyboards/boardsource/equals/48/config.h new file mode 100644 index 00000000000..952fa269c6e --- /dev/null +++ b/keyboards/boardsource/equals/48/config.h @@ -0,0 +1,23 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U + +#define RGB_MATRIX_LED_COUNT 58 + +#define AUDIO_PIN GP29 +#define AUDIO_PWM_DRIVER PWMD6 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +#define AUDIO_INIT_DELAY + +// SPI Configuration +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP26 +#define SPI_MOSI_PIN GP27 + +// Display Configuration +#define OLED_CS_PIN GP25 +#define OLED_DC_PIN GP20 +#define OLED_RST_PIN GP28 diff --git a/keyboards/boardsource/equals/48/halconf.h b/keyboards/boardsource/equals/48/halconf.h new file mode 100644 index 00000000000..ec1c061eeca --- /dev/null +++ b/keyboards/boardsource/equals/48/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/boardsource/equals/48/info.json b/keyboards/boardsource/equals/48/info.json new file mode 100644 index 00000000000..63561f4c597 --- /dev/null +++ b/keyboards/boardsource/equals/48/info.json @@ -0,0 +1,180 @@ +{ + "keyboard_name": "Equals 48", + "bootloader": "rp2040", + "processor": "RP2040", + "features": { + "audio":true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"], + "rows": ["GP12", "GP13", "GP16", "GP17"] + }, + "ws2812": { + "driver": "vendor", + "pin": "GP21" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 1, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 1, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 1, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 1, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 1, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 1, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 1, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 1, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 1, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 } + ] + }, + "community_layouts": ["ortho_4x12"], + "layouts": { + "LAYOUT_ortho_4x12": { + "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": [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": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "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": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/48/keymaps/default/keymap.c b/keyboards/boardsource/equals/48/keymaps/default/keymap.c new file mode 100644 index 00000000000..92d83bb0e89 --- /dev/null +++ b/keyboards/boardsource/equals/48/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +// Copyright 2022 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_4x12( + 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_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/48/keymaps/via/keymap.c b/keyboards/boardsource/equals/48/keymaps/via/keymap.c new file mode 100644 index 00000000000..3c3427d1225 --- /dev/null +++ b/keyboards/boardsource/equals/48/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +// Copyright 2022 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_4x12( + 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_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + +}; diff --git a/keyboards/boardsource/equals/48/keymaps/via/rules.mk b/keyboards/boardsource/equals/48/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/boardsource/equals/48/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/boardsource/equals/48/mcuconf.h b/keyboards/boardsource/equals/48/mcuconf.h new file mode 100644 index 00000000000..e38c802c071 --- /dev/null +++ b/keyboards/boardsource/equals/48/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM6 +#define RP_PWM_USE_PWM6 TRUE + +#undef RP_SPI_USE_SPI1 +#define RP_SPI_USE_SPI1 TRUE diff --git a/keyboards/boardsource/equals/48/rules.mk b/keyboards/boardsource/equals/48/rules.mk new file mode 100644 index 00000000000..4192b0c2e54 --- /dev/null +++ b/keyboards/boardsource/equals/48/rules.mk @@ -0,0 +1,3 @@ +AUDIO_DRIVER = pwm_hardware +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7735_spi diff --git a/keyboards/boardsource/equals/60/config.h b/keyboards/boardsource/equals/60/config.h new file mode 100644 index 00000000000..ee4bc6b1e85 --- /dev/null +++ b/keyboards/boardsource/equals/60/config.h @@ -0,0 +1,23 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U + +#define RGB_MATRIX_LED_COUNT 70 + +#define AUDIO_PIN GP29 +#define AUDIO_PWM_DRIVER PWMD6 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +#define AUDIO_INIT_DELAY + +// SPI Configuration +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP26 +#define SPI_MOSI_PIN GP27 + +// Display Configuration +#define OLED_CS_PIN GP25 +#define OLED_DC_PIN GP20 +#define OLED_RST_PIN GP28 diff --git a/keyboards/boardsource/equals/60/halconf.h b/keyboards/boardsource/equals/60/halconf.h new file mode 100644 index 00000000000..ec1c061eeca --- /dev/null +++ b/keyboards/boardsource/equals/60/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/boardsource/equals/60/info.json b/keyboards/boardsource/equals/60/info.json new file mode 100644 index 00000000000..355e434b4e5 --- /dev/null +++ b/keyboards/boardsource/equals/60/info.json @@ -0,0 +1,203 @@ +{ + "keyboard_name": "Equals 60", + "bootloader": "rp2040", + "processor": "RP2040", + "features": { + "audio":true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"], + "rows": ["GP12", "GP13", "GP16", "GP17", "GP18"] + }, + "ws2812": { + "driver": "vendor", + "pin": "GP21" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }, + { "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 }, + { "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 }, + { "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 }, + { "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 }, + { "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 }, + { "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 }, + { "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 }, + { "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 }, + { "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 }, + { "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 }, + { "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 } + ] + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "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": [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": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "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": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4 }, + { "matrix": [4, 4], "x": 4, "y": 4 }, + { "matrix": [4, 5], "x": 5, "y": 4 }, + { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 7], "x": 7, "y": 4 }, + { "matrix": [4, 8], "x": 8, "y": 4 }, + { "matrix": [4, 9], "x": 9, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/60/keymaps/default/keymap.c b/keyboards/boardsource/equals/60/keymaps/default/keymap.c new file mode 100644 index 00000000000..48e26a40947 --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_RGHT, RGB_MOD, RGB_TOG + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + 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_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/60/keymaps/via/keymap.c b/keyboards/boardsource/equals/60/keymaps/via/keymap.c new file mode 100644 index 00000000000..54528b8f600 --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/60/keymaps/via/rules.mk b/keyboards/boardsource/equals/60/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/equals/60/mcuconf.h b/keyboards/boardsource/equals/60/mcuconf.h new file mode 100644 index 00000000000..e38c802c071 --- /dev/null +++ b/keyboards/boardsource/equals/60/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM6 +#define RP_PWM_USE_PWM6 TRUE + +#undef RP_SPI_USE_SPI1 +#define RP_SPI_USE_SPI1 TRUE diff --git a/keyboards/boardsource/equals/60/rules.mk b/keyboards/boardsource/equals/60/rules.mk new file mode 100644 index 00000000000..4192b0c2e54 --- /dev/null +++ b/keyboards/boardsource/equals/60/rules.mk @@ -0,0 +1,3 @@ +AUDIO_DRIVER = pwm_hardware +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7735_spi diff --git a/keyboards/boardsource/equals/avr/config.h b/keyboards/boardsource/equals/avr/config.h new file mode 100644 index 00000000000..68754cbe528 --- /dev/null +++ b/keyboards/boardsource/equals/avr/config.h @@ -0,0 +1,4 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RGB_MATRIX_LED_COUNT 70 diff --git a/keyboards/boardsource/equals/avr/info.json b/keyboards/boardsource/equals/avr/info.json new file mode 100644 index 00000000000..bbade34e638 --- /dev/null +++ b/keyboards/boardsource/equals/avr/info.json @@ -0,0 +1,202 @@ +{ + "keyboard_name": "Equals kit", + + "build": { + "lto": true + }, + "development_board": "promicro", + "matrix_pins": { + "cols": ["F4","F5","F6","F7","B1","B3","B2","B6","B5","B4","E6","D7"], + "rows": ["D3","D2","D1","D0","D4"] + }, + "ws2812": { + "pin": "C6" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }, + { "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 }, + { "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 }, + { "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 }, + { "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 }, + { "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 }, + { "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 }, + { "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 }, + { "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 }, + { "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 }, + { "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 }, + { "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 } + ] + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "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": [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": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "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": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4 }, + { "matrix": [4, 4], "x": 4, "y": 4 }, + { "matrix": [4, 5], "x": 5, "y": 4 }, + { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 7], "x": 7, "y": 4 }, + { "matrix": [4, 8], "x": 8, "y": 4 }, + { "matrix": [4, 9], "x": 9, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/avr/keymaps/default/keymap.c b/keyboards/boardsource/equals/avr/keymaps/default/keymap.c new file mode 100644 index 00000000000..99a049214b1 --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, CK_TOGG, RGB_MOD, RGB_TOG + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + 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_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/avr/keymaps/via/keymap.c b/keyboards/boardsource/equals/avr/keymaps/via/keymap.c new file mode 100644 index 00000000000..54528b8f600 --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, 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_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/avr/keymaps/via/rules.mk b/keyboards/boardsource/equals/avr/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/equals/equals.c b/keyboards/boardsource/equals/equals.c new file mode 100644 index 00000000000..8eb933e70d2 --- /dev/null +++ b/keyboards/boardsource/equals/equals.c @@ -0,0 +1,18 @@ +// Copyright 2023 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" +__attribute__((weak)) void ui_init(void) {}; +__attribute__((weak)) void ui_task(void) {}; + +#ifdef QUANTUM_PAINTER_ENABLE +void keyboard_post_init_kb(void) { + // Init the display + ui_init(); + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + // Draw the display + ui_task(); +} +#endif //QUANTUM_PAINTER_ENABLE diff --git a/keyboards/boardsource/equals/graphics/thintel15.qff.c b/keyboards/boardsource/equals/graphics/thintel15.qff.c new file mode 100644 index 00000000000..c361ad5346e --- /dev/null +++ b/keyboards/boardsource/equals/graphics/thintel15.qff.c @@ -0,0 +1,69 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +// clang-format off +const uint8_t font_thintel15[966] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xC6, 0x03, 0x00, 0x00, 0x39, 0xFC, 0xFF, + 0xFF, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x02, 0x00, + 0x00, 0xC2, 0x00, 0x00, 0x84, 0x01, 0x00, 0x06, 0x03, 0x00, 0x46, 0x05, 0x00, 0x88, 0x07, 0x00, + 0x46, 0x0A, 0x00, 0x82, 0x0C, 0x00, 0x43, 0x0D, 0x00, 0x83, 0x0E, 0x00, 0xC4, 0x0F, 0x00, 0x46, + 0x11, 0x00, 0x83, 0x13, 0x00, 0xC5, 0x14, 0x00, 0x82, 0x16, 0x00, 0x44, 0x17, 0x00, 0xC5, 0x18, + 0x00, 0x84, 0x1A, 0x00, 0x05, 0x1C, 0x00, 0xC5, 0x1D, 0x00, 0x85, 0x1F, 0x00, 0x45, 0x21, 0x00, + 0x05, 0x23, 0x00, 0xC5, 0x24, 0x00, 0x85, 0x26, 0x00, 0x45, 0x28, 0x00, 0x02, 0x2A, 0x00, 0xC3, + 0x2A, 0x00, 0x05, 0x2C, 0x00, 0xC5, 0x2D, 0x00, 0x85, 0x2F, 0x00, 0x45, 0x31, 0x00, 0x08, 0x33, + 0x00, 0xC5, 0x35, 0x00, 0x85, 0x37, 0x00, 0x45, 0x39, 0x00, 0x05, 0x3B, 0x00, 0xC4, 0x3C, 0x00, + 0x44, 0x3E, 0x00, 0xC5, 0x3F, 0x00, 0x85, 0x41, 0x00, 0x44, 0x43, 0x00, 0xC5, 0x44, 0x00, 0x85, + 0x46, 0x00, 0x44, 0x48, 0x00, 0xC6, 0x49, 0x00, 0x06, 0x4C, 0x00, 0x45, 0x4E, 0x00, 0x05, 0x50, + 0x00, 0xC5, 0x51, 0x00, 0x85, 0x53, 0x00, 0x45, 0x55, 0x00, 0x06, 0x57, 0x00, 0x45, 0x59, 0x00, + 0x06, 0x5B, 0x00, 0x46, 0x5D, 0x00, 0x86, 0x5F, 0x00, 0xC6, 0x61, 0x00, 0x06, 0x64, 0x00, 0x44, + 0x66, 0x00, 0xC4, 0x67, 0x00, 0x44, 0x69, 0x00, 0xC6, 0x6A, 0x00, 0x05, 0x6D, 0x00, 0xC3, 0x6E, + 0x00, 0x05, 0x70, 0x00, 0xC5, 0x71, 0x00, 0x84, 0x73, 0x00, 0x05, 0x75, 0x00, 0xC5, 0x76, 0x00, + 0x84, 0x78, 0x00, 0x05, 0x7A, 0x00, 0xC5, 0x7B, 0x00, 0x82, 0x7D, 0x00, 0x43, 0x7E, 0x00, 0x85, + 0x7F, 0x00, 0x42, 0x81, 0x00, 0x06, 0x82, 0x00, 0x45, 0x84, 0x00, 0x05, 0x86, 0x00, 0xC5, 0x87, + 0x00, 0x85, 0x89, 0x00, 0x44, 0x8B, 0x00, 0xC5, 0x8C, 0x00, 0x83, 0x8E, 0x00, 0xC5, 0x8F, 0x00, + 0x86, 0x91, 0x00, 0xC6, 0x93, 0x00, 0x06, 0x96, 0x00, 0x45, 0x98, 0x00, 0x04, 0x9A, 0x00, 0x85, + 0x9B, 0x00, 0x42, 0x9D, 0x00, 0x05, 0x9E, 0x00, 0xC5, 0x9F, 0x00, 0x04, 0xFB, 0x86, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x45, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFD, 0xD2, + 0xAF, 0x28, 0x00, 0x00, 0x00, 0x84, 0x53, 0x15, 0x0E, 0x55, 0x39, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x15, 0x0A, 0x28, 0x54, 0x24, 0x00, 0x00, 0x00, 0x80, 0x50, 0x14, 0x52, 0x95, 0x58, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x4A, 0x92, 0x24, 0x02, 0x00, 0x91, 0x24, 0x49, 0x01, 0x00, 0x20, + 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x1F, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x24, 0x22, + 0x11, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, 0x20, 0x23, 0x22, 0x72, 0x00, 0x00, + 0xC0, 0x24, 0x44, 0x44, 0x78, 0x00, 0x00, 0xC0, 0x24, 0x44, 0x50, 0x32, 0x00, 0x00, 0x80, 0x29, + 0x95, 0x1E, 0x42, 0x00, 0x00, 0xE0, 0x85, 0x83, 0x50, 0x32, 0x00, 0x00, 0xC0, 0xA4, 0x70, 0x52, + 0x32, 0x00, 0x00, 0xE0, 0x21, 0x42, 0x84, 0x10, 0x00, 0x00, 0xC0, 0xA4, 0x64, 0x52, 0x32, 0x00, + 0x00, 0xC0, 0xA4, 0xE4, 0x50, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x30, 0x60, 0x0A, 0x00, + 0x00, 0x11, 0x11, 0x04, 0x41, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x08, + 0x82, 0x88, 0x08, 0x00, 0x00, 0xC0, 0x24, 0x64, 0x04, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x59, + 0x55, 0x2D, 0x02, 0x1C, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x3A, 0x00, 0x00, 0xC0, 0xA4, 0x10, 0x42, 0x32, 0x00, 0x00, 0xE0, 0xA4, 0x94, 0x52, + 0x3A, 0x00, 0x00, 0x70, 0x11, 0x17, 0x71, 0x00, 0x00, 0x70, 0x11, 0x17, 0x11, 0x00, 0x00, 0xC0, + 0xA4, 0xD0, 0x52, 0x32, 0x00, 0x00, 0x20, 0xA5, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0x70, 0x22, 0x22, + 0x72, 0x00, 0x00, 0xC0, 0x21, 0x84, 0x50, 0x32, 0x00, 0x00, 0x20, 0xA5, 0x32, 0x4A, 0x4A, 0x00, + 0x00, 0x10, 0x11, 0x11, 0x71, 0x00, 0x00, 0x40, 0xB4, 0x55, 0x51, 0x14, 0x45, 0x00, 0x00, 0x00, + 0x40, 0x34, 0x55, 0x59, 0x14, 0x45, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, + 0xE0, 0xA4, 0x74, 0x42, 0x08, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x51, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x4A, 0x00, 0x00, 0xC0, 0xA4, 0x60, 0x50, 0x32, 0x00, 0x00, 0xC0, 0x47, 0x10, 0x04, + 0x41, 0x10, 0x00, 0x00, 0x00, 0x20, 0xA5, 0x94, 0x52, 0x32, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, + 0xA4, 0x10, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, 0xB5, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, + 0x29, 0x84, 0x12, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x0E, 0x41, 0x10, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x21, 0x84, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x17, 0x11, 0x11, 0x11, 0x07, 0x00, 0x10, + 0x21, 0x22, 0x44, 0x00, 0x00, 0x47, 0x44, 0x44, 0x44, 0x07, 0x00, 0x84, 0x12, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x93, 0x5C, 0x72, 0x00, 0x00, 0x20, 0x84, 0x93, 0x52, 0x3A, 0x00, 0x00, 0x00, 0x60, + 0x11, 0x61, 0x00, 0x00, 0x00, 0x21, 0x97, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x93, 0x5E, 0x70, + 0x00, 0x00, 0x60, 0x11, 0x13, 0x11, 0x00, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x28, 0x19, 0x20, + 0x84, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x10, 0x55, 0x00, 0x80, 0x20, 0x49, 0x0A, 0x00, 0x20, 0x84, + 0x94, 0x4E, 0x4A, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x2C, 0x55, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x93, 0x52, 0x32, 0x00, 0x00, 0x00, + 0x80, 0x93, 0x52, 0x3A, 0x21, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x08, 0x01, 0x00, 0x50, 0x13, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0C, 0x3A, 0x00, 0x00, 0x48, 0x96, 0x44, 0x00, 0x00, 0x00, + 0x80, 0x94, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x44, 0x51, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x51, 0x54, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0xA1, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x94, 0x52, 0x72, 0x28, 0x19, 0x00, 0x70, 0x24, 0x71, 0x00, 0x00, 0x4C, 0x08, + 0x11, 0x84, 0x10, 0x0C, 0x00, 0x55, 0x55, 0x01, 0x83, 0x10, 0x82, 0x08, 0x21, 0x03, 0x00, 0x00, + 0x00, 0xB0, 0x1A, 0x00, 0x00, 0x00, +}; +// clang-format on diff --git a/keyboards/boardsource/equals/info.json b/keyboards/boardsource/equals/info.json new file mode 100644 index 00000000000..bed8ec2640c --- /dev/null +++ b/keyboards/boardsource/equals/info.json @@ -0,0 +1,21 @@ +{ + "manufacturer": "Boardsource", + "maintainer": "Boardsource", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x7688", + "vid": "0x4273" + } + +} diff --git a/keyboards/boardsource/equals/readme.md b/keyboards/boardsource/equals/readme.md new file mode 100644 index 00000000000..9c5d48f5c29 --- /dev/null +++ b/keyboards/boardsource/equals/readme.md @@ -0,0 +1,33 @@ +# equals + +![equals](https://i.imgur.com/c3adFqsh.jpeg) + +* Keyboard Maintainer: [Cole Smith](https://github.com/boardsource) +* Hardware Supported: Equals PCB w/ RP2040 +* Hardware Availability: [boardsource](https://boardsource.xyz) + +Make example for this keyboard (after setting up your build environment): + + make boardsource/equals/48:default + make boardsource/equals/60:default + make boardsource/equals/avr:default + +Flashing example for this keyboard: + + make boardsource/equals/48:default:flash + make boardsource/equals/60:default:flash + make boardsource/equals/avr:default:flash + +Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro. + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/boardsource/equals/ui.c b/keyboards/boardsource/equals/ui.c new file mode 100644 index 00000000000..f953fc4c889 --- /dev/null +++ b/keyboards/boardsource/equals/ui.c @@ -0,0 +1,40 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include "qp.h" +#include "qp_st7735.h" +#include "graphics/thintel15.qff.c" + +static painter_device_t oled; +static painter_font_handle_t font; + +__attribute__((weak)) void ui_init(void) { + oled = qp_st7735_make_spi_device(128, 160, OLED_CS_PIN, OLED_DC_PIN, OLED_RST_PIN, 8, 0); + font = qp_load_font_mem(font_thintel15); + qp_init(oled, QP_ROTATION_0); + qp_rect(oled, 0, 0, 130, 162, 0, 0, 0, true); + qp_rect(oled, 20, 20, 108, 60, 55, 55, 55, true); + qp_rect(oled, 20, 80, 108, 120, 55, 55, 55, true); + qp_flush(oled); +} + +__attribute__((weak)) void ui_task(void) { + static const char *text = "Layer:"; + int16_t width = qp_textwidth(font, text); + qp_drawtext(oled, 20, 140, font, text); + + switch (get_highest_layer(layer_state)) { + case 0: + qp_drawtext(oled, (20 + width), 140, font, "QWERTY"); + break; + case 1: + qp_drawtext(oled, (20 + width), 140, font, "SYMBOL"); + break; + case 2: + qp_drawtext(oled, (20 + width), 140, font, "NUMBER"); + break; + default: + qp_drawtext(oled, (20 + width), 140, font, "_PANIC_"); + break; + } +} From ba62db19e760d144cbb7e30b3878238ff0983cf7 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 14 Nov 2023 13:12:17 +1100 Subject: [PATCH 47/51] Update stale.yml (#22473) --- .github/workflows/stale.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f011fb5460d..d95efebe9dc 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -3,6 +3,7 @@ name: 'Close stale issues and PRs' permissions: issues: write pull-requests: write + actions: write on: schedule: From 5c22706294b311c43f9dd6212e5086fff872b734 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 14 Nov 2023 13:15:52 +1100 Subject: [PATCH 48/51] Update stale.yml --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index d95efebe9dc..ce9bd0f3161 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -14,7 +14,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@main with: repo-token: ${{ secrets.GITHUB_TOKEN }} From d7b44239c262708c96c28ef64b2257e9bda89b33 Mon Sep 17 00:00:00 2001 From: leyew <102467346+itsme-zeix@users.noreply.github.com> Date: Tue, 14 Nov 2023 16:11:12 +0800 Subject: [PATCH 49/51] [Keyboard] Add Eden (#22467) Co-authored-by: Duncan Sutherland --- keyboards/zeix/eden/config.h | 20 + keyboards/zeix/eden/info.json | 1017 ++++++++++++++++++ keyboards/zeix/eden/keymaps/default/keymap.c | 33 + keyboards/zeix/eden/keymaps/via/keymap.c | 33 + keyboards/zeix/eden/keymaps/via/rules.mk | 1 + keyboards/zeix/eden/matrix_diagram.md | 23 + keyboards/zeix/eden/readme.md | 27 + keyboards/zeix/eden/rules.mk | 1 + 8 files changed, 1155 insertions(+) create mode 100644 keyboards/zeix/eden/config.h create mode 100644 keyboards/zeix/eden/info.json create mode 100644 keyboards/zeix/eden/keymaps/default/keymap.c create mode 100644 keyboards/zeix/eden/keymaps/via/keymap.c create mode 100644 keyboards/zeix/eden/keymaps/via/rules.mk create mode 100644 keyboards/zeix/eden/matrix_diagram.md create mode 100644 keyboards/zeix/eden/readme.md create mode 100644 keyboards/zeix/eden/rules.mk diff --git a/keyboards/zeix/eden/config.h b/keyboards/zeix/eden/config.h new file mode 100644 index 00000000000..77970ce4d34 --- /dev/null +++ b/keyboards/zeix/eden/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/zeix/eden/info.json b/keyboards/zeix/eden/info.json new file mode 100644 index 00000000000..2b5fd6eae7c --- /dev/null +++ b/keyboards/zeix/eden/info.json @@ -0,0 +1,1017 @@ +{ + "keyboard_name": "Eden", + "maintainer": "itsme-zeix", + "manufacturer": "dnworks", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x4C27", + "pid": "0x2901", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true + }, + "indicators": { + "caps_lock": "GP29", + "on_state": 1 + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["GP6", "GP5", "GP4", "GP0", "GP12"], + "cols": ["GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP3", "GP2", "GP1", "GP8", "GP9", "GP10", "GP11", "GP7"] + }, + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_ansi_wkl", + "60_ansi_wkl_split_bs_rshift", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_iso_tsangan_split_bs_rshift", + "60_iso_wkl", + "60_iso_wkl_split_bs_rshift" + ], + "layouts": { + "LAYOUT_all": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"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": { + "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, 14], "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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"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_split_bs_rshift": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"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, 14], "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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"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, 6], "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} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "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, 6], "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} + ] + }, + "LAYOUT_60_hhkb": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_ansi_wkl": { + "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, 14], "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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_bs_rshift": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso": { + "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, 14], "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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_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, 14], "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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"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, 6], "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} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "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, 6], "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} + ] + }, + "LAYOUT_60_iso_wkl": { + "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, 14], "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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl_split_bs_rshift": { + "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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + + {"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": [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, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"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, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/zeix/eden/keymaps/default/keymap.c b/keyboards/zeix/eden/keymaps/default/keymap.c new file mode 100644 index 00000000000..c209675b378 --- /dev/null +++ b/keyboards/zeix/eden/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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_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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + +[1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/zeix/eden/keymaps/via/keymap.c b/keyboards/zeix/eden/keymaps/via/keymap.c new file mode 100644 index 00000000000..c209675b378 --- /dev/null +++ b/keyboards/zeix/eden/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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_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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + +[1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/zeix/eden/keymaps/via/rules.mk b/keyboards/zeix/eden/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/zeix/eden/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/zeix/eden/matrix_diagram.md b/keyboards/zeix/eden/matrix_diagram.md new file mode 100644 index 00000000000..4686e997b29 --- /dev/null +++ b/keyboards/zeix/eden/matrix_diagram.md @@ -0,0 +1,23 @@ +# Matrix Diagram for Eden + +``` + ┌───────┐ + 2u Backspace │0E │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │46 │4A │4B │4C │4D │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ diff --git a/keyboards/zeix/eden/readme.md b/keyboards/zeix/eden/readme.md new file mode 100644 index 00000000000..85f1ff66ded --- /dev/null +++ b/keyboards/zeix/eden/readme.md @@ -0,0 +1,27 @@ +# Eden + +![Eden](https://i.imgur.com/5He99nkh.jpg) + +A 60% mounted with tadpoles designed by The Flying Penguin. + +* Keyboard Maintainer: [Zeix](https://github.com/itsme-zeix) +* Hardware Supported: Eden Solder PCB rev1 +* Hardware Availability: mecha.store + +Make example for this keyboard (after setting up your build environment): + + make zeix/eden:default + +Flashing example for this keyboard: + + make zeix/eden: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 `RESET` button twice or short the `USB_BOOT` and `GND` pads and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/zeix/eden/rules.mk b/keyboards/zeix/eden/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/zeix/eden/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From adcc4d376cbfb6519dae2b5aa9230474d1a1dd0e Mon Sep 17 00:00:00 2001 From: Le Zhang Date: Wed, 15 Nov 2023 10:23:03 -0500 Subject: [PATCH 50/51] Add leonardo build target for leonardo + usb2.0 shield based projects (#22243) --- keyboards/converter/usb_usb/hasu/rules.mk | 3 +-- keyboards/converter/usb_usb/leonardo/info.json | 3 +++ keyboards/converter/usb_usb/leonardo/rules.mk | 1 + keyboards/converter/usb_usb/readme.md | 6 ++++-- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 keyboards/converter/usb_usb/leonardo/info.json create mode 100644 keyboards/converter/usb_usb/leonardo/rules.mk diff --git a/keyboards/converter/usb_usb/hasu/rules.mk b/keyboards/converter/usb_usb/hasu/rules.mk index c2ee0bc86f9..6e7633bfe01 100644 --- a/keyboards/converter/usb_usb/hasu/rules.mk +++ b/keyboards/converter/usb_usb/hasu/rules.mk @@ -1,2 +1 @@ -# Processor frequency -F_CPU = 16000000 +# This file intentionally left blank diff --git a/keyboards/converter/usb_usb/leonardo/info.json b/keyboards/converter/usb_usb/leonardo/info.json new file mode 100644 index 00000000000..56062f7ad37 --- /dev/null +++ b/keyboards/converter/usb_usb/leonardo/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "caterina" +} diff --git a/keyboards/converter/usb_usb/leonardo/rules.mk b/keyboards/converter/usb_usb/leonardo/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/converter/usb_usb/leonardo/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/converter/usb_usb/readme.md b/keyboards/converter/usb_usb/readme.md index 594a9be877e..50743b11fcc 100644 --- a/keyboards/converter/usb_usb/readme.md +++ b/keyboards/converter/usb_usb/readme.md @@ -11,6 +11,10 @@ Make example for this keyboard (after setting up your build environment): make converter/usb_usb:default +If you use Arduino Leonardo with a USB Host Shield: + + make converter/usb_usb/leonardo:default + See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Note that you have to choose the right hardware variant as your subproject, otherwise you will probably have issues. @@ -23,8 +27,6 @@ If you are sure you have this correct, try changeing the default in `usb_usb/rul The Pro Micro variant uses a 3.3V Pro Micro and thus runs at 8MHz, hence the following line in `usb_usb/pro_micro/rules.mk`: `F_CPU = 8000000` -The converter sold by Hasu runs at 16MHz and so the corresponding line in `usb_usb/hasu/rules.mk` is: -`F_CPU = 16000000` Getting the Hardware -------------------- From 1e4f7aa0292a650b9b2b07634c3ea44aed942bf7 Mon Sep 17 00:00:00 2001 From: leyew <102467346+itsme-zeix@users.noreply.github.com> Date: Fri, 17 Nov 2023 00:54:13 +0800 Subject: [PATCH 51/51] [Keyboard] Add dnworks 997pt3 (#22466) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: Duncan Sutherland --- keyboards/dnworks/9973/config.h | 20 + keyboards/dnworks/9973/info.json | 480 ++++++++++++++++++ .../dnworks/9973/keymaps/default/keymap.c | 27 + keyboards/dnworks/9973/keymaps/via/keymap.c | 27 + keyboards/dnworks/9973/keymaps/via/rules.mk | 1 + keyboards/dnworks/9973/readme.md | 27 + keyboards/dnworks/9973/rules.mk | 1 + 7 files changed, 583 insertions(+) create mode 100644 keyboards/dnworks/9973/config.h create mode 100644 keyboards/dnworks/9973/info.json create mode 100644 keyboards/dnworks/9973/keymaps/default/keymap.c create mode 100644 keyboards/dnworks/9973/keymaps/via/keymap.c create mode 100644 keyboards/dnworks/9973/keymaps/via/rules.mk create mode 100644 keyboards/dnworks/9973/readme.md create mode 100644 keyboards/dnworks/9973/rules.mk diff --git a/keyboards/dnworks/9973/config.h b/keyboards/dnworks/9973/config.h new file mode 100644 index 00000000000..77970ce4d34 --- /dev/null +++ b/keyboards/dnworks/9973/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/dnworks/9973/info.json b/keyboards/dnworks/9973/info.json new file mode 100644 index 00000000000..61696060262 --- /dev/null +++ b/keyboards/dnworks/9973/info.json @@ -0,0 +1,480 @@ +{ + "keyboard_name": "DN 997.3", + "maintainer": "itsme-zeix", + "manufacturer": "dnworks", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x4C23", + "pid": "0x2936", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP27", + "scroll_lock": "GP1", + "on_state": 1 + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["GP2", "GP3", "GP4", "GP29", "GP12", "GP13"], + "cols": ["GP28", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP15", "GP14", "GP6", "GP5", "GP0"] + }, + "community_layouts": ["tkl_ansi_tsangan", "tkl_iso_tsangan"], + "layouts": { + "LAYOUT_all": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [2, 13], "x": 12.75, "y": 3.5 }, + { "matrix": [3, 12], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_iso_wkl": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [2, 13], "x": 12.75, "y": 3.5 }, + { "matrix": [3, 12], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/dnworks/9973/keymaps/default/keymap.c b/keyboards/dnworks/9973/keymaps/default/keymap.c new file mode 100644 index 00000000000..8307bf9e766 --- /dev/null +++ b/keyboards/dnworks/9973/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_DEL, 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_INS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/dnworks/9973/keymaps/via/keymap.c b/keyboards/dnworks/9973/keymaps/via/keymap.c new file mode 100644 index 00000000000..8307bf9e766 --- /dev/null +++ b/keyboards/dnworks/9973/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +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_DEL, 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_INS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/dnworks/9973/keymaps/via/rules.mk b/keyboards/dnworks/9973/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/dnworks/9973/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dnworks/9973/readme.md b/keyboards/dnworks/9973/readme.md new file mode 100644 index 00000000000..790f236cb77 --- /dev/null +++ b/keyboards/dnworks/9973/readme.md @@ -0,0 +1,27 @@ +# 997.3 TKL + +![997.3 TKL](https://i.imgur.com/iPPLKg1h.jpeg) + +PCB that supports the 997.3 TKL designed by dnworks, including its variants. + +* Keyboard Maintainer: [Zeix](https://github.com/itsme-zeix) +* Hardware Supported: 997.3 Solder PCB rev1 +* Hardware Availability: dnworks.co + +Make example for this keyboard (after setting up your build environment): + + make dnworks/997pt3:default + +Flashing example for this keyboard: + + make dnworks/997pt3: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 top left key and plug in the keyboard +* **Physical reset button**: Briefly press the `RESET` button twice or short the `USB_BOOT` and `GND` pads and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/dnworks/9973/rules.mk b/keyboards/dnworks/9973/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/dnworks/9973/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank