From b1235baf42f08c3fdce1f6b7db9e528c5990de2e Mon Sep 17 00:00:00 2001 From: joliverMI <36174681+joliverMI@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:52:20 -0400 Subject: [PATCH 001/125] [Keyboard] Add posey_split v4/v5 (#23258) * Created posey_split keyboards and included default keymaps. * Update keyboards/pmk/posey_split/posey_split_v4/config.h Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/pmk/posey_split/posey_split_v4/config.h Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/pmk/posey_split/posey_split_v4/info.json Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/pmk/posey_split/posey_split_v4/info.json Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/posey_split_v4/info.json Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/posey_split_v4/readme.md Co-authored-by: jack <0x6a73@protonmail.com> * Various cleanup updates per QMK maintainers on PR #23258 * removed config files from via keymaps * removed additional keyboard for PR. * changed folder structure per PR suggestion * Update keyboards/pmk/posey_split/v5/info.json Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v5/rules.mk Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v4/rules.mk Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v5/keymaps/VIA/keymap.c Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v5/keymaps/default/keymap.c Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v4/keymaps/default/keymap.c Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v4/keymaps/VIA/keymap.c Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v5/readme.md Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v4/readme.md Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v4/info.json Co-authored-by: Joel Challis * changed via folders to lowercase * cleaned up extra via files in wrong folder * Added better descriptions to keyboard projects and added hardware listing to v5 * Cleaned up keymap format * removed extra rules * Update keyboards/pmk/posey_split/v4/keymaps/via/keymap.c Co-authored-by: Joel Challis * Update keyboards/pmk/posey_split/v5/readme.md Co-authored-by: Joel Challis * removed "about" from readme on v4 * Removed title from readme --------- Co-authored-by: joliverMI Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Joel Challis --- keyboards/pmk/posey_split/config.h | 18 +++ keyboards/pmk/posey_split/v4/info.json | 145 ++++++++++++++++++ .../posey_split/v4/keymaps/default/keymap.c | 73 +++++++++ .../pmk/posey_split/v4/keymaps/via/keymap.c | 73 +++++++++ .../pmk/posey_split/v4/keymaps/via/rules.mk | 1 + keyboards/pmk/posey_split/v4/readme.md | 30 ++++ keyboards/pmk/posey_split/v4/rules.mk | 1 + keyboards/pmk/posey_split/v5/info.json | 145 ++++++++++++++++++ .../posey_split/v5/keymaps/default/keymap.c | 73 +++++++++ .../pmk/posey_split/v5/keymaps/via/keymap.c | 73 +++++++++ .../pmk/posey_split/v5/keymaps/via/rules.mk | 1 + keyboards/pmk/posey_split/v5/readme.md | 30 ++++ keyboards/pmk/posey_split/v5/rules.mk | 1 + 13 files changed, 664 insertions(+) create mode 100644 keyboards/pmk/posey_split/config.h create mode 100644 keyboards/pmk/posey_split/v4/info.json create mode 100644 keyboards/pmk/posey_split/v4/keymaps/default/keymap.c create mode 100644 keyboards/pmk/posey_split/v4/keymaps/via/keymap.c create mode 100644 keyboards/pmk/posey_split/v4/keymaps/via/rules.mk create mode 100644 keyboards/pmk/posey_split/v4/readme.md create mode 100644 keyboards/pmk/posey_split/v4/rules.mk create mode 100644 keyboards/pmk/posey_split/v5/info.json create mode 100644 keyboards/pmk/posey_split/v5/keymaps/default/keymap.c create mode 100644 keyboards/pmk/posey_split/v5/keymaps/via/keymap.c create mode 100644 keyboards/pmk/posey_split/v5/keymaps/via/rules.mk create mode 100644 keyboards/pmk/posey_split/v5/readme.md create mode 100644 keyboards/pmk/posey_split/v5/rules.mk diff --git a/keyboards/pmk/posey_split/config.h b/keyboards/pmk/posey_split/config.h new file mode 100644 index 000000000000..f115e5fc2c60 --- /dev/null +++ b/keyboards/pmk/posey_split/config.h @@ -0,0 +1,18 @@ +// Copyright 2023 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/*Split keyboard configuration*/ +// Hardware Settings +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP1 +#define SERIAL_USART_RX_PIN GP0 + +// Communication Settings +#define FORCED_SYNC_THROTTLE_MS 1000 +#define SPLIT_MAX_CONNECTION_ERRORS 5 +#define SPLIT_CONNECTION_CHECK_TIMEOUT 2000 + +// RGB Configuration +#define RGBLIGHT_EFFECT_BREATHE_CENTER 2.0 //1.0 to 2.7 \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v4/info.json b/keyboards/pmk/posey_split/v4/info.json new file mode 100644 index 000000000000..016c4d7122e8 --- /dev/null +++ b/keyboards/pmk/posey_split/v4/info.json @@ -0,0 +1,145 @@ +{ + "manufacturer": "Posey's Mechanical Keyboards", + "keyboard_name": "posey_split_v4", + "maintainer": "joliverMI", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "rgblight": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"], + "rows": ["GP10", "GP11", "GP12", "GP13", "GP14", "GP15"] + }, + "processor": "RP2040", + "ws2812": { + "pin": "GP17", + "driver": "vendor" + }, + "rgblight": { + "animations": { + "breathing": true + }, + "layers": { + "enabled": true, + "max": 4 + }, + "led_count": 1, + "sleep": true, + "split": true, + "split_count": [1, 0] + }, + "split": { + "enabled": true, + "handedness": { + "pin": "GP18" + } + }, + "tags": ["split"], + "url": "poseysmechanicalkeyboards.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x4A4F" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "label": "Esc", "x": 0, "y": 0}, + {"matrix": [0, 1], "label": "LED", "x": 1, "y": 0}, + {"matrix": [0, 2], "label": "F1", "x": 2, "y": 0}, + {"matrix": [0, 3], "label": "F2", "x": 3, "y": 0}, + {"matrix": [0, 4], "label": "F3", "x": 4, "y": 0}, + {"matrix": [0, 5], "label": "F4", "x": 5, "y": 0}, + {"matrix": [0, 6], "label": "F5", "x": 6, "y": 0}, + {"matrix": [0, 7], "label": "F6", "x": 7, "y": 0}, + {"matrix": [6, 0], "label": "Layer", "x": 9.294, "y": 0}, + {"matrix": [6, 1], "label": "F7", "x": 10.294, "y": 0}, + {"matrix": [6, 2], "label": "F8", "x": 11.294, "y": 0}, + {"matrix": [6, 3], "label": "F9", "x": 12.294, "y": 0}, + {"matrix": [6, 4], "label": "F10", "x": 13.294, "y": 0}, + {"matrix": [6, 5], "label": "F11", "x": 14.294, "y": 0}, + {"matrix": [6, 6], "label": "Pause", "x": 15.294, "y": 0}, + {"matrix": [6, 7], "label": "Delete", "x": 16.294, "y": 0}, + {"matrix": [1, 0], "label": "~", "x": 0, "y": 1}, + {"matrix": [1, 1], "label": "1", "x": 1, "y": 1}, + {"matrix": [1, 2], "label": "2", "x": 2, "y": 1}, + {"matrix": [1, 3], "label": "3", "x": 3, "y": 1}, + {"matrix": [1, 4], "label": "4", "x": 4, "y": 1}, + {"matrix": [1, 5], "label": "5", "x": 5, "y": 1}, + {"matrix": [1, 6], "label": "6", "x": 6, "y": 1}, + {"matrix": [1, 7], "label": "7", "x": 7, "y": 1}, + {"matrix": [7, 0], "label": "&", "x": 9.294, "y": 1}, + {"matrix": [7, 1], "label": "*", "x": 10.294, "y": 1}, + {"matrix": [7, 2], "label": "(", "x": 11.294, "y": 1}, + {"matrix": [7, 3], "label": ")", "x": 12.294, "y": 1}, + {"matrix": [7, 4], "label": "_", "x": 13.294, "y": 1}, + {"matrix": [7, 5], "label": "+", "x": 14.294, "y": 1}, + {"matrix": [7, 6], "label": "Backspace", "x": 15.294, "y": 1, "w": 2}, + {"matrix": [2, 0], "label": "Tab", "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "label": "Q", "x": 1.5, "y": 2}, + {"matrix": [2, 2], "label": "W", "x": 2.5, "y": 2}, + {"matrix": [2, 3], "label": "E", "x": 3.5, "y": 2}, + {"matrix": [2, 4], "label": "R", "x": 4.5, "y": 2}, + {"matrix": [2, 5], "label": "T", "x": 5.5, "y": 2}, + {"matrix": [2, 6], "label": "Y", "x": 6.5, "y": 2}, + {"matrix": [8, 0], "label": "Y", "x": 8.794, "y": 2}, + {"matrix": [8, 1], "label": "U", "x": 9.794, "y": 2}, + {"matrix": [8, 2], "label": "I", "x": 10.794, "y": 2}, + {"matrix": [8, 3], "label": "O", "x": 11.794, "y": 2}, + {"matrix": [8, 4], "label": "P", "x": 12.794, "y": 2}, + {"matrix": [8, 5], "label": "{", "x": 13.794, "y": 2}, + {"matrix": [8, 6], "label": "}", "x": 14.794, "y": 2}, + {"matrix": [8, 7], "label": "|", "x": 15.794, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "label": "Caps Lock", "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "label": "A", "x": 1.75, "y": 3}, + {"matrix": [3, 2], "label": "S", "x": 2.75, "y": 3}, + {"matrix": [3, 3], "label": "D", "x": 3.75, "y": 3}, + {"matrix": [3, 4], "label": "F", "x": 4.75, "y": 3}, + {"matrix": [3, 5], "label": "G", "x": 5.75, "y": 3}, + {"matrix": [3, 6], "label": "H", "x": 6.75, "y": 3}, + {"matrix": [9, 0], "label": "H", "x": 9.044, "y": 3}, + {"matrix": [9, 1], "label": "J", "x": 10.044, "y": 3}, + {"matrix": [9, 2], "label": "K", "x": 11.044, "y": 3}, + {"matrix": [9, 3], "label": "L", "x": 12.044, "y": 3}, + {"matrix": [9, 4], "label": ":", "x": 13.044, "y": 3}, + {"matrix": [9, 5], "label": "\"", "x": 14.044, "y": 3}, + {"matrix": [9, 6], "label": "Enter", "x": 15.044, "y": 3, "w": 2.25}, + {"matrix": [4, 0], "label": "Shift", "x": 0, "y": 4, "w": 2.25}, + {"matrix": [4, 1], "label": "Z", "x": 2.25, "y": 4}, + {"matrix": [4, 2], "label": "X", "x": 3.25, "y": 4}, + {"matrix": [4, 3], "label": "C", "x": 4.25, "y": 4}, + {"matrix": [4, 4], "label": "V", "x": 5.25, "y": 4}, + {"matrix": [4, 5], "label": "B", "x": 6.25, "y": 4}, + {"matrix": [4, 6], "label": "N", "x": 7.25, "y": 4}, + {"matrix": [10, 0], "label": "B", "x": 8.544, "y": 4}, + {"matrix": [10, 1], "label": "N", "x": 9.544, "y": 4}, + {"matrix": [10, 2], "label": "M", "x": 10.544, "y": 4}, + {"matrix": [10, 3], "label": "<", "x": 11.544, "y": 4}, + {"matrix": [10, 4], "label": ">", "x": 12.544, "y": 4}, + {"matrix": [10, 5], "label": "?", "x": 13.544, "y": 4}, + {"matrix": [10, 6], "label": "Shift", "x": 14.544, "y": 4, "w": 2.75}, + {"matrix": [5, 0], "label": "Ctrl", "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "label": "Win", "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "label": "Alt", "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 3], "label": "L2", "x": 3.5, "y": 5, "w": 1.25}, + {"matrix": [5, 6], "label": "Space", "x": 5.5, "y": 5, "w": 2.75}, + {"matrix": [11, 1], "label": "Space", "x": 8.794, "y": 5, "w": 2.25}, + {"matrix": [11, 2], "label": "Space", "x": 11.044, "y": 5, "w": 1.25}, + {"matrix": [11, 3], "label": "L2", "x": 12.294, "y": 5, "w": 1.25}, + {"matrix": [11, 4], "label": "Win", "x": 13.544, "y": 5, "w": 1.25}, + {"matrix": [11, 5], "label": "Menu", "x": 14.794, "y": 5, "w": 1.25}, + {"matrix": [11, 7], "label": "Ctrl", "x": 16.044, "y": 5, "w": 1.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v4/keymaps/default/keymap.c b/keyboards/pmk/posey_split/v4/keymaps/default/keymap.c new file mode 100644 index 000000000000..3a607c0296c0 --- /dev/null +++ b/keyboards/pmk/posey_split/v4/keymaps/default/keymap.c @@ -0,0 +1,73 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│LED│F1 │F2 │F3 │F4 │F5 │F6 │ │L1 │F7 │F8 │F9 │F10│F11│PAS│Del│ 16 + * ├───┼───┼───┼───┼───┼───┼───┴───┤ ├───┴───┼───┼───┼───┼───┼───┴───┤ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ │7 │8 │ 9 │ 0 │ - │ = │ Backsp│ 15 + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ 15 + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ │ H │J │ K │ L │ ; │ ' │ Enter │ 14 + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ │ B │ N │ M │ , │ . │ / │ Shift │ 14 + * ├────┬───┴┬──┴┬──┴───┴┬──┴───┴───┤ └┬──┴───┴─┬─┴──┬┴───┴───┴┬─────────┤ + * │Ctrl│GUI │L2 │Alt │ │ │ | L3 │ Alt│ GUI│Menu│Ctrl│ 11 + * └────┴────┴───┴───────┴──────────┘ └────────┴────┴────┴────┴────┴────┘ + */ + [_QWERTY] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MO(_SYMB), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BACKSPACE, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_LCTL, KC_LGUI, MO(_NAV), KC_LALT, KC_SPC, KC_SPC, MO(_NAV), KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_NAV] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_SYMB), KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_TRNS, KC_TRNS, KC_F12, KC_F13, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_CLEAR_EEPROM, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_PRNT, DT_DOWN, KC_SLEP + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ) +}; diff --git a/keyboards/pmk/posey_split/v4/keymaps/via/keymap.c b/keyboards/pmk/posey_split/v4/keymaps/via/keymap.c new file mode 100644 index 000000000000..ffe726ead71b --- /dev/null +++ b/keyboards/pmk/posey_split/v4/keymaps/via/keymap.c @@ -0,0 +1,73 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│LED│F1 │F2 │F3 │F4 │F5 │F6 │ │L1 │F7 │F8 │F9 │F10│F11│PAS│Del│ 16 + * ├───┼───┼───┼───┼───┼───┼───┴───┤ ├───┴───┼───┼───┼───┼───┼───┴───┤ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ │7 │8 │ 9 │ 0 │ - │ = │ Backsp│ 15 + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ 15 + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ │ H │J │ K │ L │ ; │ ' │ Enter │ 14 + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ │ B │ N │ M │ , │ . │ / │ Shift │ 14 + * ├────┬───┴┬──┴┬──┴───┴┬──┴───┴───┤ └┬──┴───┴─┬─┴──┬┴───┴───┴┬─────────┤ + * │Ctrl│GUI │L2 │Alt │ │ │ | L3 │ Alt│ GUI│Menu│Ctrl│ 11 + * └────┴────┴───┴───────┴──────────┘ └────────┴────┴────┴────┴────┴────┘ + */ + [_QWERTY] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MO(_SYMB), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BACKSPACE, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_LCTL, KC_LGUI, MO(_NAV), KC_LALT, KC_SPC, KC_SPC, MO(_NAV), KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_NAV] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_SYMB), KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_TRNS, KC_TRNS, KC_F12, KC_F13, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_CLEAR_EEPROM, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_PRNT, DT_DOWN, KC_SLEP + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ) +}; diff --git a/keyboards/pmk/posey_split/v4/keymaps/via/rules.mk b/keyboards/pmk/posey_split/v4/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/pmk/posey_split/v4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v4/readme.md b/keyboards/pmk/posey_split/v4/readme.md new file mode 100644 index 000000000000..c4e15656206c --- /dev/null +++ b/keyboards/pmk/posey_split/v4/readme.md @@ -0,0 +1,30 @@ +# posey_split_v4 + +![posey_split_v4](https://i.imgur.com/g3yf6alh.png) + +The Posey split keyboard was designed from the gournd up for gaming. By pushing the left half of your split keyboard out of the way, you'll be able to game with better posture and increase mouse movement. PMK's have additional keys on the right half to make sure you don't need to reach for your other half while gaming. + +Version Changes from v4: +-Changed bottom row on the left half to use standard modifier key sizes + +* Keyboard Maintainer: [Javier Oliver](https://github.com/joliverMI) +* Hardware Supported: posey_split_v4, blizz_sorc_v1 and logic_module_v1 +* Hardware Availability: poseysmechanicalkeyboards.com + +Make example for this keyboard (after setting up your build environment): + + make pmk/posey_split/v4:default + +Flashing example for this keyboard: + + make pmk/posey_split/v4: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 Escape and plug in the keyboard +* **Physical reset button**: Hold the button on the bottom of the keyboard while you plug in the USB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/pmk/posey_split/v4/rules.mk b/keyboards/pmk/posey_split/v4/rules.mk new file mode 100644 index 000000000000..743228e94b64 --- /dev/null +++ b/keyboards/pmk/posey_split/v4/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v5/info.json b/keyboards/pmk/posey_split/v5/info.json new file mode 100644 index 000000000000..9ef7d0af0227 --- /dev/null +++ b/keyboards/pmk/posey_split/v5/info.json @@ -0,0 +1,145 @@ +{ + "manufacturer": "Posey's Mechanical Keyboards", + "keyboard_name": "posey_split_v5", + "maintainer": "joliverMI", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "rgblight": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"], + "rows": ["GP10", "GP11", "GP12", "GP13", "GP14", "GP15"] + }, + "processor": "RP2040", + "ws2812": { + "pin": "GP17", + "driver": "vendor" + }, + "rgblight": { + "animations": { + "breathing": true + }, + "layers": { + "enabled": true, + "max": 4 + }, + "led_count": 1, + "sleep": true, + "split": true, + "split_count": [1, 0] + }, + "split": { + "enabled": true, + "handedness": { + "pin": "GP18" + } + }, + "tags": ["split"], + "url": "poseysmechanicalkeyboards.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0005", + "vid": "0x4A4F" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "label": "Esc", "x": 0, "y": 0}, + {"matrix": [0, 1], "label": "LED", "x": 1, "y": 0}, + {"matrix": [0, 2], "label": "F1", "x": 2, "y": 0}, + {"matrix": [0, 3], "label": "F2", "x": 3, "y": 0}, + {"matrix": [0, 4], "label": "F3", "x": 4, "y": 0}, + {"matrix": [0, 5], "label": "F4", "x": 5, "y": 0}, + {"matrix": [0, 6], "label": "F5", "x": 6, "y": 0}, + {"matrix": [0, 7], "label": "F6", "x": 7, "y": 0}, + {"matrix": [6, 0], "label": "Layer", "x": 9.294, "y": 0}, + {"matrix": [6, 1], "label": "F7", "x": 10.294, "y": 0}, + {"matrix": [6, 2], "label": "F8", "x": 11.294, "y": 0}, + {"matrix": [6, 3], "label": "F9", "x": 12.294, "y": 0}, + {"matrix": [6, 4], "label": "F10", "x": 13.294, "y": 0}, + {"matrix": [6, 5], "label": "F11", "x": 14.294, "y": 0}, + {"matrix": [6, 6], "label": "Pause", "x": 15.294, "y": 0}, + {"matrix": [6, 7], "label": "Delete", "x": 16.294, "y": 0}, + {"matrix": [1, 0], "label": "~", "x": 0, "y": 1}, + {"matrix": [1, 1], "label": "1", "x": 1, "y": 1}, + {"matrix": [1, 2], "label": "2", "x": 2, "y": 1}, + {"matrix": [1, 3], "label": "3", "x": 3, "y": 1}, + {"matrix": [1, 4], "label": "4", "x": 4, "y": 1}, + {"matrix": [1, 5], "label": "5", "x": 5, "y": 1}, + {"matrix": [1, 6], "label": "6", "x": 6, "y": 1}, + {"matrix": [1, 7], "label": "7", "x": 7, "y": 1}, + {"matrix": [7, 0], "label": "&", "x": 9.294, "y": 1}, + {"matrix": [7, 1], "label": "*", "x": 10.294, "y": 1}, + {"matrix": [7, 2], "label": "(", "x": 11.294, "y": 1}, + {"matrix": [7, 3], "label": ")", "x": 12.294, "y": 1}, + {"matrix": [7, 4], "label": "_", "x": 13.294, "y": 1}, + {"matrix": [7, 5], "label": "+", "x": 14.294, "y": 1}, + {"matrix": [7, 6], "label": "Backspace", "x": 15.294, "y": 1, "w": 2}, + {"matrix": [2, 0], "label": "Tab", "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "label": "Q", "x": 1.5, "y": 2}, + {"matrix": [2, 2], "label": "W", "x": 2.5, "y": 2}, + {"matrix": [2, 3], "label": "E", "x": 3.5, "y": 2}, + {"matrix": [2, 4], "label": "R", "x": 4.5, "y": 2}, + {"matrix": [2, 5], "label": "T", "x": 5.5, "y": 2}, + {"matrix": [2, 6], "label": "Y", "x": 6.5, "y": 2}, + {"matrix": [8, 0], "label": "Y", "x": 8.794, "y": 2}, + {"matrix": [8, 1], "label": "U", "x": 9.794, "y": 2}, + {"matrix": [8, 2], "label": "I", "x": 10.794, "y": 2}, + {"matrix": [8, 3], "label": "O", "x": 11.794, "y": 2}, + {"matrix": [8, 4], "label": "P", "x": 12.794, "y": 2}, + {"matrix": [8, 5], "label": "{", "x": 13.794, "y": 2}, + {"matrix": [8, 6], "label": "}", "x": 14.794, "y": 2}, + {"matrix": [8, 7], "label": "|", "x": 15.794, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "label": "Caps Lock", "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "label": "A", "x": 1.75, "y": 3}, + {"matrix": [3, 2], "label": "S", "x": 2.75, "y": 3}, + {"matrix": [3, 3], "label": "D", "x": 3.75, "y": 3}, + {"matrix": [3, 4], "label": "F", "x": 4.75, "y": 3}, + {"matrix": [3, 5], "label": "G", "x": 5.75, "y": 3}, + {"matrix": [3, 6], "label": "H", "x": 6.75, "y": 3}, + {"matrix": [9, 0], "label": "H", "x": 9.044, "y": 3}, + {"matrix": [9, 1], "label": "J", "x": 10.044, "y": 3}, + {"matrix": [9, 2], "label": "K", "x": 11.044, "y": 3}, + {"matrix": [9, 3], "label": "L", "x": 12.044, "y": 3}, + {"matrix": [9, 4], "label": ":", "x": 13.044, "y": 3}, + {"matrix": [9, 5], "label": "\"", "x": 14.044, "y": 3}, + {"matrix": [9, 6], "label": "Enter", "x": 15.044, "y": 3, "w": 2.25}, + {"matrix": [4, 0], "label": "Shift", "x": 0, "y": 4, "w": 2.25}, + {"matrix": [4, 1], "label": "Z", "x": 2.25, "y": 4}, + {"matrix": [4, 2], "label": "X", "x": 3.25, "y": 4}, + {"matrix": [4, 3], "label": "C", "x": 4.25, "y": 4}, + {"matrix": [4, 4], "label": "V", "x": 5.25, "y": 4}, + {"matrix": [4, 5], "label": "B", "x": 6.25, "y": 4}, + {"matrix": [4, 6], "label": "N", "x": 7.25, "y": 4}, + {"matrix": [10, 0], "label": "B", "x": 8.544, "y": 4}, + {"matrix": [10, 1], "label": "N", "x": 9.544, "y": 4}, + {"matrix": [10, 2], "label": "M", "x": 10.544, "y": 4}, + {"matrix": [10, 3], "label": "<", "x": 11.544, "y": 4}, + {"matrix": [10, 4], "label": ">", "x": 12.544, "y": 4}, + {"matrix": [10, 5], "label": "?", "x": 13.544, "y": 4}, + {"matrix": [10, 6], "label": "Shift", "x": 14.544, "y": 4, "w": 2.75}, + {"matrix": [5, 0], "label": "Ctrl", "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "label": "Win", "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "label": "Layer", "x": 2.5, "y": 5}, + {"matrix": [5, 3], "label": "Alt", "x": 3.5, "y": 5, "w": 2}, + {"matrix": [5, 6], "label": "Space", "x": 5.5, "y": 5, "w": 2.75}, + {"matrix": [11, 1], "label": "Space", "x": 8.794, "y": 5, "w": 2.25}, + {"matrix": [11, 2], "label": "Arrows", "x": 11.044, "y": 5, "w": 1.25}, + {"matrix": [11, 3], "label": "Ctrl", "x": 12.294, "y": 5, "w": 1.25}, + {"matrix": [11, 4], "label": "Win", "x": 13.544, "y": 5, "w": 1.25}, + {"matrix": [11, 5], "label": "Menu", "x": 14.794, "y": 5, "w": 1.25}, + {"matrix": [11, 7], "label": "Ctrl", "x": 16.044, "y": 5, "w": 1.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v5/keymaps/default/keymap.c b/keyboards/pmk/posey_split/v5/keymaps/default/keymap.c new file mode 100644 index 000000000000..fa7fd018a017 --- /dev/null +++ b/keyboards/pmk/posey_split/v5/keymaps/default/keymap.c @@ -0,0 +1,73 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│LED│F1 │F2 │F3 │F4 │F5 │F6 │ │L1 │F7 │F8 │F9 │F10│F11│PAS│Del│ 16 + * ├───┼───┼───┼───┼───┼───┼───┴───┤ ├───┴───┼───┼───┼───┼───┼───┴───┤ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ │7 │8 │ 9 │ 0 │ - │ = │ Backsp│ 15 + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ 15 + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ │ H │J │ K │ L │ ; │ ' │ Enter │ 14 + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ │ B │ N │ M │ , │ . │ / │ Shift │ 14 + * ├────┬───┴┬──┴─┬─┴───┴┬──┴───┴───┤ └┬──┴───┴─┬─┴──┬┴───┴───┴┬─────────┤ + * │Ctrl│GUI │Alt │L2 │ │ │ | L3 │ Alt│ GUI│Menu│Ctrl│ 11 + * └────┴────┴────┴──────┴──────────┘ └────────┴────┴────┴────┴────┴────┘ + */ + [_QWERTY] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MO(_SYMB), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PAUS, KC_DEL, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BACKSPACE, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_LCTL, KC_LGUI, KC_LALT, MO(_NAV), KC_SPC, KC_SPC, MO(_NAV), KC_RGUI, KC_LEFT, KC_DOWN,KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_NAV] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_SYMB), KC_TRNS,KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_TRNS, KC_TRNS, KC_F12, KC_F13, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_CLEAR_EEPROM, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_PRNT, DT_DOWN, KC_SLEP + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ) +}; diff --git a/keyboards/pmk/posey_split/v5/keymaps/via/keymap.c b/keyboards/pmk/posey_split/v5/keymaps/via/keymap.c new file mode 100644 index 000000000000..fa7fd018a017 --- /dev/null +++ b/keyboards/pmk/posey_split/v5/keymaps/via/keymap.c @@ -0,0 +1,73 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│LED│F1 │F2 │F3 │F4 │F5 │F6 │ │L1 │F7 │F8 │F9 │F10│F11│PAS│Del│ 16 + * ├───┼───┼───┼───┼───┼───┼───┴───┤ ├───┴───┼───┼───┼───┼───┼───┴───┤ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ │7 │8 │ 9 │ 0 │ - │ = │ Backsp│ 15 + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ 15 + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ │ H │J │ K │ L │ ; │ ' │ Enter │ 14 + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ │ B │ N │ M │ , │ . │ / │ Shift │ 14 + * ├────┬───┴┬──┴─┬─┴───┴┬──┴───┴───┤ └┬──┴───┴─┬─┴──┬┴───┴───┴┬─────────┤ + * │Ctrl│GUI │Alt │L2 │ │ │ | L3 │ Alt│ GUI│Menu│Ctrl│ 11 + * └────┴────┴────┴──────┴──────────┘ └────────┴────┴────┴────┴────┴────┘ + */ + [_QWERTY] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MO(_SYMB), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PAUS, KC_DEL, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BACKSPACE, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_LCTL, KC_LGUI, KC_LALT, MO(_NAV), KC_SPC, KC_SPC, MO(_NAV), KC_RGUI, KC_LEFT, KC_DOWN,KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_NAV] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_SYMB), KC_TRNS,KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_LEFT, KC_DOWN, KC_RIGHT + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ), + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┬────────┬────────┬────────┬───────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬───────┐ + KC_ESC, KC_TRNS, KC_TRNS, KC_F12, KC_F13, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_CLEAR_EEPROM, + //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┬───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴───────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //├─────────────────┼────────┼────────┼────────┼────────┼────────┼───────┤ ├────────┼────────┼────────┼────────┼────────┼────────┴────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_UP, + //├──────────┬──────┴─┬───────┼───────┴────────┼────────┴────────┴───────┤ ├────────┴────────┴────────┼────────┼────────┼────────┼────────────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DT_PRNT, DT_DOWN, KC_SLEP + //└──────────┴────────┴───────┴────────────────┴─────────────────────────┘ └──────────────────────────┴────────┴────────┴────────┴───────┴────────┘ + ) +}; diff --git a/keyboards/pmk/posey_split/v5/keymaps/via/rules.mk b/keyboards/pmk/posey_split/v5/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/pmk/posey_split/v5/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/pmk/posey_split/v5/readme.md b/keyboards/pmk/posey_split/v5/readme.md new file mode 100644 index 000000000000..57fbf642c3d3 --- /dev/null +++ b/keyboards/pmk/posey_split/v5/readme.md @@ -0,0 +1,30 @@ +# posey_split_v5 + +![posey_split_v5](https://i.imgur.com/g3yf6al.png) + +The Posey split keyboard was designed from the gournd up for gaming. By pushing the left half of your split keyboard out of the way, you'll be able to game with better posture and increase mouse movement. PMK's have additional keys on the right half to make sure you don't need to reach for your other half while gaming. + +Version Changes from v4: +-Changed bottom row on the left half to use standard modifier key sizes + +* Keyboard Maintainer: [Javier Oliver](https://github.com/joliverMI) +* Hardware Supported: posey_split_v5 and logic_module_v1 +* Hardware Availability: poseysmechanicalkeyboards.com + +Make example for this keyboard (after setting up your build environment): + + make pmk/posey_split/v5:default + +Flashing example for this keyboard: + + make pmk/posey_split/v5: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 Escape and plug in the keyboard +* **Physical reset button**: Hold the button on the bottom of the keyboard while you plug in the USB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/pmk/posey_split/v5/rules.mk b/keyboards/pmk/posey_split/v5/rules.mk new file mode 100644 index 000000000000..743228e94b64 --- /dev/null +++ b/keyboards/pmk/posey_split/v5/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file From 53f46893ce9682513ec291a324977eac5b9069d7 Mon Sep 17 00:00:00 2001 From: jack <0x6A73@pm.me> Date: Wed, 20 Mar 2024 09:09:29 -0600 Subject: [PATCH 002/125] Updates to PR Checklist (#23318) --- docs/pr_checklist.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index 6a0ae3159768..0d503ab41778 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -9,6 +9,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr - PR should be submitted using a non-`master` branch on the source repository - this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch - if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](newbs_git_using_your_master_branch.md) page after merging -- (end of this document will contain the contents of the message) + - Note, frequently merging upstream with your branch is not needed and is discouraged. Valid reason for updating your branch may be resolving merge conflicts and pulling in new changes relevant to your PR. - PRs should contain the smallest amount of modifications required for a single change to the codebase - multiple keyboards at the same time is not acceptable - **the smaller the PR, the higher likelihood of a quicker review, higher likelihood of quicker merge, and less chance of conflicts** @@ -43,10 +44,10 @@ If there are any inconsistencies with these recommendations, you're best off [cr - PRs for vendor specific keymaps will be permitted. The naming convention for these should be `default_${vendor}`, `via_${vendor}` i.e. `via_clueboard`. - vendor specific keymaps do not necessarily need to be "vanilla" and can be more richly featured than `default` or `via` stock keymaps. -- #include QMK_KEYBOARD_H preferred to including specific board files +- `#include QMK_KEYBOARD_H` preferred to including specific board files - prefer layer enums to #defines -- custom keycode enums must have first entry = SAFE_RANGE -- some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap +- custom keycode enums must have first entry = `QK_USER` +- some care with spacing (e.g., alignment on commas or first char of keycodes) makes for a much nicer-looking keymap. Spaces are preferred to tabs ## Keyboard PRs @@ -81,6 +82,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - Encoder Configuration - Bootmagic Configuration - LED Indicator Configuration + - RGB Light Configuration + - RGB Matrix Configuration - Run `qmk format-json` on this file before submitting your PR. Be sure to append the `-i` flag to directly modify the file, or paste the outputted code into the file. - `readme.md` - must follow the [template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md) @@ -90,8 +93,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - a picture about the keyboard and preferably about the PCB, too - images are not to be placed in the `qmk_firmware` repository - images should be uploaded to an external image hosting service, such as [imgur](https://imgur.com/). - - if imgur is used, images should be resized appropriately: append "h" to the image url i.e. [https://i.imgur.com/vqgE7Ok.jpg](https://i.imgur.com/vqgE7Ok.jpg) becomes [https://i.imgur.com/vqgE7Ok**h**.jpg](https://i.imgur.com/vqgE7Okh.jpg) - - image links should link directly to the image, not a "preview" -- i.e. [https://imgur.com/vqgE7Ok](https://imgur.com/vqgE7Ok) should be [https://i.imgur.com/vqgE7Okh.jpg](https://i.imgur.com/vqgE7Okh.jpg) when using imgur + - image links should link directly to the image, not a "preview" -- i.e. [https://imgur.com/vqgE7Ok](https://imgur.com/vqgE7Ok) should be [https://i.imgur.com/vqgE7Ok.jpg](https://i.imgur.com/vqgE7Ok.jpg) when using imgur - `rules.mk` - removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE` - modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth` @@ -204,7 +206,7 @@ Additionally, PR reviews are something that is done in our free time. We are not ## Example GPLv2 Header ``` -/* Copyright 2021 Your Name (@yourgithub) +/* Copyright 2024 Your Name (@yourgithub) * * 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 @@ -224,6 +226,6 @@ Additionally, PR reviews are something that is done in our free time. We are not Or, optionally, using [SPDX identifier](https://spdx.org/licenses/) instead: ``` -// Copyright 2021 Your Name (@yourgithub) +// Copyright 2024 Your Name (@yourgithub) // SPDX-License-Identifier: GPL-2.0-or-later ``` From a9e9c9acc5dfcd5a98ac97e6a41d34cda04e0859 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Mar 2024 19:51:01 +0000 Subject: [PATCH 003/125] Fix invalid use of stemcell converter (#23317) --- .../bastardkb/charybdis/3x5/v2/stemcell/config.h | 7 +++---- .../bastardkb/charybdis/3x5/v2/stemcell/info.json | 11 +++++------ .../bastardkb/charybdis/3x5/v2/stemcell/rules.mk | 2 -- .../bastardkb/charybdis/3x6/v2/stemcell/config.h | 7 +++---- .../bastardkb/charybdis/3x6/v2/stemcell/info.json | 11 +++++------ .../bastardkb/charybdis/3x6/v2/stemcell/rules.mk | 2 -- .../bastardkb/charybdis/4x6/v2/stemcell/config.h | 7 +++---- .../bastardkb/charybdis/4x6/v2/stemcell/info.json | 11 +++++------ .../bastardkb/charybdis/4x6/v2/stemcell/rules.mk | 2 -- keyboards/bastardkb/scylla/v2/stemcell/info.json | 11 +++++------ keyboards/bastardkb/scylla/v2/stemcell/rules.mk | 2 -- keyboards/bastardkb/skeletyl/v2/stemcell/info.json | 11 +++++------ keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk | 2 -- keyboards/bastardkb/tbkmini/v2/stemcell/info.json | 11 +++++------ keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk | 2 -- 15 files changed, 39 insertions(+), 60 deletions(-) diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h index 6aa20712f67b..50fc030402b2 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h +++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h @@ -39,15 +39,14 @@ /* SPI config for pmw3360 sensor. */ #define SPI_DRIVER SPID1 -#define SPI_SCK_PIN B1 +#define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN B2 +#define SPI_MOSI_PIN A7 #define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN B3 +#define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 /* PMW3360 settings. */ -#define A1 PAL_LINE(GPIOA, 1) #define POINTING_DEVICE_CS_PIN A1 #define PMW3360_CS_MODE 3 #define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json index c119df524c31..af74a299be79 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json +++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] + "cols": ["B2", "A4", "B4", "B5", "B8"], + "rows": ["B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk index 4436426f3033..4bd570ddd8c3 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h index 6aa20712f67b..50fc030402b2 100644 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h +++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h @@ -39,15 +39,14 @@ /* SPI config for pmw3360 sensor. */ #define SPI_DRIVER SPID1 -#define SPI_SCK_PIN B1 +#define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN B2 +#define SPI_MOSI_PIN A7 #define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN B3 +#define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 /* PMW3360 settings. */ -#define A1 PAL_LINE(GPIOA, 1) #define POINTING_DEVICE_CS_PIN A1 #define PMW3360_CS_MODE 3 #define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json index 85b66277cf20..4309fd5ee307 100644 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json +++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] + "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], + "rows": ["B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk index 4436426f3033..4bd570ddd8c3 100644 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h index 6aa20712f67b..50fc030402b2 100644 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h +++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h @@ -39,15 +39,14 @@ /* SPI config for pmw3360 sensor. */ #define SPI_DRIVER SPID1 -#define SPI_SCK_PIN B1 +#define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN B2 +#define SPI_MOSI_PIN A7 #define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN B3 +#define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 /* PMW3360 settings. */ -#define A1 PAL_LINE(GPIOA, 1) #define POINTING_DEVICE_CS_PIN A1 #define PMW3360_CS_MODE 3 #define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json index cfae56715f1b..8060c758b88c 100644 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json +++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F4", "F7", "C6", "D4", "B5"] + "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], + "rows": ["B10", "B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk index 4436426f3033..4bd570ddd8c3 100644 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/scylla/v2/stemcell/info.json b/keyboards/bastardkb/scylla/v2/stemcell/info.json index d463418cf19c..598ca9d9ee07 100644 --- a/keyboards/bastardkb/scylla/v2/stemcell/info.json +++ b/keyboards/bastardkb/scylla/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F4", "F7", "C6", "D4", "B5"] + "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], + "rows": ["B10", "B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/scylla/v2/stemcell/rules.mk b/keyboards/bastardkb/scylla/v2/stemcell/rules.mk index 8dda103d07a7..8256842e21d0 100644 --- a/keyboards/bastardkb/scylla/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/scylla/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/info.json b/keyboards/bastardkb/skeletyl/v2/stemcell/info.json index b44d64a47aae..b384da9dbdc0 100644 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/info.json +++ b/keyboards/bastardkb/skeletyl/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] + "cols": ["B2", "A4", "B4", "B5", "B8"], + "rows": ["B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk b/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk index 8dda103d07a7..8256842e21d0 100644 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/info.json b/keyboards/bastardkb/tbkmini/v2/stemcell/info.json index a75db584e798..f62427438b70 100644 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/info.json +++ b/keyboards/bastardkb/tbkmini/v2/stemcell/info.json @@ -7,20 +7,19 @@ "driver": "ws2812" }, "ws2812": { - "pin": "D3", + "pin": "A2", "driver": "pwm" }, "build": { "debounce_type": "asym_eager_defer_pk" }, "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] + "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], + "rows": ["B0", "B3", "A15", "B9"] }, "diode_direction": "ROW2COL", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "A3" }, - "processor": "STM32F411", - "bootloader": "stm32-dfu" + "development_board": "stemcell" } diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk b/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk index 8dda103d07a7..8256842e21d0 100644 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk +++ b/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk @@ -1,5 +1,3 @@ -CONVERT_TO = stemcell - # Build Options # change yes to no to disable # From 977f667da93754a4471423f321dfeb7389269445 Mon Sep 17 00:00:00 2001 From: zlabkeeb <160311066+zlabkeeb@users.noreply.github.com> Date: Thu, 21 Mar 2024 03:32:04 +0700 Subject: [PATCH 004/125] Add Macropad 6Pad (#23099) --- keyboards/zlabkeeb/6pad/info.json | 65 +++++++++++++++++++ .../zlabkeeb/6pad/keymaps/default/keymap.c | 50 ++++++++++++++ .../zlabkeeb/6pad/keymaps/default/rules.mk | 1 + keyboards/zlabkeeb/6pad/keymaps/via/keymap.c | 38 +++++++++++ keyboards/zlabkeeb/6pad/keymaps/via/rules.mk | 2 + keyboards/zlabkeeb/6pad/readme.md | 26 ++++++++ keyboards/zlabkeeb/6pad/rules.mk | 1 + 7 files changed, 183 insertions(+) create mode 100644 keyboards/zlabkeeb/6pad/info.json create mode 100644 keyboards/zlabkeeb/6pad/keymaps/default/keymap.c create mode 100644 keyboards/zlabkeeb/6pad/keymaps/default/rules.mk create mode 100644 keyboards/zlabkeeb/6pad/keymaps/via/keymap.c create mode 100644 keyboards/zlabkeeb/6pad/keymaps/via/rules.mk create mode 100644 keyboards/zlabkeeb/6pad/readme.md create mode 100644 keyboards/zlabkeeb/6pad/rules.mk diff --git a/keyboards/zlabkeeb/6pad/info.json b/keyboards/zlabkeeb/6pad/info.json new file mode 100644 index 000000000000..cd37d4ca023b --- /dev/null +++ b/keyboards/zlabkeeb/6pad/info.json @@ -0,0 +1,65 @@ +{ + "keyboard_name": "ZLABKEEB 6PAD", + "manufacturer": "zlabkeeb", + "maintainer": "zlabkeeb", + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "encoder": true, + "mousekey": true, + "rgblight": true + }, + "build": { + "lto": true + }, + "url": "https://github.com/zlabkeeb", + "usb": { + "device_version": "1.0.0", + "vid": "0x4154", + "pid": "0x7A77" + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 4, + "max_brightness": 180, + "saturation_steps": 8, + "sleep": true + }, + "ws2812": { + "pin": "B6" + }, + "encoder": { + "rotary": [ + {"pin_a": "B4", "pin_b": "B5"} + ] + }, + "matrix_pins": { + "direct": [ + ["D1", "D0", "D4"], + ["C6", "D7", "E6"] + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0, 0]}, + {"x": 1, "y": 0, "matrix": [0, 1]}, + {"x": 2, "y": 0, "matrix": [0, 2]}, + {"x": 0, "y": 1, "matrix": [1, 0]}, + {"x": 1, "y": 1, "matrix": [1, 1]}, + {"x": 2, "y": 1, "matrix": [1, 2]} + ] + } + } +} diff --git a/keyboards/zlabkeeb/6pad/keymaps/default/keymap.c b/keyboards/zlabkeeb/6pad/keymaps/default/keymap.c new file mode 100644 index 000000000000..d0048cd88dfb --- /dev/null +++ b/keyboards/zlabkeeb/6pad/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2024 zlabkeeb (zlabkeeb@gmail.com) + +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] = { + /* + * ┌─────────┌─────────┌─────────┐ + * │ 1 │ layer 1 │ 3 │ + * ├─────────┼─────────┼─────────| + * │ 4 │ 5 │ 6 | + * ├─────────┼─────────┼─────────┘ + */ + [0] = LAYOUT( + KC_1, TO(1), KC_2, + KC_3, KC_4, KC_5 + ), + /* + * ┌─────────┌─────────┌─────────┐ + * │ A │ layer O │ B │ + * ├─────────┼─────────┼─────────| + * │ C │ D │ E | + * ├─────────┼─────────┼─────────┘ + */ + [1] = LAYOUT( + KC_A, TO(0), KC_B, + KC_C, KC_D, KC_E + ) +}; + +#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_PGDN, KC_PGUP)} +}; +#endif diff --git a/keyboards/zlabkeeb/6pad/keymaps/default/rules.mk b/keyboards/zlabkeeb/6pad/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/zlabkeeb/6pad/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/zlabkeeb/6pad/keymaps/via/keymap.c b/keyboards/zlabkeeb/6pad/keymaps/via/keymap.c new file mode 100644 index 000000000000..d958bfb5bdf4 --- /dev/null +++ b/keyboards/zlabkeeb/6pad/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2024 zlabkeeb (zlabkeeb@gmail.com) + +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] = { + /* + * ┌─────────┌─────────┌─────────┐ + * │ 1 │ 2 │ 3 │ + * ├─────────┼─────────┼─────────| + * │ 4 │ 5 │ 6 | + * ├─────────┼─────────┼─────────┘ + */ + [0] = LAYOUT( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ) +}; + +#if defined (ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)} +}; +#endif diff --git a/keyboards/zlabkeeb/6pad/keymaps/via/rules.mk b/keyboards/zlabkeeb/6pad/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/zlabkeeb/6pad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/zlabkeeb/6pad/readme.md b/keyboards/zlabkeeb/6pad/readme.md new file mode 100644 index 000000000000..9470ee1d6d9e --- /dev/null +++ b/keyboards/zlabkeeb/6pad/readme.md @@ -0,0 +1,26 @@ +# 6PAD + +![6PAD](https://i.imgur.com/yt3dKCBh.jpeg) + +6PAD is a Simple Yet Elegant Macropad, 5 Keys & Single Rotary Encoder, Designed And Manufactured In INDONESIA. + +- Support RGB light UnderGlow +- Keyboard Maintainer: [zlabkeeb](https://github.com/zlabkeeb) +- Hardware Supported: 6Pad PCB, Promicro +- Hardware Availability: (INDONESIA Only) Will be available at [Tokopedia](https://www.tokopedia.com/zahranetid) + +Make example for this keyboard (after setting up your build environment): + + make zlabkeeb/6pad:default + +Flashing example for this keyboard: + + make zlabkeeb/6pad: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 1 way: + +- **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead diff --git a/keyboards/zlabkeeb/6pad/rules.mk b/keyboards/zlabkeeb/6pad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/zlabkeeb/6pad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 34374d2e2e4f5b827c8a0402b0cc8f177431e25a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 20 Mar 2024 22:23:58 +0000 Subject: [PATCH 005/125] Assume only 32u4 boards can run 'promicro' converters (#23312) --- builddefs/converters.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/builddefs/converters.mk b/builddefs/converters.mk index 96c8656b253f..3e77a070f2fb 100644 --- a/builddefs/converters.mk +++ b/builddefs/converters.mk @@ -5,8 +5,10 @@ ifneq ($(findstring yes, $(CTPC)$(CONVERT_TO_PROTON_C)),) $(call CATASTROPHIC_ERROR,The `CONVERT_TO_PROTON_C` and `CTPC` options are now deprecated. `CONVERT_TO=proton_c` should be used instead.) endif -# TODO: opt in rather than assume everything uses a pro micro -PIN_COMPATIBLE ?= promicro +ifneq (,$(filter $(MCU),atmega32u4)) + # TODO: opt in rather than assume everything uses a pro micro + PIN_COMPATIBLE ?= promicro +endif # Remove whitespace from any rule.mk provided vars # - env cannot be overwritten but cannot have whitespace anyway @@ -16,6 +18,10 @@ ifneq ($(CONVERT_TO),) # stash so we can overwrite env provided vars if needed ACTIVE_CONVERTER=$(CONVERT_TO) + ifeq ($(PIN_COMPATIBLE),) + $(call CATASTROPHIC_ERROR,Converting to '$(CONVERT_TO)' not possible!) + endif + # glob to search each platfrorm and/or check for valid converter CONVERTER := $(wildcard $(PLATFORM_PATH)/*/converters/$(PIN_COMPATIBLE)_to_$(CONVERT_TO)/) ifeq ($(CONVERTER),) From d5374b7e017772643b6bf190e105bcdd84f14f98 Mon Sep 17 00:00:00 2001 From: Bregoliii <34028962+Bregoliii@users.noreply.github.com> Date: Thu, 21 Mar 2024 05:04:14 +0100 Subject: [PATCH 006/125] Add Swiss support (#23272) --- keyboards/swiss/info.json | 97 ++++++++++++++++++++++++ keyboards/swiss/keymaps/default/keymap.c | 23 ++++++ keyboards/swiss/keymaps/via/keymap.c | 23 ++++++ keyboards/swiss/keymaps/via/rules.mk | 1 + keyboards/swiss/readme.md | 28 +++++++ keyboards/swiss/rules.mk | 1 + 6 files changed, 173 insertions(+) create mode 100644 keyboards/swiss/info.json create mode 100644 keyboards/swiss/keymaps/default/keymap.c create mode 100644 keyboards/swiss/keymaps/via/keymap.c create mode 100644 keyboards/swiss/keymaps/via/rules.mk create mode 100644 keyboards/swiss/readme.md create mode 100644 keyboards/swiss/rules.mk diff --git a/keyboards/swiss/info.json b/keyboards/swiss/info.json new file mode 100644 index 000000000000..039153cd7f53 --- /dev/null +++ b/keyboards/swiss/info.json @@ -0,0 +1,97 @@ +{ + "manufacturer": "Bregoli", + "keyboard_name": "swiss", + "maintainer": "Bregoli", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "E6", "B0", "B1", "B4", "B5", "B6", "C6", "C7", "D3"], + "rows": ["D6", "D4", "D5", "B2", "D7"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0420", + "vid": "0x4C43" + }, + "community_layouts": ["60_hhkb"], + "layouts": { + "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, 12], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 1.5, "y": 4}, + {"matrix": [4, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4} + ] + } + } +} diff --git a/keyboards/swiss/keymaps/default/keymap.c b/keyboards/swiss/keymaps/default/keymap.c new file mode 100644 index 000000000000..7f7d2ef60330 --- /dev/null +++ b/keyboards/swiss/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_60_hhkb( + 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_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_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + /* FN */ + [1] = LAYOUT_60_hhkb( + 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_INS, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCT, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/swiss/keymaps/via/keymap.c b/keyboards/swiss/keymaps/via/keymap.c new file mode 100644 index 000000000000..7f7d2ef60330 --- /dev/null +++ b/keyboards/swiss/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_60_hhkb( + 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_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_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + /* FN */ + [1] = LAYOUT_60_hhkb( + 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_INS, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCT, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/swiss/keymaps/via/rules.mk b/keyboards/swiss/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/swiss/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/swiss/readme.md b/keyboards/swiss/readme.md new file mode 100644 index 000000000000..779f7dcc7fa3 --- /dev/null +++ b/keyboards/swiss/readme.md @@ -0,0 +1,28 @@ +# Swiss + +![Swiss](https://i.imgur.com/8G6MB5D.png) + +An HHKB that looks like... Cheese? +A fun, not so serious, ridiculously cheesy keyboard. + +* Keyboard Maintainer: [Bregoli](https://geekhack.org/index.php?topic=119509.0) +* Hardware Supported: Custom HHKB PCB and C3 Unified Daughterboard + +Make example for this keyboard (after setting up your build environment): + + make swiss:default + +Flashing example for this keyboard: + + make swiss: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/swiss/rules.mk b/keyboards/swiss/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/swiss/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From a1b16b8227fbf43e67c398f926a922d4241a9829 Mon Sep 17 00:00:00 2001 From: Chad Skeeters Date: Wed, 20 Mar 2024 23:54:02 -0500 Subject: [PATCH 007/125] Support for slice65 from PizzaKeyboards (#23148) --- keyboards/pizzakeyboards/slice65/board.h | 20 ++++ keyboards/pizzakeyboards/slice65/info.json | 105 ++++++++++++++++++ .../slice65/keymaps/default/keymap.c | 26 +++++ .../slice65/keymaps/via/keymap.c | 26 +++++ .../slice65/keymaps/via/rules.mk | 2 + .../pizzakeyboards/slice65/ld/STM32F303xB.ld | 86 ++++++++++++++ keyboards/pizzakeyboards/slice65/mcuconf.h | 22 ++++ keyboards/pizzakeyboards/slice65/readme.md | 27 +++++ keyboards/pizzakeyboards/slice65/rules.mk | 1 + 9 files changed, 315 insertions(+) create mode 100644 keyboards/pizzakeyboards/slice65/board.h create mode 100644 keyboards/pizzakeyboards/slice65/info.json create mode 100644 keyboards/pizzakeyboards/slice65/keymaps/default/keymap.c create mode 100644 keyboards/pizzakeyboards/slice65/keymaps/via/keymap.c create mode 100644 keyboards/pizzakeyboards/slice65/keymaps/via/rules.mk create mode 100644 keyboards/pizzakeyboards/slice65/ld/STM32F303xB.ld create mode 100644 keyboards/pizzakeyboards/slice65/mcuconf.h create mode 100644 keyboards/pizzakeyboards/slice65/readme.md create mode 100644 keyboards/pizzakeyboards/slice65/rules.mk diff --git a/keyboards/pizzakeyboards/slice65/board.h b/keyboards/pizzakeyboards/slice65/board.h new file mode 100644 index 000000000000..ba17e3b15ec9 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/board.h @@ -0,0 +1,20 @@ +/* +Copyright 2022 Christoph Baumann + +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 STM32_HSECLK 16000000 +#include_next diff --git a/keyboards/pizzakeyboards/slice65/info.json b/keyboards/pizzakeyboards/slice65/info.json new file mode 100644 index 000000000000..a6ae5a169f8d --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/info.json @@ -0,0 +1,105 @@ +{ + "manufacturer": "Pizzakeyboards", + "keyboard_name": "Slice65", + "maintainer": "mm0nte", + "bootloader": "stm32-dfu", + "debounce": 10, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C14", "C13", "C15", "B6", "B5", "B4", "C4", "A7"], + "rows": ["C11", "C12", "B3", "D2", "A1", "A2", "A5", "A4", "B1", "B0"] + }, + "processor": "STM32F303", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "url": "www.keyboards.pizza", + "usb": { + "device_version": "1.0.0", + "pid": "0x707C", + "vid": "0x504B" + }, + "community_layouts": ["65_ansi_blocker"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "3", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "5", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "7", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "9", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "-", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [1, 6], "x": 13, "y": 0, "w": 2}, + {"label": "Home", "matrix": [0, 7], "x": 15, "y": 0}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [2, 7], "x": 15, "y": 1}, + {"label": "Capslock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PgUp", "matrix": [4, 7], "x": 15, "y": 2}, + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [7, 6], "x": 14, "y": 3}, + {"label": "PgDn", "matrix": [6, 7], "x": 15, "y": 3}, + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Left", "matrix": [8, 6], "x": 13, "y": 4}, + {"label": "Down", "matrix": [9, 6], "x": 14, "y": 4}, + {"label": "Right", "matrix": [8, 7], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/pizzakeyboards/slice65/keymaps/default/keymap.c b/keyboards/pizzakeyboards/slice65/keymaps/default/keymap.c new file mode 100644 index 000000000000..ed1ea2f0c688 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2021 Christoph Baumann + * + * 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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), +}; diff --git a/keyboards/pizzakeyboards/slice65/keymaps/via/keymap.c b/keyboards/pizzakeyboards/slice65/keymaps/via/keymap.c new file mode 100644 index 000000000000..904340ceec2e --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/keymaps/via/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2022 Christoph Baumann + * + * 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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; diff --git a/keyboards/pizzakeyboards/slice65/keymaps/via/rules.mk b/keyboards/pizzakeyboards/slice65/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/pizzakeyboards/slice65/ld/STM32F303xB.ld b/keyboards/pizzakeyboards/slice65/ld/STM32F303xB.ld new file mode 100644 index 000000000000..8ad8b0911cc7 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/ld/STM32F303xB.ld @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + Copyright (C) 2022 Christoph Baumann + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash0 (rx) : org = 0x08000000, len = 128k + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + flash3 (rx) : org = 0x00000000, len = 0 + flash4 (rx) : org = 0x00000000, len = 0 + flash5 (rx) : org = 0x00000000, len = 0 + flash6 (rx) : org = 0x00000000, len = 0 + flash7 (rx) : org = 0x00000000, len = 0 + ram0 (wx) : org = 0x20000000, len = 32k + ram1 (wx) : org = 0x00000000, len = 0 + ram2 (wx) : org = 0x00000000, len = 0 + ram3 (wx) : org = 0x00000000, len = 0 + ram4 (wx) : org = 0x10000000, len = 8k + ram5 (wx) : org = 0x00000000, len = 0 + ram6 (wx) : org = 0x00000000, len = 0 + ram7 (wx) : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld diff --git a/keyboards/pizzakeyboards/slice65/mcuconf.h b/keyboards/pizzakeyboards/slice65/mcuconf.h new file mode 100644 index 000000000000..aa059c91708d --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/mcuconf.h @@ -0,0 +1,22 @@ +/* +Copyright 2022 Christoph Baumann + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include_next + +#undef STM32_PREDIV_VALUE +#define STM32_PREDIV_VALUE 2 diff --git a/keyboards/pizzakeyboards/slice65/readme.md b/keyboards/pizzakeyboards/slice65/readme.md new file mode 100644 index 000000000000..591f51b49e88 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/readme.md @@ -0,0 +1,27 @@ +# Pizza Keyboards (V2) Slice65 + +![Pizza V2](https://i.imgur.com/RfqnpVlh.jpeg) + +A 65% keyboard kit made and sold by [pizza keyboards](https://keyboards.pizza). + +* Keyboard Maintainer: [mm0nte](https://github.com/mm0nte) +* Hardware Supported: Pizza V2 Slice65 (Hotswap) PCB +* Hardware Availability: [Pizza Keyboards Store](https://keyboards.pizza/collections/store) + +Make example for this keyboard (after setting up your build environment): + + make pizzakeyboards/slice65:default + +Flashing example for this keyboard: + + make pizzakeyboards/slice65: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/pizzakeyboards/slice65/rules.mk b/keyboards/pizzakeyboards/slice65/rules.mk new file mode 100644 index 000000000000..a36398ce4341 --- /dev/null +++ b/keyboards/pizzakeyboards/slice65/rules.mk @@ -0,0 +1 @@ +MCU_LDSCRIPT = STM32F303xB From 18ae0f61abac97d3dde323e4aad5ec9fc82bc834 Mon Sep 17 00:00:00 2001 From: Ramon Imbao Date: Thu, 21 Mar 2024 13:03:42 +0800 Subject: [PATCH 008/125] Add the EQUATOR keyboard (#23237) --- keyboards/rmi_kb/equator/config.h | 11 ++ keyboards/rmi_kb/equator/equator.c | 30 ++++ keyboards/rmi_kb/equator/halconf.h | 8 + keyboards/rmi_kb/equator/info.json | 152 ++++++++++++++++++ .../rmi_kb/equator/keymaps/default/keymap.c | 21 +++ keyboards/rmi_kb/equator/keymaps/via/keymap.c | 21 +++ keyboards/rmi_kb/equator/keymaps/via/rules.mk | 1 + keyboards/rmi_kb/equator/mcuconf.h | 9 ++ keyboards/rmi_kb/equator/readme.md | 26 +++ keyboards/rmi_kb/equator/rules.mk | 1 + 10 files changed, 280 insertions(+) create mode 100644 keyboards/rmi_kb/equator/config.h create mode 100644 keyboards/rmi_kb/equator/equator.c create mode 100644 keyboards/rmi_kb/equator/halconf.h create mode 100644 keyboards/rmi_kb/equator/info.json create mode 100644 keyboards/rmi_kb/equator/keymaps/default/keymap.c create mode 100644 keyboards/rmi_kb/equator/keymaps/via/keymap.c create mode 100644 keyboards/rmi_kb/equator/keymaps/via/rules.mk create mode 100644 keyboards/rmi_kb/equator/mcuconf.h create mode 100644 keyboards/rmi_kb/equator/readme.md create mode 100644 keyboards/rmi_kb/equator/rules.mk diff --git a/keyboards/rmi_kb/equator/config.h b/keyboards/rmi_kb/equator/config.h new file mode 100644 index 000000000000..c2a22b667119 --- /dev/null +++ b/keyboards/rmi_kb/equator/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Ramon Imbao (@ramonimbao) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* RGB */ +#define WS2812_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_EXTERNAL_PULLUP diff --git a/keyboards/rmi_kb/equator/equator.c b/keyboards/rmi_kb/equator/equator.c new file mode 100644 index 000000000000..508eeea9e560 --- /dev/null +++ b/keyboards/rmi_kb/equator/equator.c @@ -0,0 +1,30 @@ +// Copyright 2024 Ramon Imbao (@ramonimbao) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + led_t state = host_keyboard_led_state(); + uint32_t highest_layer = get_highest_layer(layer_state); + + + if (!(state.compose || state.scroll_lock)) { + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 0); + } + + if (!state.caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(1, 0, 0, 0); + } + + if (highest_layer == 0) { + RGB_MATRIX_INDICATOR_SET_COLOR(2, 0, 0, 0); + } + + + return false; +} +#endif diff --git a/keyboards/rmi_kb/equator/halconf.h b/keyboards/rmi_kb/equator/halconf.h new file mode 100644 index 000000000000..e215e323c5d9 --- /dev/null +++ b/keyboards/rmi_kb/equator/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Ramon Imbao (@ramonimbao) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/rmi_kb/equator/info.json b/keyboards/rmi_kb/equator/info.json new file mode 100644 index 000000000000..9e1ccab0fb5f --- /dev/null +++ b/keyboards/rmi_kb/equator/info.json @@ -0,0 +1,152 @@ +{ + "manufacturer": "Ramon Imbao", + "keyboard_name": "EQUATOR", + "maintainer": "ramonimbao", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A9", "A8", "B2", "B11", "F1", "F0", "C15", "C14", "C13"], + "rows": ["B12", "B10", "A15", "A10", "B1"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0xE0A1", + "vid": "0xB16B" + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "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, + "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, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "digital_rain": true + }, + "driver": "ws2812", + "layout": [ + {"flags": 8, "x":224, "y":8}, + {"flags": 8, "x":224, "y":4}, + {"flags": 8, "x":224, "y":0} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 9, "y": 0}, + {"matrix": [0, 8], "x":10, "y": 0}, + {"matrix": [0, 9], "x":11, "y": 0}, + {"matrix": [0,10], "x":12, "y": 0}, + {"matrix": [0,11], "x":13, "y": 0}, + {"matrix": [0,12], "x":14, "y": 0}, + {"matrix": [0,13], "x":15, "y": 0}, + {"matrix": [0,14], "x":16, "y": 0}, + {"matrix": [0,15], "x":17, "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, 7], "x": 8.5, "y": 1}, + {"matrix": [1, 8], "x": 9.5, "y": 1}, + {"matrix": [1, 9], "x":10.5, "y": 1}, + {"matrix": [1,10], "x":11.5, "y": 1}, + {"matrix": [1,11], "x":12.5, "y": 1}, + {"matrix": [1,12], "x":13.5, "y": 1}, + {"matrix": [1,13], "x":14.5, "y": 1}, + {"matrix": [1,14], "x":15.5, "y": 1, "w": 1.5}, + {"matrix": [1,15], "x":17, "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, 7], "x": 8.75, "y": 2}, + {"matrix": [2, 8], "x": 9.75, "y": 2}, + {"matrix": [2, 9], "x":10.75, "y": 2}, + {"matrix": [2,10], "x":11.75, "y": 2}, + {"matrix": [2,11], "x":12.75, "y": 2}, + {"matrix": [2,12], "x":13.75, "y": 2}, + {"matrix": [2,14], "x":14.75, "y": 2, "w": 2.25}, + {"matrix": [2,15], "x":17, "y": 2}, + + {"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": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x":10.25, "y": 3}, + {"matrix": [3,10], "x":11.25, "y": 3}, + {"matrix": [3,11], "x":12.25, "y": 3}, + {"matrix": [3,12], "x":13.25, "y": 3}, + {"matrix": [3,13], "x":14.25, "y": 3, "w": 1.75}, + {"matrix": [3,14], "x":16, "y": 3}, + {"matrix": [3,15], "x":17, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [4, 3], "x": 3.25, "y": 3, "w": 1.25}, + {"matrix": [4, 5], "x": 4.5, "y": 3, "w": 2.75}, + {"matrix": [4, 8], "x": 8.25, "y": 3, "w": 2.25}, + {"matrix": [4, 9], "x":10.5, "y": 3, "w": 1.25}, + {"matrix": [4,11], "x":12.5, "y": 3, "w": 1.25}, + {"matrix": [4,12], "x":13.75, "y": 3, "w": 1.25}, + {"matrix": [4,13], "x":15, "y": 3}, + {"matrix": [4,14], "x":15, "y": 3}, + {"matrix": [4,15], "x":15, "y": 3} + ] + } + } +} diff --git a/keyboards/rmi_kb/equator/keymaps/default/keymap.c b/keyboards/rmi_kb/equator/keymaps/default/keymap.c new file mode 100644 index 000000000000..b5a0cdb458bc --- /dev/null +++ b/keyboards/rmi_kb/equator/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +// 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( + 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_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_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, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_DEL, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/rmi_kb/equator/keymaps/via/keymap.c b/keyboards/rmi_kb/equator/keymaps/via/keymap.c new file mode 100644 index 000000000000..b5a0cdb458bc --- /dev/null +++ b/keyboards/rmi_kb/equator/keymaps/via/keymap.c @@ -0,0 +1,21 @@ +// 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( + 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_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_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, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_DEL, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/rmi_kb/equator/keymaps/via/rules.mk b/keyboards/rmi_kb/equator/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/rmi_kb/equator/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/rmi_kb/equator/mcuconf.h b/keyboards/rmi_kb/equator/mcuconf.h new file mode 100644 index 000000000000..aceb2e3dfc0e --- /dev/null +++ b/keyboards/rmi_kb/equator/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Ramon Imbao (@ramonimbao) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/rmi_kb/equator/readme.md b/keyboards/rmi_kb/equator/readme.md new file mode 100644 index 000000000000..93755490f43a --- /dev/null +++ b/keyboards/rmi_kb/equator/readme.md @@ -0,0 +1,26 @@ +# EQUATOR + +![EQUATOR](https://i.imgur.com/0zjj6btl.png) + +An ergo 65% keyboard designed in collaboration with ronworks. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: STM32F072 + +Make example for this keyboard (after setting up your build environment): + + make rmi_kb/equator:default + +Flashing example for this keyboard: + + make rmi_kb/equator: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 and hold the button below the right alt and right ctrl keys +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/rmi_kb/equator/rules.mk b/keyboards/rmi_kb/equator/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/rmi_kb/equator/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4bc57c8d46233db366822793d6abb7a163691b9e Mon Sep 17 00:00:00 2001 From: jotix <69703151+jotix@users.noreply.github.com> Date: Thu, 21 Mar 2024 02:04:25 -0300 Subject: [PATCH 009/125] Add handwired/Jotlily60 (#23212) --- keyboards/handwired/jotlily60/info.json | 104 ++++++++++++++++++ .../jotlily60/keymaps/default/keymap.c | 65 +++++++++++ keyboards/handwired/jotlily60/readme.md | 55 +++++++++ keyboards/handwired/jotlily60/rules.mk | 1 + 4 files changed, 225 insertions(+) create mode 100644 keyboards/handwired/jotlily60/info.json create mode 100644 keyboards/handwired/jotlily60/keymaps/default/keymap.c create mode 100644 keyboards/handwired/jotlily60/readme.md create mode 100644 keyboards/handwired/jotlily60/rules.mk diff --git a/keyboards/handwired/jotlily60/info.json b/keyboards/handwired/jotlily60/info.json new file mode 100644 index 000000000000..65faa354a513 --- /dev/null +++ b/keyboards/handwired/jotlily60/info.json @@ -0,0 +1,104 @@ +{ + "manufacturer": "Jotix", + "keyboard_name": "jotlily60", + "maintainer" : "jotix", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/jotlily60", + "usb": { + "vid": "0x4A4F", + "pid": "0x2332", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": [ "D0", "D4", "C6", "D7", "E6", "B4", "B5" ], + "rows": [ "F7", "B1", "B3", "B2", "B6" ], + }, + "split": { + "enabled": true, + "soft_serial_pin": "D3" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.5}, + {"matrix": [0, 1], "x": 1, "y": 0.5}, + {"matrix": [0, 2], "x": 2, "y": 0.25}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.25}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + + {"matrix": [5, 5], "x": 10, "y": 0.25}, + {"matrix": [5, 4], "x": 11, "y": 0.25}, + {"matrix": [5, 3], "x": 12, "y": 0}, + {"matrix": [5, 2], "x": 13, "y": 0.25}, + {"matrix": [5, 1], "x": 14, "y": 0.5}, + {"matrix": [5, 0], "x": 15, "y": 0.5}, + + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + + {"matrix": [6, 5], "x": 10, "y": 1.25}, + {"matrix": [6, 4], "x": 11, "y": 1.25}, + {"matrix": [6, 3], "x": 12, "y": 1}, + {"matrix": [6, 2], "x": 13, "y": 1.25}, + {"matrix": [6, 1], "x": 14, "y": 1.5}, + {"matrix": [6, 0], "x": 15, "y": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2.5}, + {"matrix": [2, 1], "x": 1, "y": 2.5}, + {"matrix": [2, 2], "x": 2, "y": 2.25}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.25}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + + {"matrix": [7, 5], "x": 10, "y": 2.25}, + {"matrix": [7, 4], "x": 11, "y": 2.25}, + {"matrix": [7, 3], "x": 12, "y": 2}, + {"matrix": [7, 2], "x": 13, "y": 2.25}, + {"matrix": [7, 1], "x": 14, "y": 2.5}, + {"matrix": [7, 0], "x": 15, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3.5}, + {"matrix": [3, 1], "x": 1, "y": 3.5}, + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3.25}, + {"matrix": [3, 5], "x": 5, "y": 3.25}, + {"matrix": [3, 6], "x": 6, "y": 3.5}, + + {"matrix": [8, 6], "x": 9, "y": 3.5}, + {"matrix": [8, 5], "x": 10, "y": 3.25}, + {"matrix": [8, 4], "x": 11, "y": 3.25}, + {"matrix": [8, 3], "x": 12, "y": 3}, + {"matrix": [8, 2], "x": 13, "y": 3.25}, + {"matrix": [8, 1], "x": 14, "y": 3.5}, + {"matrix": [8, 0], "x": 15, "y": 3.5}, + + {"matrix": [4, 2], "x": 2, "y": 4.25}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4.25}, + {"matrix": [4, 5], "x": 5, "y": 4.5}, + {"matrix": [4, 6], "x": 6, "y": 4.75}, + + {"matrix": [9, 6], "x": 9, "y": 4.75}, + {"matrix": [9, 5], "x": 10, "y": 4.5}, + {"matrix": [9, 4], "x": 11, "y": 4.25}, + {"matrix": [9, 3], "x": 12, "y": 4}, + {"matrix": [9, 2], "x": 13, "y": 4.25} + ] + } + } +} diff --git a/keyboards/handwired/jotlily60/keymaps/default/keymap.c b/keyboards/handwired/jotlily60/keymaps/default/keymap.c new file mode 100644 index 000000000000..bccd82257700 --- /dev/null +++ b/keyboards/handwired/jotlily60/keymaps/default/keymap.c @@ -0,0 +1,65 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +enum layers { + _QWERTY, + _FN, + _ADJUST +}; + +#define FN MO(_FN) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | + * +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * | esc | Q | W | E | R | T | | Y | U | I | O | P | tab | + * +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * | caps | A | S | D | F | G | | H | J | K | L | ; | ' | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + * | shift | Z | X | C | V | B | { | } | N | M | , | . | / | enter | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + * | alt | super | ctrl | space | fn | fn | bspc | del | meh | ralt | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + */ +[_QWERTY] = LAYOUT ( + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, + 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_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR,KC_RCBR,KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_ENT, + KC_LALT,KC_LGUI,KC_LCTL,KC_SPC, FN, FN, KC_BSPC,KC_DEL, KC_MEH, KC_RALT +), + +/* +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * | + | ! | @ | # | $ | % | | ^ | & | * | ( | ) | _ | + * +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * |adjust | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | + * +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + * | | F11 | F12 | F13 | F14 | F15 | | left | down | up | right | | | " | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + * | | vol- | mute | vol+ | ` | ~ | [ | ] | home | end | pgup | pgdn | \ | | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + * | | | | | | | | | | | + * +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + */ +[_FN] = LAYOUT ( + KC_PLUS,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS, + ADJUST, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______,KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_BSLS,KC_DQUO, + _______,KC_VOLD,KC_MUTE,KC_VOLU,KC_GRV, KC_TILD,KC_LBRC,KC_RBRC,KC_HOME,KC_END, KC_PGUP,KC_PGDN,KC_PIPE,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +), + +[_ADJUST] = LAYOUT ( + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,QK_BOOT,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,DB_TOGG,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +), +}; + diff --git a/keyboards/handwired/jotlily60/readme.md b/keyboards/handwired/jotlily60/readme.md new file mode 100644 index 000000000000..d0a8750d0ef0 --- /dev/null +++ b/keyboards/handwired/jotlily60/readme.md @@ -0,0 +1,55 @@ +# jotlily60 + +![jotlily60](https://i.imgur.com/I68WGmJh.jpg) + +A split keyboard kit made by jotix, inspired in the Lily58 keyboard. + +* Keyboard Maintainer: [jotix](https://github.com/jotix) +* Hardware Supported: Arduino Pro Micro + +--- + +### Arduino Pro Micro Pinout + +| Rows | 0 | 1 | 2 | 3 | 4 | +|-------------|----|----|----|----|----| +| Arduino pin | A0 | 15 | 14 | 16 | 10 | +| QMK pin | F7 | B1 | B3 | B2 | B6 | + +| Columns | 0 | 1 | 2 | 3 | 4 | 5 | 6 | +|-------------|----|----|----|----|----|----|----| +| Arduino pin | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +| QMK pin | D0 | D4 | C6 | D7 | E6 | B4 | B5 | + +| Serial | | +|-------------|-----| +| Arduino pin | TX0 | +| QMK pin | D3 | + +--- + +### Compiling the Firmware + +Compile example for this keyboard (after setting up your build environment): + + qmk compile -kb handwired/jotlily60 -km default + +--- + +### The Defaukt Keymap + + +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | + +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + | esc | Q | W | E | R | T | | Y | U | I | O | P | tab | + +-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+ + | caps | A | S | D | F | G | | H | J | K | L | ; | ' | + +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + | shift | Z | X | C | V | B | { | } | N | M | , | . | / | enter | + +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + | alt | super | ctrl | space | fn | fn | bspc | del | meh | ralt | + +-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ + +--- + +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/handwired/jotlily60/rules.mk b/keyboards/handwired/jotlily60/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/jotlily60/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 5d6b2918459668d1b0adf24d21ebd4f7a0aab659 Mon Sep 17 00:00:00 2001 From: NW Date: Thu, 21 Mar 2024 06:05:18 +0100 Subject: [PATCH 010/125] Add TechnicPad macropad (#23238) --- keyboards/handwired/technicpad/info.json | 38 +++++++++++++++++++ .../technicpad/keymaps/default/keymap.json | 8 ++++ .../technicpad/keymaps/via/keymap.json | 13 +++++++ keyboards/handwired/technicpad/readme.md | 27 +++++++++++++ keyboards/handwired/technicpad/rules.mk | 1 + 5 files changed, 87 insertions(+) create mode 100644 keyboards/handwired/technicpad/info.json create mode 100644 keyboards/handwired/technicpad/keymaps/default/keymap.json create mode 100644 keyboards/handwired/technicpad/keymaps/via/keymap.json create mode 100644 keyboards/handwired/technicpad/readme.md create mode 100644 keyboards/handwired/technicpad/rules.mk diff --git a/keyboards/handwired/technicpad/info.json b/keyboards/handwired/technicpad/info.json new file mode 100644 index 000000000000..92a0be7f27a8 --- /dev/null +++ b/keyboards/handwired/technicpad/info.json @@ -0,0 +1,38 @@ +{ + "manufacturer": "nwhirschfeld", + "keyboard_name": "TechnicPad", + "maintainer": "nwhirschfeld", + "build": { + "lto": true + }, + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["D1"], + ["D0"], + ["D4"], + ["C6"] + ] + }, + "url": "https://github.com/nwhirschfeld/TechnicPad", + "usb": { + "device_version": "0.0.1", + "pid": "0x5450", + "vid": "0x4E57" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "D1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "D0", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "D4", "matrix": [2, 0], "x": 1, "y": 0}, + {"label": "C6", "matrix": [3, 0], "x": 1, "y": 1} + ] + } + } +} diff --git a/keyboards/handwired/technicpad/keymaps/default/keymap.json b/keyboards/handwired/technicpad/keymaps/default/keymap.json new file mode 100644 index 000000000000..6d544a59466c --- /dev/null +++ b/keyboards/handwired/technicpad/keymaps/default/keymap.json @@ -0,0 +1,8 @@ +{ + "keyboard": "technicpad", + "keymap": "default", + "layers": [ + ["KC_A", "KC_B", "KC_C", "KC_D"] + ], + "layout": "LAYOUT" +} diff --git a/keyboards/handwired/technicpad/keymaps/via/keymap.json b/keyboards/handwired/technicpad/keymaps/via/keymap.json new file mode 100644 index 000000000000..845fff0dfba1 --- /dev/null +++ b/keyboards/handwired/technicpad/keymaps/via/keymap.json @@ -0,0 +1,13 @@ +{ + "keyboard": "technicpad", + "keymap": "via", + "config": { + "features": { + "via": true + } + }, + "layers": [ + ["KC_A", "KC_B", "KC_C", "KC_D"] + ], + "layout": "LAYOUT" +} diff --git a/keyboards/handwired/technicpad/readme.md b/keyboards/handwired/technicpad/readme.md new file mode 100644 index 000000000000..3ca28c984aaa --- /dev/null +++ b/keyboards/handwired/technicpad/readme.md @@ -0,0 +1,27 @@ +# TechnicPad + +![TechnicPad](https://i.imgur.com/LPD0KSL.jpg) + +A 4% (2x2) macropad, that is compatible to technic building blocks. + +* Keyboard Maintainer: [Niclas Hirschfeld](https://github.com/nwhirschfeld) +* Hardware Supported: Pro Micro boards +* Hardware Availability: for now TechnicPad is handwired and uses an Arduino pro micro. [TechnicPad repository](https://github.com/nwhirschfeld/TechnicPad) + +Make example for this keyboard (after setting up your build environment): + + make handwired/technicpad:default + +Flashing example for this keyboard: + + make handwired/technicpad: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 upper left key and plug in the keyboard +* **Physical reset**: Short the _RST_ and _GND_ pins of the PCB +* **Keycode in layout**: Press the key mapped to QK_BOOT if it is available diff --git a/keyboards/handwired/technicpad/rules.mk b/keyboards/handwired/technicpad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/technicpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 8a429fce3364de398ef35d425ea467414e3c80d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Bo=C5=BEi=C4=8D?= Date: Thu, 21 Mar 2024 06:06:38 +0100 Subject: [PATCH 011/125] [Keyboard] Add marshkeys flowerpad (#23240) --- keyboards/marshkeys/flowerpad/info.json | 37 +++++++++++++++++++ .../flowerpad/keymaps/default/keymap.c | 35 ++++++++++++++++++ .../marshkeys/flowerpad/keymaps/via/keymap.c | 35 ++++++++++++++++++ .../marshkeys/flowerpad/keymaps/via/rules.mk | 1 + keyboards/marshkeys/flowerpad/readme.md | 23 ++++++++++++ keyboards/marshkeys/flowerpad/rules.mk | 1 + 6 files changed, 132 insertions(+) create mode 100644 keyboards/marshkeys/flowerpad/info.json create mode 100644 keyboards/marshkeys/flowerpad/keymaps/default/keymap.c create mode 100644 keyboards/marshkeys/flowerpad/keymaps/via/keymap.c create mode 100644 keyboards/marshkeys/flowerpad/keymaps/via/rules.mk create mode 100644 keyboards/marshkeys/flowerpad/readme.md create mode 100644 keyboards/marshkeys/flowerpad/rules.mk diff --git a/keyboards/marshkeys/flowerpad/info.json b/keyboards/marshkeys/flowerpad/info.json new file mode 100644 index 000000000000..79e69c7a031f --- /dev/null +++ b/keyboards/marshkeys/flowerpad/info.json @@ -0,0 +1,37 @@ +{ + "manufacturer": "marshkeys.com", + "keyboard_name": "Flowerpad", + "maintainer": "Ethirallan", + "bootmagic": { + "matrix": [0, 1] + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5"], + "rows": ["C6", "D4", "D0"] + }, + "url": "marshkeys.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x466C", + "vid": "0x4D61" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 1], "x": 0, "y": 1}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 1, "y": 2}, + {"matrix": [2, 0], "x": 2, "y": 0}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/marshkeys/flowerpad/keymaps/default/keymap.c b/keyboards/marshkeys/flowerpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..73817ffc95b5 --- /dev/null +++ b/keyboards/marshkeys/flowerpad/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2024 Benjamin Božič + +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] = { + /* + * -------- + * | MUTE | + * |------+------+------| + * | PREV | PLAY | NEXT | + * |------+------+------| + * | VOL- | | VOL+ | + * -------- -------- + */ + LAYOUT( + KC_MUTE, + KC_MPRV, KC_MPLY, KC_MNXT, + KC_VOLD, KC_VOLU + ), +}; diff --git a/keyboards/marshkeys/flowerpad/keymaps/via/keymap.c b/keyboards/marshkeys/flowerpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..73817ffc95b5 --- /dev/null +++ b/keyboards/marshkeys/flowerpad/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2024 Benjamin Božič + +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] = { + /* + * -------- + * | MUTE | + * |------+------+------| + * | PREV | PLAY | NEXT | + * |------+------+------| + * | VOL- | | VOL+ | + * -------- -------- + */ + LAYOUT( + KC_MUTE, + KC_MPRV, KC_MPLY, KC_MNXT, + KC_VOLD, KC_VOLU + ), +}; diff --git a/keyboards/marshkeys/flowerpad/keymaps/via/rules.mk b/keyboards/marshkeys/flowerpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/marshkeys/flowerpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/marshkeys/flowerpad/readme.md b/keyboards/marshkeys/flowerpad/readme.md new file mode 100644 index 000000000000..859db5fc6642 --- /dev/null +++ b/keyboards/marshkeys/flowerpad/readme.md @@ -0,0 +1,23 @@ +# Flowerpad + +![flowerpad](https://i.imgur.com/SRo0iWLh.jpeg) + +A flourishing 6-key macropad that will catch your eye. + +* Keyboard Maintainer: [Benjamin Božič](https://github.com/Ethirallan) +* Hardware Supported: Onboard ATmega32u4, Flowerpad PCB v1, hotswap v1 +* Hardware Availability: marshkeys.com + +Make example for this keyboard (after setting up your build environment): + + make marshkeys/flowerpad:default + +Flashing example for this keyboard: + + make marshkeys/flowerpad: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 by holding down the top key (where the usb connects) and plug in the keyboard diff --git a/keyboards/marshkeys/flowerpad/rules.mk b/keyboards/marshkeys/flowerpad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/marshkeys/flowerpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From f95f93b0fc569c7aec6ef63150931e32a0a12249 Mon Sep 17 00:00:00 2001 From: jotix <69703151+jotix@users.noreply.github.com> Date: Thu, 21 Mar 2024 19:30:14 -0300 Subject: [PATCH 012/125] handwired/jotlily60 via keymap (#23325) --- .../handwired/jotlily60/keymaps/via/keymap.c | 31 +++++++++++++++++++ .../handwired/jotlily60/keymaps/via/rules.mk | 1 + 2 files changed, 32 insertions(+) create mode 100644 keyboards/handwired/jotlily60/keymaps/via/keymap.c create mode 100644 keyboards/handwired/jotlily60/keymaps/via/rules.mk diff --git a/keyboards/handwired/jotlily60/keymaps/via/keymap.c b/keyboards/handwired/jotlily60/keymaps/via/keymap.c new file mode 100644 index 000000000000..d498a72cf6f9 --- /dev/null +++ b/keyboards/handwired/jotlily60/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2024 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, + 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_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR,KC_RCBR,KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_ENT, + KC_LALT,KC_LGUI,KC_LCTL,KC_SPC, MO(1), MO(1), KC_BSPC,KC_DEL, KC_MEH, KC_RALT +), + +[1] = LAYOUT ( + KC_PLUS,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS, + MO(2), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______,KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_BSLS,KC_DQUO, + _______,KC_VOLD,KC_MUTE,KC_VOLU,KC_GRV, KC_TILD,KC_LBRC,KC_RBRC,KC_HOME,KC_END, KC_PGUP,KC_PGDN,KC_PIPE,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +), + +[2] = LAYOUT ( + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,QK_BOOT,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +) +}; diff --git a/keyboards/handwired/jotlily60/keymaps/via/rules.mk b/keyboards/handwired/jotlily60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/jotlily60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes From 551489645a13f7e7c2d73b3086718016cb386df2 Mon Sep 17 00:00:00 2001 From: Moritz Plattner Date: Fri, 22 Mar 2024 13:13:07 +0100 Subject: [PATCH 013/125] Add werk.technica werk.one keyboard (#23130) * add wt one * update readme for One * Apply suggestions from code review Co-authored-by: Joel Challis * remove redundant file * reformatted info.json * Update keyboards/werk_technica/one/keymaps/via/rules.mk Co-authored-by: Danny --------- Co-authored-by: Joel Challis Co-authored-by: Danny --- keyboards/werk_technica/one/config.h | 7 + keyboards/werk_technica/one/info.json | 297 ++++++++++++++++++ .../one/keymaps/default/keymap.c | 55 ++++ .../one/keymaps/default/rules.mk | 1 + .../werk_technica/one/keymaps/via/keymap.c | 55 ++++ .../werk_technica/one/keymaps/via/rules.mk | 2 + keyboards/werk_technica/one/mcuconf.h | 21 ++ keyboards/werk_technica/one/readme.md | 26 ++ keyboards/werk_technica/one/rules.mk | 1 + 9 files changed, 465 insertions(+) create mode 100644 keyboards/werk_technica/one/config.h create mode 100644 keyboards/werk_technica/one/info.json create mode 100644 keyboards/werk_technica/one/keymaps/default/keymap.c create mode 100644 keyboards/werk_technica/one/keymaps/default/rules.mk create mode 100644 keyboards/werk_technica/one/keymaps/via/keymap.c create mode 100644 keyboards/werk_technica/one/keymaps/via/rules.mk create mode 100644 keyboards/werk_technica/one/mcuconf.h create mode 100644 keyboards/werk_technica/one/readme.md create mode 100644 keyboards/werk_technica/one/rules.mk diff --git a/keyboards/werk_technica/one/config.h b/keyboards/werk_technica/one/config.h new file mode 100644 index 000000000000..765e70851b45 --- /dev/null +++ b/keyboards/werk_technica/one/config.h @@ -0,0 +1,7 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Set HSE clock since it differs from F411 default */ +#define STM32_HSECLK 16000000 \ No newline at end of file diff --git a/keyboards/werk_technica/one/info.json b/keyboards/werk_technica/one/info.json new file mode 100644 index 000000000000..4933c7fd7cd5 --- /dev/null +++ b/keyboards/werk_technica/one/info.json @@ -0,0 +1,297 @@ +{ + "manufacturer": "werk_technica", + "keyboard_name": "one", + "maintainer": "ebastler", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B5", "pin_b": "A15"} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A6", "A7", "B0", "B1", "B10", "B12", "B13", "B14", "B15", "A8", "A10", "A13", "A5", "A4", "C15"], + "rows": ["A0", "A1", "A2", "A3", "B9", "B8"] + }, + "processor": "STM32F411", + "url": "https://werktechnica.com/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x7774" + }, + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "PRSC", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "DIAL", "matrix": [3, 13], "x": 15.25, "y": 0}, + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "BKSP", "matrix": [0, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "HOME", "matrix": [1, 14], "x": 15.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": "PG UP", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "CAPS", "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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "PG DN", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "SHIFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "SHIFT", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "UP", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "CTRL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "SUPER", "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label": "ALT", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "FUNC", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "LEFT", "matrix": [5, 12], "x": 13.5, "y": 5.5}, + {"label": "DOWN", "matrix": [5, 13], "x": 14.5, "y": 5.5}, + {"label": "RIGHT", "matrix": [5, 14], "x": 15.5, "y": 5.5} + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "PRSC", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "DIAL", "matrix": [3, 13], "x": 15.25, "y": 0}, + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "BKSP", "matrix": [0, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "HOME", "matrix": [1, 14], "x": 15.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": "ENTER", "matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"label": "PG UP", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "CAPS", "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": "NUHS", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "PG DN", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "SHIFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "NUBS", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "SHIFT", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "UP", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "CTRL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "SUPER", "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label": "ALT", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "FUNC", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "LEFT", "matrix": [5, 12], "x": 13.5, "y": 5.5}, + {"label": "DOWN", "matrix": [5, 13], "x": 14.5, "y": 5.5}, + {"label": "RIGHT", "matrix": [5, 14], "x": 15.5, "y": 5.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "PRSC", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "DIAL", "matrix": [3, 13], "x": 15.25, "y": 0}, + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": " ", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "BKSP", "matrix": [0, 14], "x": 14, "y": 1.25}, + {"label": "HOME", "matrix": [1, 14], "x": 15.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": "PG UP", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "CAPS", "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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "PG DN", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "SHIFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "NUBS", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "SHIFT", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "UP", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "CTRL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "SUPER", "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, 4], "x": 3.75, "y": 5.25, "w": 2.75}, + {"label": "SPACE", "matrix": [5, 6], "x": 6.5, "y": 5.25, "w": 1.25}, + {"label": "SPACE", "matrix": [5, 8], "x": 7.75, "y": 5.25, "w": 2.25}, + {"label": "ALT", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "FUNC", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "LEFT", "matrix": [5, 12], "x": 13.5, "y": 5.5}, + {"label": "DOWN", "matrix": [5, 13], "x": 14.5, "y": 5.5}, + {"label": "RIGHT", "matrix": [5, 14], "x": 15.5, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/werk_technica/one/keymaps/default/keymap.c b/keyboards/werk_technica/one/keymaps/default/keymap.c new file mode 100644 index 000000000000..6d172db617e2 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2023 Moritz Plattner + * + * 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( /* keymap for layer 0 */ + 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, LT(2, 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_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_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_SPC, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( /* keymap for layer 1 */ + KC_TRNS, KC_TRNS, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( /* keymap for layer 2 */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, 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) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/werk_technica/one/keymaps/default/rules.mk b/keyboards/werk_technica/one/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/werk_technica/one/keymaps/via/keymap.c b/keyboards/werk_technica/one/keymaps/via/keymap.c new file mode 100644 index 000000000000..6d172db617e2 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2023 Moritz Plattner + * + * 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( /* keymap for layer 0 */ + 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, LT(2, 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_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_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_SPC, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( /* keymap for layer 1 */ + KC_TRNS, KC_TRNS, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( /* keymap for layer 2 */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, 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) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/werk_technica/one/keymaps/via/rules.mk b/keyboards/werk_technica/one/keymaps/via/rules.mk new file mode 100644 index 000000000000..9061429e54a2 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/werk_technica/one/mcuconf.h b/keyboards/werk_technica/one/mcuconf.h new file mode 100644 index 000000000000..d25a2619fd1f --- /dev/null +++ b/keyboards/werk_technica/one/mcuconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include_next + +/* Set PLL M divider from 4 (F411 GENERIC default) to 8, because of 16 MHz crystal on board */ +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 8 \ No newline at end of file diff --git a/keyboards/werk_technica/one/readme.md b/keyboards/werk_technica/one/readme.md new file mode 100644 index 000000000000..8870e5f69312 --- /dev/null +++ b/keyboards/werk_technica/one/readme.md @@ -0,0 +1,26 @@ +# werk.technica one + +![WT One Moloko](https://i.imgur.com/4Bvywra.png) + +From looks to sound and feel, Werk One was designed as a cost is no object flagship product. A modular 75% exploded profile keyboard kit with hybrid gasket mount array and AEK-styled classic side profile curve. + +In a world of minimalism, Werk One is our tribute to the sophistication of art deco and 70’s futurism. + +* Keyboard Maintainer: [ebastler](https://github.com/ebastler) +* Hardware Supported: Rev1 solder and hotswap PCB (both work with `default` and `via` keymaps, but not all keymap positions are available on hotswap PCBs) +* Hardware Availability: [Groupbuy](https://werktechnica.com/) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb werk_technica/one -km default + +Flash example for this keyboard (after setting up your build environment): + + qmk flash -kb werk_technica/one -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader +Enter the bootloader in 2 ways: +* Bootmagic reset: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard +* Physical reset button: Hold for approx. 1 second to enter Bootloader diff --git a/keyboards/werk_technica/one/rules.mk b/keyboards/werk_technica/one/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/werk_technica/one/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 4afbade6d122183920a888c8e6e1de4581e657fa Mon Sep 17 00:00:00 2001 From: JuanoD <3674588+JuanoD@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:30:30 -0500 Subject: [PATCH 014/125] Add ES_GRV to latam language-specific keycodes (#23333) --- .../extras/keycodes_spanish_latin_america_0.0.1.hjson | 4 ++++ quantum/keymap_extras/keymap_spanish_latin_america.h | 1 + 2 files changed, 5 insertions(+) diff --git a/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson index 50c49274be12..fb1de29e6ede 100644 --- a/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson +++ b/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson @@ -335,5 +335,9 @@ "key": "ES_CIRC", "label": "^", } + "ALGR(KC_NUHS)": { + "key": "ES_GRV", + "label": "`", + } } } \ No newline at end of file diff --git a/quantum/keymap_extras/keymap_spanish_latin_america.h b/quantum/keymap_extras/keymap_spanish_latin_america.h index 0ade82879377..2f11743061f0 100644 --- a/quantum/keymap_extras/keymap_spanish_latin_america.h +++ b/quantum/keymap_extras/keymap_spanish_latin_america.h @@ -102,4 +102,5 @@ #define ES_AT ALGR(ES_Q) // @ #define ES_TILD ALGR(ES_PLUS) // ~ #define ES_CIRC ALGR(ES_LCBR) // ^ +#define ES_GRV ALGR(KC_NUHS) // ` From 1d58530e7914919aceab10be2a8e8a290675541c Mon Sep 17 00:00:00 2001 From: Jacky <128167503+JackyJia73@users.noreply.github.com> Date: Wed, 27 Mar 2024 07:30:58 +0800 Subject: [PATCH 015/125] [Keyboard] Add T75 (#23344) Co-authored-by: Ryan Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/vertex/t75/info.json | 114 ++++++++++++++++++ keyboards/vertex/t75/keymaps/default/keymap.c | 42 +++++++ keyboards/vertex/t75/keymaps/via/keymap.c | 44 +++++++ keyboards/vertex/t75/keymaps/via/rules.mk | 2 + keyboards/vertex/t75/readme.md | 22 ++++ keyboards/vertex/t75/rules.mk | 1 + 6 files changed, 225 insertions(+) create mode 100644 keyboards/vertex/t75/info.json create mode 100644 keyboards/vertex/t75/keymaps/default/keymap.c create mode 100644 keyboards/vertex/t75/keymaps/via/keymap.c create mode 100644 keyboards/vertex/t75/keymaps/via/rules.mk create mode 100644 keyboards/vertex/t75/readme.md create mode 100644 keyboards/vertex/t75/rules.mk diff --git a/keyboards/vertex/t75/info.json b/keyboards/vertex/t75/info.json new file mode 100644 index 000000000000..82f7b7a5e86f --- /dev/null +++ b/keyboards/vertex/t75/info.json @@ -0,0 +1,114 @@ +{ + "manufacturer": "vertex", + "keyboard_name": "T75", + "board": "STM32_F103_STM32DUINO", + "bootloader": "stm32duino", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B1" + }, + "matrix_pins": { + "cols": ["B0", "B2", "B10", "B11", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B12", "B13", "B14"], + "rows": ["A0", "A7", "A6", "A5", "A4", "A3"] + }, + "processor": "STM32F103", + "usb": { + "device_version": "0.0.1", + "force_nkro": true, + "pid": "0x3006", + "vid": "0x28E9" + }, + "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": 6, "y": 0}, + {"matrix": [0, 6], "x": 7, "y": 0}, + {"matrix": [0, 7], "x": 8, "y": 0}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10.5, "y": 0}, + {"matrix": [0, 10], "x": 11.5, "y": 0}, + {"matrix": [0, 11], "x": 12.5, "y": 0}, + {"matrix": [0, 12], "x": 13.5, "y": 0}, + {"matrix": [0, 13], "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, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 14], "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, 13], "x": 13.5, "y": 2, "w": 1.5}, + {"matrix": [2, 14], "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, "w": 2.25}, + {"matrix": [3, 13], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4}, + {"matrix": [4, 2], "x": 3.25, "y": 4}, + {"matrix": [4, 3], "x": 4.25, "y": 4}, + {"matrix": [4, 4], "x": 5.25, "y": 4}, + {"matrix": [4, 5], "x": 6.25, "y": 4}, + {"matrix": [4, 6], "x": 7.25, "y": 4}, + {"matrix": [4, 7], "x": 8.25, "y": 4}, + {"matrix": [4, 8], "x": 9.25, "y": 4}, + {"matrix": [4, 9], "x": 10.25, "y": 4}, + {"matrix": [4, 10], "x": 11.25, "y": 4}, + {"matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4}, + {"matrix": [5, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [5, 11], "x": 13, "y": 4}, + {"matrix": [5, 12], "x": 14, "y": 4}, + {"matrix": [5, 13], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/vertex/t75/keymaps/default/keymap.c b/keyboards/vertex/t75/keymaps/default/keymap.c new file mode 100644 index 000000000000..96aa2a2fee9a --- /dev/null +++ b/keyboards/vertex/t75/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2022 vertex + * + * 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_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_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + + ), + [1] = LAYOUT( + _______, KC_MYCM, KC_WSCH, KC_MAIL, KC_CALC, KC_MSEL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ) +}; + \ No newline at end of file diff --git a/keyboards/vertex/t75/keymaps/via/keymap.c b/keyboards/vertex/t75/keymaps/via/keymap.c new file mode 100644 index 000000000000..16b129c64c9a --- /dev/null +++ b/keyboards/vertex/t75/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2022 vertex + * + * 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_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_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + + ), + [1] = LAYOUT( + _______, KC_MYCM, KC_WSCH, KC_MAIL, KC_CALC, KC_MSEL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ) +}; + + + diff --git a/keyboards/vertex/t75/keymaps/via/rules.mk b/keyboards/vertex/t75/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/vertex/t75/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/vertex/t75/readme.md b/keyboards/vertex/t75/readme.md new file mode 100644 index 000000000000..e435d4db172e --- /dev/null +++ b/keyboards/vertex/t75/readme.md @@ -0,0 +1,22 @@ +# t75 + +* A customizable soldering 75% keyboard. + +* Keyboard Maintainer: [JACKY](https://github.com/JackyJia73) +* Hardware Supported: t75 +* Hardware Availability: [vertex-kb](https://github.com/Vertex-kb) + +Make example for this keyboard (after setting up your build environment): + + make vertex/t75:default + +Flashing example for this keyboard: + + make vertex/t75: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 Enter in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/vertex/t75/rules.mk b/keyboards/vertex/t75/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/vertex/t75/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From c035a37249ed064edbd51379bb45057e88e7ef11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 20:55:32 +0000 Subject: [PATCH 016/125] Bump tj-actions/changed-files from 43 to 44 (#23369) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/format.yml | 2 +- .github/workflows/lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index a7d3d40974f0..1d7577dcef21 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -35,7 +35,7 @@ jobs: - name: Get changed files id: file_changes - uses: tj-actions/changed-files@v43 + uses: tj-actions/changed-files@v44 with: use_rest_api: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 290f5b66ebee..22ddcaba796e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -27,7 +27,7 @@ jobs: - name: Get changed files id: file_changes - uses: tj-actions/changed-files@v43 + uses: tj-actions/changed-files@v44 with: use_rest_api: true From 4cd92cac1ca61d67318a145ea504f3c22aefd0fb Mon Sep 17 00:00:00 2001 From: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Date: Thu, 28 Mar 2024 21:21:49 -0400 Subject: [PATCH 017/125] [Keyboard] mechwild/bb40 (#22958) Co-authored-by: Kyle McCreery --- keyboards/mechwild/bb40/f401/info.json | 3 + keyboards/mechwild/bb40/f401/rules.mk | 1 + keyboards/mechwild/bb40/f411/info.json | 3 + keyboards/mechwild/bb40/f411/rules.mk | 1 + keyboards/mechwild/bb40/info.json | 133 ++++++++++++++++++ .../mechwild/bb40/keymaps/default/keymap.json | 42 ++++++ keyboards/mechwild/bb40/readme.md | 23 +++ 7 files changed, 206 insertions(+) create mode 100644 keyboards/mechwild/bb40/f401/info.json create mode 100644 keyboards/mechwild/bb40/f401/rules.mk create mode 100644 keyboards/mechwild/bb40/f411/info.json create mode 100644 keyboards/mechwild/bb40/f411/rules.mk create mode 100644 keyboards/mechwild/bb40/info.json create mode 100644 keyboards/mechwild/bb40/keymaps/default/keymap.json create mode 100644 keyboards/mechwild/bb40/readme.md diff --git a/keyboards/mechwild/bb40/f401/info.json b/keyboards/mechwild/bb40/f401/info.json new file mode 100644 index 000000000000..797e9900595e --- /dev/null +++ b/keyboards/mechwild/bb40/f401/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f401" +} diff --git a/keyboards/mechwild/bb40/f401/rules.mk b/keyboards/mechwild/bb40/f401/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/mechwild/bb40/f401/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb40/f411/info.json b/keyboards/mechwild/bb40/f411/info.json new file mode 100644 index 000000000000..a41c5f4dd142 --- /dev/null +++ b/keyboards/mechwild/bb40/f411/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f411" +} diff --git a/keyboards/mechwild/bb40/f411/rules.mk b/keyboards/mechwild/bb40/f411/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/mechwild/bb40/f411/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb40/info.json b/keyboards/mechwild/bb40/info.json new file mode 100644 index 000000000000..15a16fbfedec --- /dev/null +++ b/keyboards/mechwild/bb40/info.json @@ -0,0 +1,133 @@ +{ + "manufacturer": "MechWild", + "keyboard_name": "BB40", + "maintainer": "kylemccreery", + "bootloader_instructions": "Hold down the BOOT button, then tap the NRST button on the BlackPill. Avoid touching the A11 and A12 pins.", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B4", "pin_b": "B3"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B8", + "num_lock": "B7", + "scroll_lock": "B9" + }, + "matrix_pins": { + "cols": ["B10", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15"], + "rows": ["B12", "B13", "B14", "B15"] + }, + "url": "https://mechwild.com/product/bb40/", + "usb": { + "device_version": "1.0.0", + "pid": "0x1714", + "vid": "0x6D77" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_6u": { + "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, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 1.75}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2, "w": 1.25}, + {"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, 6], "x": 3, "y": 3, "w": 6}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3}, + {"matrix": [3, 10], "x": 11, "y": 3}, + {"matrix": [3, 11], "x": 12.5, "y": 3, "encoder": 0} + ] + }, + "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": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 1.75}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2, "w": 1.25}, + {"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, 4], "x": 3, "y": 3, "w": 2.25}, + {"matrix": [3, 6], "x": 5.25, "y": 3}, + {"matrix": [3, 7], "x": 6.25, "y": 3, "w": 2.75}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3}, + {"matrix": [3, 10], "x": 11, "y": 3}, + {"matrix": [3, 11], "x": 12.5, "y": 3, "encoder": 0} + ] + } + } +} diff --git a/keyboards/mechwild/bb40/keymaps/default/keymap.json b/keyboards/mechwild/bb40/keymaps/default/keymap.json new file mode 100644 index 000000000000..104e42483c21 --- /dev/null +++ b/keyboards/mechwild/bb40/keymaps/default/keymap.json @@ -0,0 +1,42 @@ +{ + "keyboard": "mechwild/bb40", + "keymap": "default", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "MO(1)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "RSFT_T(KC_COMM)", "KC_UP", "LT(2,KC_DOT)", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "LT(1,KC_SPC)", "KC_SPC", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_MUTE" + ], + [ + "KC_TRNS", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_TRNS", + "KC_TRNS", "KC_GRV", "KC_LBRC", "KC_RBRC", "KC_MINS", "KC_TRNS", "KC_TRNS", "KC_EQL", "KC_BSLS", "KC_SCLN", "KC_QUOT", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_SLSH", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", + "KC_CAPS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ], + "config": { + "features": { + "encoder_map": true + } + }, + "encoders": [ + [ + {"ccw": "KC_VOLD", "cw": "KC_VOLU"} + ], + [ + {"ccw": "KC_TRNS", "cw": "KC_TRNS"} + ], + [ + {"ccw": "KC_TRNS", "cw": "KC_TRNS"} + ] + ] +} diff --git a/keyboards/mechwild/bb40/readme.md b/keyboards/mechwild/bb40/readme.md new file mode 100644 index 000000000000..aac52b072bfc --- /dev/null +++ b/keyboards/mechwild/bb40/readme.md @@ -0,0 +1,23 @@ +# BB40 + +![BB40](https://i.imgur.com/iikCpBuh.png) + +A completely normal BlackPill-powered 40% DIY kit. + +The `f401` version is the standard for this kit, using an STM32F401 BlackPill. The `f411` version will not run on an STM32F401 BlackPill; if in doubt, use `f401`. + +* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) +* Hardware Supported: BB40 v1.0 +* Hardware Availability: [BB40 on MechWild](https://mechwild.com/product/bb40/) + +Make example for this keyboard (after setting up your build environment): + + make mechwild/bb40/f401:default + make mechwild/bb40/f411:default + +Flashing example for this keyboard: + + make mechwild/bb40/f401:default:flash + make mechwild/bb40/f411: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). From e44cbf75562243f68be2a0e5da02bd032df98b3b Mon Sep 17 00:00:00 2001 From: Kyrre Havik Date: Fri, 29 Mar 2024 04:22:41 +0100 Subject: [PATCH 018/125] [Keyboard] Bartlesplit (#23114) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre --- keyboards/minimon/bartlesplit/config.h | 20 +++ keyboards/minimon/bartlesplit/info.json | 114 ++++++++++++++ .../bartlesplit/keymaps/default/keymap.json | 33 ++++ keyboards/minimon/bartlesplit/matrix.c | 148 ++++++++++++++++++ keyboards/minimon/bartlesplit/readme.md | 31 ++++ keyboards/minimon/bartlesplit/rules.mk | 2 + keyboards/minimon/readme.md | 1 + 7 files changed, 349 insertions(+) create mode 100644 keyboards/minimon/bartlesplit/config.h create mode 100644 keyboards/minimon/bartlesplit/info.json create mode 100644 keyboards/minimon/bartlesplit/keymaps/default/keymap.json create mode 100644 keyboards/minimon/bartlesplit/matrix.c create mode 100644 keyboards/minimon/bartlesplit/readme.md create mode 100644 keyboards/minimon/bartlesplit/rules.mk diff --git a/keyboards/minimon/bartlesplit/config.h b/keyboards/minimon/bartlesplit/config.h new file mode 100644 index 000000000000..e4ca83f5e982 --- /dev/null +++ b/keyboards/minimon/bartlesplit/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2019-2023 e3w2q Kyrremann + +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 DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD diff --git a/keyboards/minimon/bartlesplit/info.json b/keyboards/minimon/bartlesplit/info.json new file mode 100644 index 000000000000..83f93560b6e0 --- /dev/null +++ b/keyboards/minimon/bartlesplit/info.json @@ -0,0 +1,114 @@ +{ + "keyboard_name": "Bartlesplit", + "development_board": "promicro", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "caps_word": true + }, + "matrix_pins": { + "cols": ["B3", "B3", "B1", "B1", "F7", "F7", "E6", "E6", "D7", "D7", "C6", "C6"], + "rows": ["B5", "B4", "B2", "B6"] + }, + "pin_compatible": "promicro", + "url": "https://github.com/Kyrremann/bartlesplit", + "usb": { + "device_version": "1.0.0", + "pid": "0x1306", + "vid": "0x4B49" + }, + "community_layouts": ["split_3x6_3", "split_3x5_3"], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"matrix": [0, 4], "x": 0, "y": 0.5}, + {"matrix": [0, 3], "x": 1, "y": 0.25}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0.25}, + {"matrix": [0, 0], "x": 4, "y": 0.25}, + {"matrix": [0, 6], "x": 6.5, "y": 0.25}, + {"matrix": [0, 7], "x": 7.5, "y": 0.25}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0.25}, + {"matrix": [0, 10], "x": 10.5, "y": 0.5}, + {"matrix": [1, 4], "x": 0, "y": 1.5}, + {"matrix": [1, 3], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 1], "x": 3, "y": 1.25}, + {"matrix": [1, 0], "x": 4, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.5}, + {"matrix": [2, 4], "x": 0, "y": 2.5}, + {"matrix": [2, 3], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 1], "x": 3, "y": 2.25}, + {"matrix": [2, 0], "x": 4, "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}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.5}, + {"matrix": [3, 1], "x": 2.5, "y": 3.25}, + {"matrix": [3, 0], "x": 3.5, "y": 3.25}, + {"matrix": [3, 3], "x": 4.5, "y": 3.5}, + {"matrix": [3, 6], "x": 6, "y": 3.5}, + {"matrix": [3, 7], "x": 7, "y": 3.25}, + {"matrix": [3, 8], "x": 8, "y": 3.25} + ] + }, + "LAYOUT_split_3x6_3": { + "layout": [ + {"matrix": [0, 5], "x": 0, "y": 0.25}, + {"matrix": [0, 4], "x": 1, "y": 0.125}, + {"matrix": [0, 3], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0.125}, + {"matrix": [0, 1], "x": 4, "y": 0.25}, + {"matrix": [0, 0], "x": 5, "y": 0.25}, + {"matrix": [0, 6], "x": 7, "y": 0.25}, + {"matrix": [0, 7], "x": 8, "y": 0.125}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10, "y": 0.125}, + {"matrix": [0, 10], "x": 11, "y": 0.25}, + {"matrix": [0, 11], "x": 12, "y": 0.25}, + {"matrix": [1, 5], "x": 0, "y": 1.25}, + {"matrix": [1, 4], "x": 1, "y": 1.125}, + {"matrix": [1, 3], "x": 2, "y": 1}, + {"matrix": [1, 2], "x": 3, "y": 1.125}, + {"matrix": [1, 1], "x": 4, "y": 1.25}, + {"matrix": [1, 0], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 7, "y": 1.25}, + {"matrix": [1, 7], "x": 8, "y": 1.125}, + {"matrix": [1, 8], "x": 9, "y": 1}, + {"matrix": [1, 9], "x": 10, "y": 1.125}, + {"matrix": [1, 10], "x": 11, "y": 1.25}, + {"matrix": [1, 11], "x": 12, "y": 1.25}, + {"matrix": [2, 5], "x": 0, "y": 2.25}, + {"matrix": [2, 4], "x": 1, "y": 2.125}, + {"matrix": [2, 3], "x": 2, "y": 2}, + {"matrix": [2, 2], "x": 3, "y": 2.125}, + {"matrix": [2, 1], "x": 4, "y": 2.25}, + {"matrix": [2, 0], "x": 5, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.125}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2.125}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [2, 11], "x": 12, "y": 2.25}, + {"matrix": [3, 1], "x": 3.5, "y": 3.25}, + {"matrix": [3, 0], "x": 4.5, "y": 3.5}, + {"matrix": [3, 3], "x": 5.5, "y": 3.75}, + {"matrix": [3, 6], "x": 6.5, "y": 3.75}, + {"matrix": [3, 7], "x": 7.5, "y": 3.5}, + {"matrix": [3, 8], "x": 8.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/minimon/bartlesplit/keymaps/default/keymap.json b/keyboards/minimon/bartlesplit/keymaps/default/keymap.json new file mode 100644 index 000000000000..03a5762839ca --- /dev/null +++ b/keyboards/minimon/bartlesplit/keymaps/default/keymap.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "notes": "Bartlesplit default keymap", + "keyboard": "minimon/bartlesplit", + "keymap": "default", + "layout": "LAYOUT_split_3x6_3", + "layers": [ + [ + "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_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "LSFT_T(KC_ESC)", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "RSFT_T(KC_ESC)", + "KC_LALT", "KC_LGUI", "LT(2,KC_SPC)", "KC_ENT", "MO(1)", "KC_BSPC" + ], + [ + "KC_NUBS", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", + "KC_TRNS", "LSFT(KC_1)", "LSFT(KC_2)", "LSFT(KC_3)", "LSFT(KC_4)", "LSFT(KC_5)", "LSFT(KC_6)", "LSFT(KC_7)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_0)", "LSFT(KC_MINS)", + "KC_TRNS", "KC_GRV", "KC_TRNS", "LSFT(KC_EQL)", "LSFT(KC_RBRC)", "LSFT(KC_BSLS)", "KC_BSLS", "KC_RBRC", "KC_EQL", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_RALT", "KC_TRNS", "KC_ESC", "KC_TRNS", "KC_TRNS", "KC_DEL" + ], + [ + "KC_ESC", "KC_NO", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_NO", "KC_NO", "KC_UP", "KC_NO", "KC_KB_VOLUME_UP", "KC_MEDIA_PLAY_PAUSE", + "KC_TRNS", "KC_NO", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_NO", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_KB_VOLUME_DOWN", "KC_NO", + "KC_TRNS", "KC_NO", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_LCBR", "RALT(KC_8)", "RALT(KC_9)", "KC_RCBR", "KC_NO", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS" + ], + [ + "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_LCTL", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LCTL_T(KC_D)", "LSFT_T(KC_F)", "KC_G", "KC_H", "RSFT_T(KC_J)", "LCTL_T(KC_K)", "LALT_T(KC_L)", "LGUI_T(KC_SCLN)", "KC_QUOT", + "LSFT_T(KC_ESC)", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "RSFT_T(KC_ESC)", + "KC_LALT", "KC_LGUI", "LT(2,KC_SPC)", "KC_ENT", "MO(1)", "KC_BSPC" + ] + ] +} diff --git a/keyboards/minimon/bartlesplit/matrix.c b/keyboards/minimon/bartlesplit/matrix.c new file mode 100644 index 000000000000..351781f52072 --- /dev/null +++ b/keyboards/minimon/bartlesplit/matrix.c @@ -0,0 +1,148 @@ +/* +Copyright 2012-2023 Jun Wako Kyrremann +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 . + + Copied from here: https://github.com/e3w2q/qmk_firmware/blob/762fe3e0a7cbea768245a75520f06ff5a2f00b9f/keyboards/2x3test/matrix.c +*/ + +/* + * scan matrix + */ +#include +#include +#include "wait.h" +#include "util.h" +#include "matrix.h" +#include "quantum.h" + +#define ROW_SHIFTER ((uint16_t)1) + +static const pin_t row_pins[] = MATRIX_ROW_PINS; +static const pin_t col_pins[] = MATRIX_COL_PINS; + +static void select_row(uint8_t row) { + setPinOutput(row_pins[row]); + writePinLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { + setPinInputHigh(row_pins[row]); +} + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static void select_col(uint8_t col) { + setPinOutput(col_pins[col]); + writePinLow(col_pins[col]); +} + +static void unselect_col(uint8_t col) { + setPinInputHigh(col_pins[col]); +} + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS/2; x++) { + setPinInputHigh(col_pins[x*2]); + } +} + +static void init_pins(void) { + unselect_cols(); + unselect_rows(); +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Select row and wait for row selection to stabilize + select_row(current_row); + wait_us(30); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS / 2; col_index++) { + uint16_t column_index_bitmask = ROW_SHIFTER << ((col_index * 2) + 1); + // Check row pin state + if (readPin(col_pins[col_index*2])) { + // Pin HI, clear col bit + current_matrix[current_row] &= ~column_index_bitmask; + } else { + // Pin LO, set col bit + current_matrix[current_row] |= column_index_bitmask; + } + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col and wait for col selection to stabilize + select_col(current_col*2); + wait_us(30); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + + uint16_t column_index_bitmask = ROW_SHIFTER << (current_col * 2); + // Check row pin state + if (readPin(row_pins[row_index])) { + // Pin HI, clear col bit + current_matrix[row_index] &= ~column_index_bitmask; + } else { + // Pin LO, set col bit + current_matrix[row_index] |= column_index_bitmask; + } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) { + matrix_changed = true; + } + } + + // Unselect col + unselect_col(current_col*2); + + return matrix_changed; +} + + +void matrix_init_custom(void) { + // initialize key pins + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + + bool changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + changed |= read_cols_on_row(current_matrix, current_row); + } + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS/2; current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); + } + + return changed; +} diff --git a/keyboards/minimon/bartlesplit/readme.md b/keyboards/minimon/bartlesplit/readme.md new file mode 100644 index 000000000000..c7109ddf47b3 --- /dev/null +++ b/keyboards/minimon/bartlesplit/readme.md @@ -0,0 +1,31 @@ +# Bartlesplitt + +![Bartlesplit with the hub in the 3x6 setup](https://i.imgur.com/IoMpwylh.png) + +Bartlesplit is based on [Cheapino](https://github.com/tompi/cheapino) by Tompi. +The original idea was to build a Cheapino with hot swaps, but it evolved into something more! + +At the same time I was working on Bartlesplit, a friend of mine suggested that we try to make a splithub, letting us avoid having the Pro Micro directly on the board. +This is mostly a design choice, making each split less clutered. +We have called the hub [The Japanese Connection](https://github.com/Kyrremann/the-japanese-connection) since it's relying on the Japanese duplex matrix. + +One of the main feature of the board is the built-in tenting, so you don't need to make a case to get simple tenting. + + +* Keyboard Maintainer: [Kyrre Havik](https://github.com/Kyrremann) +* Hardware Supported: Rev 1, Pro Micro +* Hardware Availability: https://github.com/Kyrremann/bartlesplit + +Make example for this keyboard (after setting up your build environment): + + make minimon/bartlesplit:default + +Flashing example for this keyboard: + + make minimon/bartlesplit: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 shorting the reset pin on Pro Micro on the hub. diff --git a/keyboards/minimon/bartlesplit/rules.mk b/keyboards/minimon/bartlesplit/rules.mk new file mode 100644 index 000000000000..30ce5d293b76 --- /dev/null +++ b/keyboards/minimon/bartlesplit/rules.mk @@ -0,0 +1,2 @@ +CUSTOM_MATRIX = lite +SRC += matrix.c diff --git a/keyboards/minimon/readme.md b/keyboards/minimon/readme.md index cd020a11108d..807e4a7c52cd 100644 --- a/keyboards/minimon/readme.md +++ b/keyboards/minimon/readme.md @@ -7,3 +7,4 @@ Maintained by [Kyrremann](https://github.com/Kyrremann). ## Keyboards * [Index Tab](index_tab/) - 13x6 ortho keyboard +* [Bartlesplit](bartlesplit/) - 42 (36) split board with Pro Micro hub From 06cb2836042b2f2338eba1a8c7fb77d287123fae Mon Sep 17 00:00:00 2001 From: Freather <72902384+CMMS-Freather@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:33:00 +0800 Subject: [PATCH 019/125] [Keyboard] Add haven60 (#23062) Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Ryan Co-authored-by: Duncan Sutherland --- keyboards/ah/haven60/haven60.c | 46 ++ keyboards/ah/haven60/info.json | 699 ++++++++++++++++++ keyboards/ah/haven60/keymaps/default/keymap.c | 21 + keyboards/ah/haven60/keymaps/via/keymap.c | 21 + keyboards/ah/haven60/keymaps/via/rules.mk | 1 + keyboards/ah/haven60/readme.md | 28 + keyboards/ah/haven60/rules.mk | 1 + 7 files changed, 817 insertions(+) create mode 100644 keyboards/ah/haven60/haven60.c create mode 100644 keyboards/ah/haven60/info.json create mode 100644 keyboards/ah/haven60/keymaps/default/keymap.c create mode 100644 keyboards/ah/haven60/keymaps/via/keymap.c create mode 100644 keyboards/ah/haven60/keymaps/via/rules.mk create mode 100644 keyboards/ah/haven60/readme.md create mode 100644 keyboards/ah/haven60/rules.mk diff --git a/keyboards/ah/haven60/haven60.c b/keyboards/ah/haven60/haven60.c new file mode 100644 index 000000000000..dce612f4e4d1 --- /dev/null +++ b/keyboards/ah/haven60/haven60.c @@ -0,0 +1,46 @@ +/* Copyright 2023 CMM.S Freather + * + * 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, 13, HSV_WHITE} +); + +const rgblight_segment_t PROGMEM my_capsoff_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_BLACK} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_capsoff_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.caps_lock); + } + return res; +} diff --git a/keyboards/ah/haven60/info.json b/keyboards/ah/haven60/info.json new file mode 100644 index 000000000000..a9c2afb0b379 --- /dev/null +++ b/keyboards/ah/haven60/info.json @@ -0,0 +1,699 @@ +{ + "manufacturer": "Freather", + "keyboard_name": "Atelier_Haven Haven60", + "maintainer": "Freather", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["C7", "D4", "D6", "D7", "B4", "B5", "B6", "D5", "D3", "D2", "D1", "D0", "B1", "B0"], + "rows": ["F0", "E6", "C6", "F4", "F1"] + }, + "processor": "atmega32u4", + "url": "https://keyspensory.store/products", + "usb": { + "device_version": "1.0.0", + "pid": "0x4660", + "vid": "0x4446" + }, + "ws2812": { + "pin": "F5" + }, + "rgblight": { + "led_count": 13, + "saturation_steps": 8, + "brightness_steps": 8, + "sleep": true, + "max_brightness": 125, + "layers": { + "enabled": true + }, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "community_layouts": ["60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "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": [2, 12], "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": 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_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 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": [2, 12], "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_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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 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": [2, 12], "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_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": [2, 12], "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_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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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": [1, 13], "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": [2, 12], "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": [1, 13], "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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": [1, 13], "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": [2, 12], "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": [1, 13], "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/ah/haven60/keymaps/default/keymap.c b/keyboards/ah/haven60/keymaps/default/keymap.c new file mode 100644 index 000000000000..8909239a2c88 --- /dev/null +++ b/keyboards/ah/haven60/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +// 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_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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_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_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + [1] = 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_UP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ah/haven60/keymaps/via/keymap.c b/keyboards/ah/haven60/keymaps/via/keymap.c new file mode 100644 index 000000000000..8909239a2c88 --- /dev/null +++ b/keyboards/ah/haven60/keymaps/via/keymap.c @@ -0,0 +1,21 @@ +// 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_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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_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_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + [1] = 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_UP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ah/haven60/keymaps/via/rules.mk b/keyboards/ah/haven60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ah/haven60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ah/haven60/readme.md b/keyboards/ah/haven60/readme.md new file mode 100644 index 000000000000..c529ec1a73a6 --- /dev/null +++ b/keyboards/ah/haven60/readme.md @@ -0,0 +1,28 @@ +# haven60 + +![haven60](https://i.imgur.com/Uja750Oh.png) + +Haven60 PCB for Atelier Haven Haven60% keyboard +both hotswap and solder pcbs use same firmware + +* Keyboard Maintainer: [Freather](https://github.com/Freather) +* Hardware Supported: atmega32u4-mu +* Hardware Availability: keyspensory.store + +Make example for this keyboard (after setting up your build environment): + + make ah/haven60:default + +Flashing example for this keyboard: + + make ah/haven60: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/ah/haven60/rules.mk b/keyboards/ah/haven60/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/ah/haven60/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From afafce0a5e858efbc693df4636685eccab2f4968 Mon Sep 17 00:00:00 2001 From: Veriyans <162705394+veriyaniot@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:51:22 +0700 Subject: [PATCH 020/125] [Keyboard] Add Macropad 15Pad (#23257) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Joel Challis --- keyboards/zlabkeeb/15pad/info.json | 77 +++++++++++++++++++ .../zlabkeeb/15pad/keymaps/default/keymap.c | 43 +++++++++++ .../zlabkeeb/15pad/keymaps/default/rules.mk | 1 + keyboards/zlabkeeb/15pad/keymaps/via/keymap.c | 50 ++++++++++++ keyboards/zlabkeeb/15pad/keymaps/via/rules.mk | 2 + keyboards/zlabkeeb/15pad/readme.md | 28 +++++++ keyboards/zlabkeeb/15pad/rules.mk | 1 + 7 files changed, 202 insertions(+) create mode 100644 keyboards/zlabkeeb/15pad/info.json create mode 100644 keyboards/zlabkeeb/15pad/keymaps/default/keymap.c create mode 100644 keyboards/zlabkeeb/15pad/keymaps/default/rules.mk create mode 100644 keyboards/zlabkeeb/15pad/keymaps/via/keymap.c create mode 100644 keyboards/zlabkeeb/15pad/keymaps/via/rules.mk create mode 100644 keyboards/zlabkeeb/15pad/readme.md create mode 100644 keyboards/zlabkeeb/15pad/rules.mk diff --git a/keyboards/zlabkeeb/15pad/info.json b/keyboards/zlabkeeb/15pad/info.json new file mode 100644 index 000000000000..9733d0169a8a --- /dev/null +++ b/keyboards/zlabkeeb/15pad/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "ZLABKEEB 15PAD", + "manufacturer": "zlabkeeb", + "maintainer": "zlabkeeb", + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "encoder": true, + "mousekey": true, + "rgblight": true + }, + "build": { + "lto": true + }, + "url": "https://github.com/zlabkeeb", + "usb": { + "vid": "0x4154", + "pid": "0x4454", + "device_version": "1.0.0" + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 13, + "max_brightness": 180, + "saturation_steps": 8, + "sleep": true + }, + "ws2812": { + "pin": "GP15", + "driver": "vendor" + }, + "encoder": { + "rotary": [ + {"pin_a": "GP1", "pin_b": "GP2"}, + {"pin_a": "GP3", "pin_b": "GP4"}, + {"pin_a": "GP5", "pin_b": "GP6"} + ] + }, + "matrix_pins": { + "cols": ["GP11", "GP12", "GP13", "GP14"], + "rows": ["GP7", "GP8", "GP9", "GP10"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0, 0], "encoder": 0}, + {"x": 1, "y": 0, "matrix": [0, 1], "encoder": 1}, + {"x": 3, "y": 0, "matrix": [0, 3], "encoder": 2}, + {"x": 0, "y": 0, "matrix": [1, 0]}, + {"x": 1, "y": 0, "matrix": [1, 1]}, + {"x": 2, "y": 0, "matrix": [1, 2]}, + {"x": 3, "y": 0, "matrix": [1, 3]}, + {"x": 0, "y": 0, "matrix": [2, 0]}, + {"x": 1, "y": 0, "matrix": [2, 1]}, + {"x": 2, "y": 0, "matrix": [2, 2]}, + {"x": 3, "y": 0, "matrix": [2, 3]}, + {"x": 0, "y": 0, "matrix": [3, 0]}, + {"x": 1, "y": 0, "matrix": [3, 1]}, + {"x": 2, "y": 0, "matrix": [3, 2]}, + {"x": 3, "y": 0, "matrix": [3, 3]} + ] + } + } +} diff --git a/keyboards/zlabkeeb/15pad/keymaps/default/keymap.c b/keyboards/zlabkeeb/15pad/keymaps/default/keymap.c new file mode 100644 index 000000000000..fb19b67b4dc2 --- /dev/null +++ b/keyboards/zlabkeeb/15pad/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2024 zlabkeeb (zlabkeeb@gmail.com) + +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] = { + /* + * ┌─────────┬─────────┐ ┌─────────┐ + * │ MUTE │ MPLY │ │ TRNS │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 1 │ 2 │ 3 │ 4 │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 5 │ 6 │ 7 │ 8 │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 9 │ 0 │ ENTER │ DELL │ + * └─────────┴─────────┴─────────┴─────────┘ + */ + [0] = LAYOUT( + KC_MUTE, KC_MPLY, KC_TRNS, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_ENT, KC_DEL + ) +}; +#if defined (ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_DOWN, KC_UP)} +}; +#endif diff --git a/keyboards/zlabkeeb/15pad/keymaps/default/rules.mk b/keyboards/zlabkeeb/15pad/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/zlabkeeb/15pad/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/zlabkeeb/15pad/keymaps/via/keymap.c b/keyboards/zlabkeeb/15pad/keymaps/via/keymap.c new file mode 100644 index 000000000000..9ffc6db3c02d --- /dev/null +++ b/keyboards/zlabkeeb/15pad/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2024 zlabkeeb (zlabkeeb@gmail.com) + +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] = { + /* + * ┌─────────┬─────────┐ ┌─────────┐ + * │ TO(0) │ TO(1) │ │ TO(2) │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 1 │ 2 │ 3 │ 4 │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 5 │ 6 │ 7 │ 8 │ + * ├─────────┼─────────┼─────────┼─────────┤ + * │ 9 │ 0 │ ENTER │ DELL │ + * └─────────┴─────────┴─────────┴─────────┘ + */ + [0] = LAYOUT( + TO(0), TO(1), TO(2), + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_ENT, KC_DEL + ), + [1] = LAYOUT( + TO(0), TO(1), TO(2), + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_LEFT, KC_RIGHT, KC_DOWN, KC_UP + ) +}; +#if defined (ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_DOWN, KC_UP)}, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_DOWN, KC_UP)} +}; +#endif diff --git a/keyboards/zlabkeeb/15pad/keymaps/via/rules.mk b/keyboards/zlabkeeb/15pad/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/zlabkeeb/15pad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/zlabkeeb/15pad/readme.md b/keyboards/zlabkeeb/15pad/readme.md new file mode 100644 index 000000000000..2587b4ab9b7a --- /dev/null +++ b/keyboards/zlabkeeb/15pad/readme.md @@ -0,0 +1,28 @@ +# 15PAD + +![15PAD](https://i.imgur.com/J7sZSnx.jpeg) + +15PAD is a Macropad With 12 Keys & 3 Rotary Encoder, Designed And Manufactured In INDONESIA. + +- Keyboard Maintainer: [zlabkeeb](https://github.com/zlabkeeb) +- Hardware Supported: 15Pad PCB, RP2040 ZERO +- Hardware Availability: (INDONESIA ONLY) [Tokopedia](https://www.tokopedia.com/zahranetid/macropad-15pad-via-compatible) + +Make example for this keyboard (after setting up your build environment): + + make zlabkeeb/15pad:default + +Flashing example for this keyboard: + + make zlabkeeb/15pad: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 top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + diff --git a/keyboards/zlabkeeb/15pad/rules.mk b/keyboards/zlabkeeb/15pad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/zlabkeeb/15pad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From eac380926655d59db7471a9085a96b10b7671ce2 Mon Sep 17 00:00:00 2001 From: DOIO2022 <116554792+DOIO2022@users.noreply.github.com> Date: Fri, 29 Mar 2024 12:53:11 +0800 Subject: [PATCH 021/125] [Keyboard] Add kb3x keyboard (#23268) Co-authored-by: Drashna Jaelre Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/doio/kb3x/info.json | 125 +++++++++++++++++++ keyboards/doio/kb3x/keymaps/default/keymap.c | 51 ++++++++ keyboards/doio/kb3x/keymaps/default/rules.mk | 1 + keyboards/doio/kb3x/keymaps/via/keymap.c | 73 +++++++++++ keyboards/doio/kb3x/keymaps/via/rules.mk | 2 + keyboards/doio/kb3x/readme.md | 26 ++++ keyboards/doio/kb3x/rules.mk | 1 + 7 files changed, 279 insertions(+) create mode 100644 keyboards/doio/kb3x/info.json create mode 100644 keyboards/doio/kb3x/keymaps/default/keymap.c create mode 100644 keyboards/doio/kb3x/keymaps/default/rules.mk create mode 100644 keyboards/doio/kb3x/keymaps/via/keymap.c create mode 100644 keyboards/doio/kb3x/keymaps/via/rules.mk create mode 100644 keyboards/doio/kb3x/readme.md create mode 100644 keyboards/doio/kb3x/rules.mk diff --git a/keyboards/doio/kb3x/info.json b/keyboards/doio/kb3x/info.json new file mode 100644 index 000000000000..be0d13843977 --- /dev/null +++ b/keyboards/doio/kb3x/info.json @@ -0,0 +1,125 @@ +{ + "manufacturer": "DOIO", + "keyboard_name": "KB3x-01", + "maintainer": "DOIO2022", + "bootloader": "stm32duino", + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 6 + }, + "encoder": { + "rotary": [ + {"pin_a": "B5", "pin_b": "B6", "resolution": 2}, + {"pin_a": "A1", "pin_b": "A2", "resolution": 2}, + {"pin_a": "A3", "pin_b": "A4", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B14", "B13", "B12", "B0", "A7", "A6"], + "rows": ["B3", "B4", "B9", "B8"] + }, + "processor": "STM32F103", + "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, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 75, "y": 0, "flags": 1}, + {"matrix": [0, 2], "x": 149, "y": 0, "flags": 1}, + {"matrix": [0, 3], "x": 224, "y": 0, "flags": 1}, + {"x": 112, "y": 64, "flags": 1}, + {"x": 112, "y": 64, "flags": 1}, + {"x": 112, "y": 64, "flags": 1}, + {"x": 112, "y": 64, "flags": 1} + ], + "max_brightness": 200, + "sleep": true + }, + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0x3F01", + "vid": "0xD010" + }, + "ws2812": { + "pin": "A10" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [3, 0], "x": 0, "y": 0}, + {"matrix": [3, 1], "x": 1, "y": 0}, + {"matrix": [3, 2], "x": 2, "y": 0}, + {"matrix": [3, 3], "x": 6.5, "y": 0}, + {"matrix": [3, 4], "x": 7.5, "y": 0}, + {"matrix": [3, 5], "x": 8.5, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 1.25}, + {"matrix": [1, 0], "x": 4.25, "y": 1.25}, + {"matrix": [2, 0], "x": 7.5, "y": 1.25}, + {"matrix": [0, 3], "x": 0, "y": 2.25}, + {"matrix": [0, 4], "x": 1, "y": 2.25, "encoder": 0}, + {"matrix": [0, 1], "x": 2, "y": 2.25}, + {"matrix": [1, 3], "x": 3.25, "y": 2.25}, + {"matrix": [1, 4], "x": 4.25, "y": 2.25, "encoder": 1}, + {"matrix": [1, 1], "x": 5.25, "y": 2.25}, + {"matrix": [2, 3], "x": 6.5, "y": 2.25}, + {"matrix": [2, 4], "x": 7.5, "y": 2.25, "encoder": 2}, + {"matrix": [2, 1], "x": 8.5, "y": 2.25}, + {"matrix": [0, 2], "x": 1, "y": 3.25}, + {"matrix": [1, 2], "x": 4.25, "y": 3.25}, + {"matrix": [2, 2], "x": 7.5, "y": 3.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/doio/kb3x/keymaps/default/keymap.c b/keyboards/doio/kb3x/keymaps/default/keymap.c new file mode 100644 index 000000000000..934019e8cf56 --- /dev/null +++ b/keyboards/doio/kb3x/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * 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 { + _LAY0, + _LAY1, + _LAY2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAY0] = LAYOUT( + TO(1), RGB_MOD, RGB_TOG, RGB_HUI, RGB_VAD, RGB_VAI, + KC_MPLY, KC_UP, KC_UP, + KC_MNXT, KC_TRNS, KC_MPRV, A(KC_LEFT), KC_TRNS, A(KC_RIGHT), KC_RIGHT, KC_TRNS, KC_LEFT, + KC_MPLY, KC_DOWN, KC_DOWN), + [_LAY1] = LAYOUT( + TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_WH_U, S(KC_RBRC), C(KC_L), + C(KC_WH_D), KC_TRNS, C(KC_WH_U), KC_DOT, KC_TRNS, KC_COMM, C(KC_B), KC_TRNS, C(KC_U), + KC_WH_D, S(KC_LBRC), C(KC_M)), + [_LAY2] = LAYOUT( + TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_B, KC_UP, S(KC_I), + KC_P, KC_TRNS, KC_H, KC_RIGHT, KC_TRNS, KC_LEFT, KC_O, KC_TRNS, KC_I, + KC_Y, KC_DOWN, S(KC_O)) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_LAY0] = { ENCODER_CCW_CW(C(KC_DOWN), C(KC_UP)), ENCODER_CCW_CW(C(KC_PMNS), C(KC_PPLS)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LAY1] = { ENCODER_CCW_CW(C(KC_PMNS), C(KC_PPLS)), ENCODER_CCW_CW(KC_LBRC, KC_RBRC), ENCODER_CCW_CW(C(S(KC_U)), C(KC_I)) }, + [_LAY2] = { ENCODER_CCW_CW(KC_C, KC_V), ENCODER_CCW_CW(KC_MINS, KC_EQL), ENCODER_CCW_CW(KC_J, KC_L) } +}; +#endif diff --git a/keyboards/doio/kb3x/keymaps/default/rules.mk b/keyboards/doio/kb3x/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/doio/kb3x/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/doio/kb3x/keymaps/via/keymap.c b/keyboards/doio/kb3x/keymaps/via/keymap.c new file mode 100644 index 000000000000..5ebd1066a9fb --- /dev/null +++ b/keyboards/doio/kb3x/keymaps/via/keymap.c @@ -0,0 +1,73 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * 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 { + _LAY0, + _LAY1, + _LAY2, + _LAY3, + _LAY4, + _LAY5 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAY0] = LAYOUT( + TO(1), RGB_MOD, RGB_TOG, RGB_HUI, RGB_VAD, RGB_VAI, + KC_MPLY, KC_UP, KC_UP, + KC_MNXT, KC_TRNS, KC_MPRV, A(KC_LEFT), KC_TRNS, A(KC_RIGHT), KC_RIGHT, KC_TRNS, KC_LEFT, + KC_MPLY, KC_DOWN, KC_DOWN), + [_LAY1] = LAYOUT( + TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_WH_U, S(KC_RBRC), C(KC_L), + C(KC_WH_D), KC_TRNS, C(KC_WH_U), KC_DOT, KC_TRNS, KC_COMM, C(KC_B), KC_TRNS, C(KC_U), + KC_WH_D, S(KC_LBRC), C(KC_M)), + [_LAY2] = LAYOUT( + TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_B, KC_UP, S(KC_I), + KC_P, KC_TRNS, KC_H, KC_RIGHT, KC_TRNS, KC_LEFT, KC_O, KC_TRNS, KC_I, + KC_Y, KC_DOWN, S(KC_O)), + [_LAY3] = LAYOUT( + TO(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY4] = LAYOUT( + TO(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY5] = LAYOUT( + TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_LAY0] = { ENCODER_CCW_CW(C(KC_DOWN), C(KC_UP)), ENCODER_CCW_CW(C(KC_PMNS), C(KC_PPLS)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LAY1] = { ENCODER_CCW_CW(C(KC_PMNS), C(KC_PPLS)), ENCODER_CCW_CW(KC_LBRC, KC_RBRC), ENCODER_CCW_CW(C(S(KC_U)), C(KC_I)) }, + [_LAY2] = { ENCODER_CCW_CW(KC_C, KC_V), ENCODER_CCW_CW(KC_MINS, KC_EQL), ENCODER_CCW_CW(KC_J, KC_L) }, + [_LAY3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, +}; +#endif diff --git a/keyboards/doio/kb3x/keymaps/via/rules.mk b/keyboards/doio/kb3x/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/doio/kb3x/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/doio/kb3x/readme.md b/keyboards/doio/kb3x/readme.md new file mode 100644 index 000000000000..c27c983d4966 --- /dev/null +++ b/keyboards/doio/kb3x/readme.md @@ -0,0 +1,26 @@ +# doio/kb3x + +![kb3x-01](https://i.imgur.com/6DvIu9Mh.png) + +QMK for DOIO Knob keypad . + +* Keyboard Maintainer: DOIO2022 +* Hardware Supported: DOIO Knob keypad + +Make example for this keyboard (after setting up your build environment): + + make doio/kb3x:default + +Flashing example for this keyboard: + + make doio/kb3x:default:flash + +See the build [environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/doio/kb3x/rules.mk b/keyboards/doio/kb3x/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/doio/kb3x/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 5ef5a79fd9993747204a6ad89b206ea411c45083 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 29 Mar 2024 04:55:38 +0000 Subject: [PATCH 022/125] Remove IGNORE_MOD_TAP_INTERRUPT from keymaps (#23279) --- .../bad_wings/keymaps/jasonhazel/config.h | 17 --- .../bad_wings/keymaps/jasonhazel/keymap.c | 118 ------------------ .../bad_wings/keymaps/jasonhazel/rules.mk | 4 - .../keymaps/default_isoenter/config.h | 2 - 4 files changed, 141 deletions(-) delete mode 100644 keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h delete mode 100644 keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c delete mode 100644 keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h b/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h deleted file mode 100644 index 035419eee685..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/jasonhazel/config.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2023 Jason Hazel (@jasonhazel) -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#define TAPPING_TERM 200 -#define PERMISSIVE_HOLD -#define IGNORE_MOD_TAP_INTERRUPT -#define TAPPING_FORCE_HOLD -#define TAPPING_TERM_PER_KEY -#define ONESHOT_TAP_TOGGLE 10 -#define ONESHOT_TIMEOUT 500 -#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD -#define CIRQUE_PINNACLE_TAP_ENABLE -#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE - -#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE \ No newline at end of file diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c b/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c deleted file mode 100644 index 0c3d9c70afab..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/jasonhazel/keymap.c +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2023 Jason Hazel (@jasonhazel) -// SPDX-License-Identifier: GPL-3.0-or-later - -#include QMK_KEYBOARD_H - -enum layers { - _ALPHA, - _SYMBOL, - _NUMBER, - _NAVIGATION, - LAYER_LENGTH -}; - - -enum tapdances { - TD_QESC, - TD_SBKT, - TD_CBKT, - TD_PARN, - TD_LTGT, - TD_ATAB, - TAPDANCE_LENGTH -}; - -enum combos { - COMBO_NAVIGATION, - COMBO_LENGTH -}; - - -// begin tapdances -#define KC_QESC TD(TD_QESC) -#define KC_SBKT TD(TD_SBKT) -#define KC_CBKT TD(TD_CBKT) -#define KC_PARN TD(TD_PARN) -#define KC_LTGT TD(TD_LTGT) -#define KC_ATAB TD(TD_ATAB) - -#define KC_GUIX LGUI_T(KC_X) -#define KC_ALTC LALT_T(KC_C) - -// oneshots -#define KC_OSFT OSM(MOD_LSFT) -#define KC_OALT OSM(MOD_LALT) - -// layer changing -#define KC_OSYM OSL(_SYMBOL) -#define KC_ONUM LT(_NUMBER, KC_BSPC) - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case KC_GUIX: - case KC_ALTC: - return TAPPING_TERM * 2; - default: - return TAPPING_TERM; - } -} - -// tapdances -tap_dance_action_t tap_dance_actions[] = { - [TD_QESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), - [TD_SBKT] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), - [TD_CBKT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR), - [TD_PARN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN), - [TD_LTGT] = ACTION_TAP_DANCE_DOUBLE(KC_LABK, KC_RABK), - [TD_ATAB] = ACTION_TAP_DANCE_DOUBLE(KC_A, KC_TAB) -}; -// end tapdances - -uint16_t COMBO_LEN = COMBO_LENGTH; - -const uint16_t PROGMEM combo_navigation[] = { KC_OSYM, KC_ONUM, COMBO_END }; -combo_t key_combos[] = { - [COMBO_NAVIGATION] = COMBO(combo_navigation, OSL(_NAVIGATION)), -}; - -uint16_t get_combo_term(uint16_t index, combo_t *combo) { - switch(index) { - case COMBO_NAVIGATION: // extending the combo term here helps reduce sticky layers some more. - return 250; - default: - return COMBO_TERM; - } -} -// end combos - - -// begin layers -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_ALPHA] = LAYOUT_split_3x5_3( - KC_QESC, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, - KC_Z, KC_GUIX, KC_ALTC, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - KC_LCTL, KC_OSYM, KC_OSFT, KC_SPC, KC_ONUM, KC_ENT - ), - [_SYMBOL] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PIPE, KC_NO, - KC_GRV, KC_TILD, KC_UNDS, KC_EQL, KC_NO, KC_SBKT, KC_CBKT, KC_PARN, KC_LTGT, KC_BACKSLASH, - KC_NO, KC_NO, KC_PLUS, KC_MINS, KC_NO, KC_NO, KC_NO, KC_COLN, KC_DOT, KC_SCLN, - KC_LCTL, KC_OSYM, KC_OSFT, KC_SPC, KC_ONUM, KC_ENT - ), - [_NUMBER] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOT, KC_NO, - KC_LCTL, KC_OSYM, KC_OSFT, KC_SPC, KC_ONUM, KC_ENT - ), - [_NAVIGATION] = LAYOUT_split_3x5_3( - KC_NO, KC_F2, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_BSPC, - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL, - KC_LCTL, KC_OSYM, KC_OSFT, KC_SPC, KC_ONUM, KC_ENT - ) -}; - - - diff --git a/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk b/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk deleted file mode 100644 index 26d76a0df6ed..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/jasonhazel/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -COMBO_ENABLE = yes -TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/marksard/leftover30/keymaps/default_isoenter/config.h b/keyboards/marksard/leftover30/keymaps/default_isoenter/config.h index 8bffbbb3b51b..5093fd1ee292 100644 --- a/keyboards/marksard/leftover30/keymaps/default_isoenter/config.h +++ b/keyboards/marksard/leftover30/keymaps/default_isoenter/config.h @@ -18,7 +18,5 @@ // place overrides here #define TAPPING_TERM 200 -#define IGNORE_MOD_TAP_INTERRUPT - #define TAPPING_LAYER_TERM 150 // Custom LT Tapping term #define TAPPING_TERM_PER_KEY From 742ff91cf883a636d893076df347aa5817ecfac5 Mon Sep 17 00:00:00 2001 From: Archetype <62484425+archetype-made@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:04:43 -0700 Subject: [PATCH 023/125] [Keyboard] Add Minerva LX (#23291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Álvaro A. Volpato Co-authored-by: Joel Challis Co-authored-by: Ryan --- keyboards/archetype/minervalx/config.h | 22 +++++ keyboards/archetype/minervalx/halconf.h | 21 ++++ keyboards/archetype/minervalx/info.json | 98 +++++++++++++++++++ .../minervalx/keymaps/default/keymap.c | 35 +++++++ .../archetype/minervalx/keymaps/via/keymap.c | 35 +++++++ .../archetype/minervalx/keymaps/via/rules.mk | 2 + keyboards/archetype/minervalx/mcuconf.h | 22 +++++ keyboards/archetype/minervalx/readme.md | 24 +++++ keyboards/archetype/minervalx/rules.mk | 1 + 9 files changed, 260 insertions(+) create mode 100644 keyboards/archetype/minervalx/config.h create mode 100644 keyboards/archetype/minervalx/halconf.h create mode 100644 keyboards/archetype/minervalx/info.json create mode 100644 keyboards/archetype/minervalx/keymaps/default/keymap.c create mode 100644 keyboards/archetype/minervalx/keymaps/via/keymap.c create mode 100644 keyboards/archetype/minervalx/keymaps/via/rules.mk create mode 100644 keyboards/archetype/minervalx/mcuconf.h create mode 100644 keyboards/archetype/minervalx/readme.md create mode 100644 keyboards/archetype/minervalx/rules.mk diff --git a/keyboards/archetype/minervalx/config.h b/keyboards/archetype/minervalx/config.h new file mode 100644 index 000000000000..3b5eb8e56ac9 --- /dev/null +++ b/keyboards/archetype/minervalx/config.h @@ -0,0 +1,22 @@ +/* Copyright 2024 Archetype Made, Inc. + * + * 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 BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A \ No newline at end of file diff --git a/keyboards/archetype/minervalx/halconf.h b/keyboards/archetype/minervalx/halconf.h new file mode 100644 index 000000000000..b807fe165070 --- /dev/null +++ b/keyboards/archetype/minervalx/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2024 Archetype Made, Inc. + * + * 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 diff --git a/keyboards/archetype/minervalx/info.json b/keyboards/archetype/minervalx/info.json new file mode 100644 index 000000000000..0d01ccf485b2 --- /dev/null +++ b/keyboards/archetype/minervalx/info.json @@ -0,0 +1,98 @@ +{ + "manufacturer": "Archetype", + "keyboard_name": "Minerva LX", + "maintainer": "Archetype", + "backlight": { + "pin": "GP7" + }, + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["GP0", "GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16"], + "rows": ["GP11", "GP12", "GP13", "GP14", "GP15"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0100", + "vid": "0x5453" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"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": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "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, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "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, 4], "x": 4, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 8], "x": 8, "y": 4, "w": 3}, + {"matrix": [4, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/archetype/minervalx/keymaps/default/keymap.c b/keyboards/archetype/minervalx/keymaps/default/keymap.c new file mode 100644 index 000000000000..c52c7f4c1e14 --- /dev/null +++ b/keyboards/archetype/minervalx/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2024 Archetype Made, Inc. + * + * 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_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_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, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/archetype/minervalx/keymaps/via/keymap.c b/keyboards/archetype/minervalx/keymaps/via/keymap.c new file mode 100644 index 000000000000..c52c7f4c1e14 --- /dev/null +++ b/keyboards/archetype/minervalx/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2024 Archetype Made, Inc. + * + * 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_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_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, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/archetype/minervalx/keymaps/via/rules.mk b/keyboards/archetype/minervalx/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/archetype/minervalx/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/archetype/minervalx/mcuconf.h b/keyboards/archetype/minervalx/mcuconf.h new file mode 100644 index 000000000000..6bc01108d359 --- /dev/null +++ b/keyboards/archetype/minervalx/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2024 Archetype Made, Inc. + * + * 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_PWM5 +#define RP_PWM_USE_PWM5 TRUE diff --git a/keyboards/archetype/minervalx/readme.md b/keyboards/archetype/minervalx/readme.md new file mode 100644 index 000000000000..365fd375e585 --- /dev/null +++ b/keyboards/archetype/minervalx/readme.md @@ -0,0 +1,24 @@ +# Minerva LX + +![Minerva LX](https://i.imgur.com/f97nsrx.jpg) + +The following is the QMK Firmware for the Minerva LX PCB. + +* Keyboard Maintainer: [Archetype](https://github.com/archetype-made) +* Hardware Supported: RP2040-based proprietary PCB. +* Hardware Availability: https://archetypemade.com/minerva-is-here/ + +Make example for this keyboard (after setting up your build environment): + + make archetype/minervalx:default + +Flashing example for this keyboard: + + make archetype/minervalx: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 ESC key and plug in the keyboard (Top Left most switch) +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if available +* **Physical Reset Button**: With the PCB unplugged, hold down the button labled `RESET` on the back of the PCB while pluggin in the USB. \ No newline at end of file diff --git a/keyboards/archetype/minervalx/rules.mk b/keyboards/archetype/minervalx/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/archetype/minervalx/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 2d8902c884deb48815fd923bc4bb9437fd148e19 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:06:38 -0700 Subject: [PATCH 024/125] Kalakos Bahrnob Layout Additions (#23300) --- keyboards/kalakos/bahrnob/info.json | 1939 ++++++++++++++++- .../kalakos/bahrnob/keymaps/default/keymap.c | 4 +- .../kalakos/bahrnob/keymaps/via/keymap.c | 8 +- keyboards/kalakos/bahrnob/matrix_diagram.md | 15 +- 4 files changed, 1950 insertions(+), 16 deletions(-) diff --git a/keyboards/kalakos/bahrnob/info.json b/keyboards/kalakos/bahrnob/info.json index 6905ceb38da4..2e127e555a06 100644 --- a/keyboards/kalakos/bahrnob/info.json +++ b/keyboards/kalakos/bahrnob/info.json @@ -28,8 +28,11 @@ "rows": ["D7", "B4", "B5", "B6", "C6"], "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "D0", "D1", "D2", "D3", "D5"] }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -47,7 +50,7 @@ {"matrix": [0, 13], "x": 13, "y": 0}, {"matrix": [1, 14], "x": 14, "y": 0}, - {"matrix": [0, 14], "x": 15.75, "y": 0}, + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 0}, {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"matrix": [1, 1], "x": 1.5, "y": 1}, @@ -108,6 +111,1938 @@ {"matrix": [4, 11], "x": 11, "y": 4}, {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_lwkl": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_lwkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_rwkl": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_rwkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_rwkl_split_space": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_rwkl_split_space_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_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, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_wkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_split_space": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_split_space_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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, "w": 2.25}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_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, "w": 2}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_lwkl": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_lwkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_rwkl": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_rwkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_rwkl_split_space": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_rwkl_split_space_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_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, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_wkl_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_split_space": { + "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.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_split_space_split_bs": { + "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": [1, 14], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.5, "y": 0, "encoder": 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, 14], "x": 15.5, "y": 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": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 14], "x": 15.5, "y": 2.5}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 1.25, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + + {"matrix": [2, 13], "x": 14.25, "y": 3.25}, + + {"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, 3], "x": 3.75, "y": 4, "w": 3}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 3.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [3, 13], "x": 13.25, "y": 4.25}, {"matrix": [4, 13], "x": 14.25, "y": 4.25}, {"matrix": [4, 14], "x": 15.25, "y": 4.25} diff --git a/keyboards/kalakos/bahrnob/keymaps/default/keymap.c b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c index 08ed92c0a822..7866b4dfd308 100644 --- a/keyboards/kalakos/bahrnob/keymaps/default/keymap.c +++ b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c @@ -19,7 +19,7 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [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_BSPC, KC_DEL, KC_MUTE, 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_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, @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/kalakos/bahrnob/keymaps/via/keymap.c b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c index 77f5db6e23ae..e71375f9f115 100644 --- a/keyboards/kalakos/bahrnob/keymaps/via/keymap.c +++ b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c @@ -19,7 +19,7 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [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_BSPC, KC_DEL, KC_MUTE, 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_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, @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT( + [2] = 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, @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT( + [3] = 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, diff --git a/keyboards/kalakos/bahrnob/matrix_diagram.md b/keyboards/kalakos/bahrnob/matrix_diagram.md index 30e120b75b3d..316f2ad9d800 100644 --- a/keyboards/kalakos/bahrnob/matrix_diagram.md +++ b/keyboards/kalakos/bahrnob/matrix_diagram.md @@ -1,17 +1,16 @@ # Matrix Diagram for Kalakos Bahrnob65 - ``` ┌───────┐ 2u Backspace │0D │ └───────┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ -│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1E │ │0E │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───┘ ┌─────┐ -│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ ┌───┐ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ │2E │ ┌──┴┐1D │ ISO Enter -│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ ├───┤ │2C │ │ -├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ │3E │ └───┴────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1E │ │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───┘ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ ┌───┐ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ │2E │ ┌──┴┐1D │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ ├───┤ │2C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ │3E │ └───┴────┘ │30 │44 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │┌───┐└───┘ ├────┼───┴┬──┴─┬─┴───┴───┴─┬─┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│2D │ │40 │41 │42 │43 │46 │4A │4B │4C │┌───┼───┼───┐ From 041f60f9a9cd88275f46f2ac2140923dcbda1333 Mon Sep 17 00:00:00 2001 From: joliverMI <36174681+joliverMI@users.noreply.github.com> Date: Fri, 29 Mar 2024 01:19:14 -0400 Subject: [PATCH 025/125] [Keyboard] Add recore keyboard (#23320) Co-authored-by: joliverMI Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Joel Challis Co-authored-by: Duncan Sutherland --- keyboards/pmk/recore/v3/config.h | 18 +++ keyboards/pmk/recore/v3/info.json | 141 ++++++++++++++++++ .../pmk/recore/v3/keymaps/default/keymap.c | 52 +++++++ keyboards/pmk/recore/v3/keymaps/via/keymap.c | 52 +++++++ keyboards/pmk/recore/v3/keymaps/via/rules.mk | 1 + keyboards/pmk/recore/v3/readme.md | 27 ++++ keyboards/pmk/recore/v3/rules.mk | 1 + 7 files changed, 292 insertions(+) create mode 100644 keyboards/pmk/recore/v3/config.h create mode 100644 keyboards/pmk/recore/v3/info.json create mode 100644 keyboards/pmk/recore/v3/keymaps/default/keymap.c create mode 100644 keyboards/pmk/recore/v3/keymaps/via/keymap.c create mode 100644 keyboards/pmk/recore/v3/keymaps/via/rules.mk create mode 100644 keyboards/pmk/recore/v3/readme.md create mode 100644 keyboards/pmk/recore/v3/rules.mk diff --git a/keyboards/pmk/recore/v3/config.h b/keyboards/pmk/recore/v3/config.h new file mode 100644 index 000000000000..b4089fa81e9a --- /dev/null +++ b/keyboards/pmk/recore/v3/config.h @@ -0,0 +1,18 @@ +// Copyright 2023 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/*Split keyboard configuration*/ +// Hardware Settings +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP1 +#define SERIAL_USART_RX_PIN GP0 + +// Communication Settings +#define FORCED_SYNC_THROTTLE_MS 1000 +#define SPLIT_MAX_CONNECTION_ERRORS 5 +#define SPLIT_CONNECTION_CHECK_TIMEOUT 2000 + +// RGB Configuration +#define RGBLIGHT_EFFECT_BREATHE_CENTER 2.0 //1.0 to 2.7 diff --git a/keyboards/pmk/recore/v3/info.json b/keyboards/pmk/recore/v3/info.json new file mode 100644 index 000000000000..6bc095daa5f4 --- /dev/null +++ b/keyboards/pmk/recore/v3/info.json @@ -0,0 +1,141 @@ +{ + "manufacturer": "Posey's Mechanical Keyboards", + "keyboard_name": "recorev3", + "maintainer": "joliverMI", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "rgblight": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"], + "rows": ["GP10", "GP11", "GP12", "GP13", "GP14"] + }, + "processor": "RP2040", + "ws2812": { + "driver": "vendor", + "pin": "GP17" + }, + "rgblight": { + "animations": { + "breathing": true + }, + "layers": { + "enabled": true, + "max": 4 + }, + "led_count": 2, + "sleep": true, + "split": true, + "split_count": [1, 1] + }, + "split": { + "enabled": true, + "handedness": { + "pin": "GP18" + } + }, + "tags": ["ortho", "split"], + "url": "poseysmechanicalkeyboards.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4A4F" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0,0], "x": 0, "y": 0.75, "w": 1.25}, + {"matrix": [0,1], "x": 1.25, "y": 0.75}, + {"matrix": [0,2], "x": 2.25, "y": 0.2}, + {"matrix": [0,3], "x": 3.25, "y": 0}, + {"matrix": [0,4], "x": 4.25, "y": 0.2}, + {"matrix": [0,5], "x": 5.25, "y": 0.3}, + {"matrix": [0,6], "x": 6.25, "y": 0.55, "h": 1.25}, + {"matrix": [0,7], "x": 7.25, "y": 0.55, "h": 1.25}, + + {"matrix": [5,0], "x": 9.25, "y": 0.55, "h": 1.25}, + {"matrix": [5,1], "x": 10.25, "y": 0.55, "h": 1.25}, + {"matrix": [5,2], "x": 11.25, "y": 0.3}, + {"matrix": [5,3], "x": 12.25, "y": 0.2}, + {"matrix": [5,4], "x": 13.25, "y": 0}, + {"matrix": [5,5], "x": 14.25, "y": 0.2}, + {"matrix": [5,6], "x": 15.25, "y": 0.75}, + {"matrix": [5,7], "x": 16.25, "y": 0.75, "w": 1.25}, + + {"matrix": [1,0], "x": 0, "y": 1.75, "w": 1.25}, + {"matrix": [1,1], "x": 1.25, "y": 1.75}, + {"matrix": [1,2], "x": 2.25, "y": 1.2}, + {"matrix": [1,3], "x": 3.25, "y": 1}, + {"matrix": [1,4], "x": 4.25, "y": 1.2}, + {"matrix": [1,5], "x": 5.25, "y": 1.3}, + {"matrix": [1,6], "x": 6.25, "y": 1.8, "h": 1.25}, + {"matrix": [1,7], "x": 7.25, "y": 1.8, "h": 1.25}, + + {"matrix": [6,0], "x": 9.25, "y": 1.8, "h": 1.25}, + {"matrix": [6,1], "x": 10.25, "y": 1.8, "h": 1.25}, + {"matrix": [6,2], "x": 11.25, "y": 1.3}, + {"matrix": [6,3], "x": 12.25, "y": 1.2}, + {"matrix": [6,4], "x": 13.25, "y": 1}, + {"matrix": [6,5], "x": 14.25, "y": 1.2}, + {"matrix": [6,6], "x": 15.25, "y": 1.75}, + {"matrix": [6,7], "x": 16.25, "y": 1.75, "w": 1.25}, + + {"matrix": [2,0], "x": 0, "y": 2.75, "w": 1.25}, + {"matrix": [2,1], "x": 1.25, "y": 2.75}, + {"matrix": [2,2], "x": 2.25, "y": 2.2}, + {"matrix": [2,3], "x": 3.25, "y": 2}, + {"matrix": [2,4], "x": 4.25, "y": 2.2}, + {"matrix": [2,5], "x": 5.25, "y": 2.3}, + + {"matrix": [7,2], "x": 11.25, "y": 2.3}, + {"matrix": [7,3], "x": 12.25, "y": 2.2}, + {"matrix": [7,4], "x": 13.25, "y": 2}, + {"matrix": [7,5], "x": 14.25, "y": 2.2}, + {"matrix": [7,6], "x": 15.25, "y": 2.75}, + {"matrix": [7,7], "x": 16.25, "y": 2.75, "w": 1.25}, + + {"matrix": [3,0], "x": 0, "y": 3.75, "w": 1.25}, + {"matrix": [3,1], "x": 1.25, "y": 3.75}, + {"matrix": [3,2], "x": 2.25, "y": 3.2}, + {"matrix": [3,3], "x": 3.25, "y": 3}, + {"matrix": [3,4], "x": 4.25, "y": 3.2}, + {"matrix": [3,5], "x": 5.25, "y": 3.3}, + {"matrix": [3,6], "x": 6.25, "y": 3.05, "h": 1.25}, + {"matrix": [3,7], "x": 7.25, "y": 3.05, "h": 1.25}, + + {"matrix": [8,0], "x": 9.25, "y": 3.05, "h": 1.25}, + {"matrix": [8,1], "x": 10.25, "y": 3.05, "h": 1.25}, + {"matrix": [8,2], "x": 11.25, "y": 3.3}, + {"matrix": [8,3], "x": 12.25, "y": 3.2}, + {"matrix": [8,4], "x": 13.25, "y": 3}, + {"matrix": [8,5], "x": 14.25, "y": 3.2}, + {"matrix": [8,6], "x": 15.25, "y": 3.75}, + {"matrix": [8,7], "x": 16.25, "y": 3.75, "w": 1.25}, + + {"matrix": [4,0], "x": 0, "y": 4.75, "w": 1.25}, + {"matrix": [4,1], "x": 1.25, "y": 4.75}, + {"matrix": [4,2], "x": 2.25, "y": 4.2, "w": 1.25}, + {"matrix": [4,3], "x": 3.5, "y": 4.2, "w": 1.25}, + {"matrix": [4,5], "x": 4.75, "y": 4.3, "w": 1.25}, + {"matrix": [4,6], "x": 6, "y": 4.8, "h": 1.25}, + {"matrix": [4,7], "x": 7, "y": 5, "h": 1.25}, + + {"matrix": [9,0], "x": 9.5, "y": 5, "h": 1.25}, + {"matrix": [9,1], "x": 10.5, "y": 4.8, "h": 1.25}, + {"matrix": [9,2], "x": 11.5, "y": 4.3, "w": 1.25}, + {"matrix": [9,4], "x": 12.75, "y": 4.2, "w": 1.25}, + {"matrix": [9,5], "x": 14, "y": 4.2, "w": 1.25}, + {"matrix": [9,6], "x": 15.25, "y": 4.75}, + {"matrix": [9,7], "x": 16.25, "y": 4.75, "w": 1.25} + ] + } + } +} diff --git a/keyboards/pmk/recore/v3/keymaps/default/keymap.c b/keyboards/pmk/recore/v3/keymaps/default/keymap.c new file mode 100644 index 000000000000..a48ed4c82dea --- /dev/null +++ b/keyboards/pmk/recore/v3/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,MO(_SYMB),MO(_NAV),MO(_NAV),MO(_SYMB),KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,KC_MPLY, KC_PAUS ,KC_RBRC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + 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_PGUP ,KC_PGDN , KC_HOME ,KC_END , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LGUI ,KC_PMNS ,MO(_NAV) ,KC_LALT ,KC_LCTL ,KC_BSPC ,KC_DEL , KC_ENT, KC_SPC ,MO(_NAV),KC_RALT ,KC_RCTL ,KC_LEFT ,KC_RGHT +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ), + [_SYMB] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,_______ ,_______, _______ ,_______ ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ ,_______, _______ ,KC_RCBR ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV , KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┐┌────────┬────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,KC_P0 ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_ENT ,_______ ,_______ ,_______ ,KC_PDOT ,KC_PENT ,_______ +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ), + [_NAV] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + _______ ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,QK_BOOT , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + _______ ,KC_LEFT ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_RGHT , KC_LEFT ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_RGHT ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┐┌────────┬────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,KC_DOWN ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,XXXXXXX ,KC_DOWN ,XXXXXXX ,XXXXXXX ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,_______ ,_______ ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX ,EE_CLR +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ) +}; diff --git a/keyboards/pmk/recore/v3/keymaps/via/keymap.c b/keyboards/pmk/recore/v3/keymaps/via/keymap.c new file mode 100644 index 000000000000..a48ed4c82dea --- /dev/null +++ b/keyboards/pmk/recore/v3/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +// Copyright 2024 Javier Oliver (@joliverMI) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum my_layers { + _QWERTY, + _NAV, + _SYMB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,MO(_SYMB),MO(_NAV),MO(_NAV),MO(_SYMB),KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,KC_MPLY, KC_PAUS ,KC_RBRC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + 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_PGUP ,KC_PGDN , KC_HOME ,KC_END , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LGUI ,KC_PMNS ,MO(_NAV) ,KC_LALT ,KC_LCTL ,KC_BSPC ,KC_DEL , KC_ENT, KC_SPC ,MO(_NAV),KC_RALT ,KC_RCTL ,KC_LEFT ,KC_RGHT +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ), + [_SYMB] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,_______ ,_______, _______ ,_______ ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ ,_______, _______ ,KC_RCBR ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV , KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┐┌────────┬────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,KC_P0 ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,_______ , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_ENT ,_______ ,_______ ,_______ ,KC_PDOT ,KC_PENT ,_______ +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ), + [_NAV] = LAYOUT( +//┌────────┬────────┬────────┬────────┬────────┬────────┬── L1 ──┬── X1 ──┐┌── X1 ──┬── L1 ──┬────────┬────────┬────────┬────────┬────────┬────────┐ + _______ ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,QK_BOOT , +//├────────┼────────┼────────┼────────┼────────┼────────┼── X2 ──┼── X3 ──┤├── X3 ──┼── X2 ──┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┴────────┴────────┤ + _______ ,KC_LEFT ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_RGHT , KC_LEFT ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_RGHT ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┐┌────────┬────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,KC_DOWN ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,XXXXXXX ,KC_DOWN ,XXXXXXX ,XXXXXXX ,XXXXXXX , +//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘└────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______ ,XXXXXXX ,XXXXXXX ,_______ ,_______ ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX ,EE_CLR +//└────────┴────────┴── T1 ──┴── T2 ──┴── T3 ──┴── T4 ──┴── T5 ──┘ └── T5 ──┴── T4 ──┴── T3 ──┴── T2 ──┴── T1 ──┴────────┴────────┘ + ) +}; diff --git a/keyboards/pmk/recore/v3/keymaps/via/rules.mk b/keyboards/pmk/recore/v3/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/pmk/recore/v3/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/pmk/recore/v3/readme.md b/keyboards/pmk/recore/v3/readme.md new file mode 100644 index 000000000000..2e346263f804 --- /dev/null +++ b/keyboards/pmk/recore/v3/readme.md @@ -0,0 +1,27 @@ +# recorev3 + +![recorev3](https://i.imgur.com/28fVsP3.jpeg) + +The Posey Recore keyboard is an ortholinear keyboard designed from the gournd up for gaming. By pushing the left half of your split keyboard out of the way, you'll be able to game with better posture and increase mouse movement. The thumb cluster arc can be remapped to control and shift for use in gaming. + +* Keyboard Maintainer: [Javier Oliver](https://github.com/joliverMI) +* Hardware Supported: recore_v3 and logic_module_v1 +* Hardware Availability: [poseysmechanicalkeyboards.com](https://poseysmechanicalkeyboards.com/) + +Make example for this keyboard (after setting up your build environment): + + make pmk/recore/v3:default + +Flashing example for this keyboard: + + make pmk/recore/v3: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 Escape and plug in the keyboard +* **Physical reset button**: Hold the button on the bottom of the keyboard while you plug in the USB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/pmk/recore/v3/rules.mk b/keyboards/pmk/recore/v3/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/pmk/recore/v3/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From c52ad5c38e9596e871222572cbe164e80c36d7e4 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Sat, 30 Mar 2024 00:16:17 +0000 Subject: [PATCH 026/125] tidy keymap of 60_ansi_arrow Community Layout (#23301) --- .../60_ansi_arrow/default_60_ansi_arrow/keymap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c index 9540ce43f894..c0baf9f47a77 100644 --- a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c +++ b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c @@ -18,10 +18,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_60_ansi_arrow( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT ) }; From 696bf80375bbcf8feea6b259e5d97ecfefd49f37 Mon Sep 17 00:00:00 2001 From: Victor Camargo Date: Fri, 29 Mar 2024 22:00:41 -0300 Subject: [PATCH 027/125] Clearer text about double tapping reset only working for boot after already having QMK running in board (#23042) Co-authored-by: Drashna Jaelre --- docs/flashing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flashing.md b/docs/flashing.md index 113d90ca38ff..95b368041006 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -464,4 +464,4 @@ CLI Flashing sequence: 3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/rpi_pico --keymap default` 4. Wait for the keyboard to become available -1: This works only if QMK was compiled with `RP2040_BOOTLOADER_DOUBLE_TAP_RESET` defined. +1: This works only if the controller has been flashed with QMK Firmware with `RP2040_BOOTLOADER_DOUBLE_TAP_RESET` defined. From 7bff385840a71ccb3144ab080424d57d63cd7156 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Sat, 30 Mar 2024 01:04:23 +0000 Subject: [PATCH 028/125] Update serial_driver.md (#23035) Co-authored-by: Drashna Jaelre --- docs/serial_driver.md | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/docs/serial_driver.md b/docs/serial_driver.md index b7e803154b3c..8462e4530ff8 100644 --- a/docs/serial_driver.md +++ b/docs/serial_driver.md @@ -1,6 +1,6 @@ # 'serial' Driver -The serial driver powers the [Split Keyboard](feature_split_keyboard.md) feature. Several implementations are available, depending on the platform of your split keyboard. Note that none of the drivers support split keyboards with more than two halves. +The Serial driver powers the [Split Keyboard](feature_split_keyboard.md) feature. Several implementations are available that cater to the platform and capabilites of MCU in use. Note that none of the drivers support split keyboards with more than two halves. | Driver | AVR | ARM | Connection between halves | | --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- | @@ -14,7 +14,7 @@ The serial driver powers the [Split Keyboard](feature_split_keyboard.md) feature ## Bitbang -This is the Default driver, the absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use. +This is the Default driver, absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use. !> On ARM platforms the bitbang driver causes connection issues when using it together with the bitbang WS2812 driver. Choosing alternate drivers for both serial and WS2812 (instead of bitbang) is strongly recommended. @@ -31,7 +31,7 @@ This is the Default driver, the absence of configuration assumes this driver. It +-------+ +-------+ ``` -One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A simple TRS or USB cable provides enough conductors for this driver to work. +One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function. ### Setup @@ -57,7 +57,7 @@ SERIAL_DRIVER = bitbang ## USART Half-duplex -Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible. +Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or imcompatible PCB design). ### Pin configuration @@ -74,11 +74,13 @@ Targeting ARM boards based on ChibiOS, where communication is offloaded to a USA +-------+ +-------+ ``` -Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Take care that the pin you chose can act as the TX pin of the USART peripheral. A simple TRS or USB cable provides enough conductors for this driver to work. As the split connection is configured to work in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work. +Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work. + +!> ***Note:*** A pull-up resistor isn't required for RP2040 controllers configured with PIO subsystem. ### Setup -To use the Half-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1. +To use the Half-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation, start at step 2. 1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file: @@ -86,7 +88,9 @@ To use the Half-duplex driver follow these steps to activate it. If you target t SERIAL_DRIVER = usart ``` -2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file: +Skip to step 3. + +2. (RP2040 + PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file: ```make SERIAL_DRIVER = vendor @@ -105,13 +109,13 @@ For STM32 MCUs several GPIO configuration options can be changed as well. See th #define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 ``` -4. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem). +4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
## USART Full-duplex -Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible. Due to its internal design it is slightly more efficient then the Half-duplex driver, but it should be primarily chosen if Half-duplex operation is not supported by the USART peripheral. +Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage; therefore it is advised to choose this driver over all others where possible. Due to its internal design Full-duplex is slightly more efficient than the Half-duplex driver, but Full-duplex should be primarily chosen if Half-duplex operation is not supported by the controller's USART peripheral. ### Pin configuration @@ -129,13 +133,13 @@ Targeting ARM boards based on ChibiOS where communication is offloaded to an USA +-------+ +-------+ ``` -Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the `TX` pin and refereed to as the `SERIAL_USART_TX_PIN`, the pin receiving data is the `RX` pin and refereed to as the `SERIAL_USART_RX_PIN` in this configuration. Please note that `TX` pin of the master half has to be connected with the `RX` pin of the slave half and the `RX` pin of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A simple TRRS or USB cable provides enough conductors for this driver to work. +Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the `TX` pin and refereed to as the `SERIAL_USART_TX_PIN`, the pin receiving data is the `RX` pin and refereed to as the `SERIAL_USART_RX_PIN` in this configuration. Please note that `TX` pin of the master half has to be connected with the `RX` pin of the slave half and the `RX` pin of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A TRRS or USB cable provides enough conductors for this driver to function. -To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refer to the corresponding datasheets of your MCU or find those settings in the section ["Alternate Functions for selected STM32 MCUs"](#alternate-functions-for-selected-stm32-mcus). +To use this driver the USART peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C development board everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refer to the corresponding datasheets of your MCU or find those settings in the section ["Alternate Functions for selected STM32 MCUs"](#alternate-functions-for-selected-stm32-mcus). ### Setup -To use the Full-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1. +To use the Full-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation, start at step 2 1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file: @@ -143,7 +147,9 @@ To use the Full-duplex driver follow these steps to activate it. If you target t SERIAL_DRIVER = usart ``` -2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file: +Skip to step 3 + +2. (RP2040 + PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file: ```make SERIAL_DRIVER = vendor @@ -165,7 +171,7 @@ For STM32 MCUs several GPIO configuration options, including the ability for `TX #define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 ``` -1. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem). +4. Decide either for `SERIAL`, `SIO`, or `PIO` subsystem. See section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
@@ -225,7 +231,7 @@ Just below `#include_next ` add: Where 'n' matches the peripheral number of your selected USART on the MCU. -3. In you keyboards `config.h`: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`. +3. In the keyboard's `config.h` file: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`. ```c #define SERIAL_USART_DRIVER SIOD3 @@ -233,9 +239,9 @@ Where 'n' matches the peripheral number of your selected USART on the MCU. ### The `PIO` driver -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. +The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor **is not required**. -You may optionally switch the PIO peripheral used with the following define in config.h: +Optionally, the PIO peripheral utilized for split communication can be changed 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 ``` From 93737eccc9ba25773adabe1ec74257900f968b50 Mon Sep 17 00:00:00 2001 From: khchen2004 <148961563+khchen2004@users.noreply.github.com> Date: Sat, 30 Mar 2024 09:57:29 +0800 Subject: [PATCH 029/125] [Keyboard] Add scorpio rev2 (#22906) --- keyboards/kwstudio/scorpio_rev2/config.h | 22 ++ keyboards/kwstudio/scorpio_rev2/halconf.h | 21 ++ keyboards/kwstudio/scorpio_rev2/info.json | 201 ++++++++++++++++++ .../scorpio_rev2/keymaps/default/keymap.c | 34 +++ .../scorpio_rev2/keymaps/via/keymap.c | 34 +++ .../scorpio_rev2/keymaps/via/rules.mk | 1 + keyboards/kwstudio/scorpio_rev2/mcuconf.h | 21 ++ keyboards/kwstudio/scorpio_rev2/readme.md | 27 +++ keyboards/kwstudio/scorpio_rev2/rules.mk | 1 + 9 files changed, 362 insertions(+) create mode 100644 keyboards/kwstudio/scorpio_rev2/config.h create mode 100644 keyboards/kwstudio/scorpio_rev2/halconf.h create mode 100644 keyboards/kwstudio/scorpio_rev2/info.json create mode 100644 keyboards/kwstudio/scorpio_rev2/keymaps/default/keymap.c create mode 100644 keyboards/kwstudio/scorpio_rev2/keymaps/via/keymap.c create mode 100644 keyboards/kwstudio/scorpio_rev2/keymaps/via/rules.mk create mode 100644 keyboards/kwstudio/scorpio_rev2/mcuconf.h create mode 100644 keyboards/kwstudio/scorpio_rev2/readme.md create mode 100644 keyboards/kwstudio/scorpio_rev2/rules.mk diff --git a/keyboards/kwstudio/scorpio_rev2/config.h b/keyboards/kwstudio/scorpio_rev2/config.h new file mode 100644 index 000000000000..4b98552f4297 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/config.h @@ -0,0 +1,22 @@ +/* Copyright 2024 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 . + */ + +#pragma once + +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM5 +#define WS2812_DMA_CHANNEL 5 diff --git a/keyboards/kwstudio/scorpio_rev2/halconf.h b/keyboards/kwstudio/scorpio_rev2/halconf.h new file mode 100644 index 000000000000..7212bdf2f696 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2024 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 . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/kwstudio/scorpio_rev2/info.json b/keyboards/kwstudio/scorpio_rev2/info.json new file mode 100644 index 000000000000..d1b41b1d4ff7 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/info.json @@ -0,0 +1,201 @@ +{ + "manufacturer": "kwstudio", + "keyboard_name": "Scorpio Rev2", + "maintainer": "kwstudio", + "processor": "STM32F103", + "bootloader": "stm32duino", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["A4", "A2", "A5", "A6", "A7", "A3", "B10", "B13", "B3", "B4", "B9", "B8", "B5", "B7", "B6"], + "rows": ["B11", "B0", "B14", "B12", "A1"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 10, + "default": { + "animation": "rainbow_swirl" + }, + "layers": { + "enabled": true + }, + "led_count": 9, + "saturation_steps": 8 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x4B53" + }, + "ws2812": { + "driver": "pwm", + "pin": "B15" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs" + }, + "layouts": { + "LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs": { + "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 2.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10.75, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_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, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 2.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10.75, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/kwstudio/scorpio_rev2/keymaps/default/keymap.c b/keyboards/kwstudio/scorpio_rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..32da3bfa7bbd --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2024 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_65_ansi_blocker_tsangan_wkl_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs( + 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_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/kwstudio/scorpio_rev2/keymaps/via/keymap.c b/keyboards/kwstudio/scorpio_rev2/keymaps/via/keymap.c new file mode 100644 index 000000000000..32da3bfa7bbd --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2024 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_65_ansi_blocker_tsangan_wkl_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs( + 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_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/kwstudio/scorpio_rev2/keymaps/via/rules.mk b/keyboards/kwstudio/scorpio_rev2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kwstudio/scorpio_rev2/mcuconf.h b/keyboards/kwstudio/scorpio_rev2/mcuconf.h new file mode 100644 index 000000000000..c3712e0ed472 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/mcuconf.h @@ -0,0 +1,21 @@ +/* Copyright 2024 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 . + */ + +#pragma once +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/kwstudio/scorpio_rev2/readme.md b/keyboards/kwstudio/scorpio_rev2/readme.md new file mode 100644 index 000000000000..aa404d671bb1 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/readme.md @@ -0,0 +1,27 @@ +# Scorpio Rev2 + +![Scorpio Rev2](https://i.imgur.com/pfSLX67h.jpeg) + +This keyboard use 8MHz HSE and STM32F103 as MCU. + +* Keyboard Maintainer: https://github.com/khchen2004 +* Hardware Supported: Scorpio Rev2 PCB +* Hardware Availibility: Private GB + +Make example for this keyboard (after setting up your build environment): + + make kwstudio/scorpio_rev2:default + +Flashing example for this keyboard: + + make kwstudio/scorpio_rev2: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/kwstudio/scorpio_rev2/rules.mk b/keyboards/kwstudio/scorpio_rev2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/kwstudio/scorpio_rev2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From ac74d106d617dad5a3546af4a5c8054294eef29f Mon Sep 17 00:00:00 2001 From: yulei Date: Sat, 30 Mar 2024 10:00:51 +0800 Subject: [PATCH 030/125] [Keyboard] add neson design 810e keyboard (#22883) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/neson_design/810e/config.h | 21 ++++ keyboards/neson_design/810e/info.json | 119 ++++++++++++++++++ .../810e/keymaps/default/keymap.c | 32 +++++ .../neson_design/810e/keymaps/via/keymap.c | 33 +++++ .../neson_design/810e/keymaps/via/rules.mk | 2 + keyboards/neson_design/810e/mcuconf.h | 31 +++++ keyboards/neson_design/810e/readme.md | 23 ++++ keyboards/neson_design/810e/rules.mk | 1 + 8 files changed, 262 insertions(+) create mode 100644 keyboards/neson_design/810e/config.h create mode 100644 keyboards/neson_design/810e/info.json create mode 100644 keyboards/neson_design/810e/keymaps/default/keymap.c create mode 100644 keyboards/neson_design/810e/keymaps/via/keymap.c create mode 100644 keyboards/neson_design/810e/keymaps/via/rules.mk create mode 100644 keyboards/neson_design/810e/mcuconf.h create mode 100644 keyboards/neson_design/810e/readme.md create mode 100644 keyboards/neson_design/810e/rules.mk diff --git a/keyboards/neson_design/810e/config.h b/keyboards/neson_design/810e/config.h new file mode 100644 index 000000000000..c6409b1ecea2 --- /dev/null +++ b/keyboards/neson_design/810e/config.h @@ -0,0 +1,21 @@ +/** + * Copyright 2024 astro + * + * 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 BOARD_OTG_NOVBUSSENS 1 +#define STM32_HSECLK 16000000U diff --git a/keyboards/neson_design/810e/info.json b/keyboards/neson_design/810e/info.json new file mode 100644 index 000000000000..ee80a34afbd7 --- /dev/null +++ b/keyboards/neson_design/810e/info.json @@ -0,0 +1,119 @@ +{ + "manufacturer": "Neson Design", + "keyboard_name": "810e", + "maintainer": "yulei", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": false + }, + "indicators": { + "caps_lock": "A10", + "num_lock": "A0" + }, + "matrix_pins": { + "cols": ["B7", "B5", "B4", "B3", "A15", "A8", "B15", "B14", "B13", "B12", "B10", "B2", "B1", "B0", "A4", "A3", "A2", "A1"], + "rows": ["C13", "C14", "A6", "A7", "A5"] + }, + "processor": "STM32F411", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x810E", + "vid": "0x4E65", + "no_startup_check": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"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": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.5, "y": 0}, + {"matrix": [1, 16], "x": 17.5, "y": 0}, + {"matrix": [0, 17], "x": 18.5, "y": 0}, + {"matrix": [1, 17], "x": 19.5, "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": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [2, 16], "x": 17.5, "y": 1}, + {"matrix": [2, 17], "x": 18.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, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 16.5, "y": 2}, + {"matrix": [2, 15], "x": 17.5, "y": 2}, + {"matrix": [3, 16], "x": 18.5, "y": 2}, + {"matrix": [3, 17], "x": 19.5, "y": 1, "h": 2}, + {"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, 14], "x": 15.25, "y": 3.25}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [4, 16], "x": 17.5, "y": 3}, + {"matrix": [4, 17], "x": 18.5, "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, 3], "x": 4, "y": 4.25, "w": 6.25}, + {"matrix": [4, 7], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 11.75, "y": 4}, + {"matrix": [4, 9], "x": 12.75, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 14.25, "y": 4.25}, + {"matrix": [4, 11], "x": 15.25, "y": 4.25}, + {"matrix": [4, 12], "x": 16.25, "y": 4.25}, + {"matrix": [4, 13], "x": 17.5, "y": 4}, + {"matrix": [4, 14], "x": 18.5, "y": 4}, + {"matrix": [4, 15], "x": 19.5, "y": 3, "h": 2} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/neson_design/810e/keymaps/default/keymap.c b/keyboards/neson_design/810e/keymaps/default/keymap.c new file mode 100644 index 000000000000..f4893faa3574 --- /dev/null +++ b/keyboards/neson_design/810e/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/** + * keymap.c + * + Copyright 2024 astro + 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( + 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_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,MO(1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[1]=LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, KC_F13, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,_______, _______, _______, + _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______) +}; diff --git a/keyboards/neson_design/810e/keymaps/via/keymap.c b/keyboards/neson_design/810e/keymaps/via/keymap.c new file mode 100644 index 000000000000..c5fff9823dd2 --- /dev/null +++ b/keyboards/neson_design/810e/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/** + * keymap.c + * + Copyright 2024 astro + 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( + 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_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,MO(1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[1]=LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, KC_F13, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,_______, _______, _______, + _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______) +}; diff --git a/keyboards/neson_design/810e/keymaps/via/rules.mk b/keyboards/neson_design/810e/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/neson_design/810e/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/neson_design/810e/mcuconf.h b/keyboards/neson_design/810e/mcuconf.h new file mode 100644 index 000000000000..d558655d9cfb --- /dev/null +++ b/keyboards/neson_design/810e/mcuconf.h @@ -0,0 +1,31 @@ +/* Copyright 2023 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 16 + +#undef STM32_PLLN_VALUE +#define STM32_PLLN_VALUE 192 + +#undef STM32_PLLP_VALUE +#define STM32_PLLP_VALUE 2 + +#undef STM32_PLLQ_VALUE +#define STM32_PLLQ_VALUE 4 diff --git a/keyboards/neson_design/810e/readme.md b/keyboards/neson_design/810e/readme.md new file mode 100644 index 000000000000..100f9eca80ff --- /dev/null +++ b/keyboards/neson_design/810e/readme.md @@ -0,0 +1,23 @@ +# Neson Design 810E keyboard + +* Keyboard Maintainer: [astro](https://github.com/yulei) +* Hardware Supported: Neson Design 810E keyboard +* Hardware Availability: [Public GB](https://geekhack.org/index.php?topic=120539.0) + +Make example for this keyboard (after setting up your build environment): + + make neson_design/810e:default + +Flashing example for this board: + + make neson_design/810e: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**: Shortcut *BOOT0* pin and than plug in the keyboard. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/neson_design/810e/rules.mk b/keyboards/neson_design/810e/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/neson_design/810e/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From abc101c122b3c44b0aecf6daed47a3f43e95ec66 Mon Sep 17 00:00:00 2001 From: takashicompany Date: Sat, 30 Mar 2024 11:03:17 +0900 Subject: [PATCH 031/125] [Keyboard] Add miniDivide MAX (#22804) Co-authored-by: Drashna Jaelre Co-authored-by: Duncan Sutherland Co-authored-by: jack <0x6a73@protonmail.com> --- .../takashicompany/minidivide_max/info.json | 129 ++++++++++++++++++ .../minidivide_max/keymaps/default/keymap.c | 56 ++++++++ .../minidivide_max/keymaps/via/keymap.c | 57 ++++++++ .../minidivide_max/keymaps/via/rules.mk | 1 + .../takashicompany/minidivide_max/readme.md | 48 +++++++ .../takashicompany/minidivide_max/rules.mk | 1 + 6 files changed, 292 insertions(+) create mode 100644 keyboards/takashicompany/minidivide_max/info.json create mode 100644 keyboards/takashicompany/minidivide_max/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/minidivide_max/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/minidivide_max/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/minidivide_max/readme.md create mode 100644 keyboards/takashicompany/minidivide_max/rules.mk diff --git a/keyboards/takashicompany/minidivide_max/info.json b/keyboards/takashicompany/minidivide_max/info.json new file mode 100644 index 000000000000..32e67e944d80 --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/info.json @@ -0,0 +1,129 @@ +{ + "manufacturer": "takashicompany", + "keyboard_name": "miniDivide MAX", + "maintainer": "takashicompany", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D4", "C6", "D7", "E6", "B4", "B5"], + "rows": ["F4", "F5", "F6", "F7", "B1"] + }, + "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": 16, + "sleep": true, + "split_count": [8, 8] + }, + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["B5", "B4", "E6", "D7", "C6", "D4"], + "rows": ["F4", "F5", "F6", "F7", "B1"] + } + }, + "soft_serial_pin": "D2" + }, + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0x0054", + "vid": "0x7463" + }, + "ws2812": { + "pin": "D3" + }, + "dynamic_keymap": { + "layer_count": 7 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.4}, + {"matrix": [0, 1], "x": 1, "y": 0.4}, + {"matrix": [0, 2], "x": 2, "y": 0.2}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.2}, + {"matrix": [0, 5], "x": 5, "y": 0.4}, + {"matrix": [5, 0], "x": 9, "y": 0.4}, + {"matrix": [5, 1], "x": 10, "y": 0.2}, + {"matrix": [5, 2], "x": 11, "y": 0}, + {"matrix": [5, 3], "x": 12, "y": 0.2}, + {"matrix": [5, 4], "x": 13, "y": 0.4}, + {"matrix": [5, 5], "x": 14, "y": 0.4}, + + {"matrix": [1, 0], "x": 0, "y": 1.4}, + {"matrix": [1, 1], "x": 1, "y": 1.4}, + {"matrix": [1, 2], "x": 2, "y": 1.2}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.2}, + {"matrix": [1, 5], "x": 5, "y": 1.4}, + {"matrix": [6, 0], "x": 9, "y": 1.4}, + {"matrix": [6, 1], "x": 10, "y": 1.2}, + {"matrix": [6, 2], "x": 11, "y": 1}, + {"matrix": [6, 3], "x": 12, "y": 1.2}, + {"matrix": [6, 4], "x": 13, "y": 1.4}, + {"matrix": [6, 5], "x": 14, "y": 1.4}, + + {"matrix": [2, 0], "x": 0, "y": 2.4}, + {"matrix": [2, 1], "x": 1, "y": 2.4}, + {"matrix": [2, 2], "x": 2, "y": 2.2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.2}, + {"matrix": [2, 5], "x": 5, "y": 2.4}, + {"matrix": [7, 0], "x": 9, "y": 2.4}, + {"matrix": [7, 1], "x": 10, "y": 2.2}, + {"matrix": [7, 2], "x": 11, "y": 2}, + {"matrix": [7, 3], "x": 12, "y": 2.2}, + {"matrix": [7, 4], "x": 13, "y": 2.4}, + {"matrix": [7, 5], "x": 14, "y": 2.4}, + + {"matrix": [3, 0], "x": 0, "y": 3.4}, + {"matrix": [3, 1], "x": 1, "y": 3.4}, + {"matrix": [3, 2], "x": 2, "y": 3.2}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3.2}, + {"matrix": [3, 5], "x": 5, "y": 3.4}, + {"matrix": [8, 0], "x": 9, "y": 3.4}, + {"matrix": [8, 1], "x": 10, "y": 3.2}, + {"matrix": [8, 2], "x": 11, "y": 3}, + {"matrix": [8, 3], "x": 12, "y": 3.2}, + {"matrix": [8, 4], "x": 13, "y": 3.4}, + {"matrix": [8, 5], "x": 14, "y": 3.4}, + + {"matrix": [4, 2], "x": 3, "y": 4.1}, + {"matrix": [4, 3], "x": 4, "y": 4.3}, + {"matrix": [4, 4], "x": 5, "y": 4.5}, + {"matrix": [4, 5], "x": 6, "y": 4.7}, + + {"matrix": [9, 0], "x": 8, "y": 4.7}, + {"matrix": [9, 1], "x": 9, "y": 4.5}, + {"matrix": [9, 2], "x": 10, "y": 4.3}, + {"matrix": [9, 3], "x": 11, "y": 4.1} + ] + } + } +} diff --git a/keyboards/takashicompany/minidivide_max/keymaps/default/keymap.c b/keyboards/takashicompany/minidivide_max/keymaps/default/keymap.c new file mode 100644 index 000000000000..2553cd6316ec --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +// 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( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, LT(4, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_LCTL, KC_A, KC_S, LT(3, KC_D), KC_F, KC_G, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, KC_ENT, + KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_BSPC, + KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL + ), + + [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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, KC_TRNS, + KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = 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_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [4] = 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_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(5), MO(6), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/takashicompany/minidivide_max/keymaps/via/keymap.c b/keyboards/takashicompany/minidivide_max/keymaps/via/keymap.c new file mode 100644 index 000000000000..ae19ae8dbe3d --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +// 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( + LT(4, KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, LT(4, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_LCTL, KC_A, KC_S, LT(3, KC_D), KC_F, KC_G, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, KC_ENT, + KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_BSPC, + KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL + ), + + [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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, KC_TRNS, + KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS, + KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = 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_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [4] = 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_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, MO(5), MO(6), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT( + RGB_TOG, 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_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + +}; diff --git a/keyboards/takashicompany/minidivide_max/keymaps/via/rules.mk b/keyboards/takashicompany/minidivide_max/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/minidivide_max/readme.md b/keyboards/takashicompany/minidivide_max/readme.md new file mode 100644 index 000000000000..1360305f6b8d --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/readme.md @@ -0,0 +1,48 @@ +# miniDivide MAX + +![miniDivide Max](https://i.imgur.com/5xozuXDh.jpg) + +miniDivide MAX is a 56-key segmented keyboard with 16mm spaced key layout. +The keys are 80% the size of conventional keys, making this keyboard suitable for people with small hands as well as those who want to type with minimal finger movement. +The 56-key layout makes it possible to start using this keyboard with a feel similar to a conventional keyboard. +It is also smaller and thinner than a conventional keyboard, making it suitable for carrying around and taking up minimal space when placed on a desk. +The split design allows you to type in a natural position. +In addition, it is also compatible with underglow LEDs and BLE Micro Pro, so it can be reconfigured to suit the case in which it is used. + +--- + +miniDivide MAXは16mm間隔のキー配置を採用した56キーの分割キーボードです。 + +キーが従来の80%の大きさなので、手が小さい人はもちろん最小限の指の移動で文字を打ちたい人に適したキーボードです。 + +56キー配置されているため、従来のキーボードに近い使用感で使い始めることが可能です。 + +また従来のキーボードよりも小さく薄いため持ち運びにも適していますし、デスクに置いた時にスペースが最小限で済むメリットもあります。 + +分割型なため、自然な体勢で文字を打つことができます。 + +その他、アンダーグロウLEDやBLE Micro Proなどにも対応しているため使用ケースにあわせて組み替えることが可能です。 + + + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: miniDivide MAX PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/minidivide_max + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/minidivide_max:default + +Flashing example for this keyboard: + + make takashicompany/minidivide_max: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/takashicompany/minidivide_max/rules.mk b/keyboards/takashicompany/minidivide_max/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/takashicompany/minidivide_max/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 54593975bf58fbf82b712be863aea39e87bc061f Mon Sep 17 00:00:00 2001 From: takashicompany Date: Sat, 30 Mar 2024 12:46:15 +0900 Subject: [PATCH 032/125] Add new keyboard "Rookey" (#22483) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/takashicompany/rookey/info.json | 50 +++++++++++++++++++ .../rookey/keymaps/default/keymap.c | 24 +++++++++ .../rookey/keymaps/default/rules.mk | 1 + .../rookey/keymaps/via/keymap.c | 20 ++++++++ .../rookey/keymaps/via/rules.mk | 2 + keyboards/takashicompany/rookey/readme.md | 43 ++++++++++++++++ keyboards/takashicompany/rookey/rules.mk | 1 + 7 files changed, 141 insertions(+) create mode 100644 keyboards/takashicompany/rookey/info.json create mode 100644 keyboards/takashicompany/rookey/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/rookey/keymaps/default/rules.mk create mode 100644 keyboards/takashicompany/rookey/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/rookey/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/rookey/readme.md create mode 100644 keyboards/takashicompany/rookey/rules.mk diff --git a/keyboards/takashicompany/rookey/info.json b/keyboards/takashicompany/rookey/info.json new file mode 100644 index 000000000000..94733454090c --- /dev/null +++ b/keyboards/takashicompany/rookey/info.json @@ -0,0 +1,50 @@ +{ + "manufacturer": "takashicompany", + "keyboard_name": "Rookey", + "maintainer": "takashicompany", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B4", "pin_b": "E6"} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "B5"] + ] + }, + "url": "https://github.com/takashicompany/rookey", + "usb": { + "device_version": "1.0.0", + "pid": "0x0056", + "vid": "0x7463" + }, + "dynamic_keymap": { + "layer_count": 16 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 0, "y": 1}, + {"matrix": [0, 5], "x": 1, "y": 1}, + {"matrix": [0, 6], "x": 2, "y": 1}, + {"matrix": [0, 7], "x": 3, "y": 1}, + {"matrix": [0, 8], "x": 4, "y": 2} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/rookey/keymaps/default/keymap.c b/keyboards/takashicompany/rookey/keymaps/default/keymap.c new file mode 100644 index 000000000000..a224aaf7ea5d --- /dev/null +++ b/keyboards/takashicompany/rookey/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// 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( + LT(1, KC_Q), KC_W, KC_E, KC_R, + KC_A, KC_S, KC_D, KC_F, + KC_V + ), + [1] = LAYOUT( + _______, 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_1, KC_2) }, + [1] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) } +}; +#endif diff --git a/keyboards/takashicompany/rookey/keymaps/default/rules.mk b/keyboards/takashicompany/rookey/keymaps/default/rules.mk new file mode 100644 index 000000000000..a40474b4d5c7 --- /dev/null +++ b/keyboards/takashicompany/rookey/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/rookey/keymaps/via/keymap.c b/keyboards/takashicompany/rookey/keymaps/via/keymap.c new file mode 100644 index 000000000000..4e1898614590 --- /dev/null +++ b/keyboards/takashicompany/rookey/keymaps/via/keymap.c @@ -0,0 +1,20 @@ +// 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( + KC_Q, KC_W, KC_E, KC_R, + KC_A, KC_S, KC_D, KC_F, + KC_V + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + + [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) } +}; +#endif \ No newline at end of file diff --git a/keyboards/takashicompany/rookey/keymaps/via/rules.mk b/keyboards/takashicompany/rookey/keymaps/via/rules.mk new file mode 100644 index 000000000000..6ccd6d91943d --- /dev/null +++ b/keyboards/takashicompany/rookey/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/rookey/readme.md b/keyboards/takashicompany/rookey/readme.md new file mode 100644 index 000000000000..f9393ca22002 --- /dev/null +++ b/keyboards/takashicompany/rookey/readme.md @@ -0,0 +1,43 @@ +# Rookey + +![takashicompany/rookey](https://i.imgur.com/kLQDeZZh.jpg) + +Rookey, as the name implies, is a DIY keyboard "Rookie" creation. + +With its small number of parts and simple structure, it can be easily completed even by first-time assemblers. + +Despite its small size, it can be used as a 9-key macro pad, and a rotary encoder can also be attached. + +It can be used not only as a first unit, but also as a long-lasting unit. + +--- + +Rookeyは名前の通り、DIYキーボードの"Rookie"のために作られた一作です。 + +部品数が少なく、構造がシンプルなため初めて組み立てる人でも容易に完成させることができます。 + +小さいながらも9キーのマクロパッドとして使用ができる上に、ロータリーエンコーダの取り付けも可能です。 + +初めての一台としてはもちろん、永く使い続ける一台としても愛用することができます。 + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: Rookey PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/rookey + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/rookey:default + +Flashing example for this keyboard: + + make takashicompany/rookey: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/takashicompany/rookey/rules.mk b/keyboards/takashicompany/rookey/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/takashicompany/rookey/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 6dbc1b800fdcdc3af508886660808f0a7623e41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Strza=C5=82ka?= <32881628+philvec@users.noreply.github.com> Date: Sat, 30 Mar 2024 18:48:50 +0100 Subject: [PATCH 033/125] [Keyboard] add arrowmechanics/wings (#23328) Co-authored-by: Arrow Mechanics Co-authored-by: Joel Challis Co-authored-by: Drashna Jaelre --- keyboards/arrowmechanics/wings/config.h | 11 + keyboards/arrowmechanics/wings/halconf.h | 9 + keyboards/arrowmechanics/wings/info.json | 320 ++++++++++++++++++ .../wings/keymaps/default/keymap.c | 25 ++ .../wings/keymaps/default/rules.mk | 1 + keyboards/arrowmechanics/wings/mcuconf.h | 9 + keyboards/arrowmechanics/wings/readme.md | 29 ++ keyboards/arrowmechanics/wings/rules.mk | 2 + 8 files changed, 406 insertions(+) create mode 100644 keyboards/arrowmechanics/wings/config.h create mode 100644 keyboards/arrowmechanics/wings/halconf.h create mode 100644 keyboards/arrowmechanics/wings/info.json create mode 100644 keyboards/arrowmechanics/wings/keymaps/default/keymap.c create mode 100644 keyboards/arrowmechanics/wings/keymaps/default/rules.mk create mode 100644 keyboards/arrowmechanics/wings/mcuconf.h create mode 100644 keyboards/arrowmechanics/wings/readme.md create mode 100644 keyboards/arrowmechanics/wings/rules.mk diff --git a/keyboards/arrowmechanics/wings/config.h b/keyboards/arrowmechanics/wings/config.h new file mode 100644 index 000000000000..bd58c470034c --- /dev/null +++ b/keyboards/arrowmechanics/wings/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Filip Strzałka (@philvec) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX + +#define AUDIO_PIN GP4 +#define AUDIO_PWM_DRIVER PWMD2 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A +#define AUDIO_INIT_DELAY diff --git a/keyboards/arrowmechanics/wings/halconf.h b/keyboards/arrowmechanics/wings/halconf.h new file mode 100644 index 000000000000..772f79821649 --- /dev/null +++ b/keyboards/arrowmechanics/wings/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Filip Strzałka (@philvec) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include_next + +#undef HAL_USE_PWM +#define HAL_USE_PWM TRUE diff --git a/keyboards/arrowmechanics/wings/info.json b/keyboards/arrowmechanics/wings/info.json new file mode 100644 index 000000000000..fca38314c9b8 --- /dev/null +++ b/keyboards/arrowmechanics/wings/info.json @@ -0,0 +1,320 @@ +{ + "manufacturer": "Arrow Mechanics", + "keyboard_name": "WINGS Mark 1", + "maintainer": "arrowmechanics", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "GP6", "pin_b": "GP7", "resolution": 2} + ] + }, + "features": { + "audio": true, + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16"], + "rows": ["GP22", "GP21", "GP20", "GP19", "GP18", "GP17"] + }, + "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 + }, + "default": { + "animation": "breathing", + "hue": 192 + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 7], "x": 93, "y": 2, "flags": 4}, + {"matrix": [0, 6], "x": 80, "y": 1, "flags": 4}, + {"matrix": [0, 5], "x": 67, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 54, "y": 1, "flags": 4}, + {"matrix": [0, 3], "x": 42, "y": 3, "flags": 4}, + {"matrix": [0, 2], "x": 29, "y": 5, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 5, "flags": 4}, + {"matrix": [0, 0], "x": 3, "y": 5, "flags": 4}, + + {"matrix": [1, 0], "x": 3, "y": 17, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 17, "flags": 4}, + {"matrix": [1, 2], "x": 29, "y": 17, "flags": 4}, + {"matrix": [1, 3], "x": 42, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 54, "y": 13, "flags": 4}, + {"matrix": [1, 5], "x": 67, "y": 12, "flags": 4}, + {"matrix": [1, 6], "x": 80, "y": 13, "flags": 4}, + {"matrix": [1, 7], "x": 93, "y": 14, "flags": 4}, + + {"matrix": [2, 8], "x": 106, "y": 25, "flags": 4}, + {"matrix": [2, 7], "x": 93, "y": 25, "flags": 4}, + {"matrix": [2, 6], "x": 80, "y": 25, "flags": 4}, + {"matrix": [2, 5], "x": 67, "y": 24, "flags": 4}, + {"matrix": [2, 4], "x": 54, "y": 25, "flags": 4}, + {"matrix": [2, 3], "x": 42, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 26, "y": 29, "flags": 4}, + {"matrix": [2, 0], "x": 6, "y": 29, "flags": 4}, + + {"matrix": [3, 0], "x": 3, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 22, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 42, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 54, "y": 36, "flags": 4}, + {"matrix": [3, 5], "x": 67, "y": 35, "flags": 4}, + {"matrix": [3, 6], "x": 80, "y": 36, "flags": 4}, + {"matrix": [3, 7], "x": 93, "y": 37, "flags": 4}, + {"matrix": [3, 8], "x": 106, "y": 37, "flags": 4}, + + {"matrix": [4, 8], "x": 106, "y": 49, "flags": 4}, + {"matrix": [4, 7], "x": 93, "y": 49, "flags": 4}, + {"matrix": [4, 6], "x": 80, "y": 48, "flags": 4}, + {"matrix": [4, 5], "x": 67, "y": 47, "flags": 4}, + {"matrix": [4, 4], "x": 54, "y": 48, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 50, "flags": 4}, + {"matrix": [4, 1], "x": 21, "y": 52, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 52, "flags": 4}, + + {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 1], "x": 13, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 26, "y": 64, "flags": 4}, + {"matrix": [5, 3], "x": 43, "y": 62, "flags": 4}, + {"matrix": [5, 4], "x": 59, "y": 60, "flags": 4}, + {"matrix": [5, 6], "x": 75, "y": 60, "flags": 4}, + {"matrix": [5, 7], "x": 98, "y": 61, "flags": 4}, + + {"matrix": [6, 1], "x": 131, "y": 2, "flags": 4}, + {"matrix": [6, 2], "x": 144, "y": 1, "flags": 4}, + {"matrix": [6, 3], "x": 157, "y": 0, "flags": 4}, + {"matrix": [6, 4], "x": 170, "y": 1, "flags": 4}, + {"matrix": [6, 5], "x": 182, "y": 3, "flags": 4}, + {"matrix": [6, 6], "x": 195, "y": 5, "flags": 4}, + {"matrix": [6, 7], "x": 208, "y": 5, "flags": 4}, + {"matrix": [6, 8], "x": 221, "y": 5, "flags": 4}, + + {"matrix": [7, 8], "x": 214, "y": 17, "flags": 4}, + {"matrix": [7, 6], "x": 195, "y": 17, "flags": 4}, + {"matrix": [7, 5], "x": 182, "y": 15, "flags": 4}, + {"matrix": [7, 4], "x": 170, "y": 13, "flags": 4}, + {"matrix": [7, 3], "x": 157, "y": 12, "flags": 4}, + {"matrix": [7, 2], "x": 144, "y": 13, "flags": 4}, + {"matrix": [7, 1], "x": 131, "y": 14, "flags": 4}, + + {"matrix": [8, 0], "x": 118, "y": 25, "flags": 4}, + {"matrix": [8, 1], "x": 131, "y": 25, "flags": 4}, + {"matrix": [8, 2], "x": 144, "y": 25, "flags": 4}, + {"matrix": [8, 3], "x": 157, "y": 24, "flags": 4}, + {"matrix": [8, 4], "x": 170, "y": 25, "flags": 4}, + {"matrix": [8, 5], "x": 182, "y": 27, "flags": 4}, + {"matrix": [8, 6], "x": 195, "y": 29, "flags": 4}, + {"matrix": [8, 7], "x": 208, "y": 29, "flags": 4}, + {"matrix": [8, 8], "x": 221, "y": 29, "flags": 4}, + + {"matrix": [9, 8], "x": 216, "y": 40, "flags": 4}, + {"matrix": [9, 6], "x": 195, "y": 40, "flags": 4}, + {"matrix": [9, 5], "x": 182, "y": 38, "flags": 4}, + {"matrix": [9, 4], "x": 170, "y": 36, "flags": 4}, + {"matrix": [9, 3], "x": 157, "y": 35, "flags": 4}, + {"matrix": [9, 2], "x": 144, "y": 36, "flags": 4}, + {"matrix": [9, 1], "x": 131, "y": 37, "flags": 4}, + {"matrix": [9, 0], "x": 118, "y": 37, "flags": 4}, + + {"matrix": [10, 0], "x": 118, "y": 49, "flags": 4}, + {"matrix": [10, 1], "x": 131, "y": 49, "flags": 4}, + {"matrix": [10, 2], "x": 144, "y": 48, "flags": 4}, + {"matrix": [10, 3], "x": 157, "y": 47, "flags": 4}, + {"matrix": [10, 4], "x": 170, "y": 48, "flags": 4}, + {"matrix": [10, 5], "x": 182, "y": 50, "flags": 4}, + {"matrix": [10, 6], "x": 197, "y": 52, "flags": 4}, + {"matrix": [10, 7], "x": 211, "y": 52, "flags": 4}, + {"matrix": [10, 8], "x": 224, "y": 52, "flags": 4}, + + {"matrix": [11, 8], "x": 224, "y": 64, "flags": 4}, + {"matrix": [11, 7], "x": 211, "y": 64, "flags": 4}, + {"matrix": [11, 6], "x": 198, "y": 64, "flags": 4}, + {"matrix": [11, 5], "x": 181, "y": 62, "flags": 4}, + {"matrix": [11, 4], "x": 165, "y": 60, "flags": 4}, + {"matrix": [11, 2], "x": 149, "y": 60, "flags": 4}, + {"matrix": [11, 1], "x": 126, "y": 61, "flags": 4} + ], + "split_count": [47, 48] + }, + "split": { + "enabled": true, + "transport": { + "sync": { + "layer_state": true, + "matrix_state": true + } + } + }, + "tags": ["columnar", "split", "rgb", "hotswap", "encoder"], + "url": "https://arrowmechanics.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x3134", + "vid": "0xA880" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP26" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0.25, "y": 0.43}, + {"matrix": [0, 1], "x": 1.25, "y": 0.43}, + {"matrix": [0, 2], "x": 2.25, "y": 0.43}, + {"matrix": [0, 3], "x": 3.25, "y": 0.25}, + {"matrix": [0, 4], "x": 4.25, "y": 0.08}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0.08}, + {"matrix": [0, 7], "x": 7.25, "y": 0.15}, + + {"matrix": [6, 1], "x": 10.45, "y": 0.15}, + {"matrix": [6, 2], "x": 11.45, "y": 0.08}, + {"matrix": [6, 3], "x": 12.45, "y": 0}, + {"matrix": [6, 4], "x": 13.45, "y": 0.08}, + {"matrix": [6, 5], "x": 14.45, "y": 0.25}, + {"matrix": [6, 6], "x": 15.45, "y": 0.43}, + {"matrix": [6, 7], "x": 16.45, "y": 0.43}, + {"matrix": [6, 8], "x": 17.45, "y": 0.43}, + + {"matrix": [1, 0], "x": 0.25, "y": 1.43}, + {"matrix": [1, 1], "x": 1.25, "y": 1.43}, + {"matrix": [1, 2], "x": 2.25, "y": 1.43}, + {"matrix": [1, 3], "x": 3.25, "y": 1.25}, + {"matrix": [1, 4], "x": 4.25, "y": 1.08}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1.08}, + {"matrix": [1, 7], "x": 7.25, "y": 1.15}, + {"matrix": [1, 8], "x": 8.25, "y": 1.15, "encoder": 0}, + + {"matrix": [7, 0], "x": 9.45, "y": 1.15}, + {"matrix": [7, 1], "x": 10.45, "y": 1.15}, + {"matrix": [7, 2], "x": 11.45, "y": 1.08}, + {"matrix": [7, 3], "x": 12.45, "y": 1}, + {"matrix": [7, 4], "x": 13.45, "y": 1.08}, + {"matrix": [7, 5], "x": 14.45, "y": 1.25}, + {"matrix": [7, 6], "x": 15.45, "y": 1.43}, + {"matrix": [7, 8], "x": 16.45, "y": 1.43, "w": 2}, + + {"matrix": [2, 0], "x": 0.25, "y": 2.43, "w": 1.5}, + {"matrix": [2, 2], "x": 1.75, "y": 2.43, "w": 1.5}, + {"matrix": [2, 3], "x": 3.25, "y": 2.25}, + {"matrix": [2, 4], "x": 4.25, "y": 2.08}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2.08}, + {"matrix": [2, 7], "x": 7.25, "y": 2.15}, + {"matrix": [2, 8], "x": 8.25, "y": 2.15}, + + {"matrix": [8, 0], "x": 9.45, "y": 2.15}, + {"matrix": [8, 1], "x": 10.45, "y": 2.15}, + {"matrix": [8, 2], "x": 11.45, "y": 2.08}, + {"matrix": [8, 3], "x": 12.45, "y": 2}, + {"matrix": [8, 4], "x": 13.45, "y": 2.08}, + {"matrix": [8, 5], "x": 14.45, "y": 2.25}, + {"matrix": [8, 6], "x": 15.45, "y": 2.43}, + {"matrix": [8, 7], "x": 16.45, "y": 2.43}, + {"matrix": [8, 8], "x": 17.45, "y": 2.43}, + + {"matrix": [3, 0], "x": 0, "y": 3.43, "w": 1.5}, + {"matrix": [3, 2], "x": 1.5, "y": 3.43, "w": 1.75}, + {"matrix": [3, 3], "x": 3.25, "y": 3.25}, + {"matrix": [3, 4], "x": 4.25, "y": 3.08}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3.08}, + {"matrix": [3, 7], "x": 7.25, "y": 3.15}, + {"matrix": [3, 8], "x": 8.25, "y": 3.15}, + + {"matrix": [9, 0], "x": 9.45, "y": 3.15}, + {"matrix": [9, 1], "x": 10.45, "y": 3.15}, + {"matrix": [9, 2], "x": 11.45, "y": 3.08}, + {"matrix": [9, 3], "x": 12.45, "y": 3}, + {"matrix": [9, 4], "x": 13.45, "y": 3.08}, + {"matrix": [9, 5], "x": 14.45, "y": 3.25}, + {"matrix": [9, 6], "x": 15.45, "y": 3.43}, + {"matrix": [9, 8], "x": 16.45, "y": 3.43, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.43}, + {"matrix": [4, 1], "x": 1, "y": 4.43, "w": 2.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.08}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4.08}, + {"matrix": [4, 7], "x": 7.25, "y": 4.15}, + {"matrix": [4, 8], "x": 8.25, "y": 4.15}, + + {"matrix": [10, 0], "x": 9.45, "y": 4.15}, + {"matrix": [10, 1], "x": 10.45, "y": 4.15}, + {"matrix": [10, 2], "x": 11.45, "y": 4.08}, + {"matrix": [10, 3], "x": 12.45, "y": 4}, + {"matrix": [10, 4], "x": 13.45, "y": 4.08}, + {"matrix": [10, 5], "x": 14.45, "y": 4.25}, + {"matrix": [10, 6], "x": 15.45, "y": 4.43, "w": 1.25}, + {"matrix": [10, 7], "x": 16.7, "y": 4.43}, + {"matrix": [10, 8], "x": 17.7, "y": 4.43}, + + {"matrix": [5, 0], "x": 0, "y": 5.43}, + {"matrix": [5, 1], "x": 1, "y": 5.43}, + {"matrix": [5, 2], "x": 2, "y": 5.43}, + {"matrix": [5, 3], "x": 3.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 4], "x": 4.5, "y": 5.08, "w": 1.25}, + {"matrix": [5, 6], "x": 5.75, "y": 5.08, "w": 1.25}, + {"matrix": [5, 7], "x": 7, "y": 5.15, "w": 2.25}, + + {"matrix": [11, 1], "x": 9.45, "y": 5.15, "w": 2.25}, + {"matrix": [11, 2], "x": 11.7, "y": 5.08, "w": 1.25}, + {"matrix": [11, 4], "x": 12.95, "y": 5.08, "w": 1.25}, + {"matrix": [11, 5], "x": 14.2, "y": 5.25, "w": 1.25}, + {"matrix": [11, 6], "x": 15.7, "y": 5.43}, + {"matrix": [11, 7], "x": 16.7, "y": 5.43}, + {"matrix": [11, 8], "x": 17.7, "y": 5.43} + ] + } + } +} diff --git a/keyboards/arrowmechanics/wings/keymaps/default/keymap.c b/keyboards/arrowmechanics/wings/keymaps/default/keymap.c new file mode 100644 index 000000000000..949219b820bf --- /dev/null +++ b/keyboards/arrowmechanics/wings/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2024 Filip Strzałka (@philvec) +// SPDX-License-Identifier: GPL-3.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + BASE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT( + KC_VOLU, 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_EQL, KC_PSCR, KC_DEL, + KC_VOLD, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, RGB_MOD, KC_BTN1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, + KC_MPLY, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, C(KC_C), C(KC_V), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_MNXT, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, C(KC_Z), C(KC_Y), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_MPRV, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_HOME, + KC_LCTL, KC_NO, KC_NO, KC_LCTL, KC_LCMD, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCMD, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [BASE] = { ENCODER_CCW_CW(RGB_HUI, RGB_HUD), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, +}; +#endif diff --git a/keyboards/arrowmechanics/wings/keymaps/default/rules.mk b/keyboards/arrowmechanics/wings/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/arrowmechanics/wings/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/arrowmechanics/wings/mcuconf.h b/keyboards/arrowmechanics/wings/mcuconf.h new file mode 100644 index 000000000000..80214c1bbd8e --- /dev/null +++ b/keyboards/arrowmechanics/wings/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Filip Strzałka (@philvec) +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM2 +#define RP_PWM_USE_PWM2 TRUE diff --git a/keyboards/arrowmechanics/wings/readme.md b/keyboards/arrowmechanics/wings/readme.md new file mode 100644 index 000000000000..8f167174e3db --- /dev/null +++ b/keyboards/arrowmechanics/wings/readme.md @@ -0,0 +1,29 @@ +# Arrow Mechanics WINGS Mark 1 + +![Arrow Mechanics WINGS Mark 1](https://i.imgur.com/oQkDmSu.png) + +ErgoDox-inspired SPLIT keyboard by [Arrow Mechanics](https://www.arrowmechanics.com/) + +* 94 GATERON Low Profile 2.0 hotswap sockets +* RGB diode under each key for WS2812-driven lighting with [RGB Matrix](https://docs.qmk.fm/#/feature_rgb_matrix) +* 2 rotary encoders, one per half, with push-switches +* Buzzers for sound effects and/or [Music Mode](https://docs.qmk.fm/#/feature_audio?id=music-mode) +* Handy magnetic connectors for joining the halves together or splitting with the use of dedicated cable +* Anti-slip pads with magnetic expanding-legs for conveniently adjusting height/lean +* RP2040 Chip + 16MB Flash memory - Dual-core Cortex M0+ +--- +* Keyboard Maintainer: [arrowmechanics](https://github.com/arrowmechanics/) +* Hardware Supported: [Arrow Mechanics WINGS Keyboard set](https://www.arrowmechanics.com/produkty?view=product&id=8) +* Hardware Availability: [Official Arrow Mechanics E-SHOP](https://www.arrowmechanics.com/produkty?view=product&id=8) + +Flashing example for this keyboard: + + qmk flash -kb arrowmechanics/wings -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: +* **Bootmagic reset**: Hold down the top-left corner key on power-up. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/arrowmechanics/wings/rules.mk b/keyboards/arrowmechanics/wings/rules.mk new file mode 100644 index 000000000000..22ce54190c8f --- /dev/null +++ b/keyboards/arrowmechanics/wings/rules.mk @@ -0,0 +1,2 @@ +SERIAL_DRIVER = vendor +AUDIO_DRIVER = pwm_hardware From 72ec742d2c35b364d8756109e552abaf62298b08 Mon Sep 17 00:00:00 2001 From: c0ldbru Date: Sat, 30 Mar 2024 13:52:40 -0400 Subject: [PATCH 034/125] [Keyboard] Add rot13labs hackboard (#23218) Co-authored-by: c0ldbru Co-authored-by: Duncan Sutherland --- keyboards/rot13labs/hackboard/info.json | 132 ++++++++++++++++++ .../hackboard/keymaps/default/keymap.c | 36 +++++ keyboards/rot13labs/hackboard/readme.md | 22 +++ keyboards/rot13labs/hackboard/rules.mk | 2 + 4 files changed, 192 insertions(+) create mode 100644 keyboards/rot13labs/hackboard/info.json create mode 100644 keyboards/rot13labs/hackboard/keymaps/default/keymap.c create mode 100644 keyboards/rot13labs/hackboard/readme.md create mode 100644 keyboards/rot13labs/hackboard/rules.mk diff --git a/keyboards/rot13labs/hackboard/info.json b/keyboards/rot13labs/hackboard/info.json new file mode 100644 index 000000000000..7ed0b5bd97a5 --- /dev/null +++ b/keyboards/rot13labs/hackboard/info.json @@ -0,0 +1,132 @@ +{ + "keyboard_name": "HACKBOARD", + "manufacturer": "rot13labs", + "url": "https://rot13labs.com", + "maintainer": "c0ldbru", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": false, + "nkro": false + }, + "usb": { + "vid": "0xBEEF", + "pid": "0xCAFE", + "device_version": "1.0.0" + }, + "matrix_pins": { + "cols": ["A0", "B0", "A1", "B1", "A2", "B2", "A3", "B3", "A4", "B4", "A5", "A6", "A7", "D6", "D5", "D1", "D0", "D7"], + "rows": ["C2", "C3", "C7", "C4", "C6", "C5"] + }, + "diode_direction": "COL2ROW", + "processor": "atmega32a", + "bootloader": "usbasploader", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 1], "x": 6, "y": 0, "w": 0.75, "h": 0.75}, + + {"matrix": [0, 0], "x": 0, "y": 1}, + + {"matrix": [0, 2], "x": 2, "y": 1}, + {"matrix": [0, 3], "x": 3, "y": 1}, + {"matrix": [0, 4], "x": 4, "y": 1}, + {"matrix": [0, 5], "x": 5, "y": 1}, + + {"matrix": [0, 6], "x": 6.5, "y": 1}, + {"matrix": [0, 7], "x": 7.5, "y": 1}, + {"matrix": [0, 8], "x": 8.5, "y": 1}, + {"matrix": [0, 9], "x": 9.5, "y": 1}, + + {"matrix": [0, 11], "x": 11, "y": 1}, + {"matrix": [0, 12], "x": 12, "y": 1}, + {"matrix": [0, 13], "x": 13, "y": 1}, + {"matrix": [0, 14], "x": 14, "y": 1}, + + {"matrix": [0, 15], "x": 15.25, "y": 1}, + {"matrix": [0, 16], "x": 16.25, "y": 1}, + {"matrix": [0, 17], "x": 17.25, "y": 1}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2, "y": 2.25}, + {"matrix": [1, 3], "x": 3, "y": 2.25}, + {"matrix": [1, 4], "x": 4, "y": 2.25}, + {"matrix": [1, 5], "x": 5, "y": 2.25}, + {"matrix": [1, 6], "x": 6, "y": 2.25}, + {"matrix": [1, 7], "x": 7, "y": 2.25}, + {"matrix": [1, 8], "x": 8, "y": 2.25}, + {"matrix": [1, 9], "x": 9, "y": 2.25}, + {"matrix": [1, 10], "x": 10, "y": 2.25}, + {"matrix": [1, 11], "x": 11, "y": 2.25}, + {"matrix": [1, 12], "x": 12, "y": 2.25}, + {"matrix": [1, 13], "x": 13, "y": 2.25, "w": 2}, + + {"matrix": [1, 15], "x": 15.25, "y": 2.25}, + {"matrix": [1, 16], "x": 16.25, "y": 2.25}, + {"matrix": [1, 17], "x": 17.25, "y": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 3.25}, + {"matrix": [2, 2], "x": 2.5, "y": 3.25}, + {"matrix": [2, 3], "x": 3.5, "y": 3.25}, + {"matrix": [2, 4], "x": 4.5, "y": 3.25}, + {"matrix": [2, 5], "x": 5.5, "y": 3.25}, + {"matrix": [2, 6], "x": 6.5, "y": 3.25}, + {"matrix": [2, 7], "x": 7.5, "y": 3.25}, + {"matrix": [2, 8], "x": 8.5, "y": 3.25}, + {"matrix": [2, 9], "x": 9.5, "y": 3.25}, + {"matrix": [2, 10], "x": 10.5, "y": 3.25}, + {"matrix": [2, 11], "x": 11.5, "y": 3.25}, + {"matrix": [2, 12], "x": 12.5, "y": 3.25}, + {"matrix": [2, 13], "x": 13.5, "y": 3.25, "w": 1.5}, + + {"matrix": [2, 15], "x": 15.25, "y": 3.25}, + {"matrix": [2, 16], "x": 16.25, "y": 3.25}, + {"matrix": [2, 17], "x": 17.25, "y": 3.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 4.25}, + {"matrix": [3, 2], "x": 2.75, "y": 4.25}, + {"matrix": [3, 3], "x": 3.75, "y": 4.25}, + {"matrix": [3, 4], "x": 4.75, "y": 4.25}, + {"matrix": [3, 5], "x": 5.75, "y": 4.25}, + {"matrix": [3, 6], "x": 6.75, "y": 4.25}, + {"matrix": [3, 7], "x": 7.75, "y": 4.25}, + {"matrix": [3, 8], "x": 8.75, "y": 4.25}, + {"matrix": [3, 9], "x": 9.75, "y": 4.25}, + {"matrix": [3, 10], "x": 10.75, "y": 4.25}, + {"matrix": [3, 11], "x": 11.75, "y": 4.25}, + {"matrix": [3, 13], "x": 12.75, "y": 4.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 5.25}, + {"matrix": [4, 2], "x": 3.25, "y": 5.25}, + {"matrix": [4, 3], "x": 4.25, "y": 5.25}, + {"matrix": [4, 4], "x": 5.25, "y": 5.25}, + {"matrix": [4, 5], "x": 6.25, "y": 5.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25}, + {"matrix": [4, 8], "x": 9.25, "y": 5.25}, + {"matrix": [4, 9], "x": 10.25, "y": 5.25}, + {"matrix": [4, 10], "x": 11.25, "y": 5.25}, + {"matrix": [4, 13], "x": 12.25, "y": 5.25, "w": 2.75}, + + {"matrix": [4, 16], "x": 16.25, "y": 5.25}, + + {"matrix": [5, 0], "x": 0, "y": 6.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 6.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 6.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 6.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 6.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 6.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 6.25, "w": 1.25}, + {"matrix": [5, 14], "x": 13.75, "y": 6.25, "w": 1.25}, + + {"matrix": [5, 15], "x": 15.25, "y": 6.25}, + {"matrix": [5, 16], "x": 16.25, "y": 6.25}, + {"matrix": [5, 17], "x": 17.25, "y": 6.25} + ] + } + } +} diff --git a/keyboards/rot13labs/hackboard/keymaps/default/keymap.c b/keyboards/rot13labs/hackboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..542d541bf315 --- /dev/null +++ b/keyboards/rot13labs/hackboard/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2023 rot13labs + * + * 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_NO, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_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(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT( + KC_NO, + _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______, + _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______) +}; diff --git a/keyboards/rot13labs/hackboard/readme.md b/keyboards/rot13labs/hackboard/readme.md new file mode 100644 index 000000000000..c14b742326c2 --- /dev/null +++ b/keyboards/rot13labs/hackboard/readme.md @@ -0,0 +1,22 @@ +# HACKBOARD + +![hackboard](https://i.imgur.com/te8feiB.png) + +A TKL keyboard for hackers based on the mysterium platform by coseyfannitutti + +* Keyboard Maintainer: [c0ldbru](https://github.com/c0ldbru) +* Hardware Supported: HACKBOARD // atmega32a +* Hardware Availability: [rot13labs](https://rot13labs.com) + +Make example for this keyboard (after setting up your build environment): + + make rot13labs/hackboard:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +You can enter the bootloader to flash on new firmware in one of two ways: + +* **Bootmagic**: Hold the ESC key (top left key) and hit reset +* **Boot button**: Hold the boot button on the top of the PCB and hit reset \ No newline at end of file diff --git a/keyboards/rot13labs/hackboard/rules.mk b/keyboards/rot13labs/hackboard/rules.mk new file mode 100644 index 000000000000..c2ee0bc86f97 --- /dev/null +++ b/keyboards/rot13labs/hackboard/rules.mk @@ -0,0 +1,2 @@ +# Processor frequency +F_CPU = 16000000 From e9f187f612840d687ddfe070c2a1fef470676aed Mon Sep 17 00:00:00 2001 From: Joy Lee Date: Sun, 31 Mar 2024 09:07:03 +0800 Subject: [PATCH 035/125] [Keyboard] Add skiller_skg50_s2 (#23364) Co-authored-by: wb Co-authored-by: Duncan Sutherland Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/sharkoon/skiller_sgk50_s2/config.h | 13 + keyboards/sharkoon/skiller_sgk50_s2/halconf.h | 10 + keyboards/sharkoon/skiller_sgk50_s2/info.json | 515 ++++++++++++++++++ .../skiller_sgk50_s2/keymaps/default/keymap.c | 25 + .../skiller_sgk50_s2/keymaps/via/keymap.c | 25 + .../skiller_sgk50_s2/keymaps/via/rules.mk | 1 + keyboards/sharkoon/skiller_sgk50_s2/mcuconf.h | 9 + keyboards/sharkoon/skiller_sgk50_s2/readme.md | 24 + keyboards/sharkoon/skiller_sgk50_s2/rules.mk | 1 + 9 files changed, 623 insertions(+) create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/config.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/halconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/info.json create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/keymaps/default/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/rules.mk create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/mcuconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/readme.md create mode 100644 keyboards/sharkoon/skiller_sgk50_s2/rules.mk diff --git a/keyboards/sharkoon/skiller_sgk50_s2/config.h b/keyboards/sharkoon/skiller_sgk50_s2/config.h new file mode 100644 index 000000000000..1d0f8f9a9016 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/config.h @@ -0,0 +1,13 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* 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 diff --git a/keyboards/sharkoon/skiller_sgk50_s2/halconf.h b/keyboards/sharkoon/skiller_sgk50_s2/halconf.h new file mode 100644 index 000000000000..9d456a5106fa --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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/sharkoon/skiller_sgk50_s2/info.json b/keyboards/sharkoon/skiller_sgk50_s2/info.json new file mode 100644 index 000000000000..39d59ffa55a7 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/info.json @@ -0,0 +1,515 @@ +{ + "manufacturer": "Sharkoon Technologies GmbH", + "keyboard_name": "SKILLER SGK50 S2", + "maintainer": "JoyLee", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "backing_size": 4096, + "driver": "spi_flash" + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "A6", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7", "C8", "C9", "C4", "C5", "B0"], + "rows": ["A0", "A1", "A2", "A3", "A4", "C13"] + }, + "processor": "WB32FQ95", + "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 + }, + "default": { + "val": 80 + }, + "driver": "ws2812", + "layout": [ + {"matrix": [5, 6], "x": 75, "y": 64, "flags": 4}, + {"matrix": [5, 10], "x": 124, "y": 64, "flags": 1}, + {"matrix": [5, 11], "x": 137, "y": 64, "flags": 1}, + {"matrix": [5, 12], "x": 149, "y": 64, "flags": 1}, + {"matrix": [5, 13], "x": 162, "y": 64, "flags": 4}, + {"matrix": [5, 14], "x": 174, "y": 64, "flags": 4}, + {"matrix": [5, 15], "x": 187, "y": 64, "flags": 4}, + {"matrix": [5, 16], "x": 199, "y": 64, "flags": 4}, + {"matrix": [5, 17], "x": 212, "y": 64, "flags": 4}, + {"matrix": [4, 18], "x": 224, "y": 51, "flags": 4}, + {"matrix": [4, 17], "x": 212, "y": 51, "flags": 4}, + {"matrix": [4, 16], "x": 199, "y": 51, "flags": 4}, + {"matrix": [4, 15], "x": 187, "y": 51, "flags": 4}, + {"matrix": [4, 14], "x": 174, "y": 51, "flags": 4}, + {"matrix": [4, 12], "x": 149, "y": 51, "flags": 4}, + {"matrix": [4, 11], "x": 137, "y": 51, "flags": 4}, + {"matrix": [4, 10], "x": 124, "y": 51, "flags": 4}, + {"matrix": [4, 9], "x": 112, "y": 51, "flags": 4}, + {"matrix": [4, 8], "x": 100, "y": 51, "flags": 4}, + {"matrix": [4, 7], "x": 87, "y": 51, "flags": 4}, + {"matrix": [4, 6], "x": 75, "y": 51, "flags": 4}, + {"matrix": [4, 5], "x": 62, "y": 51, "flags": 4}, + {"matrix": [4, 4], "x": 50, "y": 51, "flags": 4}, + {"matrix": [4, 3], "x": 37, "y": 51, "flags": 4}, + {"matrix": [4, 2], "x": 25, "y": 51, "flags": 4}, + {"matrix": [3, 2], "x": 25, "y": 38, "flags": 4}, + {"matrix": [3, 3], "x": 37, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 50, "y": 38, "flags": 4}, + {"matrix": [3, 5], "x": 62, "y": 38, "flags": 4}, + {"matrix": [3, 6], "x": 75, "y": 38, "flags": 4}, + {"matrix": [3, 7], "x": 87, "y": 38, "flags": 4}, + {"matrix": [3, 8], "x": 100, "y": 38, "flags": 4}, + {"matrix": [3, 9], "x": 112, "y": 38, "flags": 4}, + {"matrix": [3, 10], "x": 124, "y": 38, "flags": 4}, + {"matrix": [3, 11], "x": 137, "y": 38, "flags": 4}, + {"matrix": [3, 12], "x": 149, "y": 38, "flags": 4}, + {"matrix": [2, 13], "x": 162, "y": 38, "flags": 4}, + {"x": 162, "y": 38, "flags": 4}, + {"matrix": [3, 15], "x": 187, "y": 38, "flags": 4}, + {"matrix": [3, 16], "x": 199, "y": 38, "flags": 4}, + {"matrix": [3, 17], "x": 212, "y": 38, "flags": 4}, + {"matrix": [2, 18], "x": 224, "y": 26, "flags": 4}, + {"matrix": [2, 17], "x": 212, "y": 26, "flags": 4}, + {"matrix": [2, 16], "x": 199, "y": 26, "flags": 4}, + {"matrix": [2, 15], "x": 187, "y": 26, "flags": 4}, + {"x": 162, "y": 26, "flags": 4}, + {"matrix": [3, 13], "x": 162, "y": 26, "flags": 4}, + {"matrix": [2, 12], "x": 149, "y": 26, "flags": 4}, + {"matrix": [2, 11], "x": 137, "y": 26, "flags": 4}, + {"matrix": [2, 10], "x": 124, "y": 26, "flags": 4}, + {"matrix": [2, 9], "x": 112, "y": 26, "flags": 4}, + {"matrix": [2, 8], "x": 100, "y": 26, "flags": 4}, + {"matrix": [2, 7], "x": 87, "y": 26, "flags": 4}, + {"matrix": [2, 6], "x": 75, "y": 26, "flags": 4}, + {"matrix": [2, 5], "x": 62, "y": 26, "flags": 4}, + {"matrix": [2, 4], "x": 50, "y": 26, "flags": 4}, + {"matrix": [2, 3], "x": 37, "y": 26, "flags": 4}, + {"matrix": [2, 2], "x": 25, "y": 26, "flags": 4}, + {"matrix": [2, 1], "x": 12, "y": 26, "flags": 4}, + {"matrix": [1, 1], "x": 12, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 25, "y": 13, "flags": 4}, + {"matrix": [1, 3], "x": 37, "y": 13, "flags": 4}, + {"matrix": [1, 4], "x": 50, "y": 13, "flags": 4}, + {"matrix": [1, 5], "x": 62, "y": 13, "flags": 4}, + {"matrix": [1, 6], "x": 75, "y": 13, "flags": 4}, + {"matrix": [1, 7], "x": 87, "y": 13, "flags": 4}, + {"matrix": [1, 8], "x": 100, "y": 13, "flags": 4}, + {"matrix": [1, 9], "x": 112, "y": 13, "flags": 4}, + {"matrix": [1, 10], "x": 124, "y": 13, "flags": 4}, + {"matrix": [1, 11], "x": 137, "y": 13, "flags": 4}, + {"matrix": [1, 12], "x": 149, "y": 13, "flags": 4}, + {"matrix": [1, 13], "x": 162, "y": 13, "flags": 4}, + {"matrix": [1, 15], "x": 187, "y": 13, "flags": 4}, + {"matrix": [1, 16], "x": 199, "y": 13, "flags": 4}, + {"matrix": [1, 17], "x": 212, "y": 13, "flags": 4}, + {"matrix": [1, 18], "x": 224, "y": 13, "flags": 4}, + {"matrix": [0, 18], "x": 224, "y": 0, "flags": 4}, + {"matrix": [0, 17], "x": 212, "y": 0, "flags": 4}, + {"matrix": [0, 16], "x": 199, "y": 0, "flags": 4}, + {"matrix": [0, 15], "x": 187, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 174, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 162, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 149, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 137, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 124, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 100, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 87, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 75, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 62, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 50, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 37, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 25, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 12, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 13, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 26, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 38, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 51, "flags": 1}, + {"matrix": [4, 0], "x": 0, "y": 51, "flags": 1}, + {"matrix": [5, 0], "x": 0, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 12, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 25, "y": 64, "flags": 1}, + {"matrix": [4, 1], "x": 12, "y": 51, "flags": 4} + ], + "max_brightness": 110, + "val_steps": 28, + "sleep": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x3662", + "suspend_wakeup_delay": 1000, + "vid": "0x6332" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": ["96_ansi", "96_iso"], + "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": [0, 15], "x": 15, "y": 0}, + {"matrix": [0, 16], "x": 16, "y": 0}, + {"matrix": [0, 17], "x": 17, "y": 0}, + {"matrix": [0, 18], "x": 18, "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, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + {"matrix": [1, 16], "x": 16, "y": 1}, + {"matrix": [1, 17], "x": 17, "y": 1}, + {"matrix": [1, 18], "x": 18, "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, 13], "x": 13.5, "y": 2, "w": 1.5}, + {"matrix": [2, 15], "x": 15, "y": 2}, + {"matrix": [2, 16], "x": 16, "y": 2}, + {"matrix": [2, 17], "x": 17, "y": 2}, + {"matrix": [2, 18], "x": 18, "y": 2, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 2], "x": 1.75, "y": 3}, + {"matrix": [3, 3], "x": 2.75, "y": 3}, + {"matrix": [3, 4], "x": 3.75, "y": 3}, + {"matrix": [3, 5], "x": 4.75, "y": 3}, + {"matrix": [3, 6], "x": 5.75, "y": 3}, + {"matrix": [3, 7], "x": 6.75, "y": 3}, + {"matrix": [3, 8], "x": 7.75, "y": 3}, + {"matrix": [3, 9], "x": 8.75, "y": 3}, + {"matrix": [3, 10], "x": 9.75, "y": 3}, + {"matrix": [3, 11], "x": 10.75, "y": 3}, + {"matrix": [3, 12], "x": 11.75, "y": 3}, + {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [3, 17], "x": 17, "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, 12], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4}, + {"matrix": [4, 17], "x": 17, "y": 4}, + {"matrix": [4, 18], "x": 18, "y": 4, "h": 2}, + {"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}, + {"matrix": [5, 16], "x": 16, "y": 5}, + {"matrix": [5, 17], "x": 17, "y": 5} + ] + }, + "LAYOUT_96_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}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + {"matrix": [0, 16], "x": 16, "y": 0}, + {"matrix": [0, 17], "x": 17, "y": 0}, + {"matrix": [0, 18], "x": 18, "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, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + {"matrix": [1, 16], "x": 16, "y": 1}, + {"matrix": [1, 17], "x": 17, "y": 1}, + {"matrix": [1, 18], "x": 18, "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, 13], "x": 13.5, "y": 2, "w": 1.5}, + {"matrix": [2, 15], "x": 15, "y": 2}, + {"matrix": [2, 16], "x": 16, "y": 2}, + {"matrix": [2, 17], "x": 17, "y": 2}, + {"matrix": [2, 18], "x": 18, "y": 2, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 2], "x": 1.75, "y": 3}, + {"matrix": [3, 3], "x": 2.75, "y": 3}, + {"matrix": [3, 4], "x": 3.75, "y": 3}, + {"matrix": [3, 5], "x": 4.75, "y": 3}, + {"matrix": [3, 6], "x": 5.75, "y": 3}, + {"matrix": [3, 7], "x": 6.75, "y": 3}, + {"matrix": [3, 8], "x": 7.75, "y": 3}, + {"matrix": [3, 9], "x": 8.75, "y": 3}, + {"matrix": [3, 10], "x": 9.75, "y": 3}, + {"matrix": [3, 11], "x": 10.75, "y": 3}, + {"matrix": [3, 12], "x": 11.75, "y": 3}, + {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [3, 17], "x": 17, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25}, + {"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, 12], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4}, + {"matrix": [4, 17], "x": 17, "y": 4}, + {"matrix": [4, 18], "x": 18, "y": 4, "h": 2}, + {"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}, + {"matrix": [5, 16], "x": 16, "y": 5}, + {"matrix": [5, 17], "x": 17, "y": 5} + ] + }, + "LAYOUT_96_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": [0, 16], "x": 16, "y": 0}, + {"matrix": [0, 17], "x": 17, "y": 0}, + {"matrix": [0, 18], "x": 18, "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, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + {"matrix": [1, 16], "x": 16, "y": 1}, + {"matrix": [1, 17], "x": 17, "y": 1}, + {"matrix": [1, 18], "x": 18, "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": [2, 16], "x": 16, "y": 2}, + {"matrix": [2, 17], "x": 17, "y": 2}, + {"matrix": [2, 18], "x": 18, "y": 2, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 2], "x": 1.75, "y": 3}, + {"matrix": [3, 3], "x": 2.75, "y": 3}, + {"matrix": [3, 4], "x": 3.75, "y": 3}, + {"matrix": [3, 5], "x": 4.75, "y": 3}, + {"matrix": [3, 6], "x": 5.75, "y": 3}, + {"matrix": [3, 7], "x": 6.75, "y": 3}, + {"matrix": [3, 8], "x": 7.75, "y": 3}, + {"matrix": [3, 9], "x": 8.75, "y": 3}, + {"matrix": [3, 10], "x": 9.75, "y": 3}, + {"matrix": [3, 11], "x": 10.75, "y": 3}, + {"matrix": [3, 12], "x": 11.75, "y": 3}, + {"matrix": [2, 13], "x": 12.75, "y": 3}, + {"matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [3, 17], "x": 17, "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, 12], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4}, + {"matrix": [4, 17], "x": 17, "y": 4}, + {"matrix": [4, 18], "x": 18, "y": 4, "h": 2}, + {"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}, + {"matrix": [5, 16], "x": 16, "y": 5}, + {"matrix": [5, 17], "x": 17, "y": 5} + ] + } + } +} diff --git a/keyboards/sharkoon/skiller_sgk50_s2/keymaps/default/keymap.c b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/default/keymap.c new file mode 100644 index 000000000000..01e78f31240f --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_PAUS, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_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_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_all( + EE_CLR, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_SPD, RGB_SPI, _______, _______, KC_PSCR, KC_SCRL, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, + _______, GU_TOGG, _______, _______, _______, _______, _______, RGB_HUI, RGB_VAD, RGB_MOD, _______, _______ + ), +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/keymap.c b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/keymap.c new file mode 100644 index 000000000000..01e78f31240f --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_PAUS, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_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_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT_all( + EE_CLR, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_SPD, RGB_SPI, _______, _______, KC_PSCR, KC_SCRL, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, + _______, GU_TOGG, _______, _______, _______, _______, _______, RGB_HUI, RGB_VAD, RGB_MOD, _______, _______ + ), +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/rules.mk b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sharkoon/skiller_sgk50_s2/mcuconf.h b/keyboards/sharkoon/skiller_sgk50_s2/mcuconf.h new file mode 100644 index 000000000000..ae7ee58001a9 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE diff --git a/keyboards/sharkoon/skiller_sgk50_s2/readme.md b/keyboards/sharkoon/skiller_sgk50_s2/readme.md new file mode 100644 index 000000000000..7be331eac5b1 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/readme.md @@ -0,0 +1,24 @@ +# SHARKOON SKILLER SGK50 S2 + +![ISO](https://i.imgur.com/itgy5Bk.png) + +* Keyboard Maintainer: [JoyLee](https://github.com/itarze) +* Hardware Supported: [SHARKOON SKILLER SGK50 S2 PCB](https://zh-hant.sharkoon.com/) + +Make example for this keyboard (after setting up your build environment): + + make sharkoon/skiller_sgk50_s2:default + +Flashing example for this keyboard: + + make sharkoon/skiller_sgk50_s2: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/sharkoon/skiller_sgk50_s2/rules.mk b/keyboards/sharkoon/skiller_sgk50_s2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 319d9aa7b94daba050a7d207caf2dd607b04298c Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 31 Mar 2024 12:23:40 +0100 Subject: [PATCH 036/125] Fix 'qmk compile' mass_compile execution (#23296) --- lib/python/qmk/cli/compile.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py index 4c36dec3e792..8d1195bc8f0f 100755 --- a/lib/python/qmk/cli/compile.py +++ b/lib/python/qmk/cli/compile.py @@ -41,17 +41,17 @@ def compile(cli): cli.args.filter = [] cli.config.mass_compile.keymap = cli.config.compile.keymap cli.config.mass_compile.parallel = cli.config.compile.parallel - cli.config.mass_compile.no_temp = False + cli.args.no_temp = False return mass_compile(cli) # If we've received `-km all`, reroute it to mass-compile. if cli.args.keymap == 'all': from .mass_compile import mass_compile - cli.args.builds = [f'{cli.args.keyboard}:all'] + cli.args.builds = [f'{cli.config.compile.keyboard}:all'] cli.args.filter = [] cli.config.mass_compile.keymap = None cli.config.mass_compile.parallel = cli.config.compile.parallel - cli.config.mass_compile.no_temp = False + cli.args.no_temp = False return mass_compile(cli) # Build the environment vars From 73e3053e255f83c3cbaeee454aa6b8233e9581a9 Mon Sep 17 00:00:00 2001 From: SmollChungus <38044391+SmollChungus@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:32:21 +0200 Subject: [PATCH 037/125] [Keyboard] Add rose75 (#22968) Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/rose75/info.json | 128 ++++++++++++++++++++++ keyboards/rose75/keymaps/default/keymap.c | 16 +++ keyboards/rose75/keymaps/via/keymap.c | 16 +++ keyboards/rose75/keymaps/via/rules.mk | 1 + keyboards/rose75/readme.md | 24 ++++ keyboards/rose75/rose75.c | 20 ++++ keyboards/rose75/rules.mk | 1 + 7 files changed, 206 insertions(+) create mode 100644 keyboards/rose75/info.json create mode 100644 keyboards/rose75/keymaps/default/keymap.c create mode 100644 keyboards/rose75/keymaps/via/keymap.c create mode 100644 keyboards/rose75/keymaps/via/rules.mk create mode 100644 keyboards/rose75/readme.md create mode 100644 keyboards/rose75/rose75.c create mode 100644 keyboards/rose75/rules.mk diff --git a/keyboards/rose75/info.json b/keyboards/rose75/info.json new file mode 100644 index 000000000000..9306cb211b67 --- /dev/null +++ b/keyboards/rose75/info.json @@ -0,0 +1,128 @@ +{ + "manufacturer": "Matthijs Muller", + "keyboard_name": "ROSE75", + "maintainer": "Matthijs Muller", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP23", "GP21", "GP20", "GP19", "GP28", "GP12", "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP10"], + "rows": ["GP27", "GP26", "GP25", "GP24", "GP18", "GP22"] + }, + "processor": "RP2040", + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 8}, + {"matrix": [0, 1], "x": 15, "y": 15, "flags": 8} + ], + "max_brightness": 210, + "sleep": true + }, + "url": "https://github.com/Smollchungus", + "usb": { + "device_version": "0.0.1", + "force_nkro": true, + "pid": "0x7503", + "vid": "0x5363" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP29" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.5, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.5, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.5, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.5, "y": 0}, + {"label": "F5", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "F9", "matrix": [0, 10], "x": 10.5, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 11.5, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 12.5, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 13.5, "y": 0}, + {"label": "Del", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "~", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.5}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.5}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.5}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.5}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.5}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.5}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.5}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.5}, + {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.5}, + {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.5}, + {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.5, "w": 2}, + {"label": "Home", "matrix": [1, 14], "x": 15, "y": 1.5}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.5}, + {"label": "LB", "matrix": [2, 11], "x": 11.5, "y": 2.5}, + {"label": "RB", "matrix": [2, 12], "x": 12.5, "y": 2.5}, + {"label": "Pipe", "matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5}, + {"label": "PgUp", "matrix": [2, 14], "x": 15, "y": 2.5}, + {"label": "Capslock", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.5}, + {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.5}, + {"label": "Quote", "matrix": [3, 11], "x": 11.75, "y": 3.5}, + {"label": "Enter", "matrix": [3, 12], "x": 12.75, "y": 3.5, "w": 2.25}, + {"label": "PgDn", "matrix": [3, 14], "x": 15, "y": 3.5}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75}, + {"label": "Up", "matrix": [4, 13], "x": 14, "y": 4.5}, + {"label": "End", "matrix": [4, 14], "x": 15, "y": 4.5}, + {"label": "Control", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Fn", "matrix": [5, 10], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Left", "matrix": [5, 12], "x": 13, "y": 5.5}, + {"label": "Down", "matrix": [5, 13], "x": 14, "y": 5.5}, + {"label": "Right", "matrix": [5, 14], "x": 15, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/rose75/keymaps/default/keymap.c b/keyboards/rose75/keymaps/default/keymap.c new file mode 100644 index 000000000000..043edaecbc1c --- /dev/null +++ b/keyboards/rose75/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +// Copyright 2023 Matthijs Muller (@Smollchungus) +// 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_END, + 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_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/rose75/keymaps/via/keymap.c b/keyboards/rose75/keymaps/via/keymap.c new file mode 100644 index 000000000000..043edaecbc1c --- /dev/null +++ b/keyboards/rose75/keymaps/via/keymap.c @@ -0,0 +1,16 @@ +// Copyright 2023 Matthijs Muller (@Smollchungus) +// 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_END, + 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_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/rose75/keymaps/via/rules.mk b/keyboards/rose75/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/rose75/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/rose75/readme.md b/keyboards/rose75/readme.md new file mode 100644 index 000000000000..85d4763d9b40 --- /dev/null +++ b/keyboards/rose75/readme.md @@ -0,0 +1,24 @@ +# rose75 + +![rose75](https://i.imgur.com/f64Ttib.png) + +* Keyboard Maintainer: [Matthijs Muller](https://github.com/Smollchungus) +* Hardware Supported: Rose75 Keyboard + +Make example for this keyboard (after setting up your build environment): + + make rose75:default + +Flashing example for this keyboard: + + make rose75: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/rose75/rose75.c b/keyboards/rose75/rose75.c new file mode 100644 index 000000000000..d84f3da1d438 --- /dev/null +++ b/keyboards/rose75/rose75.c @@ -0,0 +1,20 @@ +// Copyright 2023 Matthijs Muller (@Smollchungus) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(0, 200, 0, 0); + rgb_matrix_set_color(1, 200, 0, 0); + } else { + rgb_matrix_set_color(0, 0, 0, 0); + rgb_matrix_set_color(1, 0, 0, 0); + } + return true; +} +#endif diff --git a/keyboards/rose75/rules.mk b/keyboards/rose75/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/rose75/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 81b5ae9bdda30b798035d4ae6c25243efbaa6a2b Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:42:21 +0200 Subject: [PATCH 038/125] Add MNK 60 EC (#23167) Co-authored-by: Duncan Sutherland --- keyboards/cipulot/mnk_60_ec/config.h | 66 +++++ keyboards/cipulot/mnk_60_ec/halconf.h | 21 ++ keyboards/cipulot/mnk_60_ec/info.json | 225 ++++++++++++++++++ .../mnk_60_ec/keymaps/60_hhkb/keymap.c | 42 ++++ .../mnk_60_ec/keymaps/default/keymap.c | 42 ++++ .../cipulot/mnk_60_ec/keymaps/via/keymap.c | 42 ++++ .../cipulot/mnk_60_ec/keymaps/via/rules.mk | 1 + keyboards/cipulot/mnk_60_ec/mcuconf.h | 22 ++ keyboards/cipulot/mnk_60_ec/post_rules.mk | 3 + keyboards/cipulot/mnk_60_ec/readme.md | 26 ++ keyboards/cipulot/mnk_60_ec/rules.mk | 5 + 11 files changed, 495 insertions(+) create mode 100644 keyboards/cipulot/mnk_60_ec/config.h create mode 100644 keyboards/cipulot/mnk_60_ec/halconf.h create mode 100644 keyboards/cipulot/mnk_60_ec/info.json create mode 100644 keyboards/cipulot/mnk_60_ec/keymaps/60_hhkb/keymap.c create mode 100644 keyboards/cipulot/mnk_60_ec/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/mnk_60_ec/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/mnk_60_ec/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/mnk_60_ec/mcuconf.h create mode 100644 keyboards/cipulot/mnk_60_ec/post_rules.mk create mode 100644 keyboards/cipulot/mnk_60_ec/readme.md create mode 100644 keyboards/cipulot/mnk_60_ec/rules.mk diff --git a/keyboards/cipulot/mnk_60_ec/config.h b/keyboards/cipulot/mnk_60_ec/config.h new file mode 100644 index 000000000000..1a7df4865727 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS \ + { B13, B14, B15, A8, A15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B3 } + +#define AMUX_SEL_PINS \ + { B6, B5, B4 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 6 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 5, 6, 7 } + +#define AMUX_1_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 5 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A3 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 149 diff --git a/keyboards/cipulot/mnk_60_ec/halconf.h b/keyboards/cipulot/mnk_60_ec/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/mnk_60_ec/info.json b/keyboards/cipulot/mnk_60_ec/info.json new file mode 100644 index 000000000000..802e216f6720 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/info.json @@ -0,0 +1,225 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "MNK 60 EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F401", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB6", + "vid": "0x6369" + }, + "community_layouts": ["60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_tsangan_hhkb"], + "layouts": { + "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": [2, 13], "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, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "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": [2, 13], "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, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "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, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 12.5, "y": 4} + ] + }, + "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": [2, 13], "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, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 12.5, "y": 4}, + {"matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/mnk_60_ec/keymaps/60_hhkb/keymap.c b/keyboards/cipulot/mnk_60_ec/keymaps/60_hhkb/keymap.c new file mode 100644 index 000000000000..6e2678d4f733 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/keymaps/60_hhkb/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_GRV, + 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_DEL, + 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_ENTER, + 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/mnk_60_ec/keymaps/default/keymap.c b/keyboards/cipulot/mnk_60_ec/keymaps/default/keymap.c new file mode 100644 index 000000000000..08599b93d3ae --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_tsangan_hhkb( + 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_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, + 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_RCTL, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_tsangan_hhkb( + _______, 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_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______), + + [2] = LAYOUT_60_tsangan_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/mnk_60_ec/keymaps/via/keymap.c b/keyboards/cipulot/mnk_60_ec/keymaps/via/keymap.c new file mode 100644 index 000000000000..08599b93d3ae --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_tsangan_hhkb( + 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_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, + 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_RCTL, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_tsangan_hhkb( + _______, 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_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______), + + [2] = LAYOUT_60_tsangan_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/mnk_60_ec/keymaps/via/rules.mk b/keyboards/cipulot/mnk_60_ec/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/mnk_60_ec/mcuconf.h b/keyboards/cipulot/mnk_60_ec/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/mnk_60_ec/post_rules.mk b/keyboards/cipulot/mnk_60_ec/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/mnk_60_ec/readme.md b/keyboards/cipulot/mnk_60_ec/readme.md new file mode 100644 index 000000000000..85a770f1518b --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/readme.md @@ -0,0 +1,26 @@ +# MNK 60 EC + +![MNK 60 EC PCB](https://i.imgur.com/UpkCUKFh.jpeg) + +EC version of the Monokei MNK 66. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: MNK 60 EC PCB +* Hardware Availability: [Monokei](https://monokei.co/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/mnk_60_ec:default + +Flashing example for this keyboard: + + make cipulot/mnk_60_ec: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/mnk_60_ec/rules.mk b/keyboards/cipulot/mnk_60_ec/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/mnk_60_ec/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 5fc4e331bda7025ebef63260f0085be5b5be9f9f Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:44:16 +0200 Subject: [PATCH 039/125] Add MNK 65 EC (#23168) --- keyboards/cipulot/mnk_65_ec/config.h | 66 ++++++++++++ keyboards/cipulot/mnk_65_ec/halconf.h | 21 ++++ keyboards/cipulot/mnk_65_ec/info.json | 100 ++++++++++++++++++ .../mnk_65_ec/keymaps/default/keymap.c | 43 ++++++++ .../cipulot/mnk_65_ec/keymaps/via/keymap.c | 43 ++++++++ .../cipulot/mnk_65_ec/keymaps/via/rules.mk | 1 + keyboards/cipulot/mnk_65_ec/mcuconf.h | 22 ++++ keyboards/cipulot/mnk_65_ec/post_rules.mk | 3 + keyboards/cipulot/mnk_65_ec/readme.md | 26 +++++ keyboards/cipulot/mnk_65_ec/rules.mk | 5 + 10 files changed, 330 insertions(+) create mode 100644 keyboards/cipulot/mnk_65_ec/config.h create mode 100644 keyboards/cipulot/mnk_65_ec/halconf.h create mode 100644 keyboards/cipulot/mnk_65_ec/info.json create mode 100644 keyboards/cipulot/mnk_65_ec/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/mnk_65_ec/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/mnk_65_ec/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/mnk_65_ec/mcuconf.h create mode 100644 keyboards/cipulot/mnk_65_ec/post_rules.mk create mode 100644 keyboards/cipulot/mnk_65_ec/readme.md create mode 100644 keyboards/cipulot/mnk_65_ec/rules.mk diff --git a/keyboards/cipulot/mnk_65_ec/config.h b/keyboards/cipulot/mnk_65_ec/config.h new file mode 100644 index 000000000000..01d1248c436f --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B14, B15, A8, B12, A15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B3 } + +#define AMUX_SEL_PINS \ + { B6, B5, B4 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 5, 6, 7 } + +#define AMUX_1_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 5, 6 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A3 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/mnk_65_ec/halconf.h b/keyboards/cipulot/mnk_65_ec/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/mnk_65_ec/info.json b/keyboards/cipulot/mnk_65_ec/info.json new file mode 100644 index 000000000000..5427601f7608 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/info.json @@ -0,0 +1,100 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "MNK 65 EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F401", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB5", + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 9], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/mnk_65_ec/keymaps/default/keymap.c b/keyboards/cipulot/mnk_65_ec/keymaps/default/keymap.c new file mode 100644 index 000000000000..03b9c3de33e5 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_65_ansi_blocker_tsangan( + 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_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_tsangan( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi_blocker_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/mnk_65_ec/keymaps/via/keymap.c b/keyboards/cipulot/mnk_65_ec/keymaps/via/keymap.c new file mode 100644 index 000000000000..03b9c3de33e5 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_65_ansi_blocker_tsangan( + 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_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_tsangan( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi_blocker_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/mnk_65_ec/keymaps/via/rules.mk b/keyboards/cipulot/mnk_65_ec/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/mnk_65_ec/mcuconf.h b/keyboards/cipulot/mnk_65_ec/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/mnk_65_ec/post_rules.mk b/keyboards/cipulot/mnk_65_ec/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/mnk_65_ec/readme.md b/keyboards/cipulot/mnk_65_ec/readme.md new file mode 100644 index 000000000000..aeedcc51c7ed --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/readme.md @@ -0,0 +1,26 @@ +# Monokei MNK 65 EC + +![MNK 65 EC PCB](https://i.imgur.com/k5ZvGhth.jpeg) + +EC version of the Monokei MNK 65. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Monokei MNK 65 EC +* Hardware Availability: [Monokei](https://monokei.co/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/mnk_65_ec:default + +Flashing example for this keyboard: + + make cipulot/mnk_65_ec: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/mnk_65_ec/rules.mk b/keyboards/cipulot/mnk_65_ec/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/mnk_65_ec/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 8757a19375b4fdc65b4dd471b11cb4378c3e7177 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:45:09 +0200 Subject: [PATCH 040/125] Fix in 60_iso_wkl_split_bs_rshift diagram (#22654) --- .../default_60_iso_wkl_split_bs_rshift/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/default/60_iso_wkl_split_bs_rshift/default_60_iso_wkl_split_bs_rshift/keymap.c b/layouts/default/60_iso_wkl_split_bs_rshift/default_60_iso_wkl_split_bs_rshift/keymap.c index b07d56ea2062..228522f1b675 100644 --- a/layouts/default/60_iso_wkl_split_bs_rshift/default_60_iso_wkl_split_bs_rshift/keymap.c +++ b/layouts/default/60_iso_wkl_split_bs_rshift/default_60_iso_wkl_split_bs_rshift/keymap.c @@ -11,9 +11,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Sft│ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Sft│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ * │Ctrl │ │ Alt │ │ Alt │ │ Ctrl│ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ */ From d4d8b0c6d32845c8a765afd615b8e2e2670f85fd Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:49:46 +0200 Subject: [PATCH 041/125] Add EC Type-K (#23193) --- keyboards/cipulot/ec_typek/config.h | 81 +++ keyboards/cipulot/ec_typek/ec_switch_matrix.c | 318 +++++++++++ keyboards/cipulot/ec_typek/ec_switch_matrix.h | 84 +++ keyboards/cipulot/ec_typek/ec_typek.c | 119 +++++ keyboards/cipulot/ec_typek/halconf.h | 23 + keyboards/cipulot/ec_typek/info.json | 133 +++++ .../cipulot/ec_typek/keymaps/default/keymap.c | 41 ++ .../cipulot/ec_typek/keymaps/via/keymap.c | 41 ++ .../cipulot/ec_typek/keymaps/via/rules.mk | 3 + .../ec_typek/keymaps/via/via_ec_indicators.c | 502 ++++++++++++++++++ keyboards/cipulot/ec_typek/matrix.c | 42 ++ keyboards/cipulot/ec_typek/mcuconf.h | 28 + keyboards/cipulot/ec_typek/readme.md | 26 + keyboards/cipulot/ec_typek/rules.mk | 4 + 14 files changed, 1445 insertions(+) create mode 100644 keyboards/cipulot/ec_typek/config.h create mode 100644 keyboards/cipulot/ec_typek/ec_switch_matrix.c create mode 100644 keyboards/cipulot/ec_typek/ec_switch_matrix.h create mode 100644 keyboards/cipulot/ec_typek/ec_typek.c create mode 100644 keyboards/cipulot/ec_typek/halconf.h create mode 100644 keyboards/cipulot/ec_typek/info.json create mode 100644 keyboards/cipulot/ec_typek/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_typek/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_typek/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_typek/keymaps/via/via_ec_indicators.c create mode 100644 keyboards/cipulot/ec_typek/matrix.c create mode 100644 keyboards/cipulot/ec_typek/mcuconf.h create mode 100644 keyboards/cipulot/ec_typek/readme.md create mode 100644 keyboards/cipulot/ec_typek/rules.mk diff --git a/keyboards/cipulot/ec_typek/config.h b/keyboards/cipulot/ec_typek/config.h new file mode 100644 index 000000000000..a6619c600c8b --- /dev/null +++ b/keyboards/cipulot/ec_typek/config.h @@ -0,0 +1,81 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B14, B13, B12, A6, A7 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B9, B8 } + +#define AMUX_SEL_PINS \ + { B7, B6, B5 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 7, 8 } + +#define AMUX_0_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7 } + +#define AMUX_1_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7, 5 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A1 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 171 + +// RGB & Indicators +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM1_UP + +#define RGBLIGHT_DEFAULT_VAL 200 +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 5) + +#define NUM_INDICATOR_INDEX 2 +#define CAPS_INDICATOR_INDEX 1 +#define SCROLL_INDICATOR_INDEX 0 diff --git a/keyboards/cipulot/ec_typek/ec_switch_matrix.c b/keyboards/cipulot/ec_typek/ec_switch_matrix.c new file mode 100644 index 000000000000..da58a75bbcf3 --- /dev/null +++ b/keyboards/cipulot/ec_typek/ec_switch_matrix.c @@ -0,0 +1,318 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "math.h" +#include "print.h" +#include "wait.h" + +#if defined(__AVR__) +# error "AVR platforms not supported due to a variety of reasons. Among them there are limited memory, limited number of pins and ADC not being able to give satisfactory results." +#endif + +#define OPEN_DRAIN_SUPPORT defined(PAL_MODE_OUTPUT_OPENDRAIN) + +eeprom_ec_config_t eeprom_ec_config; +ec_config_t ec_config; + +// Pin and port array +const pin_t row_pins[] = MATRIX_ROW_PINS; +const pin_t amux_sel_pins[] = AMUX_SEL_PINS; +const pin_t amux_en_pins[] = AMUX_EN_PINS; +const pin_t amux_n_col_sizes[] = AMUX_COL_CHANNELS_SIZES; +const pin_t amux_n_col_channels[][AMUX_MAX_COLS_COUNT] = {AMUX_COL_CHANNELS}; + +#define AMUX_SEL_PINS_COUNT ARRAY_SIZE(amux_sel_pins) +#define EXPECTED_AMUX_SEL_PINS_COUNT ceil(log2(AMUX_MAX_COLS_COUNT) +// Checks for the correctness of the configuration +_Static_assert(ARRAY_SIZE(amux_en_pins) == AMUX_COUNT, "AMUX_EN_PINS doesn't have the minimum number of bits required to enable all the multiplexers available"); +// Check that number of select pins is enough to select all the channels +_Static_assert(AMUX_SEL_PINS_COUNT == EXPECTED_AMUX_SEL_PINS_COUNT), "AMUX_SEL_PINS doesn't have the minimum number of bits required address all the channels"); +// Check that number of elements in AMUX_COL_CHANNELS_SIZES is enough to specify the number of channels for all the multiplexers available +_Static_assert(ARRAY_SIZE(amux_n_col_sizes) == AMUX_COUNT, "AMUX_COL_CHANNELS_SIZES doesn't have the minimum number of elements required to specify the number of channels for all the multiplexers available"); +// static ec_config_t config; +static uint16_t sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +// Initialize the row pins +void init_row(void) { + // Set all row pins as output and low + for (uint8_t idx = 0; idx < MATRIX_ROWS; idx++) { + gpio_set_pin_output(row_pins[idx]); + gpio_write_pin_low(row_pins[idx]); + } +} + +// Initialize the multiplexers +void init_amux(void) { + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + gpio_set_pin_output(amux_en_pins[idx]); + gpio_write_pin_low(amux_en_pins[idx]); + } + for (uint8_t idx = 0; idx < AMUX_SEL_PINS_COUNT; idx++) { + gpio_set_pin_output(amux_sel_pins[idx]); + } +} + +// Select the multiplexer channel of the specified multiplexer +void select_amux_channel(uint8_t channel, uint8_t col) { + // Get the channel for the specified multiplexer + uint8_t ch = amux_n_col_channels[channel][col]; + // momentarily disable specified multiplexer + gpio_write_pin_high(amux_en_pins[channel]); + // Select the multiplexer channel + for (uint8_t i = 0; i < AMUX_SEL_PINS_COUNT; i++) { + gpio_write_pin(amux_sel_pins[i], ch & (1 << i)); + } + // re enable specified multiplexer + gpio_write_pin_low(amux_en_pins[channel]); +} + +// Disable all the unused multiplexers +void disable_unused_amux(uint8_t channel) { + // disable all the other multiplexers apart from the current selected one + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + if (idx != channel) { + gpio_write_pin_high(amux_en_pins[idx]); + } + } +} +// Discharge the peak hold capacitor +void discharge_capacitor(void) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_low(DISCHARGE_PIN); +#else + gpio_write_pin_low(DISCHARGE_PIN); + gpio_set_pin_output(DISCHARGE_PIN); +#endif +} + +// Charge the peak hold capacitor +void charge_capacitor(uint8_t row) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_high(DISCHARGE_PIN); +#else + gpio_set_pin_input(DISCHARGE_PIN); +#endif + gpio_write_pin_high(row_pins[row]); +} + +// Initialize the peripherals pins +int ec_init(void) { + // Initialize ADC + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + // Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + gpio_write_pin_low(DISCHARGE_PIN); +#ifdef OPEN_DRAIN_SUPPORT + gpio_set_pin_output_open_drain(DISCHARGE_PIN); +#else + gpio_set_pin_output(DISCHARGE_PIN); +#endif + + // Initialize drive lines + init_row(); + + // Initialize AMUXs + init_amux(); + + return 0; +} + +// Get the noise floor +void ec_noise_floor(void) { + // Initialize the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] = 0; + } + } + + // Sample the noise floor + for (uint8_t i = 0; i < DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; i++) { + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + ec_config.noise_floor[row][adjusted_col] += ec_readkey_raw(amux, row, col); + } + } + } + wait_ms(5); + } + + // Average the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] /= DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; + } + } +} + +// Scan key values and update matrix state +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + sw_value[row][adjusted_col] = ec_readkey_raw(amux, row, col); + + if (ec_config.bottoming_calibration) { + if (ec_config.bottoming_calibration_starter[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + ec_config.bottoming_calibration_starter[row][adjusted_col] = false; + } else if (sw_value[row][adjusted_col] > ec_config.bottoming_reading[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + } + } else { + updated |= ec_update_key(¤t_matrix[row], row, adjusted_col, sw_value[row][adjusted_col]); + } + } + } + } + + return ec_config.bottoming_calibration ? false : updated; +} + +// Read the capacitive sensor value +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + select_amux_channel(channel, col); + + // Set the row pin to low state to avoid ghosting + gpio_write_pin_low(row_pins[row]); + + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Real Time Noise Floor Calibration + if (sw_value < (ec_config.noise_floor[row][col] - NOISE_FLOOR_THRESHOLD)) { + uprintf("Noise Floor Change: %d, %d, %d\n", row, col, sw_value); + ec_config.noise_floor[row][col] = sw_value; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + + // Normal board-wide APC + if (ec_config.actuation_mode == 0) { + if (current_state && sw_value < ec_config.rescaled_mode_0_release_threshold[row][col]) { + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + if ((!current_state) && sw_value > ec_config.rescaled_mode_0_actuation_threshold[row][col]) { + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Rapid Trigger + else if (ec_config.actuation_mode == 1) { + // Is key in active zone? + if (sw_value > ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]) { + // Is key pressed while in active zone? + if (current_state) { + // Is the key still moving down? + if (sw_value > ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + } + // Has key moved up enough to be released? + else if (sw_value < ec_config.extremum[row][col] - ec_config.mode_1_release_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Key is not pressed while in active zone + else { + // Is the key still moving up? + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + } + // Has key moved down enough to be pressed? + else if (sw_value > ec_config.extremum[row][col] + ec_config.mode_1_actuation_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + } + // Key is not in active zone + else { + // Check to avoid key being stuck in pressed state near the active zone threshold + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + return true; + } + } + } + return false; +} + +// Print the matrix values +void ec_print_matrix(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", sw_value[row][col]); + } + uprintf("%4d\n", sw_value[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Rescale the value to a different range +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max) { + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} diff --git a/keyboards/cipulot/ec_typek/ec_switch_matrix.h b/keyboards/cipulot/ec_typek/ec_switch_matrix.h new file mode 100644 index 000000000000..fad20360bc7e --- /dev/null +++ b/keyboards/cipulot/ec_typek/ec_switch_matrix.h @@ -0,0 +1,84 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "matrix.h" +#include "eeconfig.h" +#include "util.h" + +typedef struct _indicator_config_t { + uint8_t h; + uint8_t s; + uint8_t v; + bool enabled; +} indicator_config; + +typedef struct PACKED { + indicator_config num; + indicator_config caps; + indicator_config scroll; + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point, 2: Rapid trigger from resting point + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 and 2 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 and 2 (1-255) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} eeprom_ec_config_t; + +typedef struct { + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point (it can be very near that baseline noise and be "full travel") + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 (initial deadzone) + uint16_t rescaled_mode_0_actuation_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 0 rescaled to actual scale + uint16_t rescaled_mode_0_release_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key release in mode 0 rescaled to actual scale + uint16_t rescaled_mode_1_initial_deadzone_offset[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 1 (initial deadzone) rescaled to actual scale + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 (1-255) + uint16_t extremum[MATRIX_ROWS][MATRIX_COLS]; // extremum values for mode 1 + uint16_t noise_floor[MATRIX_ROWS][MATRIX_COLS]; // noise floor detected during startup + bool bottoming_calibration; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + bool bottoming_calibration_starter[MATRIX_ROWS][MATRIX_COLS]; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} ec_config_t; + +// Check if the size of the reserved persistent memory is the same as the size of struct eeprom_ec_config_t +_Static_assert(sizeof(eeprom_ec_config_t) == EECONFIG_KB_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +extern eeprom_ec_config_t eeprom_ec_config; + +extern ec_config_t ec_config; + +void init_row(void); +void init_amux(void); +void select_amux_channel(uint8_t channel, uint8_t col); +void disable_unused_amux(uint8_t channel); +void discharge_capacitor(void); +void charge_capacitor(uint8_t row); + +int ec_init(void); +void ec_noise_floor(void); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ec_print_matrix(void); + +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max); +bool indicators_callback(void); diff --git a/keyboards/cipulot/ec_typek/ec_typek.c b/keyboards/cipulot/ec_typek/ec_typek.c new file mode 100644 index 000000000000..035c90303ca5 --- /dev/null +++ b/keyboards/cipulot/ec_typek/ec_typek.c @@ -0,0 +1,119 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "quantum.h" + +void eeconfig_init_kb(void) { + // Default values + eeprom_ec_config.num.h = 0; + eeprom_ec_config.num.s = 0; + eeprom_ec_config.num.v = 60; + eeprom_ec_config.num.enabled = true; + eeprom_ec_config.caps.h = 0; + eeprom_ec_config.caps.s = 0; + eeprom_ec_config.caps.v = 60; + eeprom_ec_config.caps.enabled = true; + eeprom_ec_config.scroll.h = 0; + eeprom_ec_config.scroll.s = 0; + eeprom_ec_config.scroll.v = 60; + eeprom_ec_config.scroll.enabled = true; + eeprom_ec_config.actuation_mode = DEFAULT_ACTUATION_MODE; + eeprom_ec_config.mode_0_actuation_threshold = DEFAULT_MODE_0_ACTUATION_LEVEL; + eeprom_ec_config.mode_0_release_threshold = DEFAULT_MODE_0_RELEASE_LEVEL; + eeprom_ec_config.mode_1_initial_deadzone_offset = DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET; + eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; + eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + eeprom_ec_config.bottoming_reading[row][col] = DEFAULT_BOTTOMING_READING; + } + } + // Write default value to EEPROM now + eeconfig_update_kb_datablock(&eeprom_ec_config); + + eeconfig_init_user(); +} + +// On Keyboard startup +void keyboard_post_init_kb(void) { + // Read custom menu variables from memory + eeconfig_read_kb_datablock(&eeprom_ec_config); + + // Set runtime values to EEPROM values + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + ec_config.mode_0_actuation_threshold = eeprom_ec_config.mode_0_actuation_threshold; + ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; + ec_config.mode_1_initial_deadzone_offset = eeprom_ec_config.mode_1_initial_deadzone_offset; + ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; + ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; + ec_config.bottoming_calibration = false; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.bottoming_calibration_starter[row][col] = true; + ec_config.bottoming_reading[row][col] = eeprom_ec_config.bottoming_reading[row][col]; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + + // Set the RGB LEDs range that will be used for the effects + rgblight_set_effect_range(3, 66); + // Call the indicator callback to set the indicator color + indicators_callback(); + + keyboard_post_init_user(); +} + +// This function gets called when caps, num, scroll change +bool led_update_kb(led_t led_state) { + indicators_callback(); + return true; +} + +// This function is called when layers change +layer_state_t layer_state_set_user(layer_state_t state) { + indicators_callback(); + return state; +} + +// INDICATOR CALLBACK ------------------------------------------------------------------------------ +/* LED index to physical position + * + * LED2 | LED1 | LED0 + * -----+------+-------- + * Num | Caps | Scroll | + */ +bool indicators_callback(void) { + if ((eeprom_ec_config.num.enabled) && (host_keyboard_led_state().num_lock)) + sethsv(eeprom_ec_config.num.h, eeprom_ec_config.num.s, eeprom_ec_config.num.v, (rgb_led_t *)&led[NUM_INDICATOR_INDEX]); + else + sethsv(0, 0, 0, (rgb_led_t *)&led[NUM_INDICATOR_INDEX]); + + if ((eeprom_ec_config.caps.enabled) && (host_keyboard_led_state().caps_lock)) + sethsv(eeprom_ec_config.caps.h, eeprom_ec_config.caps.s, eeprom_ec_config.caps.v, (rgb_led_t *)&led[CAPS_INDICATOR_INDEX]); + else + sethsv(0, 0, 0, (rgb_led_t *)&led[CAPS_INDICATOR_INDEX]); + + if ((eeprom_ec_config.scroll.enabled) && (host_keyboard_led_state().scroll_lock)) + sethsv(eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s, eeprom_ec_config.scroll.v, (rgb_led_t *)&led[SCROLL_INDICATOR_INDEX]); + else + sethsv(0, 0, 0, (rgb_led_t *)&led[SCROLL_INDICATOR_INDEX]); + + return true; +} diff --git a/keyboards/cipulot/ec_typek/halconf.h b/keyboards/cipulot/ec_typek/halconf.h new file mode 100644 index 000000000000..24de09548583 --- /dev/null +++ b/keyboards/cipulot/ec_typek/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/cipulot/ec_typek/info.json b/keyboards/cipulot/ec_typek/info.json new file mode 100644 index 000000000000..e4642ee55536 --- /dev/null +++ b/keyboards/cipulot/ec_typek/info.json @@ -0,0 +1,133 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Type-K", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "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": 69, + "led_map": [0, 1, 2, 3, 4, 5, 66, 67, 68, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], + "max_brightness": 200 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB4", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "B15" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [1, 0], "x": 0.75, "y": 0}, + {"matrix": [0, 0], "x": 2.5, "y": 0}, + {"matrix": [0, 1], "x": 3.5, "y": 0}, + {"matrix": [0, 2], "x": 4.5, "y": 0}, + {"matrix": [0, 3], "x": 5.5, "y": 0}, + {"matrix": [0, 4], "x": 6.5, "y": 0}, + {"matrix": [0, 5], "x": 7.5, "y": 0}, + {"matrix": [0, 6], "x": 8.5, "y": 0}, + {"matrix": [0, 7], "x": 10.5, "y": 0}, + {"matrix": [0, 8], "x": 11.5, "y": 0}, + {"matrix": [0, 9], "x": 12.5, "y": 0}, + {"matrix": [0, 10], "x": 13.5, "y": 0}, + {"matrix": [0, 11], "x": 14.5, "y": 0}, + {"matrix": [0, 12], "x": 15.5, "y": 0}, + {"matrix": [0, 13], "x": 16.5, "y": 0}, + {"matrix": [0, 14], "x": 17.5, "y": 0}, + {"matrix": [2, 0], "x": 0.5, "y": 1}, + {"matrix": [1, 1], "x": 2.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3.75, "y": 1}, + {"matrix": [1, 3], "x": 4.75, "y": 1}, + {"matrix": [1, 4], "x": 5.75, "y": 1}, + {"matrix": [1, 5], "x": 6.75, "y": 1}, + {"matrix": [1, 6], "x": 7.75, "y": 1}, + {"matrix": [1, 7], "x": 10.25, "y": 1}, + {"matrix": [1, 8], "x": 11.25, "y": 1}, + {"matrix": [1, 9], "x": 12.25, "y": 1}, + {"matrix": [1, 10], "x": 13.25, "y": 1}, + {"matrix": [1, 11], "x": 14.25, "y": 1}, + {"matrix": [1, 12], "x": 15.25, "y": 1}, + {"matrix": [1, 13], "x": 16.25, "y": 1}, + {"matrix": [1, 14], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 0.25, "y": 2}, + {"matrix": [2, 1], "x": 2, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.75, "y": 2}, + {"matrix": [2, 3], "x": 4.75, "y": 2}, + {"matrix": [2, 4], "x": 5.75, "y": 2}, + {"matrix": [2, 5], "x": 6.75, "y": 2}, + {"matrix": [2, 6], "x": 7.75, "y": 2}, + {"matrix": [2, 7], "x": 10.75, "y": 2}, + {"matrix": [2, 8], "x": 11.75, "y": 2}, + {"matrix": [2, 9], "x": 12.75, "y": 2}, + {"matrix": [2, 10], "x": 13.75, "y": 2}, + {"matrix": [2, 11], "x": 14.75, "y": 2}, + {"matrix": [2, 12], "x": 15.75, "y": 2}, + {"matrix": [2, 14], "x": 16.75, "y": 2, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1.75, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 4, "y": 3}, + {"matrix": [3, 3], "x": 5, "y": 3}, + {"matrix": [3, 4], "x": 6, "y": 3}, + {"matrix": [3, 5], "x": 7, "y": 3}, + {"matrix": [3, 6], "x": 8, "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}, + {"matrix": [3, 13], "x": 16.5, "y": 3, "w": 1.25}, + {"matrix": [3, 14], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.75, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6.5, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 8.5, "y": 4}, + {"matrix": [4, 7], "x": 10, "y": 4}, + {"matrix": [4, 8], "x": 11, "y": 4, "w": 2}, + {"matrix": [4, 10], "x": 13, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 16.75, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_typek/keymaps/default/keymap.c b/keyboards/cipulot/ec_typek/keymaps/default/keymap.c new file mode 100644 index 000000000000..e47e50680e03 --- /dev/null +++ b/keyboards/cipulot/ec_typek/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_BSLS, KC_DEL, + 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_BSPC, + 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_ENTER, + KC_LGUI, 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, KC_LGUI, KC_RGUI, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + KC_HOME, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + KC_END, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2), _______ + ), + [2] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_typek/keymaps/via/keymap.c b/keyboards/cipulot/ec_typek/keymaps/via/keymap.c new file mode 100644 index 000000000000..e47e50680e03 --- /dev/null +++ b/keyboards/cipulot/ec_typek/keymaps/via/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_BSLS, KC_DEL, + 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_BSPC, + 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_ENTER, + KC_LGUI, 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, KC_LGUI, KC_RGUI, KC_SPC, KC_RALT, MO(1) + ), + [1] = LAYOUT( + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + KC_HOME, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + KC_END, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2), _______ + ), + [2] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/cipulot/ec_typek/keymaps/via/rules.mk b/keyboards/cipulot/ec_typek/keymaps/via/rules.mk new file mode 100644 index 000000000000..b870b6349c08 --- /dev/null +++ b/keyboards/cipulot/ec_typek/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_ec_indicators.c diff --git a/keyboards/cipulot/ec_typek/keymaps/via/via_ec_indicators.c b/keyboards/cipulot/ec_typek/keymaps/via/via_ec_indicators.c new file mode 100644 index 000000000000..742dac0e6f15 --- /dev/null +++ b/keyboards/cipulot/ec_typek/keymaps/via/via_ec_indicators.c @@ -0,0 +1,502 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "keyboards/cipulot/common/eeprom_tools.h" +#include "ec_switch_matrix.h" +#include "action.h" +#include "print.h" +#include "via.h" + +#ifdef VIA_ENABLE + +void ec_rescale_values(uint8_t item); +void ec_save_threshold_data(uint8_t option); +void ec_save_bottoming_reading(void); +void ec_show_calibration_data(void); +void ec_clear_bottoming_calibration_data(void); + +// Declaring enums for VIA config menu +enum via_enums { + // clang-format off + id_num_indicator_enabled = 1, + id_num_indicator_brightness = 2, + id_num_indicator_color = 3, + id_caps_indicator_enabled = 4, + id_caps_indicator_brightness = 5, + id_caps_indicator_color = 6, + id_scroll_indicator_enabled = 7, + id_scroll_indicator_brightness = 8, + id_scroll_indicator_color = 9, + id_actuation_mode = 10, + id_mode_0_actuation_threshold = 11, + id_mode_0_release_threshold = 12, + id_save_threshold_data = 13, + id_mode_1_initial_deadzone_offset = 14, + id_mode_1_actuation_offset = 15, + id_mode_1_release_offset = 16, + id_bottoming_calibration = 17, + id_noise_floor_calibration = 18, + id_show_calibration_data = 19, + id_clear_bottoming_calibration_data = 20 + // clang-format on +}; + +// Handle the data received by the keyboard from the VIA menus +void via_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.num.enabled = true; + uprintf("#########################\n"); + uprintf("# Num indicator enabled #\n"); + uprintf("#########################\n"); + } else { + eeprom_ec_config.num.enabled = false; + uprintf("##########################\n"); + uprintf("# Num indicator disabled #\n"); + uprintf("##########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.enabled); + break; + } + case id_num_indicator_brightness: { + eeprom_ec_config.num.v = value_data[0]; + uprintf("Num indicator brightness: %d\n", eeprom_ec_config.num.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.v); + break; + } + case id_num_indicator_color: { + eeprom_ec_config.num.h = value_data[0]; + eeprom_ec_config.num.s = value_data[1]; + uprintf("Num indicator color: %d, %d\n", eeprom_ec_config.num.h, eeprom_ec_config.num.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.s); + break; + } + case id_caps_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.caps.enabled = true; + uprintf("##########################\n"); + uprintf("# Caps indicator enabled #\n"); + uprintf("##########################\n"); + } else { + eeprom_ec_config.caps.enabled = false; + uprintf("###########################\n"); + uprintf("# Caps indicator disabled #\n"); + uprintf("###########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.enabled); + break; + } + case id_caps_indicator_brightness: { + eeprom_ec_config.caps.v = value_data[0]; + uprintf("Caps indicator brightness: %d\n", eeprom_ec_config.caps.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.v); + break; + } + case id_caps_indicator_color: { + eeprom_ec_config.caps.h = value_data[0]; + eeprom_ec_config.caps.s = value_data[1]; + uprintf("Caps indicator color: %d, %d\n", eeprom_ec_config.caps.h, eeprom_ec_config.caps.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.s); + break; + } + case id_scroll_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.scroll.enabled = true; + uprintf("############################\n"); + uprintf("# Scroll indicator enabled #\n"); + uprintf("############################\n"); + } else { + eeprom_ec_config.scroll.enabled = false; + uprintf("#############################\n"); + uprintf("# Scroll indicator disabled #\n"); + uprintf("#############################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.enabled); + break; + } + case id_scroll_indicator_brightness: { + eeprom_ec_config.scroll.v = value_data[0]; + uprintf("Scroll indicator brightness: %d\n", eeprom_ec_config.scroll.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.v); + break; + } + case id_scroll_indicator_color: { + eeprom_ec_config.scroll.h = value_data[0]; + eeprom_ec_config.scroll.s = value_data[1]; + uprintf("Scroll indicator color: %d, %d\n", eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.s); + break; + } + case id_actuation_mode: { + eeprom_ec_config.actuation_mode = value_data[0]; + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + if (ec_config.actuation_mode == 0) { + uprintf("#########################\n"); + uprintf("# Actuation Mode: APC #\n"); + uprintf("#########################\n"); + } else if (ec_config.actuation_mode == 1) { + uprintf("#################################\n"); + uprintf("# Actuation Mode: Rapid Trigger #\n"); + uprintf("#################################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, actuation_mode); + break; + } + case id_mode_0_actuation_threshold: { + ec_config.mode_0_actuation_threshold = value_data[1] | (value_data[0] << 8); + uprintf("APC Mode Actuation Threshold: %d\n", ec_config.mode_0_actuation_threshold); + break; + } + case id_mode_0_release_threshold: { + eeprom_ec_config.mode_0_release_threshold = value_data[1] | (value_data[0] << 8); + ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; + uprintf("APC Mode Release Threshold: %d\n", ec_config.mode_0_release_threshold); + break; + } + case id_mode_1_initial_deadzone_offset: { + ec_config.mode_1_initial_deadzone_offset = value_data[1] | (value_data[0] << 8); + uprintf("Rapid Trigger Mode Initial Deadzone Offset: %d\n", ec_config.mode_1_initial_deadzone_offset); + break; + } + case id_mode_1_actuation_offset: { + ec_config.mode_1_actuation_offset = value_data[0]; + uprintf("Rapid Trigger Mode Actuation Sensitivity: %d\n", ec_config.mode_1_actuation_offset); + break; + } + case id_mode_1_release_offset: { + ec_config.mode_1_release_offset = value_data[0]; + uprintf("Rapid Trigger Mode Release Sensitivity: %d\n", ec_config.mode_1_release_offset); + break; + } + case id_bottoming_calibration: { + if (value_data[0] == 1) { + ec_config.bottoming_calibration = true; + uprintf("##############################\n"); + uprintf("# Bottoming calibration mode #\n"); + uprintf("##############################\n"); + } else { + ec_config.bottoming_calibration = false; + ec_save_bottoming_reading(); + uprintf("## Bottoming calibration done ##\n"); + ec_show_calibration_data(); + } + break; + } + case id_save_threshold_data: { + ec_save_threshold_data(value_data[0]); + break; + } + case id_noise_floor_calibration: { + if (value_data[0] == 0) { + ec_noise_floor(); + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + uprintf("#############################\n"); + uprintf("# Noise floor data acquired #\n"); + uprintf("#############################\n"); + break; + } + } + case id_show_calibration_data: { + // Show calibration data once if the user toggle the switch + if (value_data[0] == 0) { + ec_show_calibration_data(); + break; + } + } + case id_clear_bottoming_calibration_data: { + if (value_data[0] == 0) { + ec_clear_bottoming_calibration_data(); + } + } + default: { + // Unhandled value. + break; + } + } + + // Call the indicator callback to set the indicator color + indicators_callback(); +} + +// Handle the data sent by the keyboard to the VIA menus +void via_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + value_data[0] = eeprom_ec_config.num.enabled; + break; + } + case id_num_indicator_brightness: { + value_data[0] = eeprom_ec_config.num.v; + break; + } + case id_num_indicator_color: { + value_data[0] = eeprom_ec_config.num.h; + value_data[1] = eeprom_ec_config.num.s; + break; + } + case id_caps_indicator_enabled: { + value_data[0] = eeprom_ec_config.caps.enabled; + break; + } + case id_caps_indicator_brightness: { + value_data[0] = eeprom_ec_config.caps.v; + break; + } + case id_caps_indicator_color: { + value_data[0] = eeprom_ec_config.caps.h; + value_data[1] = eeprom_ec_config.caps.s; + break; + } + case id_scroll_indicator_enabled: { + value_data[0] = eeprom_ec_config.scroll.enabled; + break; + } + case id_scroll_indicator_brightness: { + value_data[0] = eeprom_ec_config.scroll.v; + break; + } + case id_scroll_indicator_color: { + value_data[0] = eeprom_ec_config.scroll.h; + value_data[1] = eeprom_ec_config.scroll.s; + break; + } + case id_actuation_mode: { + value_data[0] = eeprom_ec_config.actuation_mode; + break; + } + case id_mode_0_actuation_threshold: { + value_data[0] = eeprom_ec_config.mode_0_actuation_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_actuation_threshold & 0xFF; + break; + } + case id_mode_0_release_threshold: { + value_data[0] = eeprom_ec_config.mode_0_release_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_release_threshold & 0xFF; + break; + } + case id_mode_1_initial_deadzone_offset: { + value_data[0] = eeprom_ec_config.mode_1_initial_deadzone_offset >> 8; + value_data[1] = eeprom_ec_config.mode_1_initial_deadzone_offset & 0xFF; + break; + } + case id_mode_1_actuation_offset: { + value_data[0] = eeprom_ec_config.mode_1_actuation_offset; + break; + } + case id_mode_1_release_offset: { + value_data[0] = eeprom_ec_config.mode_1_release_offset; + break; + } + default: { + // Unhandled value. + break; + } + } +} + +// Handle the commands sent and received by the keyboard with VIA +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + via_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + via_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + // Bypass the save function in favor of pinpointed saves + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Rescale the values received by VIA to fit the new range +void ec_rescale_values(uint8_t item) { + switch (item) { + // Rescale the APC mode actuation thresholds + case 0: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the APC mode release thresholds + case 1: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the Rapid Trigger mode initial deadzone offsets + case 2: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + + default: + // Unhandled item. + break; + } +} + +void ec_save_threshold_data(uint8_t option) { + // Save APC mode thresholds and rescale them for runtime usage + if (option == 0) { + eeprom_ec_config.mode_0_actuation_threshold = ec_config.mode_0_actuation_threshold; + eeprom_ec_config.mode_0_release_threshold = ec_config.mode_0_release_threshold; + ec_rescale_values(0); + ec_rescale_values(1); + } + // Save Rapid Trigger mode thresholds and rescale them for runtime usage + else if (option == 1) { + eeprom_ec_config.mode_1_initial_deadzone_offset = ec_config.mode_1_initial_deadzone_offset; + ec_rescale_values(2); + } + eeconfig_update_kb_datablock(&eeprom_ec_config); + uprintf("####################################\n"); + uprintf("# New thresholds applied and saved #\n"); + uprintf("####################################\n"); +} + +// Save the bottoming reading +void ec_save_bottoming_reading(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + // If the bottom reading doesn't go over the noise floor by 100, it is likely that: + // 1. The key is not actually in the matrix + // 2. The key is on an alternative layout, therefore not being pressed + // 3. The key in in the current layout but not being pressed + if (ec_config.bottoming_reading[row][col] < (ec_config.noise_floor[row][col] + 100)) { + eeprom_ec_config.bottoming_reading[row][col] = 1023; + } else { + eeprom_ec_config.bottoming_reading[row][col] = ec_config.bottoming_reading[row][col]; + } + } + } + // Rescale the values to fit the new range for runtime usage + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + eeconfig_update_kb_datablock(&eeprom_ec_config); +} + +// Show the calibration data +void ec_show_calibration_data(void) { + uprintf("\n###############\n"); + uprintf("# Noise Floor #\n"); + uprintf("###############\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.noise_floor[row][col]); + } + uprintf("%4d\n", ec_config.noise_floor[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################\n"); + uprintf("# Bottoming Readings #\n"); + uprintf("######################\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", eeprom_ec_config.bottoming_reading[row][col]); + } + uprintf("%4d\n", eeprom_ec_config.bottoming_reading[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Actuation Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Actuation Point: %4d\n", ec_config.mode_0_actuation_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_actuation_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_actuation_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Release Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Release Point: %4d\n", ec_config.mode_0_release_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_release_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_release_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n#######################################################\n"); + uprintf("# Rescaled Rapid Trigger Mode Initial Deadzone Offset #\n"); + uprintf("#######################################################\n"); + uprintf("Original Rapid Trigger Mode Initial Deadzone Offset: %4d\n", ec_config.mode_1_initial_deadzone_offset); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_1_initial_deadzone_offset[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Clear the calibration data +void ec_clear_bottoming_calibration_data(void) { + // Clear the EEPROM data + eeconfig_init_kb(); + + // Reset the runtime values to the EEPROM values + keyboard_post_init_kb(); + + uprintf("######################################\n"); + uprintf("# Bottoming calibration data cleared #\n"); + uprintf("######################################\n"); +} + +#endif // VIA_ENABLE diff --git a/keyboards/cipulot/ec_typek/matrix.c b/keyboards/cipulot/ec_typek/matrix.c new file mode 100644 index 000000000000..cfa2efe05069 --- /dev/null +++ b/keyboards/cipulot/ec_typek/matrix.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "matrix.h" + +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +// Custom matrix init function +void matrix_init_custom(void) { + // Initialize EC + ec_init(); + + // Get the noise floor at boot + ec_noise_floor(); +} + +// Custom matrix scan function +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + return updated; +} + +// Bootmagic overriden to avoid conflicts with EC +void bootmagic_scan(void) { + ; +} diff --git a/keyboards/cipulot/ec_typek/mcuconf.h b/keyboards/cipulot/ec_typek/mcuconf.h new file mode 100644 index 000000000000..5f9ecca48dd8 --- /dev/null +++ b/keyboards/cipulot/ec_typek/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/cipulot/ec_typek/readme.md b/keyboards/cipulot/ec_typek/readme.md new file mode 100644 index 000000000000..44f6fd894401 --- /dev/null +++ b/keyboards/cipulot/ec_typek/readme.md @@ -0,0 +1,26 @@ +# EC Type-K + +![EC Type-K](https://i.imgur.com/hFQ0qCfh.png) + +EC Type-K Keyboard by gok. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Type-K +* Hardware Availability: [gok](https://www.gok.design/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_typek:default + +Flashing example for this keyboard: + + make cipulot/ec_typek: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: + +* **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_typek/rules.mk b/keyboards/cipulot/ec_typek/rules.mk new file mode 100644 index 000000000000..1ff311f102d4 --- /dev/null +++ b/keyboards/cipulot/ec_typek/rules.mk @@ -0,0 +1,4 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +SRC += matrix.c ec_switch_matrix.c +OPT = 2 From b108524314047b947031d1cb688e2a378cf586c7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 3 Apr 2024 02:05:32 +1100 Subject: [PATCH 042/125] merge/um80: remove pointless empty layers (#23398) --- keyboards/merge/um80/keymaps/default/keymap.c | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/keyboards/merge/um80/keymaps/default/keymap.c b/keyboards/merge/um80/keymaps/default/keymap.c index 04dea2c1be2d..cfd628e300d0 100644 --- a/keyboards/merge/um80/keymaps/default/keymap.c +++ b/keyboards/merge/um80/keymaps/default/keymap.c @@ -41,31 +41,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_1, 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_2, 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_3, 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_4, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT -), - -[1] = LAYOUT_rspace_split_bksp( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -), -[2] = LAYOUT_rspace_split_bksp( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -), -[3] = LAYOUT_rspace_split_bksp( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_4, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), }; From 2a4c746718cf60ccf15f758a97ce51ea407432c8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 4 Apr 2024 10:11:45 +1100 Subject: [PATCH 043/125] handwired/technicpad: fix `keyboard` in keymaps (#23408) --- keyboards/handwired/technicpad/keymaps/default/keymap.json | 2 +- keyboards/handwired/technicpad/keymaps/via/keymap.json | 2 +- keyboards/mechwild/bb40/keymaps/default/keymap.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/handwired/technicpad/keymaps/default/keymap.json b/keyboards/handwired/technicpad/keymaps/default/keymap.json index 6d544a59466c..5d662bf780ca 100644 --- a/keyboards/handwired/technicpad/keymaps/default/keymap.json +++ b/keyboards/handwired/technicpad/keymaps/default/keymap.json @@ -1,5 +1,5 @@ { - "keyboard": "technicpad", + "keyboard": "handwired/technicpad", "keymap": "default", "layers": [ ["KC_A", "KC_B", "KC_C", "KC_D"] diff --git a/keyboards/handwired/technicpad/keymaps/via/keymap.json b/keyboards/handwired/technicpad/keymaps/via/keymap.json index 845fff0dfba1..040881546c1a 100644 --- a/keyboards/handwired/technicpad/keymaps/via/keymap.json +++ b/keyboards/handwired/technicpad/keymaps/via/keymap.json @@ -1,5 +1,5 @@ { - "keyboard": "technicpad", + "keyboard": "handwired/technicpad", "keymap": "via", "config": { "features": { diff --git a/keyboards/mechwild/bb40/keymaps/default/keymap.json b/keyboards/mechwild/bb40/keymaps/default/keymap.json index 104e42483c21..7ab589825866 100644 --- a/keyboards/mechwild/bb40/keymaps/default/keymap.json +++ b/keyboards/mechwild/bb40/keymaps/default/keymap.json @@ -1,5 +1,5 @@ { - "keyboard": "mechwild/bb40", + "keyboard": "mechwild/bb40/f401", "keymap": "default", "version": 1, "layout": "LAYOUT_all", From c70ebd4a0e27009a9baf4c8f74379dae6c55b461 Mon Sep 17 00:00:00 2001 From: Taro Hayashi <87086895+Taro-Hayashi@users.noreply.github.com> Date: Thu, 4 Apr 2024 12:39:02 +0900 Subject: [PATCH 044/125] Fix pointing_device_set_cpi_on_side() (#23391) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- quantum/pointing_device/pointing_device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c index bcced166c0db..4682aceb14d9 100644 --- a/quantum/pointing_device/pointing_device.c +++ b/quantum/pointing_device/pointing_device.c @@ -368,7 +368,7 @@ void pointing_device_set_cpi(uint16_t cpi) { * @param[in] cpi uint16_t value. */ void pointing_device_set_cpi_on_side(bool left, uint16_t cpi) { - bool local = (is_keyboard_left() & left) ? true : false; + bool local = (is_keyboard_left() == left); if (local) { pointing_device_driver.set_cpi(cpi); } else { From b9b8ff830276c9d6a323c55a16334601f5c9b7db Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 3 Apr 2024 23:44:20 -0700 Subject: [PATCH 045/125] Fix malformed JSON in `layouts/default/ortho_5x10/info.json` (#23414) --- layouts/default/ortho_5x10/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/default/ortho_5x10/info.json b/layouts/default/ortho_5x10/info.json index 0c4cb9bb4989..cf02fd618ae8 100644 --- a/layouts/default/ortho_5x10/info.json +++ b/layouts/default/ortho_5x10/info.json @@ -58,7 +58,7 @@ {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, - {"x":9, "y":4}, + {"x":9, "y":4} ] } } From 36ae585468d4ee781a31303185c71662e2e27d0e Mon Sep 17 00:00:00 2001 From: yiancar Date: Sat, 6 Apr 2024 09:43:20 +0100 Subject: [PATCH 046/125] [Keyboard] Add Skelett60 (#23409) Co-authored-by: yiancar Co-authored-by: Ryan Co-authored-by: Duncan Sutherland --- keyboards/novelkeys/skelett60/info.json | 946 ++++++++++++++++++ .../skelett60/keymaps/default/keymap.c | 32 + .../novelkeys/skelett60/keymaps/via/keymap.c | 32 + .../novelkeys/skelett60/keymaps/via/rules.mk | 1 + keyboards/novelkeys/skelett60/readme.md | 36 + keyboards/novelkeys/skelett60/rules.mk | 3 + keyboards/novelkeys/skelett60/skelett60.c | 21 + 7 files changed, 1071 insertions(+) create mode 100755 keyboards/novelkeys/skelett60/info.json create mode 100644 keyboards/novelkeys/skelett60/keymaps/default/keymap.c create mode 100644 keyboards/novelkeys/skelett60/keymaps/via/keymap.c create mode 100755 keyboards/novelkeys/skelett60/keymaps/via/rules.mk create mode 100755 keyboards/novelkeys/skelett60/readme.md create mode 100644 keyboards/novelkeys/skelett60/rules.mk create mode 100755 keyboards/novelkeys/skelett60/skelett60.c diff --git a/keyboards/novelkeys/skelett60/info.json b/keyboards/novelkeys/skelett60/info.json new file mode 100755 index 000000000000..1a8f988b0189 --- /dev/null +++ b/keyboards/novelkeys/skelett60/info.json @@ -0,0 +1,946 @@ +{ + "manufacturer": "Yiancar-Designs", + "keyboard_name": "Skelett 60", + "maintainer": "Yiancar-Designs", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B6", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14"], + "rows": ["A2", "B9", "B8", "B5", "B4"] + }, + "processor": "STM32F072", + "url": "https://yiancar-designs.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x7336", + "vid": "0x8968" + }, + "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "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", "60_tsangan_hhkb"], + "layouts": { + "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 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": [2, 12], "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 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_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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 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": [2, 12], "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_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": [2, 12], "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_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, "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": [1, 13], "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": [2, 12], "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": [1, 13], "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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": [1, 13], "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": [2, 12], "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": [1, 13], "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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": [1, 13], "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": [2, 12], "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": [1, 13], "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} + ] + }, + "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": [2, 12], "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_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": [2, 12], "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": 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} + ] + } + } +} diff --git a/keyboards/novelkeys/skelett60/keymaps/default/keymap.c b/keyboards/novelkeys/skelett60/keymaps/default/keymap.c new file mode 100644 index 000000000000..6ce0d78bc7c7 --- /dev/null +++ b/keyboards/novelkeys/skelett60/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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( /* Base */ + 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_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_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, MO(1), KC_APP, KC_RCTL), + +[1] = LAYOUT_all( /* FN */ + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/novelkeys/skelett60/keymaps/via/keymap.c b/keyboards/novelkeys/skelett60/keymaps/via/keymap.c new file mode 100644 index 000000000000..6ce0d78bc7c7 --- /dev/null +++ b/keyboards/novelkeys/skelett60/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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( /* Base */ + 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_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_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, MO(1), KC_APP, KC_RCTL), + +[1] = LAYOUT_all( /* FN */ + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/novelkeys/skelett60/keymaps/via/rules.mk b/keyboards/novelkeys/skelett60/keymaps/via/rules.mk new file mode 100755 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/novelkeys/skelett60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/novelkeys/skelett60/readme.md b/keyboards/novelkeys/skelett60/readme.md new file mode 100755 index 000000000000..05c920502b3b --- /dev/null +++ b/keyboards/novelkeys/skelett60/readme.md @@ -0,0 +1,36 @@ +# Skelett 60 + +This is a standard 60% layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 60% keyboard with STM32F072CB +* Hardware Availability: https://novelkeys.com/ + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make novelkeys/skelett60:default + +Flashing example for this keyboard: + + make novelkeys/skelett60: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). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make novelkeys/skelett60::flash`) diff --git a/keyboards/novelkeys/skelett60/rules.mk b/keyboards/novelkeys/skelett60/rules.mk new file mode 100644 index 000000000000..6dd24d8e0683 --- /dev/null +++ b/keyboards/novelkeys/skelett60/rules.mk @@ -0,0 +1,3 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + diff --git a/keyboards/novelkeys/skelett60/skelett60.c b/keyboards/novelkeys/skelett60/skelett60.c new file mode 100755 index 000000000000..fdbfa8f2727c --- /dev/null +++ b/keyboards/novelkeys/skelett60/skelett60.c @@ -0,0 +1,21 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN); +} From b0e948c380a073833a38881e998963db4da456e0 Mon Sep 17 00:00:00 2001 From: Felix Teutsch <63754496+FelixTeutsch@users.noreply.github.com> Date: Sun, 7 Apr 2024 00:57:12 +0200 Subject: [PATCH 047/125] Update hand_wire.md (#23429) --- docs/hand_wire.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hand_wire.md b/docs/hand_wire.md index 06809254df23..cfae38d6d206 100644 --- a/docs/hand_wire.md +++ b/docs/hand_wire.md @@ -175,7 +175,7 @@ As you move along, be sure that the controller is staying in place - recutting a From here, you should have a working keyboard once you program a firmware. -Simple firmware can be created easily using the [Keyboard Firmware Builder](https://kbfirmware.com/) website. Recreate your layout using [Keyboard Layout Editor](https://www.keyboard-layout-editor.com), import it and recreate the matrix (if not already done as part of [planning the matrix](#planning-the-matrix). +Simple firmware can be created easily using the [Keyboard Firmware Builder](https://kbfirmware.com/) website. Recreate your layout using [Keyboard Layout Editor](https://www.keyboard-layout-editor.com), import it and recreate the matrix (if not already done as part of [planning the matrix](#planning-the-matrix)). Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, or for advanced functionality, compiled locally after [Setting up Your Environment](newbs_getting_started.md). From cd0043de8ffaa1cdbeb86f242b250c8d23f5a231 Mon Sep 17 00:00:00 2001 From: Draic Date: Mon, 8 Apr 2024 17:47:11 +0200 Subject: [PATCH 048/125] Fix Layout_Arrow 3rd key in bottom row (#23443) Co-authored-by: v --- keyboards/trashman/ketch/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/trashman/ketch/info.json b/keyboards/trashman/ketch/info.json index a674acb2759f..9c3474c32edc 100644 --- a/keyboards/trashman/ketch/info.json +++ b/keyboards/trashman/ketch/info.json @@ -130,7 +130,7 @@ {"matrix": [4, 5], "x": 0, "y": 3, "w": 1.25}, {"matrix": [5, 4], "x": 1.25, "y": 3, "w": 1.5}, - {"matrix": [3, 0], "x": 2.75, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2.75, "y": 3, "w": 1.25}, {"matrix": [3, 2], "x": 4, "y": 3, "w": 2.25}, {"matrix": [3, 3], "x": 6.25, "y": 3, "w": 2}, {"matrix": [3, 4], "x": 8.25, "y": 3, "w": 1.5}, From f73e69f56d86949fece6f11f97e322f6cca70f98 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:47:14 +0900 Subject: [PATCH 049/125] [Keyboard] Add N86 (#23454) --- keyboards/era/linx3/n86/config.h | 8 + keyboards/era/linx3/n86/info.json | 451 ++++++++++++++++++ .../era/linx3/n86/keymaps/default/keymap.c | 24 + keyboards/era/linx3/n86/keymaps/via/keymap.c | 24 + keyboards/era/linx3/n86/keymaps/via/rules.mk | 1 + keyboards/era/linx3/n86/readme.md | 23 + keyboards/era/linx3/n86/rules.mk | 1 + 7 files changed, 532 insertions(+) create mode 100644 keyboards/era/linx3/n86/config.h create mode 100644 keyboards/era/linx3/n86/info.json create mode 100644 keyboards/era/linx3/n86/keymaps/default/keymap.c create mode 100644 keyboards/era/linx3/n86/keymaps/via/keymap.c create mode 100644 keyboards/era/linx3/n86/keymaps/via/rules.mk create mode 100644 keyboards/era/linx3/n86/readme.md create mode 100644 keyboards/era/linx3/n86/rules.mk diff --git a/keyboards/era/linx3/n86/config.h b/keyboards/era/linx3/n86/config.h new file mode 100644 index 000000000000..8b294dd91b18 --- /dev/null +++ b/keyboards/era/linx3/n86/config.h @@ -0,0 +1,8 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U \ No newline at end of file diff --git a/keyboards/era/linx3/n86/info.json b/keyboards/era/linx3/n86/info.json new file mode 100644 index 000000000000..40e1f78baaa6 --- /dev/null +++ b/keyboards/era/linx3/n86/info.json @@ -0,0 +1,451 @@ +{ + "manufacturer": "eerraa", + "keyboard_name": "N86", + "maintainer": "eerraa", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP11", "GP9", "GP5"], + "rows": ["GP3", "GP2", "GP1", "GP0", "GP10", "GP8"] + }, + "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, 16], "x": 224, "y": 0, "flags": 4}, + {"matrix": [0, 15], "x": 211, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 198, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 182, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 169, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 156, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 143, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 123, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 97, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 65, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 39, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4}, + {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4}, + {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4}, + {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4}, + {"matrix": [1, 13], "x": 175, "y": 15, "flags": 1}, + {"matrix": [2, 14], "x": 198, "y": 15, "flags": 4}, + {"matrix": [1, 15], "x": 211, "y": 15, "flags": 4}, + {"matrix": [1, 16], "x": 224, "y": 15, "flags": 4}, + {"matrix": [2, 16], "x": 224, "y": 27, "flags": 4}, + {"matrix": [2, 15], "x": 211, "y": 27, "flags": 4}, + {"matrix": [3, 14], "x": 198, "y": 27, "flags": 4}, + {"matrix": [2, 13], "x": 179, "y": 27, "flags": 4}, + {"matrix": [2, 12], "x": 162, "y": 27, "flags": 4}, + {"matrix": [2, 11], "x": 149, "y": 27, "flags": 4}, + {"matrix": [2, 10], "x": 136, "y": 27, "flags": 4}, + {"matrix": [2, 9], "x": 123, "y": 27, "flags": 4}, + {"matrix": [2, 8], "x": 110, "y": 27, "flags": 4}, + {"matrix": [2, 7], "x": 97, "y": 27, "flags": 4}, + {"matrix": [2, 6], "x": 84, "y": 27, "flags": 4}, + {"matrix": [2, 5], "x": 71, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 58, "y": 27, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 27, "flags": 4}, + {"matrix": [2, 1], "x": 19, "y": 27, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1}, + {"matrix": [3, 0], "x": 2, "y": 40, "flags": 1}, + {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4}, + {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4}, + {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4}, + {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4}, + {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4}, + {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4}, + {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4}, + {"matrix": [3, 13], "x": 174, "y": 40, "flags": 1}, + {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1}, + {"matrix": [4, 13], "x": 182, "y": 52, "flags": 4}, + {"matrix": [4, 12], "x": 170, "y": 52, "flags": 1}, + {"matrix": [4, 11], "x": 146, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 133, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 120, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 107, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 94, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 81, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 68, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 55, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4}, + {"matrix": [4, 0], "x": 8, "y": 52, "flags": 1}, + {"matrix": [5, 0], "x": 3, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 19, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 36, "y": 64, "flags": 1}, + {"x": 62, "y": 64, "flags": 4}, + {"x": 76, "y": 64, "flags": 4}, + {"matrix": [5, 7], "x": 91, "y": 64, "flags": 4}, + {"x": 106, "y": 64, "flags": 4}, + {"x": 120, "y": 64, "flags": 4}, + {"matrix": [5, 11], "x": 146, "y": 64, "flags": 1}, + {"matrix": [5, 12], "x": 162, "y": 64, "flags": 1}, + {"matrix": [5, 13], "x": 179, "y": 64, "flags": 1}, + {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1}, + {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1}, + {"matrix": [5, 16], "x": 224, "y": 64, "flags": 1} + ], + "sleep": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0008", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP4" + }, + "community_layouts": ["tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 11.75, "y": 3.25}, + {"matrix": [3, 11], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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, 15], "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, "w": 1}, + {"matrix": [5, 2], "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, 12], "x": 12.5, "y": 5.25, "w": 1}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/linx3/n86/keymaps/default/keymap.c b/keyboards/era/linx3/n86/keymaps/default/keymap.c new file mode 100644 index 000000000000..49ae04a5a798 --- /dev/null +++ b/keyboards/era/linx3/n86/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n86/keymaps/via/keymap.c b/keyboards/era/linx3/n86/keymaps/via/keymap.c new file mode 100644 index 000000000000..49ae04a5a798 --- /dev/null +++ b/keyboards/era/linx3/n86/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n86/keymaps/via/rules.mk b/keyboards/era/linx3/n86/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/linx3/n86/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/linx3/n86/readme.md b/keyboards/era/linx3/n86/readme.md new file mode 100644 index 000000000000..ba6810906892 --- /dev/null +++ b/keyboards/era/linx3/n86/readme.md @@ -0,0 +1,23 @@ +# N86 + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: Syryan & Linx3 +* Hardware availability: [Syryan](https://srind.mysoho.com/) & [Linx3](https://allthatkeyboard.com) + +Make example for this keyboard (after setting up your build environment): + + make era/linx3/n86:default + +Flashing example for this keyboard: + + make era/linx3/n86: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/linx3/n86/rules.mk b/keyboards/era/linx3/n86/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/era/linx3/n86/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From de4d28cd6065058057535aac168d48bd734f2adc Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:48:32 +0900 Subject: [PATCH 050/125] [Keyboard] Add N8X (#23444) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- keyboards/era/linx3/n8x/config.h | 14 + keyboards/era/linx3/n8x/halconf.h | 8 + keyboards/era/linx3/n8x/info.json | 1230 +++++++++++++++++ .../era/linx3/n8x/keymaps/default/keymap.c | 24 + keyboards/era/linx3/n8x/keymaps/via/keymap.c | 24 + keyboards/era/linx3/n8x/keymaps/via/rules.mk | 1 + keyboards/era/linx3/n8x/mcuconf.h | 9 + keyboards/era/linx3/n8x/readme.md | 23 + keyboards/era/linx3/n8x/rules.mk | 1 + 9 files changed, 1334 insertions(+) create mode 100644 keyboards/era/linx3/n8x/config.h create mode 100644 keyboards/era/linx3/n8x/halconf.h create mode 100644 keyboards/era/linx3/n8x/info.json create mode 100644 keyboards/era/linx3/n8x/keymaps/default/keymap.c create mode 100644 keyboards/era/linx3/n8x/keymaps/via/keymap.c create mode 100644 keyboards/era/linx3/n8x/keymaps/via/rules.mk create mode 100644 keyboards/era/linx3/n8x/mcuconf.h create mode 100644 keyboards/era/linx3/n8x/readme.md create mode 100644 keyboards/era/linx3/n8x/rules.mk diff --git a/keyboards/era/linx3/n8x/config.h b/keyboards/era/linx3/n8x/config.h new file mode 100644 index 000000000000..b2cffb1151a5 --- /dev/null +++ b/keyboards/era/linx3/n8x/config.h @@ -0,0 +1,14 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U + +/* BACKLIGHT PWM */ +#define BACKLIGHT_PWM_DRIVER PWMD1 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 4 \ No newline at end of file diff --git a/keyboards/era/linx3/n8x/halconf.h b/keyboards/era/linx3/n8x/halconf.h new file mode 100644 index 000000000000..3dbc886a8384 --- /dev/null +++ b/keyboards/era/linx3/n8x/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/era/linx3/n8x/info.json b/keyboards/era/linx3/n8x/info.json new file mode 100644 index 000000000000..ae0d608ffa8d --- /dev/null +++ b/keyboards/era/linx3/n8x/info.json @@ -0,0 +1,1230 @@ +{ + "manufacturer": "eerraa", + "keyboard_name": "N8X", + "maintainer": "eerraa", + "backlight": { + "breathing": true, + "breathing_period": 5, + "levels": 10, + "pin": "GP3" + }, + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP11", + "scroll_lock": "GP8" + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP1", "GP0", "GP2"], + "rows": ["GP4", "GP5", "GP6", "GP7", "GP10", "GP9"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0007", + "vid": "0x4552" + }, + "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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_wkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "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, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + "LAYOUT_tkl_iso_wkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"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, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/linx3/n8x/keymaps/default/keymap.c b/keyboards/era/linx3/n8x/keymaps/default/keymap.c new file mode 100644 index 000000000000..3dd2571ab864 --- /dev/null +++ b/keyboards/era/linx3/n8x/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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_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_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n8x/keymaps/via/keymap.c b/keyboards/era/linx3/n8x/keymaps/via/keymap.c new file mode 100644 index 000000000000..3dd2571ab864 --- /dev/null +++ b/keyboards/era/linx3/n8x/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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_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_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n8x/keymaps/via/rules.mk b/keyboards/era/linx3/n8x/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/linx3/n8x/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/linx3/n8x/mcuconf.h b/keyboards/era/linx3/n8x/mcuconf.h new file mode 100644 index 000000000000..9a4b5b1c61e3 --- /dev/null +++ b/keyboards/era/linx3/n8x/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM1 +#define RP_PWM_USE_PWM1 TRUE \ No newline at end of file diff --git a/keyboards/era/linx3/n8x/readme.md b/keyboards/era/linx3/n8x/readme.md new file mode 100644 index 000000000000..b414e1497587 --- /dev/null +++ b/keyboards/era/linx3/n8x/readme.md @@ -0,0 +1,23 @@ +# N8X + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: Syryan & Linx3 +* Hardware availability: [Syryan](https://srind.mysoho.com/) & [Linx3](https://allthatkeyboard.com) + +Make example for this keyboard (after setting up your build environment): + + make era/linx3/n8x:default + +Flashing example for this keyboard: + + make era/linx3/n8x: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/linx3/n8x/rules.mk b/keyboards/era/linx3/n8x/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/era/linx3/n8x/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 1a831a01b7d2dd1f9746d3aac7280eedc0012f90 Mon Sep 17 00:00:00 2001 From: Logan Foster <44828794+Lrfoster03@users.noreply.github.com> Date: Sat, 13 Apr 2024 22:12:14 -0700 Subject: [PATCH 051/125] Adjusted Compensator on-state and keymaps (#23509) --- keyboards/compensator/info.json | 3 +-- keyboards/compensator/keymaps/default/keymap.c | 2 +- keyboards/compensator/keymaps/via/keymap.c | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/keyboards/compensator/info.json b/keyboards/compensator/info.json index ceaa17633383..fbba0d750e84 100644 --- a/keyboards/compensator/info.json +++ b/keyboards/compensator/info.json @@ -28,8 +28,7 @@ "layer_count": 3 }, "indicators": { - "caps_lock": "E6", - "on_state": 0 + "caps_lock": "E6" }, "layouts": { "LAYOUT": { diff --git a/keyboards/compensator/keymaps/default/keymap.c b/keyboards/compensator/keymaps/default/keymap.c index 5e39c20e72f3..0bdf18496a81 100644 --- a/keyboards/compensator/keymaps/default/keymap.c +++ b/keyboards/compensator/keymaps/default/keymap.c @@ -21,7 +21,7 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base -> XT:Num:Nav:Alphas:Nav:Num:Xt*/ - KC_F1, KC_F2, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_INS, KC_HOME, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_F1, KC_F2, + KC_F1, KC_F2, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_PMNS, KC_P4, KC_P5, KC_P6, 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_DEL, KC_END, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_F3, KC_F4, KC_F5, KC_F6, KC_PENT, KC_P1, KC_P2, KC_P3, KC_NO, KC_UP, KC_NO, KC_LSFT, KC_BSLS, 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_NO, KC_UP, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_PDOT, KC_P0, KC_P00, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P00, KC_P0, KC_PDOT, KC_PMNS, KC_F7, KC_F8 diff --git a/keyboards/compensator/keymaps/via/keymap.c b/keyboards/compensator/keymaps/via/keymap.c index d9124a96aff9..a7285b32577b 100644 --- a/keyboards/compensator/keymaps/via/keymap.c +++ b/keyboards/compensator/keymaps/via/keymap.c @@ -21,7 +21,7 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base -> XT:Num:Nav:Alphas:Nav:Num:Xt*/ - KC_F1, KC_F2, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_INS, KC_HOME, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_F1, KC_F2, + KC_F1, KC_F2, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_PMNS, KC_P4, KC_P5, KC_P6, 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_DEL, KC_END, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_F3, KC_F4, KC_F5, KC_F6, KC_PENT, KC_P1, KC_P2, KC_P3, KC_NO, KC_UP, KC_NO, KC_LSFT, KC_BSLS, 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_NO, KC_UP, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_PDOT, KC_P0, KC_P00, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P00, KC_P0, KC_PDOT, KC_PMNS, KC_F7, KC_F8 From 9baafef968ea4b1439ed9cb58479e66eec1f80d7 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Sun, 14 Apr 2024 09:00:19 -0400 Subject: [PATCH 052/125] Swap PID and VID on is0gr in QMK (#23458) --- keyboards/cannonkeys/is0gr/info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/cannonkeys/is0gr/info.json b/keyboards/cannonkeys/is0gr/info.json index 49aaaddd5254..3f5e92a99c93 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": "0x0028", - "vid": "0xCA04" + "pid": "0xCA04", + "vid": "0x0028" }, "community_layouts": ["ortho_1x1"], "layouts": { From 45d60214f46c21ce83f7352b48cb31e3534621da Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 16 Apr 2024 15:55:40 -0700 Subject: [PATCH 053/125] [Keyboard] ZSA Voyager (#22181) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ryan Co-authored-by: László Bácsi Co-authored-by: Joel Challis --- keyboards/zsa/voyager/config.h | 14 + keyboards/zsa/voyager/halconf.h | 20 ++ keyboards/zsa/voyager/info.json | 219 ++++++++++++ .../zsa/voyager/keymaps/default/keymap.c | 29 ++ keyboards/zsa/voyager/ld/voyager.ld | 85 +++++ keyboards/zsa/voyager/matrix.c | 204 ++++++++++++ keyboards/zsa/voyager/mcuconf.h | 23 ++ keyboards/zsa/voyager/readme.md | 40 +++ keyboards/zsa/voyager/rules.mk | 10 + keyboards/zsa/voyager/voyager.c | 312 ++++++++++++++++++ keyboards/zsa/voyager/voyager.h | 35 ++ 11 files changed, 991 insertions(+) create mode 100644 keyboards/zsa/voyager/config.h create mode 100644 keyboards/zsa/voyager/halconf.h create mode 100644 keyboards/zsa/voyager/info.json create mode 100644 keyboards/zsa/voyager/keymaps/default/keymap.c create mode 100644 keyboards/zsa/voyager/ld/voyager.ld create mode 100644 keyboards/zsa/voyager/matrix.c create mode 100644 keyboards/zsa/voyager/mcuconf.h create mode 100644 keyboards/zsa/voyager/readme.md create mode 100644 keyboards/zsa/voyager/rules.mk create mode 100644 keyboards/zsa/voyager/voyager.c create mode 100644 keyboards/zsa/voyager/voyager.h diff --git a/keyboards/zsa/voyager/config.h b/keyboards/zsa/voyager/config.h new file mode 100644 index 000000000000..630c01fc8095 --- /dev/null +++ b/keyboards/zsa/voyager/config.h @@ -0,0 +1,14 @@ +// Copyright 2023 ZSA Technology Labs, Inc <@zsa> +// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC + +#define IS31FL3731_I2C_TIMEOUT 5 + +#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL +#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED +#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX diff --git a/keyboards/zsa/voyager/halconf.h b/keyboards/zsa/voyager/halconf.h new file mode 100644 index 000000000000..d9f29a11cb16 --- /dev/null +++ b/keyboards/zsa/voyager/halconf.h @@ -0,0 +1,20 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/zsa/voyager/info.json b/keyboards/zsa/voyager/info.json new file mode 100644 index 000000000000..14e7584f5cc4 --- /dev/null +++ b/keyboards/zsa/voyager/info.json @@ -0,0 +1,219 @@ +{ + "manufacturer": "ZSA Technology Labs", + "keyboard_name": "Voyager", + "maintainer": "ZSA Technology Labs", + "url": "zsa.io/voyager", + "processor": "STM32F303", + "bootloader": "custom", + "usb": { + "vid": "0x3297", + "pid": "0x1977", + "device_version": "0.0.1", + "shared_endpoint": { + "mouse": false + } + }, + "features": { + "bootmagic": true, + "caps_word": true, + "deferred_exec": true, + "mousekey": true, + "extrakey": true, + "nkro": true, + "swap_hands": true, + "rgb_matrix": true + }, + "bootmagic": { + "matrix": [0, 1] + }, + "diode_direction": "ROW2COL", + "matrix_size": { + "cols": 7, + "rows": 12 + }, + "mousekey": { + "delay": 0, + "interval": 20, + "max_speed": 7, + "time_to_max": 60, + "wheel_delay": 400 + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgb_matrix": { + "driver": "is31fl3731", + "led_flush_limit": 26, + "led_process_limit": 5, + "max_brightness": 175, + "sleep": true, + "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, + "flower_blooming": 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, + "starlight": true, + "starlight_dual_sat": true, + "starlight_dual_hue": true, + "riverflow": true + }, + "layout": [ + {"matrix": [0, 1], "x": 0, "y": 10, "flags": 1}, + {"matrix": [0, 2], "x": 17, "y": 10, "flags": 4}, + {"matrix": [0, 3], "x": 34, "y": 8, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 5, "flags": 4}, + {"matrix": [0, 5], "x": 69, "y": 8, "flags": 4}, + {"matrix": [0, 6], "x": 86, "y": 10, "flags": 4}, + {"matrix": [1, 1], "x": 0, "y": 21, "flags": 1}, + {"matrix": [1, 2], "x": 17, "y": 21, "flags": 4}, + {"matrix": [1, 3], "x": 34, "y": 19, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 69, "y": 19, "flags": 4}, + {"matrix": [1, 6], "x": 86, "y": 21, "flags": 4}, + {"matrix": [2, 1], "x": 0, "y": 32, "flags": 1}, + {"matrix": [2, 2], "x": 17, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 34, "y": 30, "flags": 4}, + {"matrix": [2, 4], "x": 52, "y": 28, "flags": 4}, + {"matrix": [2, 5], "x": 69, "y": 30, "flags": 4}, + {"matrix": [2, 6], "x": 86, "y": 32, "flags": 4}, + {"matrix": [3, 1], "x": 0, "y": 43, "flags": 1}, + {"matrix": [3, 2], "x": 17, "y": 43, "flags": 4}, + {"matrix": [3, 3], "x": 34, "y": 41, "flags": 4}, + {"matrix": [3, 4], "x": 52, "y": 39, "flags": 4}, + {"matrix": [3, 5], "x": 69, "y": 41, "flags": 4}, + {"matrix": [4, 4], "x": 86, "y": 43, "flags": 4}, + {"matrix": [5, 0], "x": 86, "y": 53, "flags": 1}, + {"matrix": [5, 1], "x": 96, "y": 58, "flags": 1}, + {"matrix": [6, 0], "x": 138, "y": 10, "flags": 4}, + {"matrix": [6, 1], "x": 155, "y": 10, "flags": 4}, + {"matrix": [6, 2], "x": 172, "y": 8, "flags": 4}, + {"matrix": [6, 3], "x": 190, "y": 5, "flags": 4}, + {"matrix": [6, 4], "x": 207, "y": 8, "flags": 4}, + {"matrix": [6, 5], "x": 224, "y": 10, "flags": 1}, + {"matrix": [7, 0], "x": 138, "y": 21, "flags": 4}, + {"matrix": [7, 1], "x": 155, "y": 21, "flags": 4}, + {"matrix": [7, 2], "x": 172, "y": 19, "flags": 4}, + {"matrix": [7, 3], "x": 190, "y": 17, "flags": 4}, + {"matrix": [7, 4], "x": 207, "y": 19, "flags": 4}, + {"matrix": [7, 5], "x": 224, "y": 21, "flags": 1}, + {"matrix": [8, 0], "x": 138, "y": 32, "flags": 4}, + {"matrix": [8, 1], "x": 155, "y": 32, "flags": 4}, + {"matrix": [8, 2], "x": 172, "y": 30, "flags": 4}, + {"matrix": [8, 3], "x": 190, "y": 28, "flags": 4}, + {"matrix": [8, 4], "x": 207, "y": 30, "flags": 4}, + {"matrix": [8, 5], "x": 224, "y": 32, "flags": 1}, + {"matrix": [10, 2], "x": 138, "y": 43, "flags": 4}, + {"matrix": [9, 1], "x": 155, "y": 43, "flags": 4}, + {"matrix": [9, 2], "x": 172, "y": 41, "flags": 4}, + {"matrix": [9, 3], "x": 190, "y": 39, "flags": 4}, + {"matrix": [9, 4], "x": 207, "y": 41, "flags": 4}, + {"matrix": [9, 5], "x": 224, "y": 43, "flags": 1}, + {"matrix": [11, 5], "x": 128, "y": 58, "flags": 1}, + {"matrix": [11, 6], "x": 138, "y": 53, "flags": 1} + ] + }, + "layout_aliases": { + "LAYOUT_voyager": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "matrix": [0, 1], "x": 3, "y": 0}, + {"label": "k01", "matrix": [0, 2], "x": 12, "y": 0}, + {"label": "k02", "matrix": [0, 3], "x": 2, "y": 0.25}, + {"label": "k03", "matrix": [0, 4], "x": 4, "y": 0.25}, + {"label": "k04", "matrix": [0, 5], "x": 11, "y": 0.25}, + {"label": "k05", "matrix": [0, 6], "x": 13, "y": 0.25}, + {"label": "k26", "matrix": [6, 0], "x": 0, "y": 0.5}, + {"label": "k27", "matrix": [6, 1], "x": 1, "y": 0.5}, + {"label": "k28", "matrix": [6, 2], "x": 5, "y": 0.5}, + {"label": "k29", "matrix": [6, 3], "x": 10, "y": 0.5}, + {"label": "k30", "matrix": [6, 4], "x": 14, "y": 0.5}, + {"label": "k31", "matrix": [6, 5], "x": 15, "y": 0.5}, + {"label": "k06", "matrix": [1, 1], "x": 3, "y": 1}, + {"label": "k07", "matrix": [1, 2], "x": 12, "y": 1}, + {"label": "k08", "matrix": [1, 3], "x": 2, "y": 1.25}, + {"label": "k09", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "k10", "matrix": [1, 5], "x": 11, "y": 1.25}, + {"label": "k11", "matrix": [1, 6], "x": 13, "y": 1.25}, + {"label": "k32", "matrix": [7, 0], "x": 0, "y": 1.5}, + {"label": "k33", "matrix": [7, 1], "x": 1, "y": 1.5}, + {"label": "k34", "matrix": [7, 2], "x": 5, "y": 1.5}, + {"label": "k35", "matrix": [7, 3], "x": 10, "y": 1.5}, + {"label": "k36", "matrix": [7, 4], "x": 14, "y": 1.5}, + {"label": "k37", "matrix": [7, 5], "x": 15, "y": 1.5}, + {"label": "k12", "matrix": [2, 1], "x": 3, "y": 2}, + {"label": "k13", "matrix": [2, 2], "x": 12, "y": 2}, + {"label": "k14", "matrix": [2, 3], "x": 2, "y": 2.25}, + {"label": "k15", "matrix": [2, 4], "x": 4, "y": 2.25}, + {"label": "k16", "matrix": [2, 5], "x": 11, "y": 2.25}, + {"label": "k17", "matrix": [2, 6], "x": 13, "y": 2.25}, + {"label": "k38", "matrix": [8, 0], "x": 0, "y": 2.5}, + {"label": "k39", "matrix": [8, 1], "x": 1, "y": 2.5}, + {"label": "k40", "matrix": [8, 2], "x": 5, "y": 2.5}, + {"label": "k41", "matrix": [8, 3], "x": 10, "y": 2.5}, + {"label": "k42", "matrix": [8, 4], "x": 14, "y": 2.5}, + {"label": "k43", "matrix": [8, 5], "x": 15, "y": 2.5}, + {"label": "k18", "matrix": [3, 1], "x": 3, "y": 3}, + {"label": "k19", "matrix": [3, 2], "x": 12, "y": 3}, + {"label": "k20", "matrix": [3, 3], "x": 2, "y": 3.25}, + {"label": "k21", "matrix": [3, 4], "x": 4, "y": 3.25}, + {"label": "k22", "matrix": [3, 5], "x": 11, "y": 3.25}, + {"label": "k23", "matrix": [4, 4], "x": 13, "y": 3.25}, + {"label": "k44", "matrix": [10, 2], "x": 0, "y": 3.5}, + {"label": "k45", "matrix": [9, 1], "x": 1, "y": 3.5}, + {"label": "k46", "matrix": [9, 2], "x": 5, "y": 3.5}, + {"label": "k47", "matrix": [9, 3], "x": 10, "y": 3.5}, + {"label": "k48", "matrix": [9, 4], "x": 14, "y": 3.5}, + {"label": "k49", "matrix": [9, 5], "x": 15, "y": 3.5}, + {"label": "k24", "matrix": [5, 0], "x": 5, "y": 4.5}, + {"label": "k25", "matrix": [5, 1], "x": 6, "y": 4.75}, + {"label": "k50", "matrix": [11, 5], "x": 9, "y": 4.75}, + {"label": "k51", "matrix": [11, 6], "x": 10, "y": 4.5} + ] + } + } +} diff --git a/keyboards/zsa/voyager/keymaps/default/keymap.c b/keyboards/zsa/voyager/keymaps/default/keymap.c new file mode 100644 index 000000000000..e05794de756b --- /dev/null +++ b/keyboards/zsa/voyager/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +// Copyright 2023 ZSA Technology Labs, Inc <@zsa> +// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) +// 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + CW_TOGG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + SFT_T(KC_BSPC),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RSFT_T(KC_QUOT), + KC_LGUI, ALT_T(KC_Z),KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA,KC_DOT, RALT_T(KC_SLSH), KC_RCTL, + LT(1,KC_ENT), CTL_T(KC_TAB), SFT_T(KC_BSPC), LT(2,KC_SPC) + ), + [1] = 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_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_7, KC_8, KC_9, KC_MINS, KC_SLSH, KC_F12, + _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_PLUS, KC_ASTR, KC_BSPC, + _______, _______, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, KC_DOT, KC_EQL, KC_ENT, + _______, _______, _______, KC_0 + ), + [2] = LAYOUT( + RGB_TOG, QK_KB, RGB_MOD, RGB_M_P, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, + _______, KC_MPRV, KC_MNXT, KC_MSTP, KC_MPLY, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, C(S(KC_TAB)), C(KC_TAB), _______, _______, _______, + _______, _______, _______, _______ + ), +}; diff --git a/keyboards/zsa/voyager/ld/voyager.ld b/keyboards/zsa/voyager/ld/voyager.ld new file mode 100644 index 000000000000..0619983beb05 --- /dev/null +++ b/keyboards/zsa/voyager/ld/voyager.ld @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash0 (rx) : org = 0x08002000, len = 256k - 0x2000 + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + flash3 (rx) : org = 0x00000000, len = 0 + flash4 (rx) : org = 0x00000000, len = 0 + flash5 (rx) : org = 0x00000000, len = 0 + flash6 (rx) : org = 0x00000000, len = 0 + flash7 (rx) : org = 0x00000000, len = 0 + ram0 (wx) : org = 0x20000000, len = 40k + ram1 (wx) : org = 0x00000000, len = 0 + ram2 (wx) : org = 0x00000000, len = 0 + ram3 (wx) : org = 0x00000000, len = 0 + ram4 (wx) : org = 0x10000000, len = 8k + ram5 (wx) : org = 0x00000000, len = 0 + ram6 (wx) : org = 0x00000000, len = 0 + ram7 (wx) : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld \ No newline at end of file diff --git a/keyboards/zsa/voyager/matrix.c b/keyboards/zsa/voyager/matrix.c new file mode 100644 index 000000000000..614c3ffa0418 --- /dev/null +++ b/keyboards/zsa/voyager/matrix.c @@ -0,0 +1,204 @@ +// Copyright 2023 ZSA Technology Labs, Inc <@zsa> +// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include +#include "voyager.h" +#include "mcp23018.h" + +#pragma GCC push_options +#pragma GCC optimize("-O3") + +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +static matrix_row_t raw_matrix_right[MATRIX_COLS]; + +#define MCP_ROWS_PER_HAND (MATRIX_ROWS / 2) +#ifndef VOYAGER_I2C_TIMEOUT +# define VOYAGER_I2C_TIMEOUT 100 +#endif +// Delay between each i2c io expander ops (in MCU cycles) +#ifndef IO_EXPANDER_OP_DELAY +# define IO_EXPANDER_OP_DELAY 500 +#endif + +extern bool mcp23018_leds[2]; +extern bool is_launching; + +static uint16_t mcp23018_reset_loop; +uint8_t mcp23018_errors; + +bool io_expander_ready(void) { + uint8_t tx; + return mcp23018_readPins(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTA, &tx); +} + +void matrix_init_custom(void) { + // outputs + gpio_set_pin_output(B10); + gpio_set_pin_output(B11); + gpio_set_pin_output(B12); + gpio_set_pin_output(B13); + gpio_set_pin_output(B14); + gpio_set_pin_output(B15); + + // inputs + gpio_set_pin_input_low(A0); + gpio_set_pin_input_low(A1); + gpio_set_pin_input_low(A2); + gpio_set_pin_input_low(A3); + gpio_set_pin_input_low(A6); + gpio_set_pin_input_low(A7); + gpio_set_pin_input_low(B0); + + mcp23018_init(MCP23018_DEFAULT_ADDRESS); + mcp23018_errors += !mcp23018_set_config(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTA, 0b00000000); + mcp23018_errors += !mcp23018_set_config(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTB, 0b00111111); + + if (!mcp23018_errors) { + is_launching = true; + } +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + // Attempt to reset the mcp23018 if it's not initialized + if (mcp23018_errors) { + if (++mcp23018_reset_loop > 0x1FFF) { + if (io_expander_ready()) { + // If we managed to initialize the mcp23018 - we need to reinitialize the matrix / layer state. During an electric discharge the i2c peripherals might be in a weird state. Giving a delay and resetting the MCU allows to recover from this. + wait_ms(200); + mcu_reset(); + } + } + } + + // Scanning left and right side of the keyboard for key presses. + // Left side is scanned by reading the gpio pins directly, right side is scanned by reading the mcp23018 registers. + + matrix_row_t data = 0; + for (uint8_t row = 0; row <= MCP_ROWS_PER_HAND; row++) { + // strobe row + switch (row) { + case 0: + gpio_write_pin_high(B10); + break; + case 1: + gpio_write_pin_high(B11); + break; + case 2: + gpio_write_pin_high(B12); + break; + case 3: + gpio_write_pin_high(B13); + break; + case 4: + gpio_write_pin_high(B14); + break; + case 5: + gpio_write_pin_high(B15); + break; + case 6: + break; // Left hand has 6 rows + } + + // Selecting the row on the right side of the keyboard. + if (!mcp23018_errors) { + // select row + mcp23018_errors += !mcp23018_set_output(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTA, 0b01111111 & ~(1 << (row))); + mcp23018_errors += !mcp23018_set_output(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTB, ((uint8_t)!mcp23018_leds[1] << 6) | ((uint8_t)!mcp23018_leds[0] << 7)); + } + // Reading the left side of the keyboard. + if (row < MCP_ROWS_PER_HAND) { + // i2c comm incur enough wait time + if (mcp23018_errors) { + // need wait to settle pin state + matrix_io_delay(); + } + // read col data + data = ((readPin(A0) << 0) | (readPin(A1) << 1) | (readPin(A2) << 2) | (readPin(A3) << 3) | (readPin(A6) << 4) | (readPin(A7) << 5) | (readPin(B0) << 6)); + // unstrobe row + switch (row) { + case 0: + gpio_write_pin_low(B10); + break; + case 1: + gpio_write_pin_low(B11); + break; + case 2: + gpio_write_pin_low(B12); + break; + case 3: + gpio_write_pin_low(B13); + break; + case 4: + gpio_write_pin_low(B14); + break; + case 5: + gpio_write_pin_low(B15); + break; + case 6: + break; + } + + if (current_matrix[row] != data) { + current_matrix[row] = data; + changed = true; + } + } + + // Reading the right side of the keyboard. + if (!mcp23018_errors) { + for (uint16_t i = 0; i < IO_EXPANDER_OP_DELAY; i++) { + __asm__("nop"); + } + uint8_t rx; + mcp23018_errors += !mcp23018_readPins(MCP23018_DEFAULT_ADDRESS, mcp23018_PORTB, &rx); + data = ~(rx & 0b00111111); + for (uint16_t i = 0; i < IO_EXPANDER_OP_DELAY; i++) { + __asm__("nop"); + } + } else { + data = 0; + } + + if (raw_matrix_right[row] != data) { + raw_matrix_right[row] = data; + changed = true; + } + } + + for (uint8_t row = 0; row < MCP_ROWS_PER_HAND; row++) { + current_matrix[11 - row] = 0; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + current_matrix[11 - row] |= ((raw_matrix_right[6 - col] & (1 << row) ? 1 : 0) << col); + } + } + return changed; +} + +// DO NOT REMOVE +// Needed for proper wake/sleep +void matrix_power_up(void) { + bool temp_launching = is_launching; + + matrix_init_custom(); + + is_launching = temp_launching; + if (!temp_launching) { + STATUS_LED_1(false); + STATUS_LED_2(false); + STATUS_LED_3(false); + STATUS_LED_4(false); + } + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +bool is_transport_connected(void) { + return (bool)(mcp23018_errors == 0); +} +#pragma GCC pop_options diff --git a/keyboards/zsa/voyager/mcuconf.h b/keyboards/zsa/voyager/mcuconf.h new file mode 100644 index 000000000000..f75edce3e9b7 --- /dev/null +++ b/keyboards/zsa/voyager/mcuconf.h @@ -0,0 +1,23 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +// for i2c expander, and ISSI +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/zsa/voyager/readme.md b/keyboards/zsa/voyager/readme.md new file mode 100644 index 000000000000..4a602ee13745 --- /dev/null +++ b/keyboards/zsa/voyager/readme.md @@ -0,0 +1,40 @@ +# Voyager + +A next-gen split, ergonomic keyboard with an active left side, USB type C, and low profile switches. + +* Keyboard Maintainer: [drashna](https://github.com/drashna), [ZSA](https://github.com/zsa/) +* Hardware Supported: Voyager (STM32F303xC) +* Hardware Availability: [ZSA Store](https://zsa.io/voyager/) + +Make example for this keyboard (after setting up your build environment): + + make zsa/voyager:default + +Flashing example for this keyboard: + + make zsa/voyager: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). + + +## Voyager Customization + +### Indicator LEDs + +There are 4 functions for enabling and disabling the LEDs on the top of the boards. The functions are `STATUS_LED_1(bool)` through `STATUS_LED_4(bool)`, with the first LED being the top most LED on the left hand, and the fourth LED being the bottom most LED on the right side. + +By default, the Indicator LEDs are used to indicate the layer state for the keyboard. If you wish to change this (and indicate caps/num/scroll lock status instead), then define `VOYAGER_USER_LEDS` in your `config.h` file. + +### Detecting split / Gaming mode + +To make it extra gaming friendly, you can configure what happens when you disconnect the right half. This is especially useful when using gaming unfriendly layers or layouts (e.g. home row mods, dvorak, colemak). + +Example for enabling a specific layer while right side is disconnected: + +```c +void housekeeping_task_user(void) { + if (!is_transport_connected()) { + // set layer + } +} +``` diff --git a/keyboards/zsa/voyager/rules.mk b/keyboards/zsa/voyager/rules.mk new file mode 100644 index 000000000000..bb95224d2bfe --- /dev/null +++ b/keyboards/zsa/voyager/rules.mk @@ -0,0 +1,10 @@ +MCU_LDSCRIPT = voyager + +CUSTOM_MATRIX = lite +PROGRAM_CMD = $(call EXEC_DFU) +DFU_ARGS = -d 3297:0791 -a 0 -s 0x08002000:leave +DFU_SUFFIX_ARGS = -v 3297 -p 0791 + +VPATH += drivers/gpio +SRC += matrix.c mcp23018.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/zsa/voyager/voyager.c b/keyboards/zsa/voyager/voyager.c new file mode 100644 index 000000000000..d70f1be3effd --- /dev/null +++ b/keyboards/zsa/voyager/voyager.c @@ -0,0 +1,312 @@ +// Copyright 2023 ZSA Technology Labs, Inc <@zsa> +// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "voyager.h" + +keyboard_config_t keyboard_config; + +bool mcp23018_leds[2] = {0, 0}; +bool is_launching = false; + +#if defined(DEFERRED_EXEC_ENABLE) +# if defined(DYNAMIC_MACRO_ENABLE) +deferred_token dynamic_macro_token = INVALID_DEFERRED_TOKEN; + +static uint32_t dynamic_macro_led(uint32_t trigger_time, void *cb_arg) { + static bool led_state = true; + if (!is_launching) { + led_state = !led_state; + STATUS_LED_3(led_state); + } + return 100; +} + +void dynamic_macro_record_start_user(void) { + if (my_token == INVALID_DEFERRED_TOKEN) { + STATUS_LED_3(true); + dynamic_macro_token = defer_exec(100, dynamic_macro_led, NULL); + } +} + +void dynamic_macro_record_end_user(int8_t direction) { + if (cancel_deferred_exec(dynamic_macro_token)) { + dynamic_macro_token = INVALID_DEFERRED_TOKEN; + STATUS_LED_3(false); + } +} +# endif + +static uint32_t startup_exec(uint32_t trigger_time, void *cb_arg) { + static uint8_t startup_loop = 0; + + switch (startup_loop++) { + case 0: + STATUS_LED_1(true); + STATUS_LED_2(false); + STATUS_LED_3(false); + STATUS_LED_4(false); + break; + case 1: + STATUS_LED_2(true); + break; + case 2: + STATUS_LED_3(true); + break; + case 3: + STATUS_LED_4(true); + break; + case 4: + STATUS_LED_1(false); + break; + case 5: + STATUS_LED_2(false); + break; + case 6: + STATUS_LED_3(false); + break; + case 7: + STATUS_LED_4(false); + break; + case 8: + is_launching = false; + layer_state_set_kb(layer_state); + return 0; + } + return 250; +} +#endif + +void keyboard_pre_init_kb(void) { + // Initialize Reset pins + gpio_set_pin_input(A8); + gpio_set_pin_output(A9); + gpio_write_pin_low(A9); + + gpio_set_pin_output(B5); + gpio_set_pin_output(B4); + gpio_set_pin_output(B3); + + gpio_write_pin_low(B5); + gpio_write_pin_low(B4); + gpio_write_pin_low(B3); + + keyboard_pre_init_user(); +} + +#if !defined(VOYAGER_USER_LEDS) +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + if (is_launching || !keyboard_config.led_level) return state; + + uint8_t layer = get_highest_layer(state); + + STATUS_LED_1(layer & (1 << 0)); + STATUS_LED_2(layer & (1 << 1)); + STATUS_LED_3(layer & (1 << 2)); + +# if !defined(CAPS_LOCK_STATUS) + STATUS_LED_4(layer & (1 << 3)); +# endif + return state; +} +#endif + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C2_2, C1_2, C4_3}, + {0, C2_3, C1_3, C3_3}, + {0, C2_4, C1_4, C3_4}, + {0, C2_5, C1_5, C3_5}, + {0, C2_6, C1_6, C3_6}, + {0, C2_7, C1_7, C3_7}, + {0, C2_8, C1_8, C3_8}, + {0, C8_1, C7_1, C9_1}, + {0, C8_2, C7_2, C9_2}, + {0, C8_3, C7_3, C9_3}, + {0, C8_4, C7_4, C9_4}, + {0, C8_5, C7_5, C9_5}, + {0, C8_6, C7_6, C9_6}, + {0, C2_10, C1_10, C4_11}, + {0, C2_11, C1_11, C3_11}, + {0, C2_12, C1_12, C3_12}, + {0, C2_13, C1_13, C3_13}, + {0, C2_14, C1_14, C3_14}, + {0, C2_15, C1_15, C3_15}, + {0, C2_16, C1_16, C3_16}, + {0, C8_9, C7_9, C9_9}, + {0, C8_10, C7_10, C9_10}, + {0, C8_11, C7_11, C9_11}, + {0, C8_12, C7_12, C9_12}, + {0, C8_13, C7_13, C9_13}, + {0, C8_14, C7_14, C9_14}, + + {1, C2_7, C1_7, C3_7}, + {1, C2_6, C1_6, C3_6}, + {1, C2_5, C1_5, C3_5}, + {1, C2_4, C1_4, C3_4}, + {1, C2_3, C1_3, C3_3}, + {1, C2_2, C1_2, C4_3}, + + {1, C8_5, C7_5, C9_5}, + {1, C8_4, C7_4, C9_4}, + {1, C8_3, C7_3, C9_3}, + {1, C8_2, C7_2, C9_2}, + {1, C8_1, C7_1, C9_1}, + {1, C2_8, C1_8, C3_8}, + + {1, C2_14, C1_14, C3_14}, + {1, C2_13, C1_13, C3_13}, + {1, C2_12, C1_12, C3_12}, + {1, C2_11, C1_11, C3_11}, + {1, C2_10, C1_10, C4_11}, + {1, C8_6, C7_6, C9_6}, + + {1, C8_12, C7_12, C9_12}, + {1, C8_11, C7_11, C9_11}, + {1, C8_10, C7_10, C9_10}, + {1, C8_9, C7_9, C9_9}, + {1, C2_16, C1_16, C3_16}, + {1, C2_15, C1_15, C3_15}, + + {1, C8_14, C7_14, C9_14}, + {1, C8_13, C7_13, C9_13}, +}; +// clang-format on +#endif + +#ifdef SWAP_HANDS_ENABLE +// swap-hands action needs a matrix to define the swap +// clang-format off +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{6,6}, {5,6}, {4,6}, {3,6}, {2,6}, {1,6},{0,6}}, + {{6,7}, {5,7}, {4,7}, {3,7}, {2,7}, {1,7},{0,7}}, + {{6,8}, {5,8}, {4,8}, {3,8}, {2,8}, {1,8},{0,8}}, + {{6,9}, {5,9}, {4,9}, {3,9}, {2,9}, {1,9},{0,9}}, + {{6,10},{5,10},{4,10},{3,10},{2,10},{1,10},{0,10}}, + {{6,11},{5,11},{4,11},{3,11},{2,11},{1,11},{0,11}}, + /* Right hand, matrix positions */ + {{6,0}, {5,0}, {4,0}, {3,0}, {2,0}, {1,0},{0,0}}, + {{6,1}, {5,1}, {4,1}, {3,1}, {2,1}, {1,1},{0,1}}, + {{6,2}, {5,2}, {4,2}, {3,2}, {2,2}, {1,2},{0,2}}, + {{6,3}, {5,3}, {4,3}, {3,3}, {2,3}, {1,3},{0,3}}, + {{6,4}, {5,4}, {4,4}, {3,4}, {2,4}, {1,4},{0,4}}, + {{6,5}, {5,5}, {4,5}, {3,5}, {2,5}, {1,5},{0,5}}, +}; +// clang-format on +#endif + +#ifdef CAPS_LOCK_STATUS +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + STATUS_LED_4(led_state.caps_lock); + } + return res; +} +#endif + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { +#if !defined(VOYAGER_USER_LEDS) + case LED_LEVEL: + if (record->event.pressed) { + keyboard_config.led_level ^= 1; + eeconfig_update_kb(keyboard_config.raw); + if (keyboard_config.led_level) { + layer_state_set_kb(layer_state); + } else { + STATUS_LED_1(false); + STATUS_LED_2(false); + STATUS_LED_3(false); + STATUS_LED_4(false); + } + } + break; +#endif +#ifdef RGB_MATRIX_ENABLE + case TOGGLE_LAYER_COLOR: + if (record->event.pressed) { + keyboard_config.disable_layer_led ^= 1; + if (keyboard_config.disable_layer_led) rgb_matrix_set_color_all(0, 0, 0); + } + break; + 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; + } + } + return false; +#endif + } + return true; +} + +void keyboard_post_init_kb(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_enable_noeeprom(); +#endif + + keyboard_config.raw = eeconfig_read_kb(); + + if (!keyboard_config.led_level && !keyboard_config.led_level_res) { + keyboard_config.led_level = true; + keyboard_config.led_level_res = 0b11; + eeconfig_update_kb(keyboard_config.raw); + } +#if defined(DEFERRED_EXEC_ENABLE) + is_launching = true; + defer_exec(500, startup_exec, NULL); +#endif + keyboard_post_init_user(); +} + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + keyboard_config.raw = 0; + keyboard_config.led_level = true; + keyboard_config.led_level_res = 0b11; + eeconfig_update_kb(keyboard_config.raw); + eeconfig_init_user(); +} + +__attribute__((weak)) void bootloader_jump(void) { + // The ignition bootloader is checking for a high signal on A8 for 100ms when powering on the board. + // Setting both A8 and A9 high will charge the capacitor quickly. + // Setting A9 low before reset will cause the capacitor to discharge + // thus making the bootloder unlikely to trigger twice between power cycles. + gpio_set_pin_output_push_pull(A9); + gpio_set_pin_output_push_pull(A8); + gpio_write_pin_high(A9); + gpio_write_pin_high(A8); + wait_ms(500); + gpio_write_pin_low(A9); + + NVIC_SystemReset(); +} + +__attribute__((weak)) void mcu_reset(void) { + gpio_set_pin_output_push_pull(A9); + gpio_set_pin_output_push_pull(A8); + gpio_write_pin_low(A8); + gpio_write_pin_low(A9); + + NVIC_SystemReset(); +} diff --git a/keyboards/zsa/voyager/voyager.h b/keyboards/zsa/voyager/voyager.h new file mode 100644 index 000000000000..a00cc995c627 --- /dev/null +++ b/keyboards/zsa/voyager/voyager.h @@ -0,0 +1,35 @@ +// Copyright 2023 ZSA Technology Labs, Inc <@zsa> +// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +extern bool mcp23018_leds[]; + +#define MCP23018_DEFAULT_ADDRESS 0b0100000 + +#define STATUS_LED_1(status) gpio_write_pin(B5, (bool)(status)) +#define STATUS_LED_2(status) gpio_write_pin(B4, (bool)(status)) +#define STATUS_LED_3(status) mcp23018_leds[0] = (bool)(status) +#define STATUS_LED_4(status) mcp23018_leds[1] = (bool)(status) + +enum voyager_keycodes { + TOGGLE_LAYER_COLOR = QK_KB, + LED_LEVEL, +}; + +typedef union { + uint32_t raw; + struct { + bool disable_layer_led : 1; + bool placeholder : 1; + bool led_level : 1; + uint8_t led_level_res : 2; // DO NOT REMOVE + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +bool is_transport_connected(void); From b31ebe789d29e4d97728f87c35292cd003f01711 Mon Sep 17 00:00:00 2001 From: Epomaker <113156000+Epomaker@users.noreply.github.com> Date: Wed, 17 Apr 2024 21:44:53 +0800 Subject: [PATCH 054/125] [Keyboard] Add Epomaker tide65 (#23356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 岩弈 Co-authored-by: yanyi24 --- keyboards/epomaker/tide65/info.json | 231 ++++++++++++++++++ .../epomaker/tide65/keymaps/default/keymap.c | 26 ++ .../epomaker/tide65/keymaps/via/keymap.c | 33 +++ .../epomaker/tide65/keymaps/via/rules.mk | 2 + keyboards/epomaker/tide65/readme.md | 21 ++ keyboards/epomaker/tide65/rules.mk | 1 + keyboards/epomaker/tide65/tide65.c | 10 + 7 files changed, 324 insertions(+) create mode 100644 keyboards/epomaker/tide65/info.json create mode 100644 keyboards/epomaker/tide65/keymaps/default/keymap.c create mode 100644 keyboards/epomaker/tide65/keymaps/via/keymap.c create mode 100644 keyboards/epomaker/tide65/keymaps/via/rules.mk create mode 100644 keyboards/epomaker/tide65/readme.md create mode 100644 keyboards/epomaker/tide65/rules.mk create mode 100644 keyboards/epomaker/tide65/tide65.c diff --git a/keyboards/epomaker/tide65/info.json b/keyboards/epomaker/tide65/info.json new file mode 100644 index 000000000000..2715b923f477 --- /dev/null +++ b/keyboards/epomaker/tide65/info.json @@ -0,0 +1,231 @@ +{ + "manufacturer": "HS", + "keyboard_name": "EPOMAKER TIDE 65", + "maintainer": "sdk66", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "B7", "pin_b": "B6"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "A6", "B10", "B11", "B12", "B13", "B14", "A10", "C6", "C7", "C8", "C9"], + "rows": ["A1", "A2", "A3", "A4", "C13"] + }, + "processor": "WB32FQ95", + "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, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 208, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 96, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 128, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 144, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 160, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 176, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 192, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 208, "y": 16, "flags": 4}, + {"matrix": [1, 14], "x": 224, "y": 16, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 96, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 112, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 128, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 144, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 160, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 176, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 208, "y": 32, "flags": 4}, + {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 112, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 128, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 144, "y": 48, "flags": 4}, + {"matrix": [3, 11], "x": 176, "y": 48, "flags": 4}, + {"matrix": [3, 12], "x": 192, "y": 48, "flags": 4}, + {"matrix": [3, 13], "x": 208, "y": 48, "flags": 4}, + {"matrix": [3, 14], "x": 224, "y": 48, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4}, + {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4}, + {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4}, + {"matrix": [4, 9], "x": 144, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 176, "y": 64, "flags": 4}, + {"matrix": [4, 12], "x": 192, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 208, "y": 64, "flags": 4}, + {"matrix": [4, 14], "x": 224, "y": 64, "flags": 4} + ] + }, + "url": "", + "usb": { + "device_version": "0.0.1", + "force_nkro": true, + "pid": "0xE463", + "suspend_wakeup_delay": 1000, + "vid": "0x342D" + }, + "ws2812": { + "pin": "B15" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"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, "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": [1, 14], "x": 15, "y": 1.25}, + {"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": 1.75}, + {"matrix": [2, 14], "x": 15, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "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": [3, 14], "x": 15, "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, 3], "x": 3.75, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 6, "y": 3.75, "w": 1.25}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.75}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/epomaker/tide65/keymaps/default/keymap.c b/keyboards/epomaker/tide65/keymaps/default/keymap.c new file mode 100644 index 000000000000..830e2e03c36e --- /dev/null +++ b/keyboards/epomaker/tide65/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +// Copyright 2024 SDK (@sdk66) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_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, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( /* Base */ + 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_HOME, KC_SCRL, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, GU_TOGG, _______, EE_CLR, EE_CLR, EE_CLR, EE_CLR, _______, _______, _______, _______, _______ + ) +}; + +// clang-format on diff --git a/keyboards/epomaker/tide65/keymaps/via/keymap.c b/keyboards/epomaker/tide65/keymaps/via/keymap.c new file mode 100644 index 000000000000..6dfde7291363 --- /dev/null +++ b/keyboards/epomaker/tide65/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +// Copyright 2024 SDK (@sdk66) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_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, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( /* Base */ + 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_HOME, KC_SCRL, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, GU_TOGG, _______, EE_CLR, EE_CLR, EE_CLR, EE_CLR, _______, _______, _______, _______, _______ + ) +}; + +#ifdef 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(_______, _______)}, +}; +#endif + +// clang-format on diff --git a/keyboards/epomaker/tide65/keymaps/via/rules.mk b/keyboards/epomaker/tide65/keymaps/via/rules.mk new file mode 100644 index 000000000000..715838ecc5d9 --- /dev/null +++ b/keyboards/epomaker/tide65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/epomaker/tide65/readme.md b/keyboards/epomaker/tide65/readme.md new file mode 100644 index 000000000000..8274f2dddbb9 --- /dev/null +++ b/keyboards/epomaker/tide65/readme.md @@ -0,0 +1,21 @@ +# EPOMAKER TIDE 65 + +* Keyboard Maintainer: [sdk66](https://github.com/sdk66) +* Hardware Supported: EPOMAKER TIDE 65 +* Hardware Availability: [epomaker](https://www.epomaker.com) + +Make example for this keyboard (after setting up your build environment): + + make epomaker/tide_65:default + +Flashing example for this keyboard: + + make epomaker/tide65:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+R_Shift+Esc will reset the board to bootloader mode if you have flashed the default QMK keymap + +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/epomaker/tide65/rules.mk b/keyboards/epomaker/tide65/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/epomaker/tide65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/epomaker/tide65/tide65.c b/keyboards/epomaker/tide65/tide65.c new file mode 100644 index 000000000000..fc9e7c0db574 --- /dev/null +++ b/keyboards/epomaker/tide65/tide65.c @@ -0,0 +1,10 @@ +// Copyright 2024 SDK (@sdk66) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + gpio_set_pin_output(A5); + gpio_write_pin_high(A5); + keyboard_pre_init_user(); +} From c25dfe543ba461f62b9bdd98f8aa91ec3bc67fc5 Mon Sep 17 00:00:00 2001 From: suikagiken <115451678+suikagiken@users.noreply.github.com> Date: Wed, 17 Apr 2024 22:46:20 +0900 Subject: [PATCH 055/125] [Keyboard] Add suika85ergo (#23380) --- keyboards/suikagiken/suika85ergo/info.json | 124 ++++++++++++++++++ .../suika85ergo/keymaps/default/keymap.c | 23 ++++ .../suika85ergo/keymaps/via/keymap.c | 23 ++++ .../suika85ergo/keymaps/via/rules.mk | 1 + keyboards/suikagiken/suika85ergo/readme.md | 44 +++++++ keyboards/suikagiken/suika85ergo/rules.mk | 1 + 6 files changed, 216 insertions(+) create mode 100644 keyboards/suikagiken/suika85ergo/info.json create mode 100644 keyboards/suikagiken/suika85ergo/keymaps/default/keymap.c create mode 100644 keyboards/suikagiken/suika85ergo/keymaps/via/keymap.c create mode 100644 keyboards/suikagiken/suika85ergo/keymaps/via/rules.mk create mode 100644 keyboards/suikagiken/suika85ergo/readme.md create mode 100644 keyboards/suikagiken/suika85ergo/rules.mk diff --git a/keyboards/suikagiken/suika85ergo/info.json b/keyboards/suikagiken/suika85ergo/info.json new file mode 100644 index 000000000000..e0514dfab85b --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/info.json @@ -0,0 +1,124 @@ +{ + "manufacturer": "suikagiken", + "keyboard_name": "suika85ergo", + "maintainer": "suikagiken", + "development_board": "elite_c", + "pin_compatible": "elite_c", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B3", "B2", "B6", "F0", "F1", "C7", "D5", "B7", "B5", "B4", "E6", "D7", "C6", "D4", "D0", "D1", "D2"], + "rows": ["B0", "F4", "F5", "F6", "F7", "B1"] + }, + "url": "https://github.com/suikagiken/suika85ergo", + "usb": { + "device_version": "1.0.0", + "vid": "0x4B48", + "pid": "0x0002" + }, + "dynamic_keymap": { + "layer_count": 2 + }, + "build": { + "debounce_type": "sym_eager_pk" + }, + "debounce": 50, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "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": [0, 16], "x": 16, "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, 8], "x": 8, "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, 13], "x": 13, "y": 1}, + {"matrix": [1, 14], "x": 14, "y": 1}, + {"matrix": [1, 15], "x": 15, "y": 1}, + {"matrix": [1, 16], "x": 16, "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, 8], "x": 8, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2}, + {"matrix": [2, 12], "x": 12, "y": 2}, + {"matrix": [2, 13], "x": 13, "y": 2}, + {"matrix": [2, 14], "x": 14, "y": 2}, + {"matrix": [2, 15], "x": 15, "y": 2}, + {"matrix": [2, 16], "x": 16, "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, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [3, 13], "x": 13, "y": 3}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"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, 8], "x": 8, "y": 4}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [5, 2], "x": 2, "y": 5}, + {"matrix": [5, 3], "x": 3, "y": 5}, + {"matrix": [5, 4], "x": 4, "y": 5}, + {"matrix": [5, 5], "x": 5, "y": 5}, + {"matrix": [5, 6], "x": 6, "y": 5}, + {"matrix": [5, 7], "x": 7, "y": 5}, + {"matrix": [5, 8], "x": 8, "y": 5}, + {"matrix": [5, 9], "x": 9, "y": 5}, + {"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} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/suikagiken/suika85ergo/keymaps/default/keymap.c b/keyboards/suikagiken/suika85ergo/keymaps/default/keymap.c new file mode 100644 index 000000000000..3678c5481dbb --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2024 suikagiken (@suikagiken) +// 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_DEL , + C(KC_X), KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_PSCR, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC, + C(KC_C), KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_EQL , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, KC_ENT , + C(KC_V), KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_LBRC, KC_RBRC, 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_UP , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LCTL, KC_LWIN, KC_LOPT, MO(1) , KC_SPC , KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC , MO(1) , KC_ROPT, KC_APP , KC_RCTL + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END , _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/suikagiken/suika85ergo/keymaps/via/keymap.c b/keyboards/suikagiken/suika85ergo/keymaps/via/keymap.c new file mode 100644 index 000000000000..3678c5481dbb --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2024 suikagiken (@suikagiken) +// 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_DEL , + C(KC_X), KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_PSCR, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC, + C(KC_C), KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_EQL , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, KC_ENT , + C(KC_V), KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_LBRC, KC_RBRC, 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_UP , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LCTL, KC_LWIN, KC_LOPT, MO(1) , KC_SPC , KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC , MO(1) , KC_ROPT, KC_APP , KC_RCTL + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END , _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/suikagiken/suika85ergo/keymaps/via/rules.mk b/keyboards/suikagiken/suika85ergo/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/suikagiken/suika85ergo/readme.md b/keyboards/suikagiken/suika85ergo/readme.md new file mode 100644 index 000000000000..956755bcccff --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/readme.md @@ -0,0 +1,44 @@ +# suika85ergo +(English Follows Japanese) + +## 概要 + +suika85ergoはカラムスタッガードの一体型エルゴキーボードです。 +ファンクションキーや矢印キーなど、コンパクトキーボードでは省略されがちなキーも備えており、フルキーボードからの移行も容易です。 + +* 制作 : すいか技研 (https://suikagiken.net) GitHub [suikagiken](https://github.com/suikagiken) +* 販売 : 遊舎工房様( https://shop.yushakobo.jp/products/9015 )にてお求め頂けます + +## ビルドガイド + +[こちらのリンク](https://github.com/suikagiken/suika85ergo/blob/main/buildguide.md)からご覧下さい。 + +--- + +## Overview + +suika85ergo is a column-staggered ergonomic keyboard with 85 keys. It has function keys or arrow keys, which are omitted in compact keyboards, making it easy to switch from a conventional full keyboard. + +* Keyboard Maintainer: [suikagiken](https://github.com/suikagiken) +* Hardware Supported: Purchase PCBs from the following stores. +* Hardware Availability: Available at YushaKobo (https://shop.yushakobo.jp/products/9015) + +Make example for this keyboard (after setting up your build environment): + + make suikagiken/suika85ergo:default + +Flashing example for this keyboard: + + make suikagiken/suika85ergo: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/suikagiken/suika85ergo/rules.mk b/keyboards/suikagiken/suika85ergo/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/suikagiken/suika85ergo/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From aa15b64f552d69419ed2ef8f73e9517992818c5f Mon Sep 17 00:00:00 2001 From: yiancar Date: Wed, 17 Apr 2024 16:57:21 +0100 Subject: [PATCH 056/125] [Keyboard] Keycult 65 (#23485) Co-authored-by: yiancar --- keyboards/keycult/keycult65/info.json | 315 ++++++++++++++++++ keyboards/keycult/keycult65/keycult65.c | 21 ++ .../keycult65/keymaps/default/keymap.c | 32 ++ .../keycult/keycult65/keymaps/via/keymap.c | 32 ++ .../keycult/keycult65/keymaps/via/rules.mk | 1 + keyboards/keycult/keycult65/readme.md | 32 ++ keyboards/keycult/keycult65/rules.mk | 2 + 7 files changed, 435 insertions(+) create mode 100644 keyboards/keycult/keycult65/info.json create mode 100644 keyboards/keycult/keycult65/keycult65.c create mode 100644 keyboards/keycult/keycult65/keymaps/default/keymap.c create mode 100644 keyboards/keycult/keycult65/keymaps/via/keymap.c create mode 100644 keyboards/keycult/keycult65/keymaps/via/rules.mk create mode 100644 keyboards/keycult/keycult65/readme.md create mode 100644 keyboards/keycult/keycult65/rules.mk diff --git a/keyboards/keycult/keycult65/info.json b/keyboards/keycult/keycult65/info.json new file mode 100644 index 000000000000..f9436b7b8242 --- /dev/null +++ b/keyboards/keycult/keycult65/info.json @@ -0,0 +1,315 @@ +{ + "manufacturer": "Yiancar-Designs", + "keyboard_name": "Keycult 65", + "maintainer": "Yiancar-Designs", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B6", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A13", "A10", "A9", "A14", "A15", "B8", "B9", "B2", "B1", "B0", "A0", "A1", "A2", "A3", "A5"], + "rows": ["B3", "B4", "B5", "A8", "A4"] + }, + "processor": "STM32F072", + "url": "https://yiancar-designs.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x6335", + "vid": "0x8968" + }, + "community_layouts": ["65_ansi_blocker", "65_ansi_blocker_split_bs", "65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "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, "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, "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": [2, 14], "x": 15, "y": 2}, + {"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": [3, 14], "x": 15, "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, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "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": [1, 13], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "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, "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": [2, 14], "x": 15, "y": 2}, + {"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": [3, 14], "x": 15, "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, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "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, "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": [2, 14], "x": 15, "y": 2}, + {"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": [3, 14], "x": 15, "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": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "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": [1, 13], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "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, "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": [2, 14], "x": 15, "y": 2}, + {"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": [3, 14], "x": 15, "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": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/keycult/keycult65/keycult65.c b/keyboards/keycult/keycult65/keycult65.c new file mode 100644 index 000000000000..fdbfa8f2727c --- /dev/null +++ b/keyboards/keycult/keycult65/keycult65.c @@ -0,0 +1,21 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN); +} diff --git a/keyboards/keycult/keycult65/keymaps/default/keymap.c b/keyboards/keycult/keycult65/keymaps/default/keymap.c new file mode 100644 index 000000000000..94ed786b9334 --- /dev/null +++ b/keyboards/keycult/keycult65/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2024 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_65_ansi_blocker( /* Base */ + 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_65_ansi_blocker( /* FN */ + 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_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/keycult/keycult65/keymaps/via/keymap.c b/keyboards/keycult/keycult65/keymaps/via/keymap.c new file mode 100644 index 000000000000..92c81b419479 --- /dev/null +++ b/keyboards/keycult/keycult65/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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_split_bs( /* Base */ + 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_65_ansi_blocker_split_bs( /* FN */ + 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, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/keycult/keycult65/keymaps/via/rules.mk b/keyboards/keycult/keycult65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/keycult/keycult65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keycult/keycult65/readme.md b/keyboards/keycult/keycult65/readme.md new file mode 100644 index 000000000000..42d5875140cb --- /dev/null +++ b/keyboards/keycult/keycult65/readme.md @@ -0,0 +1,32 @@ +# Keycult 65 + +This is a 65% layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 65% keyboard with STM32F072CB +* Hardware Availability: https://keycult.com/ + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make keycult/keycult65: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). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make keycult/keycult65::flash`) diff --git a/keyboards/keycult/keycult65/rules.mk b/keyboards/keycult/keycult65/rules.mk new file mode 100644 index 000000000000..0ab54aaaf718 --- /dev/null +++ b/keyboards/keycult/keycult65/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF From f75e66dd19788f1f79db062f0bd27f79c63cbea5 Mon Sep 17 00:00:00 2001 From: Alabahuy Date: Fri, 19 Apr 2024 07:16:43 +0700 Subject: [PATCH 057/125] add jaykeeb joker (#23535) --- keyboards/jaykeeb/joker/info.json | 493 ++++++++++++++++++ .../jaykeeb/joker/keymaps/default/keymap.c | 15 + keyboards/jaykeeb/joker/keymaps/via/keymap.c | 15 + keyboards/jaykeeb/joker/keymaps/via/rules.mk | 1 + keyboards/jaykeeb/joker/matrix_diagram.md | 23 + keyboards/jaykeeb/joker/readme.md | 27 + keyboards/jaykeeb/joker/rules.mk | 1 + 7 files changed, 575 insertions(+) create mode 100644 keyboards/jaykeeb/joker/info.json create mode 100644 keyboards/jaykeeb/joker/keymaps/default/keymap.c create mode 100644 keyboards/jaykeeb/joker/keymaps/via/keymap.c create mode 100644 keyboards/jaykeeb/joker/keymaps/via/rules.mk create mode 100644 keyboards/jaykeeb/joker/matrix_diagram.md create mode 100644 keyboards/jaykeeb/joker/readme.md create mode 100644 keyboards/jaykeeb/joker/rules.mk diff --git a/keyboards/jaykeeb/joker/info.json b/keyboards/jaykeeb/joker/info.json new file mode 100644 index 000000000000..ed8b59d03f45 --- /dev/null +++ b/keyboards/jaykeeb/joker/info.json @@ -0,0 +1,493 @@ +{ + "manufacturer": "Jaykeeb Studio", + "keyboard_name": "Joker", + "maintainer": "Alabahuy", + "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", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP15", "GP14", "GP10", "GP4", "GP3", "GP2", "GP1"], + "rows": ["GP5", "GP6", "GP0", "GP9", "GP7", "GP8"] + }, + "indicators": { + "caps_lock": "GP12", + "num_lock": "GP11", + "scroll_lock": "GP13", + "on_state": 0 + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0795", + "vid": "0x414C" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Scroll Lock", "matrix": [0, 14], "x": 15.25, "y": 0}, + + {"label": "Pause", "matrix": [0, 15], "x": 16.5, "y": 0}, + {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0}, + {"label": "End", "matrix": [0, 17], "x": 18.5, "y": 0}, + {"label": "Delete", "matrix": [0, 18], "x": 19.5, "y": 0}, + + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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}, + {"label": "Backspace", "matrix": [2, 13], "x": 14, "y": 1.25}, + + {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + + {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25}, + {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25}, + {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"label": "-", "matrix": [1, 18], "x": 19.5, "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label": "Page Up", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + + {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25}, + {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25}, + {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"label": "+", "matrix": [2, 18], "x": 19.5, "y": 2.25, "h": 2}, + + {"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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"label": "Page Down", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + + {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25}, + {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25}, + {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + + {"label": "\u2191", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + + {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25}, + {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25, "h": 2}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "GUI", "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "Ctrl", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 12], "x": 13.25, "y": 5.5}, + {"label": "\u2193", "matrix": [5, 13], "x": 14.25, "y": 5.5}, + {"label": "\u2192", "matrix": [5, 14], "x": 15.25, "y": 5.5}, + + {"label": "0", "matrix": [5, 15], "x": 16.5, "y": 5.25, "w": 2}, + {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Print Screen", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Pause", "matrix": [0, 15], "x": 16.5, "y": 0}, + {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0}, + {"label": "End", "matrix": [0, 17], "x": 18.5, "y": 0}, + {"label": "Delete", "matrix": [0, 18], "x": 19.5, "y": 0}, + + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25}, + {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25}, + {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"label": "-", "matrix": [1, 18], "x": 19.5, "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "Page Up", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25}, + {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25}, + {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"label": "+", "matrix": [2, 18], "x": 19.5, "y": 2.25, "h": 2}, + + {"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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "Page Down", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25}, + {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25}, + {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Up", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25}, + {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25, "h": 2}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "GUI", "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "Ctrl", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "Left", "matrix": [5, 12], "x": 13.25, "y": 5.5}, + {"label": "Down", "matrix": [5, 13], "x": 14.25, "y": 5.5}, + {"label": "Right", "matrix": [5, 14], "x": 15.25, "y": 5.5}, + {"label": "0", "matrix": [5, 15], "x": 16.5, "y": 5.25, "w": 2}, + {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25} + ] + },"LAYOUT_ansi_wkl": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Print Screen", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Pause", "matrix": [0, 15], "x": 16.5, "y": 0}, + {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0}, + {"label": "End", "matrix": [0, 17], "x": 18.5, "y": 0}, + {"label": "Delete", "matrix": [0, 18], "x": 19.5, "y": 0}, + + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25}, + {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25}, + {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"label": "-", "matrix": [1, 18], "x": 19.5, "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "Page Up", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25}, + {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25}, + {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"label": "+", "matrix": [2, 18], "x": 19.5, "y": 2.25, "h": 2}, + + {"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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "Page Down", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25}, + {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25}, + {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Up", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25}, + {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25, "h": 2}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "Alt", "matrix": [5, 1], "x": 1.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 6], "x": 3, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "Ctrl", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "Left", "matrix": [5, 12], "x": 13.25, "y": 5.5}, + {"label": "Down", "matrix": [5, 13], "x": 14.25, "y": 5.5}, + {"label": "Right", "matrix": [5, 14], "x": 15.25, "y": 5.5}, + {"label": "0", "matrix": [5, 15], "x": 16.5, "y": 5.25, "w": 2}, + {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25} + ] + }, + "LAYOUT_ansi_wkl_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Print Screen", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Pause", "matrix": [0, 15], "x": 16.5, "y": 0}, + {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0}, + {"label": "End", "matrix": [0, 17], "x": 18.5, "y": 0}, + {"label": "Delete", "matrix": [0, 18], "x": 19.5, "y": 0}, + + {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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}, + {"label": "Backspace", "matrix": [2, 13], "x": 14, "y": 1.25}, + {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25}, + {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25}, + {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"label": "-", "matrix": [1, 18], "x": 19.5, "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "Page Up", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25}, + {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25}, + {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"label": "+", "matrix": [2, 18], "x": 19.5, "y": 2.25, "h": 2}, + + {"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, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "Page Down", "matrix": [3, 14], "x": 15.25, "y": 3.25}, + {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25}, + {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25}, + {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Up", "matrix": [4, 13], "x": 14.25, "y": 4.5}, + {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25}, + {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25, "h": 2}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "Alt", "matrix": [5, 1], "x": 1.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 6], "x": 3, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "Ctrl", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "Left", "matrix": [5, 12], "x": 13.25, "y": 5.5}, + {"label": "Down", "matrix": [5, 13], "x": 14.25, "y": 5.5}, + {"label": "Right", "matrix": [5, 14], "x": 15.25, "y": 5.5}, + {"label": "0", "matrix": [5, 15], "x": 16.5, "y": 5.25, "w": 2}, + {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/jaykeeb/joker/keymaps/default/keymap.c b/keyboards/jaykeeb/joker/keymaps/default/keymap.c new file mode 100644 index 000000000000..a9f71941604c --- /dev/null +++ b/keyboards/jaykeeb/joker/keymaps/default/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_HOME, KC_END , 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_INS , 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_PPLS, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, KC_P4 , KC_P5 , KC_P6 , + 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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT + ) +}; \ No newline at end of file diff --git a/keyboards/jaykeeb/joker/keymaps/via/keymap.c b/keyboards/jaykeeb/joker/keymaps/via/keymap.c new file mode 100644 index 000000000000..a9f71941604c --- /dev/null +++ b/keyboards/jaykeeb/joker/keymaps/via/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_HOME, KC_END , 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_INS , 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_PPLS, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, KC_P4 , KC_P5 , KC_P6 , + 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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT + ) +}; \ No newline at end of file diff --git a/keyboards/jaykeeb/joker/keymaps/via/rules.mk b/keyboards/jaykeeb/joker/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/jaykeeb/joker/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jaykeeb/joker/matrix_diagram.md b/keyboards/jaykeeb/joker/matrix_diagram.md new file mode 100644 index 000000000000..d7b79bf97afe --- /dev/null +++ b/keyboards/jaykeeb/joker/matrix_diagram.md @@ -0,0 +1,23 @@ +# Matrix Diagram for jaykeeb joker + +``` +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┐┌───┬───┬───┬───┐ +│00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D ││0E ││0F │0G │0H │0I │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┘└───┴───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐ ┌───────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │2D ││1E ││1F │1G │1H │1I │ │1E │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └───────┘ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │3D ││2E ││2F │2G │2H │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤├───┼───┼───┤2I │ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C ││3E ││3F │3G │3H │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘├───┼───┼───┼───┤ +│40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │┌───┐ │4F │4G │4H │ │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│4D │ ├───┴───┼───┤4I │ +│50 │51 │52 │56 │5A │5B │┌───┼───┼───┐│5F │5H │ │ +└────┴────┴────┴────────────────────────┴─────┴─────┘│5C │5D │5E │└───────┴───┴───┘ + └───┴───┴───┘ + +┌─────┬─────┬───────────────────────────┬─────┬─────┐ +│50 │51 │56 │5A │5B │ WKL +└─────┴─────┴───────────────────────────┴─────┴─────┘ +``` \ No newline at end of file diff --git a/keyboards/jaykeeb/joker/readme.md b/keyboards/jaykeeb/joker/readme.md new file mode 100644 index 000000000000..d356b5b3c229 --- /dev/null +++ b/keyboards/jaykeeb/joker/readme.md @@ -0,0 +1,27 @@ +# Joker + +![joker](https://i.imgur.com/7uNPp7r.png) + +1800 layout pcb replace for austin + +* Keyboard Maintainer: [Alabahuy](https://github.com/Alabahuy) +* Hardware Supported: RP2040 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make jaykeeb/joker:default + +Flashing example for this keyboard: + + make jaykeeb/joker: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/jaykeeb/joker/rules.mk b/keyboards/jaykeeb/joker/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/jaykeeb/joker/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 2693d6fd840ab236021a64e42aa6d9c25da9a69c Mon Sep 17 00:00:00 2001 From: Santosh Kumar Date: Fri, 19 Apr 2024 06:29:14 +0530 Subject: [PATCH 058/125] [sofle] Fix layout order affecting messed up lower/raise/adjust layer (#23555) --- keyboards/sofle/keymaps/default/config.h | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 keyboards/sofle/keymaps/default/config.h diff --git a/keyboards/sofle/keymaps/default/config.h b/keyboards/sofle/keymaps/default/config.h new file mode 100644 index 000000000000..085d5844d9f4 --- /dev/null +++ b/keyboards/sofle/keymaps/default/config.h @@ -0,0 +1,8 @@ +// Copyright 2024 Santosh Kumar (@santosh) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define TRI_LAYER_LOWER_LAYER 2 +#define TRI_LAYER_UPPER_LAYER 3 +#define TRI_LAYER_ADJUST_LAYER 4 From ac2424fec687ee1ffde580a58c031fe7ad9d302b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 02:09:11 +0100 Subject: [PATCH 059/125] Bump JamesIves/github-pages-deploy-action from 4.5.0 to 4.6.0 (#23548) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index fc0ed11c43ff..3f7fbbe7aff6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: qmk --verbose generate-docs - name: Deploy - uses: JamesIves/github-pages-deploy-action@v4.5.0 + uses: JamesIves/github-pages-deploy-action@v4.6.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BASE_BRANCH: master From e807bb7e37202bc046fccd511cea03485339cb74 Mon Sep 17 00:00:00 2001 From: Ivan Gromov <38141348+key10iq@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:22:36 +0400 Subject: [PATCH 060/125] Add Lisa keyboard (#23575) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Ryan --- keyboards/keyten/lisa/info.json | 81 +++++++++++++++++++ .../keyten/lisa/keymaps/default/keymap.c | 28 +++++++ keyboards/keyten/lisa/keymaps/via/keymap.c | 28 +++++++ keyboards/keyten/lisa/keymaps/via/rules.mk | 1 + keyboards/keyten/lisa/lisa.c | 12 +++ keyboards/keyten/lisa/readme.md | 27 +++++++ keyboards/keyten/lisa/rules.mk | 0 7 files changed, 177 insertions(+) create mode 100644 keyboards/keyten/lisa/info.json create mode 100644 keyboards/keyten/lisa/keymaps/default/keymap.c create mode 100644 keyboards/keyten/lisa/keymaps/via/keymap.c create mode 100644 keyboards/keyten/lisa/keymaps/via/rules.mk create mode 100644 keyboards/keyten/lisa/lisa.c create mode 100644 keyboards/keyten/lisa/readme.md create mode 100644 keyboards/keyten/lisa/rules.mk diff --git a/keyboards/keyten/lisa/info.json b/keyboards/keyten/lisa/info.json new file mode 100644 index 000000000000..deac0f374080 --- /dev/null +++ b/keyboards/keyten/lisa/info.json @@ -0,0 +1,81 @@ +{ + "manufacturer": "keyten", + "keyboard_name": "Lisa", + "maintainer": "key10iq", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B7", "B6", "B5", "B4", "B3", "A15", "A3", "A4", "A5", "A6", "A7", "B0", "B1"], + "rows": ["B13", "B15", "B14", "A8"] + }, + "indicators": { + "caps_lock": "B10", + "num_lock": "B11" + } + "processor": "STM32F072", + "usb": { + "vid": "0xEB69", + "pid": "0x4001", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 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": 10.5, "y": 0}, + {"matrix": [0, 10], "x": 11.5, "y": 0}, + {"matrix": [0, 11], "x": 12.5, "y": 0}, + {"matrix": [0, 12], "x": 13.5, "y": 0}, + {"matrix": [1, 0], "w": 1.25, "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 7.75, "y": 1}, + {"matrix": [1, 7], "x": 8.75, "y": 1}, + {"matrix": [1, 8], "x": 9.75, "y": 1}, + {"matrix": [1, 9], "x": 10.75, "y": 1}, + {"matrix": [1, 10], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "w": 1.75, "x": 12.75, "y": 1}, + {"matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"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": 7.25, "y": 2}, + {"matrix": [2, 7], "x": 8.25, "y": 2}, + {"matrix": [2, 8], "x": 9.25, "y": 2}, + {"matrix": [2, 9], "x": 10.25, "y": 2}, + {"matrix": [2, 10], "x": 11.25, "y": 2}, + {"matrix": [2, 11], "x": 12.25, "y": 2}, + {"matrix": [2, 12], "w": 1.25, "x": 13.25, "y": 2}, + {"matrix": [3, 0], "w": 1.25, "x": 0, "y": 3}, + {"matrix": [3, 1], "w": 1.25, "x": 1.25, "y": 3}, + {"matrix": [3, 3], "w": 1.25, "x": 3.5, "y": 3}, + {"matrix": [3, 5], "w": 2, "x": 4.75, "y": 3}, + {"matrix": [3, 6], "w": 2.25, "x": 7.25, "y": 3}, + {"matrix": [3, 8], "w": 1.25, "x": 9.5, "y": 3}, + {"matrix": [3, 11], "w": 1.25, "x": 12, "y": 3}, + {"matrix": [3, 12], "w": 1.25, "x": 13.25, "y": 3} + ] + } + } +} diff --git a/keyboards/keyten/lisa/keymaps/default/keymap.c b/keyboards/keyten/lisa/keymaps/default/keymap.c new file mode 100644 index 000000000000..0803f25b6e02 --- /dev/null +++ b/keyboards/keyten/lisa/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2024 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_TAB, 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_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(1,KC_SPC), LT(2,KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/keyten/lisa/keymaps/via/keymap.c b/keyboards/keyten/lisa/keymaps/via/keymap.c new file mode 100644 index 000000000000..0803f25b6e02 --- /dev/null +++ b/keyboards/keyten/lisa/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2024 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_TAB, 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_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(1,KC_SPC), LT(2,KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/keyten/lisa/keymaps/via/rules.mk b/keyboards/keyten/lisa/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/keyten/lisa/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keyten/lisa/lisa.c b/keyboards/keyten/lisa/lisa.c new file mode 100644 index 000000000000..2ecff3a642c7 --- /dev/null +++ b/keyboards/keyten/lisa/lisa.c @@ -0,0 +1,12 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#define LED_INDICATOR_PIN B2 + +void matrix_init_kb(void) { + gpio_set_pin_output(LED_INDICATOR_PIN); + gpio_write_pin_high(LED_INDICATOR_PIN); + matrix_init_user(); +} diff --git a/keyboards/keyten/lisa/readme.md b/keyboards/keyten/lisa/readme.md new file mode 100644 index 000000000000..e5d783e8406c --- /dev/null +++ b/keyboards/keyten/lisa/readme.md @@ -0,0 +1,27 @@ +# keyten Lisa + +Lisa is a Tadpole mount keyboard with Prime_E layout + +![Lisa](https://i.imgur.com/PaVECKC.png) + +* Keyboard Maintainer: [keyten](https://github.com/key10iq) +* Hardware Supported: keyten Lisa +* Hardware Availability: private GB + +Make example for this keyboard (after setting up your build environment): + + make keyten/lisa:default + +Flashing example for this keyboard: + + make keyten/lisa: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 +* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available +* Physical reset button: Hold the button on the back of the PCB diff --git a/keyboards/keyten/lisa/rules.mk b/keyboards/keyten/lisa/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 From 33c453d771a89a5c050a512599422a308be62a37 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 23 Apr 2024 19:38:08 +1000 Subject: [PATCH 061/125] PR Checklist: explain wireless requirements. (#23584) --- docs/pr_checklist.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index 0d503ab41778..94ff7eed6655 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -148,6 +148,13 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - For instance, only `wilba_tech` boards shall include `keyboards/wilba_tech/wt_main.c` and `keyboards/wilba_tech/wt_rgb_backlight.c`. But including `drivers/sensors/pmw3360.c` is absolutely fine for any and all boards that require it. - Code that needs to be used by multiple boards is a candidate for core code changes, and should be separated out. +Wireless-capable boards: +- Given license abuse from vendors, QMK does not accept any vendor PRs for wireless- or Bluetooth-capable keyboards without wireless and/or Bluetooth code + - Historically, vendors have done this in bad faith in order to attain downstream VIA compatibility with no intention of releasing wireless sources + - QMK's license, the GPL2+, requires full source disclosure for any distributed binary -- including full sources for any keyboard shipped by vendors containing QMK and/or firmware-side VIA code + - If a vendor's wireless-capable keyboard PR submission is lacking wireless capability, then the PR will be left on-hold and unmergeable until wireless bindings are provided + - If a vendor's wireless-capable keyboard is merged into QMK before it's known that the board is wireless, then all existing and future PRs from the same vendor will be put on hold until wireless bindings for the offending keyboard are provided + Also, specific to ChibiOS: - **strong** preference to using existing ChibiOS board definitions. - a lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family From 1fa84ea83c68bb24bc6b21c5abc376ee12d1b939 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 23 Apr 2024 19:38:47 +1000 Subject: [PATCH 062/125] Fix up license check path. (#23571) --- lib/python/qmk/cli/license_check.py | 83 +++++++++++++++++------------ 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/lib/python/qmk/cli/license_check.py b/lib/python/qmk/cli/license_check.py index 4bda272ec9bb..119a228c6d40 100644 --- a/lib/python/qmk/cli/license_check.py +++ b/lib/python/qmk/cli/license_check.py @@ -1,9 +1,9 @@ # 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 +from qmk.path import normpath L_PAREN = re.compile(r'\(\[\{\<') R_PAREN = re.compile(r'\)\]\}\>') @@ -27,7 +27,45 @@ def _simplify_text(input): return ' '.join(lines) -def _detect_license_from_file_contents(filename, absolute=False): +def _preformat_license_texts(): + # 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]) + + +def _determine_suffix_condition(extensions): + def _default_suffix_condition(s): + return s in SUFFIXES + + conditional = _default_suffix_condition + + if extensions is not None and len(extensions) > 0: + suffixes = [f'.{s}' if not s.startswith('.') else s for s in extensions] + + def _specific_suffix_condition(s): + return s in suffixes + + conditional = _specific_suffix_condition + + return conditional + + +def _determine_file_list(inputs, conditional): + check_list = set() + for filename in 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) + + return list(sorted(check_list)) + + +def _detect_license_from_file_contents(filename, absolute=False, short=False): data = filename.read_text(encoding='utf-8', errors='ignore') filename_out = str(filename.absolute()) if absolute else str(filename) @@ -42,13 +80,13 @@ def _detect_license_from_file_contents(filename, absolute=False): break if not found: - if cli.args.short: + if 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: + if short: print(f'{filename_out} {license}') else: cli.log.info(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- license detected: {license} (SPDX License Identifier)') @@ -59,13 +97,13 @@ def _detect_license_from_file_contents(filename, absolute=False): for short_license, long_licenses in LICENSE_TEXTS: for long_license in long_licenses: if long_license in simple_text: - if cli.args.short: + if 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: + if short: print(f'{filename_out} UNKNOWN') else: cli.log.error(f'{{fg_cyan}}{filename_out}{{fg_reset}} -- unknown license, or no license detected!') @@ -73,43 +111,20 @@ def _detect_license_from_file_contents(filename, absolute=False): return False -@cli.argument('inputs', nargs='*', arg_only=True, type=Path, help='List of input files or directories.') +@cli.argument('inputs', nargs='*', arg_only=True, type=normpath, 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 + _preformat_license_texts() - # 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) + conditional = _determine_suffix_condition(cli.args.extension) + check_list = _determine_file_list(cli.args.inputs, conditional) failed = False for filename in sorted(check_list): - if not _detect_license_from_file_contents(filename, absolute=cli.args.absolute): + if not _detect_license_from_file_contents(filename, absolute=cli.args.absolute, short=cli.args.short): failed = True if failed: From 2893038fda6cd19ef84d92afa4ae8c4615698e38 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Thu, 25 Apr 2024 17:02:48 -0700 Subject: [PATCH 063/125] nullbitsco/snap: once again reduce size of bongo_reactive (#23284) --- keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h index d4f07051e5c1..b2c161d40ac6 100644 --- a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h @@ -28,8 +28,11 @@ // Selectively undefine to save space // VIA support won't fit otherwise #ifdef RGBLIGHT_ENABLE -#undef RGBLIGHT_EFFECT_TWINKLE +#undef RGBLIGHT_EFFECT_ALTERNATING +#undef RGBLIGHT_EFFECT_CHRISTMAS #undef RGBLIGHT_EFFECT_RGB_TEST +#undef RGBLIGHT_EFFECT_SNAKE +#undef RGBLIGHT_EFFECT_TWINKLE #endif //RGB LIGHT_ENABLE // Split Options From 2224a768d598fe30bbfb80e11cac6d7704680371 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Sat, 27 Apr 2024 02:28:29 +0300 Subject: [PATCH 064/125] Fix encoder breakage with 4 or more encoders (#23595) --- quantum/encoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/encoder.c b/quantum/encoder.c index 0a48ac9a07b5..2ddbf3ee1e02 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -83,7 +83,7 @@ bool encoder_task(void) { } bool encoder_queue_full_advanced(encoder_events_t *events) { - return events->head == (events->tail - 1) % MAX_QUEUED_ENCODER_EVENTS; + return events->tail == (events->head + 1) % MAX_QUEUED_ENCODER_EVENTS; } bool encoder_queue_full(void) { From e99b7f240aacd4d9a0182396533a3e972ea1f9a8 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 28 Apr 2024 21:12:14 +1000 Subject: [PATCH 065/125] Remove broken CI workflow (#23631) --- .github/workflows/ci_builds.yml | 74 --------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 .github/workflows/ci_builds.yml diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml deleted file mode 100644 index 7fa07fe09d90..000000000000 --- a/.github/workflows/ci_builds.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: CI Builds - -permissions: - contents: read - -on: - push: - branches: [master, develop] - workflow_dispatch: - inputs: - branch: - type: choice - description: 'Branch to build' - options: [master, develop] - -concurrency: ci_build-${{ github.event.inputs.branch || github.ref_name }} - -jobs: - ci_builds: - if: github.repository == 'qmk/qmk_firmware' - name: "CI Build" - runs-on: self-hosted - timeout-minutes: 1380 - - strategy: - fail-fast: false - matrix: - keymap: [default, via] - - container: ghcr.io/qmk/qmk_cli - - steps: - - name: Disable safe.directory check - run : git config --global --add safe.directory '*' - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ github.event.inputs.branch || github.ref }} - - - name: Install dependencies - run: pip3 install -r requirements.txt - - - name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }}) - run: | - export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) - qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes || touch .failed - # Generate the step summary markdown - ./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true - # Truncate to a maximum of 1MB to deal with GitHub workflow limit - truncate --size='<960K' $GITHUB_STEP_SUMMARY || true - # Exit with failure if the compilation stage failed - [ ! -f .failed ] || exit 1 - - - name: 'Upload artifacts' - uses: actions/upload-artifact@v4 - if: always() - with: - name: artifacts-${{ github.event.inputs.branch || github.ref_name }}-${{ matrix.keymap }} - if-no-files-found: ignore - path: | - *.bin - *.hex - *.uf2 - .build/failed.* - - - name: 'CI Discord Notification' - if: always() - working-directory: util/ci/ - env: - DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} - run: | - python3 -m pip install -r requirements.txt - python3 ./discord-results.py --branch ${{ github.event.inputs.branch || github.ref_name }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} From 4f087591a8773664e587ac3450e95119f3d586d4 Mon Sep 17 00:00:00 2001 From: Richard Dawe Date: Tue, 30 Apr 2024 02:36:32 +0100 Subject: [PATCH 066/125] Add YMDK YMD62 ISO PCB (#23629) --- keyboards/ymdk/ymd62/config.h | 11 + keyboards/ymdk/ymd62/halconf.h | 8 + keyboards/ymdk/ymd62/info.json | 217 ++++++++++++++++++ keyboards/ymdk/ymd62/keymaps/default/keymap.c | 19 ++ keyboards/ymdk/ymd62/mcuconf.h | 9 + keyboards/ymdk/ymd62/readme.md | 28 +++ keyboards/ymdk/ymd62/rules.mk | 2 + 7 files changed, 294 insertions(+) create mode 100644 keyboards/ymdk/ymd62/config.h create mode 100644 keyboards/ymdk/ymd62/halconf.h create mode 100644 keyboards/ymdk/ymd62/info.json create mode 100644 keyboards/ymdk/ymd62/keymaps/default/keymap.c create mode 100644 keyboards/ymdk/ymd62/mcuconf.h create mode 100644 keyboards/ymdk/ymd62/readme.md create mode 100644 keyboards/ymdk/ymd62/rules.mk diff --git a/keyboards/ymdk/ymd62/config.h b/keyboards/ymdk/ymd62/config.h new file mode 100644 index 000000000000..5f1f3f3a2a53 --- /dev/null +++ b/keyboards/ymdk/ymd62/config.h @@ -0,0 +1,11 @@ +// Copyright 2021 Mike Tsao +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD4 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 +#define WS2812_DMA_CHANNEL 7 \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/halconf.h b/keyboards/ymdk/ymd62/halconf.h new file mode 100644 index 000000000000..89073b2f3c18 --- /dev/null +++ b/keyboards/ymdk/ymd62/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/ymdk/ymd62/info.json b/keyboards/ymdk/ymd62/info.json new file mode 100644 index 000000000000..92ed13d26064 --- /dev/null +++ b/keyboards/ymdk/ymd62/info.json @@ -0,0 +1,217 @@ +{ + "manufacturer": "YMDK", + "keyboard_name": "YMD62 ISO QMK", + "maintainer": "richdawe", + "bootloader": "uf2boot", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A7", "B0", "B1", "B2", "B10", "B11", "A5", "A15", "B3", "B12", "B13", "B14", "B15", "A8"], + "rows": ["A4", "A3", "A2", "A1", "A0"] + }, + "processor": "STM32F103", + "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, + "dual_beacon": true, + "flower_blooming": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "riverflow": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true + }, + "default": { + "animation": "rainbow_moving_chevron" + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 1, "y": 1, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 1, "flags": 4}, + {"matrix": [0, 2], "x": 28, "y": 1, "flags": 4}, + {"matrix": [0, 3], "x": 44, "y": 1, "flags": 4}, + {"matrix": [0, 4], "x": 58, "y": 1, "flags": 4}, + {"matrix": [0, 5], "x": 75, "y": 1, "flags": 4}, + {"matrix": [0, 6], "x": 89, "y": 1, "flags": 4}, + {"matrix": [0, 7], "x": 103, "y": 1, "flags": 4}, + {"matrix": [0, 8], "x": 117, "y": 1, "flags": 4}, + {"matrix": [0, 9], "x": 129, "y": 1, "flags": 4}, + {"matrix": [0, 10], "x": 147, "y": 1, "flags": 4}, + {"matrix": [0, 11], "x": 167, "y": 1, "flags": 4}, + {"matrix": [0, 12], "x": 183, "y": 1, "flags": 4}, + {"matrix": [0, 13], "x": 200, "y": 1, "flags": 4}, + {"matrix": [1, 0], "x": 3, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 33, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 47, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 60, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 77, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 91, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 106, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 120, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 131, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 149, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 169, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 185, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 205, "y": 26, "flags": 4}, + {"matrix": [2, 0], "x": 5, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 20, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 35, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 49, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 62, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 79, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 93, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 108, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 122, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 133, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 151, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 171, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 199, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 8, "y": 49, "flags": 4}, + {"matrix": [3, 1], "x": 23, "y": 49, "flags": 4}, + {"matrix": [3, 2], "x": 38, "y": 49, "flags": 4}, + {"matrix": [3, 3], "x": 51, "y": 49, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 49, "flags": 4}, + {"matrix": [3, 5], "x": 81, "y": 49, "flags": 4}, + {"matrix": [3, 6], "x": 95, "y": 49, "flags": 4}, + {"matrix": [3, 7], "x": 110, "y": 49, "flags": 4}, + {"matrix": [3, 8], "x": 124, "y": 49, "flags": 4}, + {"matrix": [3, 9], "x": 135, "y": 49, "flags": 4}, + {"matrix": [3, 10], "x": 153, "y": 49, "flags": 4}, + {"matrix": [3, 11], "x": 189, "y": 49, "flags": 4}, + {"matrix": [3, 13], "x": 212, "y": 49, "flags": 4}, + {"matrix": [4, 0], "x": 2, "y": 63, "flags": 4}, + {"matrix": [4, 1], "x": 15, "y": 63, "flags": 4}, + {"matrix": [4, 2], "x": 33, "y": 63, "flags": 4}, + {"matrix": [4, 6], "x": 92, "y": 63, "flags": 4}, + {"matrix": [4, 9], "x": 149, "y": 63, "flags": 4}, + {"matrix": [4, 10], "x": 170, "y": 63, "flags": 4}, + {"matrix": [4, 11], "x": 188, "y": 63, "flags": 4}, + {"matrix": [4, 13], "x": 200, "y": 63, "flags": 4}, + {"x": 60, "y": 5, "flags": 2}, + {"x": 90, "y": 5, "flags": 2}, + {"x": 120, "y": 5, "flags": 2}, + {"x": 150, "y": 5, "flags": 2}, + {"x": 180, "y": 5, "flags": 2}, + {"x": 210, "y": 5, "flags": 2}, + {"x": 210, "y": 60, "flags": 2}, + {"x": 180, "y": 60, "flags": 2}, + {"x": 150, "y": 60, "flags": 2}, + {"x": 120, "y": 60, "flags": 2}, + {"x": 90, "y": 60, "flags": 2}, + {"x": 60, "y": 60, "flags": 2} + ], + "max_brightness": 128 + }, + "url": "https://ymdkey.com/products/ymd62-iso-rgb-hot-swap-pcb-fully-programmable-support-via-vial", + "usb": { + "device_version": "0.0.4", + "pid": "0x0062", + "vid": "0x45D4" + }, + "ws2812": { + "driver": "pwm", + "pin": "B9" + }, + "community_layouts": ["60_iso"], + "layouts": { + "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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5, "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, 13], "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, 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, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/ymdk/ymd62/keymaps/default/keymap.c b/keyboards/ymdk/ymd62/keymaps/default/keymap.c new file mode 100644 index 000000000000..79c128295eff --- /dev/null +++ b/keyboards/ymdk/ymd62/keymaps/default/keymap.c @@ -0,0 +1,19 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_60_iso( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), + +[1] = LAYOUT_60_iso( /* FN */ + 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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT , + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, 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_VAI, RGB_VAD, RGB_M_P, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/mcuconf.h b/keyboards/ymdk/ymd62/mcuconf.h new file mode 100644 index 000000000000..3c0764037118 --- /dev/null +++ b/keyboards/ymdk/ymd62/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Richard Dawe (@richdawe) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 TRUE \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/readme.md b/keyboards/ymdk/ymd62/readme.md new file mode 100644 index 000000000000..73eeed3dbb91 --- /dev/null +++ b/keyboards/ymdk/ymd62/readme.md @@ -0,0 +1,28 @@ +# YMDK YMD62 ISO + +A 60% PCB supporting the ISO layout, with hotswap sockets, backlit keys and underglow. + +* Keyboard Maintainer: [Richard Dawe](https://github.com/richdawe) +* Hardware Supported: YMD62 PCB +* Hardware Availability: [YMDK](https://ymdkey.com/products/ymd62-iso-rgb-hot-swap-pcb-fully-programmable-support-via-vial) + +Make example for this keyboard (after setting up your build environment): + + make ymdk/ymd62:default + +Flashing example for this keyboard: + + make ymdk/ymd62: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**: Double-tap the reset button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +Note: The device does not reconnect automatically after the QMK firmware has been flashed. +Wait for the USB device to disappear after writing firmware, then unplug and re-plug it. \ No newline at end of file diff --git a/keyboards/ymdk/ymd62/rules.mk b/keyboards/ymdk/ymd62/rules.mk new file mode 100644 index 000000000000..ef4364b06ac2 --- /dev/null +++ b/keyboards/ymdk/ymd62/rules.mk @@ -0,0 +1,2 @@ +# Configure for 128K flash +MCU_LDSCRIPT = STM32F103xB \ No newline at end of file From fd32861c9f9c27d0a577d54dacf10a6267f794e5 Mon Sep 17 00:00:00 2001 From: Ming-Gih Lam Date: Mon, 29 Apr 2024 18:39:29 -0700 Subject: [PATCH 067/125] Masonry keyboard support (#23597) --- keyboards/dcpedit/masonry/info.json | 79 +++++++++++++++++++ .../masonry/keymaps/default/keymap.json | 21 +++++ .../dcpedit/masonry/keymaps/via/keymap.json | 26 ++++++ keyboards/dcpedit/masonry/readme.md | 27 +++++++ keyboards/dcpedit/masonry/rules.mk | 1 + 5 files changed, 154 insertions(+) create mode 100644 keyboards/dcpedit/masonry/info.json create mode 100644 keyboards/dcpedit/masonry/keymaps/default/keymap.json create mode 100644 keyboards/dcpedit/masonry/keymaps/via/keymap.json create mode 100644 keyboards/dcpedit/masonry/readme.md create mode 100644 keyboards/dcpedit/masonry/rules.mk diff --git a/keyboards/dcpedit/masonry/info.json b/keyboards/dcpedit/masonry/info.json new file mode 100644 index 000000000000..2d25f7262193 --- /dev/null +++ b/keyboards/dcpedit/masonry/info.json @@ -0,0 +1,79 @@ +{ + "manufacturer": "dcpedit", + "keyboard_name": "Masonry", + "maintainer": "dcpedit", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 2 + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["A8", "B15", "B14", "B13", "B12", "A2"], + "rows": ["A9", "A0", "F0", "C15", "A10", "F1", "A1", "C14"] + }, + "processor": "STM32F072", + "url": "https://github.com/dcpedit/masonry", + "usb": { + "device_version": "1.0.0", + "pid": "0x177A", + "vid": "0xDC9E" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "4,0", "matrix": [4, 0], "x": 1, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "4,1", "matrix": [4, 1], "x": 3, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "4,2", "matrix": [4, 2], "x": 5, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "4,3", "matrix": [4, 3], "x": 7, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "4,4", "matrix": [4, 4], "x": 9, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "4,5", "matrix": [4, 5], "x": 11, "y": 0}, + + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.75}, + {"label": "5,0", "matrix": [5, 0], "x": 1, "y": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 2, "y": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 3, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 4, "y": 1.25}, + {"label": "5,2", "matrix": [5, 2], "x": 5, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 6, "y": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 7, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 8, "y": 1}, + {"label": "5,4", "matrix": [5, 4], "x": 9, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 10, "y": 1.5}, + {"label": "5,5", "matrix": [5, 5], "x": 11, "y": 1.75}, + + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.75}, + {"label": "6,0", "matrix": [6, 0], "x": 1, "y": 2.5}, + {"label": "2,1", "matrix": [2, 1], "x": 2, "y": 2.25}, + {"label": "6,1", "matrix": [6, 1], "x": 3, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 4, "y": 2.25}, + {"label": "6,2", "matrix": [6, 2], "x": 5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 6, "y": 2.25}, + {"label": "6,3", "matrix": [6, 3], "x": 7, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 8, "y": 2}, + {"label": "6,4", "matrix": [6, 4], "x": 9, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 10, "y": 2.5}, + {"label": "6,5", "matrix": [6, 5], "x": 11, "y": 2.75}, + + {"label": "3,1", "matrix": [3, 1], "x": 2, "y": 3.25}, + {"label": "7,1", "matrix": [7, 1], "x": 3, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 4, "y": 3.25}, + {"label": "7,2", "matrix": [7, 2], "x": 5, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 6, "y": 3.25}, + {"label": "7,3", "matrix": [7, 3], "x": 7, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 8, "y": 3.25}, + {"label": "7,4", "matrix": [7, 4], "x": 9, "y": 3.25} + ] + } + } +} diff --git a/keyboards/dcpedit/masonry/keymaps/default/keymap.json b/keyboards/dcpedit/masonry/keymaps/default/keymap.json new file mode 100644 index 000000000000..6da346bb917e --- /dev/null +++ b/keyboards/dcpedit/masonry/keymaps/default/keymap.json @@ -0,0 +1,21 @@ +{ + "keyboard": "dcpedit/masonry", + "keymap": "default", + "author": "dcpedit", + "version": 1, + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_QUOT", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "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_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI" + ], + [ + "KC_GRV" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_RGUI", + "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_HOME", "KC_END", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_RALT", + "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} \ No newline at end of file diff --git a/keyboards/dcpedit/masonry/keymaps/via/keymap.json b/keyboards/dcpedit/masonry/keymaps/via/keymap.json new file mode 100644 index 000000000000..76dfde656599 --- /dev/null +++ b/keyboards/dcpedit/masonry/keymaps/via/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "dcpedit/masonry", + "keymap": "default", + "author": "dcpedit", + "version": 1, + "config": { + "features": { + "via": true + } + }, + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_QUOT", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "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_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI" + ], + [ + "KC_GRV" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_RGUI", + "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_HOME", "KC_END", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_RALT", + "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} \ No newline at end of file diff --git a/keyboards/dcpedit/masonry/readme.md b/keyboards/dcpedit/masonry/readme.md new file mode 100644 index 000000000000..9ba7a1597e5a --- /dev/null +++ b/keyboards/dcpedit/masonry/readme.md @@ -0,0 +1,27 @@ +# Masonry + +![Masonry](https://i.imgur.com/gqx2FZW.jpg) + +Masonry is a 40% ergoish columnar keyboard projected on a rectangular keyboard shape. + +* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit) +* Hardware Supported: STM32F072 +* Hardware Availability: https://github.com/dcpedit/masonry + +Make example for this keyboard (after setting up your build environment): + + make dcpedit/masonry:default + +Flashing example for this keyboard: + + make dcpedit/masonry: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/masonry/rules.mk b/keyboards/dcpedit/masonry/rules.mk new file mode 100644 index 000000000000..cfa2d9632f94 --- /dev/null +++ b/keyboards/dcpedit/masonry/rules.mk @@ -0,0 +1 @@ +# Intentionally left blank \ No newline at end of file From cc35aaadbf18da8f6145adfe8b135fc0f9ee26a1 Mon Sep 17 00:00:00 2001 From: Florent Linguenheld Date: Tue, 30 Apr 2024 03:40:01 +0200 Subject: [PATCH 068/125] Add Chew keyboard (#23628) --- keyboards/chew/config.h | 11 ++++ keyboards/chew/info.json | 84 +++++++++++++++++++++++++ keyboards/chew/keymaps/default/keymap.c | 27 ++++++++ keyboards/chew/readme.md | 38 +++++++++++ keyboards/chew/rules.mk | 1 + 5 files changed, 161 insertions(+) create mode 100644 keyboards/chew/config.h create mode 100644 keyboards/chew/info.json create mode 100644 keyboards/chew/keymaps/default/keymap.c create mode 100644 keyboards/chew/readme.md create mode 100644 keyboards/chew/rules.mk diff --git a/keyboards/chew/config.h b/keyboards/chew/config.h new file mode 100644 index 000000000000..22b43cf799d8 --- /dev/null +++ b/keyboards/chew/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Florent (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Flash */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // In ms in which the double tap can occur + +#define EE_HANDS +#define SERIAL_USART_TX_PIN GP11 diff --git a/keyboards/chew/info.json b/keyboards/chew/info.json new file mode 100644 index 000000000000..f6ddaa627d85 --- /dev/null +++ b/keyboards/chew/info.json @@ -0,0 +1,84 @@ +{ + "manufacturer": "florent@linguenheld.fr", + "keyboard_name": "chew", + "maintainer": "florent@linguenheld.fr", + "bootloader": "rp2040", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP4", "GP3", "GP2", "GP1", "GP0"], + ["GP15", "GP26", "GP27", "GP28", "GP29"], + ["GP14", "GP13", "GP9", "GP8", "NO_PIN"], + ["GP7", "GP6", "GP5", "NO_PIN", "NO_PIN"] + ] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["GP0", "GP1", "GP2", "GP3", "GP4"], + ["GP29", "GP28", "GP27", "GP26", "GP15"], + ["GP8", "GP9", "GP13", "GP14", "NO_PIN"], + ["GP5", "GP6", "GP7", "NO_PIN", "NO_PIN"] + ] + } + }, + "transport": { + "watchdog": true + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.125}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0.125}, + {"matrix": [0, 4], "x": 4, "y": 0.25}, + {"matrix": [4, 0], "x": 7, "y": 0.25}, + {"matrix": [4, 1], "x": 8, "y": 0.125}, + {"matrix": [4, 2], "x": 9, "y": 0}, + {"matrix": [4, 3], "x": 10, "y": 0.125}, + {"matrix": [4, 4], "x": 11, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.125}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.125}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [5, 0], "x": 7, "y": 1.25}, + {"matrix": [5, 1], "x": 8, "y": 1.125}, + {"matrix": [5, 2], "x": 9, "y": 1}, + {"matrix": [5, 3], "x": 10, "y": 1.125}, + {"matrix": [5, 4], "x": 11, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.125}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2.125}, + {"matrix": [6, 0], "x": 8, "y": 2.125}, + {"matrix": [6, 1], "x": 9, "y": 2}, + {"matrix": [6, 2], "x": 10, "y": 2.125}, + {"matrix": [6, 3], "x": 11, "y": 2.25}, + {"matrix": [3, 0], "x": 2.5, "y": 3.25}, + {"matrix": [3, 1], "x": 3.5, "y": 3.5}, + {"matrix": [3, 2], "x": 4.5, "y": 3.75}, + {"matrix": [7, 0], "x": 6.5, "y": 3.75}, + {"matrix": [7, 1], "x": 7.5, "y": 3.5}, + {"matrix": [7, 2], "x": 8.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/chew/keymaps/default/keymap.c b/keyboards/chew/keymaps/default/keymap.c new file mode 100644 index 000000000000..541ddbdf1c37 --- /dev/null +++ b/keyboards/chew/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2024 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┘ └───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ │ M │ , │ . │ / │ + * └───┴───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │ B ├───┐ ┌───┤ N │ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤Alt│ │ ├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_B, KC_BSPC, KC_RALT, KC_SPC, KC_ENT, KC_N + ) +}; diff --git a/keyboards/chew/readme.md b/keyboards/chew/readme.md new file mode 100644 index 000000000000..a08398ea0fa3 --- /dev/null +++ b/keyboards/chew/readme.md @@ -0,0 +1,38 @@ +## Chew + +![Chew front photo](https://live.staticflickr.com/65535/53681212617_90e4eebaf9_o.jpg) +![Chew front photo](https://live.staticflickr.com/65535/53682442119_1fcea26fef_o.jpg) + +A humble 34 key choc-spaced keyboard. + +- Keyboard Maintainer: [Florent Linguenheld](https://github.com/flinguenheld/) +- Visit the repository to get the last release: [Chew](https://github.com/flinguenheld/chew) +- Read the wiki to have some help or information: [Chew wiki](https://github.com/flinguenheld/chew/wiki) + + +![squirrel](https://github.com/flinguenheld/chew/blob/main/images/squirrel_brown.png?raw=true) + +### Requirements + +- 2x PCB +- 2x MCU board [RP2040-Zero](https://www.waveshare.com/wiki/RP2040-Zero) +- 2x TRRS jack +- 34 switches Choc V1 **only** +- 34 keycaps Choc V1 + +Optional: +- 23 [Mill Max sockets](https://splitkb.com/collections/keyboard-parts/products/mill-max-low-profile-sockets) +- 34 [kailh hotswap sockets](https://cdn.shopify.com/s/files/1/0588/1108/9090/files/5118-Choc-Socket.pdf?v=1686715063) +- 2x Back PCB + screws and bolts +- 2x [Tenting pucks](https://splitkb.com/collections/keyboard-parts/products/tenting-puck) +- 2x [Tripods](https://www.manfrotto.com/us-en/pocket-support-large-black-mp3-bk/) + +### Bootloader + +The controller has two buttons, so you can enter the bootloader in 2 ways: + +- Maintain the **boot** button and plug the usb cable in. +- Press twice the **reset** button. + +![hazelnuts](https://github.com/flinguenheld/chew/blob/main/images/hazelnuts.png?raw=true) +![Chew back photo](https://live.staticflickr.com/65535/53682442124_677ffa6cb5_o.jpg) diff --git a/keyboards/chew/rules.mk b/keyboards/chew/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/chew/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From c94c6fcc25cdf3a5eb16ba5609d2ef1b3e3a2916 Mon Sep 17 00:00:00 2001 From: Stephon Parker Date: Mon, 29 Apr 2024 21:46:48 -0400 Subject: [PATCH 069/125] [Keyboard] Add MECHWILD BB65 (#23581) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- keyboards/mechwild/bb65/config.h | 10 + keyboards/mechwild/bb65/f401/info.json | 3 + keyboards/mechwild/bb65/f401/rules.mk | 1 + keyboards/mechwild/bb65/f411/info.json | 3 + keyboards/mechwild/bb65/f411/rules.mk | 1 + keyboards/mechwild/bb65/halconf.h | 8 + keyboards/mechwild/bb65/info.json | 192 ++++++++++++++++++ .../mechwild/bb65/keymaps/default/keymap.json | 31 +++ .../mechwild/bb65/keymaps/via/keymap.json | 32 +++ keyboards/mechwild/bb65/mcuconf.h | 9 + keyboards/mechwild/bb65/readme.md | 23 +++ 11 files changed, 313 insertions(+) create mode 100644 keyboards/mechwild/bb65/config.h create mode 100644 keyboards/mechwild/bb65/f401/info.json create mode 100644 keyboards/mechwild/bb65/f401/rules.mk create mode 100644 keyboards/mechwild/bb65/f411/info.json create mode 100644 keyboards/mechwild/bb65/f411/rules.mk create mode 100644 keyboards/mechwild/bb65/halconf.h create mode 100644 keyboards/mechwild/bb65/info.json create mode 100644 keyboards/mechwild/bb65/keymaps/default/keymap.json create mode 100644 keyboards/mechwild/bb65/keymaps/via/keymap.json create mode 100644 keyboards/mechwild/bb65/mcuconf.h create mode 100644 keyboards/mechwild/bb65/readme.md diff --git a/keyboards/mechwild/bb65/config.h b/keyboards/mechwild/bb65/config.h new file mode 100644 index 000000000000..0792ca7f5907 --- /dev/null +++ b/keyboards/mechwild/bb65/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD5 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM6 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/mechwild/bb65/f401/info.json b/keyboards/mechwild/bb65/f401/info.json new file mode 100644 index 000000000000..797e9900595e --- /dev/null +++ b/keyboards/mechwild/bb65/f401/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f401" +} diff --git a/keyboards/mechwild/bb65/f401/rules.mk b/keyboards/mechwild/bb65/f401/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/mechwild/bb65/f401/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb65/f411/info.json b/keyboards/mechwild/bb65/f411/info.json new file mode 100644 index 000000000000..a41c5f4dd142 --- /dev/null +++ b/keyboards/mechwild/bb65/f411/info.json @@ -0,0 +1,3 @@ +{ + "development_board": "blackpill_f411" +} diff --git a/keyboards/mechwild/bb65/f411/rules.mk b/keyboards/mechwild/bb65/f411/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/mechwild/bb65/f411/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/mechwild/bb65/halconf.h b/keyboards/mechwild/bb65/halconf.h new file mode 100644 index 000000000000..d9ca94925656 --- /dev/null +++ b/keyboards/mechwild/bb65/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/mechwild/bb65/info.json b/keyboards/mechwild/bb65/info.json new file mode 100644 index 000000000000..a9d812d827f1 --- /dev/null +++ b/keyboards/mechwild/bb65/info.json @@ -0,0 +1,192 @@ +{ + "manufacturer": "MechWild", + "keyboard_name": "BB65", + "bootloader_instructions": "Hold down the BOOT button, then tap the NRST button on the BlackPill. Avoid touching the A11 and A12 pins.", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A3", "pin_b": "A2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B14", "B15", "A8", "A15", "B4", "B5", "B8", "B9", "B0"], + "rows": ["B13", "B3", "B10", "A7", "A6", "B12", "B1", "A5"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 8, + "led_count": 10, + "saturation_steps": 8 + }, + "url": "https://mechwild.com/product/bb65/", + "usb": { + "device_version": "1.0.0", + "pid": "0x1712", + "vid": "0x6D77" + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + }, + "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": [5, 8], "x": 9, "y": 0}, + {"matrix": [5, 7], "x": 10, "y": 0}, + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [5, 4], "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": [6, 8], "x": 9.5, "y": 1}, + {"matrix": [6, 7], "x": 10.5, "y": 1}, + {"matrix": [6, 6], "x": 11.5, "y": 1}, + {"matrix": [6, 5], "x": 12.5, "y": 1}, + {"matrix": [6, 4], "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": [7, 0], "x": 9.75, "y": 2}, + {"matrix": [6, 0], "x": 10.75, "y": 2}, + {"matrix": [6, 1], "x": 11.75, "y": 2}, + {"matrix": [6, 2], "x": 12.75, "y": 2}, + {"matrix": [6, 3], "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": [7, 8], "x": 9.25, "y": 3}, + {"matrix": [7, 7], "x": 10.25, "y": 3}, + {"matrix": [7, 6], "x": 11.25, "y": 3}, + {"matrix": [7, 5], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 4], "x": 15.5, "y": 3}, + {"matrix": [7, 3], "x": 14.25, "y": 3.25}, + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 3], "x": 10, "y": 4}, + {"matrix": [4, 4], "x": 11, "y": 4}, + {"matrix": [4, 6], "x": 12, "y": 4}, + {"matrix": [4, 7], "x": 13.25, "y": 4.25}, + {"matrix": [4, 8], "x": 14.25, "y": 4.25}, + {"matrix": [7, 2], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_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": [5, 8], "x": 9, "y": 0}, + {"matrix": [5, 7], "x": 10, "y": 0}, + {"matrix": [5, 6], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + {"matrix": [5, 4], "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": [6, 8], "x": 9.5, "y": 1}, + {"matrix": [6, 7], "x": 10.5, "y": 1}, + {"matrix": [6, 6], "x": 11.5, "y": 1}, + {"matrix": [6, 5], "x": 12.5, "y": 1}, + {"matrix": [6, 4], "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": [7, 0], "x": 9.75, "y": 2}, + {"matrix": [6, 0], "x": 10.75, "y": 2}, + {"matrix": [6, 1], "x": 11.75, "y": 2}, + {"matrix": [6, 3], "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": [7, 8], "x": 9.25, "y": 3}, + {"matrix": [7, 7], "x": 10.25, "y": 3}, + {"matrix": [7, 6], "x": 11.25, "y": 3}, + {"matrix": [7, 5], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 4], "x": 15.5, "y": 3}, + {"matrix": [7, 3], "x": 14.25, "y": 3.25}, + {"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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 3], "x": 10, "y": 4}, + {"matrix": [4, 4], "x": 11, "y": 4}, + {"matrix": [4, 6], "x": 12, "y": 4}, + {"matrix": [4, 7], "x": 13.25, "y": 4.25}, + {"matrix": [4, 8], "x": 14.25, "y": 4.25}, + {"matrix": [7, 2], "x": 15.25, "y": 4.25} + ] + } + } +} diff --git a/keyboards/mechwild/bb65/keymaps/default/keymap.json b/keyboards/mechwild/bb65/keymaps/default/keymap.json new file mode 100644 index 000000000000..31d55e5f95a8 --- /dev/null +++ b/keyboards/mechwild/bb65/keymaps/default/keymap.json @@ -0,0 +1,31 @@ +{ + "keyboard": "mechwild/bb65/f401", + "keymap": "default", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "QK_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "MO(1)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_TRNS", "KC_ENT", + "KC_LSFT", "KC_TRNS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "RGB_TOG", + "RGB_RMOD", "KC_LGUI", "RGB_MOD", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "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_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_PGUP", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_HOME", "KC_PGDN", "KC_END" + ] + ], + "config": { + "features": { + "encoder_map": true + } + }, + "encoders": [ + [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}], + [{"ccw": "KC_TRNS", "cw": "KC_TRNS"}] + ] +} diff --git a/keyboards/mechwild/bb65/keymaps/via/keymap.json b/keyboards/mechwild/bb65/keymaps/via/keymap.json new file mode 100644 index 000000000000..1e6ebcb717c1 --- /dev/null +++ b/keyboards/mechwild/bb65/keymaps/via/keymap.json @@ -0,0 +1,32 @@ +{ + "keyboard": "mechwild/bb65/f401", + "keymap": "via", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "QK_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "MO(1)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_TRNS", "KC_ENT", + "KC_LSFT", "KC_TRNS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "RGB_TOG", + "RGB_RMOD", "KC_LGUI", "RGB_MOD", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "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_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_PGUP", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_HOME", "KC_PGDN", "KC_END" + ] + ], + "config": { + "features": { + "encoder_map": true, + "via": true + } + }, + "encoders": [ + [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}], + [{"ccw": "KC_TRNS", "cw": "KC_TRNS"}] + ] +} diff --git a/keyboards/mechwild/bb65/mcuconf.h b/keyboards/mechwild/bb65/mcuconf.h new file mode 100644 index 000000000000..f9e61e737de3 --- /dev/null +++ b/keyboards/mechwild/bb65/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Kyle McCreery (@kylemccreery) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM5 +#define STM32_PWM_USE_TIM5 TRUE diff --git a/keyboards/mechwild/bb65/readme.md b/keyboards/mechwild/bb65/readme.md new file mode 100644 index 000000000000..43416f90c1b0 --- /dev/null +++ b/keyboards/mechwild/bb65/readme.md @@ -0,0 +1,23 @@ +# BB65 + +![bb65](https://i.imgur.com/0PrDjuS.png) + +BB65 is a completely normal BlackPill-powered 65% DIY kit. It’s got all the letters, a number row, and arrow keys. Basic as it can be. + +The `f401` version is the standard for this kit, using an STM32F401 BlackPill. The `f411` version will not run on an STM32F401 BlackPill; if in doubt, use `f401`. + +* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) +* Hardware Supported: BB65 v1.0 +* Hardware Availability: [BB65 on MechWild](https://mechwild.com/product/bb65/) + +Make example for this keyboard (after setting up your build environment): + + make mechwild/bb65/f401:default + make mechwild/bb65/f411:default + +Flashing example for this keyboard: + + make mechwild/bb65/f401:default:flash + make mechwild/bb65/f411: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). From ae8458e12dfdf34906443f6793e69436e78b1802 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:32:43 +0900 Subject: [PATCH 070/125] [Keyboard] Add SIRIND TOMAK (#23554) Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/era/sirind/tomak/config.h | 16 + keyboards/era/sirind/tomak/info.json | 710 ++++++++++++++++++ .../era/sirind/tomak/keymaps/default/keymap.c | 25 + .../tomak/keymaps/default_ansi/keymap.c | 25 + .../keymaps/default_ansi_split_bs/keymap.c | 25 + .../default_ansi_split_rshift/keymap.c | 25 + .../default_ansi_split_rshift_bs/keymap.c | 25 + .../era/sirind/tomak/keymaps/via/keymap.c | 25 + .../era/sirind/tomak/keymaps/via/rules.mk | 1 + keyboards/era/sirind/tomak/readme.md | 27 + keyboards/era/sirind/tomak/rules.mk | 1 + keyboards/era/sirind/tomak/tomak.c | 16 + 12 files changed, 921 insertions(+) create mode 100644 keyboards/era/sirind/tomak/config.h create mode 100644 keyboards/era/sirind/tomak/info.json create mode 100644 keyboards/era/sirind/tomak/keymaps/default/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/via/keymap.c create mode 100644 keyboards/era/sirind/tomak/keymaps/via/rules.mk create mode 100644 keyboards/era/sirind/tomak/readme.md create mode 100644 keyboards/era/sirind/tomak/rules.mk create mode 100644 keyboards/era/sirind/tomak/tomak.c diff --git a/keyboards/era/sirind/tomak/config.h b/keyboards/era/sirind/tomak/config.h new file mode 100644 index 000000000000..7bb561070543 --- /dev/null +++ b/keyboards/era/sirind/tomak/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Split configuration */ +#define SPLIT_HAND_PIN GP21 +#define USB_VBUS_PIN GP29 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 +#define SERIAL_USART_PIN_SWAP + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/info.json b/keyboards/era/sirind/tomak/info.json new file mode 100644 index 000000000000..da7d12e94d1c --- /dev/null +++ b/keyboards/era/sirind/tomak/info.json @@ -0,0 +1,710 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Tomak", + "maintainer": "eerraa", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP16", "GP9", "GP8", "GP6", "GP5", "GP4", "GP3", "GP2", null, null, null], + "rows": ["GP27", "GP10", "GP11", "GP12", "GP13", "GP14"] + }, + "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, 0], "x": 2, "y": 0, "flags": 1}, + {"matrix": [0, 2], "x": 19, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 31, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 43, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 55, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 73, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 85, "y": 0, "flags": 4}, + {"matrix": [1, 7], "x": 87, "y": 13, "flags": 4}, + {"matrix": [1, 6], "x": 74, "y": 13, "flags": 4}, + {"matrix": [1, 5], "x": 62, "y": 13, "flags": 4}, + {"matrix": [1, 4], "x": 50, "y": 13, "flags": 4}, + {"matrix": [1, 3], "x": 38, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 13, "flags": 4}, + {"matrix": [1, 1], "x": 14, "y": 13, "flags": 4}, + {"matrix": [1, 0], "x": 2, "y": 13, "flags": 4}, + {"matrix": [2, 0], "x": 5, "y": 26, "flags": 1}, + {"matrix": [2, 1], "x": 20, "y": 26, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 26, "flags": 4}, + {"matrix": [2, 3], "x": 44, "y": 26, "flags": 4}, + {"matrix": [2, 4], "x": 56, "y": 26, "flags": 4}, + {"matrix": [2, 5], "x": 68, "y": 26, "flags": 4}, + {"matrix": [2, 6], "x": 71, "y": 26, "flags": 4}, + {"matrix": [3, 6], "x": 84, "y": 38, "flags": 4}, + {"matrix": [3, 5], "x": 71, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 59, "y": 38, "flags": 4}, + {"matrix": [3, 3], "x": 47, "y": 38, "flags": 4}, + {"matrix": [3, 2], "x": 35, "y": 38, "flags": 4}, + {"matrix": [3, 1], "x": 23, "y": 38, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 38, "flags": 1}, + {"matrix": [4, 0], "x": 9, "y": 51, "flags": 1}, + {"matrix": [4, 1], "x": 29, "y": 51, "flags": 4}, + {"matrix": [4, 2], "x": 41, "y": 51, "flags": 4}, + {"matrix": [4, 3], "x": 53, "y": 51, "flags": 4}, + {"matrix": [4, 4], "x": 65, "y": 51, "flags": 4}, + {"matrix": [4, 5], "x": 77, "y": 51, "flags": 4}, + {"matrix": [5, 5], "x": 84, "y": 64, "flags": 1}, + {"matrix": [5, 4], "x": 61, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 35, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 20, "y": 64, "flags": 1}, + {"matrix": [5, 0], "x": 5, "y": 64, "flags": 1}, + {"matrix": [6, 10], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 9], "x": 212, "y": 0, "flags": 4}, + {"matrix": [6, 8], "x": 200, "y": 0, "flags": 4}, + {"matrix": [6, 7], "x": 184, "y": 0, "flags": 4}, + {"matrix": [6, 5], "x": 167, "y": 0, "flags": 4}, + {"matrix": [6, 4], "x": 155, "y": 0, "flags": 4}, + {"matrix": [6, 3], "x": 143, "y": 0, "flags": 4}, + {"matrix": [6, 2], "x": 131, "y": 0, "flags": 4}, + {"matrix": [6, 1], "x": 113, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 101, "y": 0, "flags": 4}, + {"matrix": [7, 0], "x": 99, "y": 13, "flags": 4}, + {"matrix": [7, 1], "x": 112, "y": 13, "flags": 4}, + {"matrix": [7, 2], "x": 124, "y": 13, "flags": 4}, + {"matrix": [7, 3], "x": 136, "y": 13, "flags": 4}, + {"matrix": [7, 4], "x": 148, "y": 13, "flags": 4}, + {"matrix": [7, 5], "x": 160, "y": 13, "flags": 4}, + {"matrix": [7, 7], "x": 178, "y": 13, "flags": 1}, + {"matrix": [7, 8], "x": 200, "y": 13, "flags": 4}, + {"matrix": [7, 9], "x": 212, "y": 13, "flags": 4}, + {"matrix": [7, 10], "x": 224, "y": 13, "flags": 4}, + {"matrix": [8, 10], "x": 224, "y": 26, "flags": 4}, + {"matrix": [8, 9], "x": 212, "y": 26, "flags": 4}, + {"matrix": [8, 8], "x": 200, "y": 26, "flags": 4}, + {"matrix": [8, 7], "x": 181, "y": 26, "flags": 4}, + {"matrix": [8, 6], "x": 166, "y": 26, "flags": 4}, + {"matrix": [8, 5], "x": 154, "y": 26, "flags": 4}, + {"matrix": [8, 4], "x": 142, "y": 26, "flags": 4}, + {"matrix": [8, 3], "x": 130, "y": 26, "flags": 4}, + {"matrix": [8, 2], "x": 118, "y": 26, "flags": 4}, + {"matrix": [8, 1], "x": 105, "y": 26, "flags": 4}, + {"matrix": [8, 0], "x": 93, "y": 26, "flags": 4}, + {"matrix": [9, 0], "x": 96, "y": 38, "flags": 4}, + {"matrix": [9, 1], "x": 109, "y": 38, "flags": 4}, + {"matrix": [9, 2], "x": 121, "y": 38, "flags": 4}, + {"matrix": [9, 3], "x": 133, "y": 38, "flags": 4}, + {"matrix": [9, 4], "x": 145, "y": 38, "flags": 4}, + {"matrix": [9, 5], "x": 157, "y": 38, "flags": 4}, + {"matrix": [9, 7], "x": 177, "y": 38, "flags": 1}, + {"matrix": [10, 9], "x": 212, "y": 51, "flags": 4}, + {"matrix": [10, 7], "x": 184, "y": 45, "flags": 1}, + {"matrix": [10, 6], "x": 174, "y": 51, "flags": 1}, + {"matrix": [10, 5], "x": 151, "y": 51, "flags": 4}, + {"matrix": [10, 4], "x": 139, "y": 51, "flags": 4}, + {"matrix": [10, 3], "x": 127, "y": 51, "flags": 4}, + {"matrix": [10, 2], "x": 115, "y": 51, "flags": 4}, + {"matrix": [10, 1], "x": 102, "y": 51, "flags": 4}, + {"matrix": [10, 0], "x": 90, "y": 51, "flags": 4}, + {"matrix": [11, 1], "x": 96, "y": 64, "flags": 1}, + {"matrix": [11, 2], "x": 110, "y": 64, "flags": 4}, + {"matrix": [11, 4], "x": 137, "y": 64, "flags": 1}, + {"matrix": [11, 5], "x": 153, "y": 64, "flags": 1}, + {"matrix": [11, 6], "x": 168, "y": 64, "flags": 1}, + {"matrix": [11, 7], "x": 183, "y": 64, "flags": 1}, + {"matrix": [11, 8], "x": 200, "y": 64, "flags": 1}, + {"matrix": [11, 9], "x": 212, "y": 64, "flags": 1}, + {"matrix": [11, 10], "x": 224, "y": 64, "flags": 1}, + {"x": 224, "y": 40, "flags": 8}, + {"x": 224, "y": 45, "flags": 8}, + {"x": 224, "y": 50, "flags": 8} + ], + "max_brightness": 120, + "sleep": true, + "split_count": [40, 59] + }, + "split": { + "bootmagic": { + "matrix": [6, 0] + }, + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP27", "GP17", "GP13"], + "rows": ["GP10", "GP11", "GP12", "GP28", "GP19", "GP16"] + } + }, + "transport": { + "protocol": "serial_usart", + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true + } + } + }, + "url": "", + "usb": { + "device_version": "1.0.2", + "pid": "0x0006", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP20" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_split_tkl_ansi_split_rshift_bs_rspace", + "LAYOUT_ansi": "LAYOUT_split_tkl_ansi", + "LAYOUT_ansi_split_bs": "LAYOUT_split_tkl_ansi_split_bs", + "LAYOUT_ansi_split_rshift": "LAYOUT_split_tkl_ansi_split_rshift", + "LAYOUT_ansi_split_rshift_bs": "LAYOUT_split_tkl_ansi_split_rshift_bs" + }, + "layouts": { + "LAYOUT_split_tkl_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "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": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 7], "x": 15.5, "y": 1.5, "w": 2}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 2.75}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "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": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 2.75}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "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": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5, "w": 2}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "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": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 2], "x": 9.25, "y": 5.5, "w": 3.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + }, + "LAYOUT_split_tkl_ansi_split_rshift_bs_rspace": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 1.5, "y": 0}, + {"matrix": [0, 3], "x": 2.5, "y": 0}, + {"matrix": [0, 4], "x": 3.5, "y": 0}, + {"matrix": [0, 5], "x": 4.5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [6, 0], "x": 9.5, "y": 0}, + {"matrix": [6, 1], "x": 10.5, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0}, + {"matrix": [6, 7], "x": 16.5, "y": 0}, + {"matrix": [6, 8], "x": 17.75, "y": 0}, + {"matrix": [6, 9], "x": 18.75, "y": 0}, + {"matrix": [6, 10], "x": 19.75, "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": [7, 0], "x": 9.5, "y": 1.5}, + {"matrix": [7, 1], "x": 10.5, "y": 1.5}, + {"matrix": [7, 2], "x": 11.5, "y": 1.5}, + {"matrix": [7, 3], "x": 12.5, "y": 1.5}, + {"matrix": [7, 4], "x": 13.5, "y": 1.5}, + {"matrix": [7, 5], "x": 14.5, "y": 1.5}, + {"matrix": [7, 6], "x": 15.5, "y": 1.5}, + {"matrix": [7, 7], "x": 16.5, "y": 1.5}, + {"matrix": [7, 8], "x": 17.75, "y": 1.5}, + {"matrix": [7, 9], "x": 18.75, "y": 1.5}, + {"matrix": [7, 10], "x": 19.75, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [8, 0], "x": 9, "y": 2.5}, + {"matrix": [8, 1], "x": 10, "y": 2.5}, + {"matrix": [8, 2], "x": 11, "y": 2.5}, + {"matrix": [8, 3], "x": 12, "y": 2.5}, + {"matrix": [8, 4], "x": 13, "y": 2.5}, + {"matrix": [8, 5], "x": 14, "y": 2.5}, + {"matrix": [8, 6], "x": 15, "y": 2.5}, + {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 8], "x": 17.75, "y": 2.5}, + {"matrix": [8, 9], "x": 18.75, "y": 2.5}, + {"matrix": [8, 10], "x": 19.75, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [9, 0], "x": 9.25, "y": 3.5}, + {"matrix": [9, 1], "x": 10.25, "y": 3.5}, + {"matrix": [9, 2], "x": 11.25, "y": 3.5}, + {"matrix": [9, 3], "x": 12.25, "y": 3.5}, + {"matrix": [9, 4], "x": 13.25, "y": 3.5}, + {"matrix": [9, 5], "x": 14.25, "y": 3.5}, + {"matrix": [9, 7], "x": 15.25, "y": 3.5, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"matrix": [4, 1], "x": 2.25, "y": 4.5}, + {"matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"matrix": [4, 3], "x": 4.25, "y": 4.5}, + {"matrix": [4, 4], "x": 5.25, "y": 4.5}, + {"matrix": [4, 5], "x": 6.25, "y": 4.5}, + {"matrix": [10, 0], "x": 8.75, "y": 4.5}, + {"matrix": [10, 1], "x": 9.75, "y": 4.5}, + {"matrix": [10, 2], "x": 10.75, "y": 4.5}, + {"matrix": [10, 3], "x": 11.75, "y": 4.5}, + {"matrix": [10, 4], "x": 12.75, "y": 4.5}, + {"matrix": [10, 5], "x": 13.75, "y": 4.5}, + {"matrix": [10, 6], "x": 14.75, "y": 4.5, "w": 1.75}, + {"matrix": [10, 7], "x": 16.5, "y": 4.5}, + {"matrix": [10, 9], "x": 18.75, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 4], "x": 4, "y": 5.5, "w": 2.75}, + {"matrix": [5, 5], "x": 6.75, "y": 5.5}, + {"matrix": [11, 1], "x": 9.25, "y": 5.5}, + {"matrix": [11, 2], "x": 10.25, "y": 5.5, "w": 2.25}, + {"matrix": [11, 4], "x": 12.5, "y": 5.5, "w": 1.25}, + {"matrix": [11, 5], "x": 13.75, "y": 5.5, "w": 1.25}, + {"matrix": [11, 6], "x": 15, "y": 5.5, "w": 1.25}, + {"matrix": [11, 7], "x": 16.25, "y": 5.5, "w": 1.25}, + {"matrix": [11, 8], "x": 17.75, "y": 5.5}, + {"matrix": [11, 9], "x": 18.75, "y": 5.5}, + {"matrix": [11, 10], "x": 19.75, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/keymaps/default/keymap.c b/keyboards/era/sirind/tomak/keymaps/default/keymap.c new file mode 100644 index 000000000000..62941ff8b7af --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, 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/tomak/keymaps/default_ansi/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c new file mode 100644 index 000000000000..3823cc69c368 --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, 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/tomak/keymaps/default_ansi_split_bs/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c new file mode 100644 index 000000000000..87f3072a9e1d --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_bs/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_bs( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, 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/tomak/keymaps/default_ansi_split_rshift/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c new file mode 100644 index 000000000000..6b8fb56e339e --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_rshift( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, 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/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c new file mode 100644 index 000000000000..380689dd46bd --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/default_ansi_split_rshift_bs/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_rshift_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ansi_split_rshift_bs( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, 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/tomak/keymaps/via/keymap.c b/keyboards/era/sirind/tomak/keymaps/via/keymap.c new file mode 100644 index 000000000000..62941ff8b7af --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/via/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 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_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_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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + QK_BOOT, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, 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/tomak/keymaps/via/rules.mk b/keyboards/era/sirind/tomak/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/sirind/tomak/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/readme.md b/keyboards/era/sirind/tomak/readme.md new file mode 100644 index 000000000000..0834dfd6a87d --- /dev/null +++ b/keyboards/era/sirind/tomak/readme.md @@ -0,0 +1,27 @@ +# Tomak + +![Tomak](https://i.imgur.com/CmVR0G1.jpeg) + +Ergonomics Split Keyboard powered by RP2040. + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Tomak +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/sirind/tomak:default + +Flashing example for this keyboard: + + make era/sirind/tomak: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(ESC, F7)' key and plug in the keyboard. +* **Physical reset**: Short the 'RESET' and 'GND' holes twice within one second, or plug in the keyboard with the 'BOOT' and 'GND' holes shorted. +* **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/tomak/rules.mk b/keyboards/era/sirind/tomak/rules.mk new file mode 100644 index 000000000000..743228e94b64 --- /dev/null +++ b/keyboards/era/sirind/tomak/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file diff --git a/keyboards/era/sirind/tomak/tomak.c b/keyboards/era/sirind/tomak/tomak.c new file mode 100644 index 000000000000..8533cd4a737f --- /dev/null +++ b/keyboards/era/sirind/tomak/tomak.c @@ -0,0 +1,16 @@ +// Copyright 2023 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(96, 0, 128, 128); + rgb_matrix_set_color(97, 0, 128, 128); + rgb_matrix_set_color(98, 0, 128, 128); + } + return true; +} \ No newline at end of file From 284e29d4a1edcdd4bcaeb9a41d824d471369ceaf Mon Sep 17 00:00:00 2001 From: Alabahuy Date: Tue, 30 Apr 2024 09:42:32 +0700 Subject: [PATCH 071/125] [Keyboard] add jaykeeb jk65 (#23536) --- keyboards/jaykeeb/jk65/info.json | 410 ++++++++++++++++++ .../jaykeeb/jk65/keymaps/default/keymap.c | 22 + keyboards/jaykeeb/jk65/keymaps/via/keymap.c | 21 + keyboards/jaykeeb/jk65/keymaps/via/rules.mk | 1 + keyboards/jaykeeb/jk65/matrix_diagram.md | 24 + keyboards/jaykeeb/jk65/readme.md | 27 ++ keyboards/jaykeeb/jk65/rules.mk | 1 + 7 files changed, 506 insertions(+) create mode 100644 keyboards/jaykeeb/jk65/info.json create mode 100644 keyboards/jaykeeb/jk65/keymaps/default/keymap.c create mode 100644 keyboards/jaykeeb/jk65/keymaps/via/keymap.c create mode 100644 keyboards/jaykeeb/jk65/keymaps/via/rules.mk create mode 100644 keyboards/jaykeeb/jk65/matrix_diagram.md create mode 100644 keyboards/jaykeeb/jk65/readme.md create mode 100644 keyboards/jaykeeb/jk65/rules.mk diff --git a/keyboards/jaykeeb/jk65/info.json b/keyboards/jaykeeb/jk65/info.json new file mode 100644 index 000000000000..0be07caacdc7 --- /dev/null +++ b/keyboards/jaykeeb/jk65/info.json @@ -0,0 +1,410 @@ +{ + "manufacturer": "Jaykeeb Studio", + "keyboard_name": "JK65", + "maintainer": "Alabahuy", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP24", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1"], + "rows": ["GP29", "GP0", "GP15", "GP26", "GP27"] + }, + "indicators": { + "caps_lock": "GP25", + "on_state": 0 + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x7765", + "vid": "0x414C" + }, + "community_layouts": ["65_ansi_blocker", "65_ansi_blocker_split_bs", "65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "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": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "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": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "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": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Home", "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": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "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": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "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": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "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": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Home", "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": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "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": "Ctrl", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Delete", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Home", "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": [2, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "End", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Page Up", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Page Down", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "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": "Ctrl", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "\u2193", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "\u2192", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/jaykeeb/jk65/keymaps/default/keymap.c b/keyboards/jaykeeb/jk65/keymaps/default/keymap.c new file mode 100644 index 000000000000..de10b49a6cfc --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, 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_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jaykeeb/jk65/keymaps/via/keymap.c b/keyboards/jaykeeb/jk65/keymaps/via/keymap.c new file mode 100644 index 000000000000..bc93e7ea2be2 --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/via/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2024 Alabahuy +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_BSPC, KC_DEL, 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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jaykeeb/jk65/keymaps/via/rules.mk b/keyboards/jaykeeb/jk65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/jaykeeb/jk65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jaykeeb/jk65/matrix_diagram.md b/keyboards/jaykeeb/jk65/matrix_diagram.md new file mode 100644 index 000000000000..7a36c0ae6626 --- /dev/null +++ b/keyboards/jaykeeb/jk65/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for Jaykeeb JK65 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2D │1E │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ +│40 │41 │42 │46 │4A │4B │ │4C │4D │4E │ +└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +┌────────┐ +│30 │ 2.25u LShift +└────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┐ +│40 │41 │42 │46 │4B │ Blocker Tsangan +└─────┴───┴─────┴───────────────────────────┴─────┘ +``` diff --git a/keyboards/jaykeeb/jk65/readme.md b/keyboards/jaykeeb/jk65/readme.md new file mode 100644 index 000000000000..e0dbe05c5816 --- /dev/null +++ b/keyboards/jaykeeb/jk65/readme.md @@ -0,0 +1,27 @@ +# JK65 + +![jk65]( https://i.imgur.com/NysDAOy.png ) + +Layout 65% support multi layout and keyboard case exiting + +* Keyboard Maintainer: [Alabahuy](https://github.com/Alabahuy) +* Hardware Supported: JK65 PCB, RP2040 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make jaykeeb/jk65:default + +Flashing example for this keyboard: + + make jaykeeb/jk65: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/jaykeeb/jk65/rules.mk b/keyboards/jaykeeb/jk65/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/jaykeeb/jk65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From b99e09ee0ebdbd473afd2e1dc35266e453c405b2 Mon Sep 17 00:00:00 2001 From: Stefan Gluszek Date: Tue, 30 Apr 2024 04:45:46 +0200 Subject: [PATCH 072/125] [Keyboard] Fatotesa - custom asymmetric split keyboard (#23528) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/fatotesa/info.json | 144 ++++++++++++++++++++ keyboards/fatotesa/keymaps/default/keymap.c | 30 ++++ keyboards/fatotesa/keymaps/default/rules.mk | 1 + keyboards/fatotesa/readme.md | 25 ++++ keyboards/fatotesa/rules.mk | 1 + 5 files changed, 201 insertions(+) create mode 100644 keyboards/fatotesa/info.json create mode 100644 keyboards/fatotesa/keymaps/default/keymap.c create mode 100644 keyboards/fatotesa/keymaps/default/rules.mk create mode 100644 keyboards/fatotesa/readme.md create mode 100644 keyboards/fatotesa/rules.mk diff --git a/keyboards/fatotesa/info.json b/keyboards/fatotesa/info.json new file mode 100644 index 000000000000..bdd5e40478d8 --- /dev/null +++ b/keyboards/fatotesa/info.json @@ -0,0 +1,144 @@ +{ + "development_board": "promicro", + "manufacturer": "fatotesa", + "keyboard_name": "fatotesa", + "maintainer": "stefangluszek", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "caps_word": true + }, + "encoder": { + "rotary": [ + { "pin_a": "D1", "pin_b": "D0" , "resolution": 2} + ] + }, + "split": { + "enabled": true, + "soft_serial_pin": "D2", + "usb_detect": { + "enabled": true, + "timeout": 2500 + }, + "matrix_pins": { + "right": { + "cols": ["F4", "F5", "F6", "C6", "F7", "B1", "B3", "B2"], + "rows": ["B6", "E6", "D4", "D7", "B4", "B5"] + } + }, + "bootmagic": { + "matrix": [4, 1] + } + }, + "matrix_pins": { + "cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6", null], + "rows": ["D4", "C6", "D7", "E6", "B4", "B5"] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "label":"esc", "x":0, "y":0}, + {"matrix": [0, 2], "label":"f1", "x":2, "y":0}, + {"matrix": [0, 3], "label":"f2", "x":3, "y":0}, + {"matrix": [0, 4], "label":"f3", "x":4, "y":0}, + {"matrix": [0, 5], "label":"f4", "x":5, "y":0}, + + {"matrix": [6, 4], "label":"end", "x":13.25, "y":0}, + {"matrix": [6, 5], "label":"ins", "x":14.25, "y":0}, + {"matrix": [6, 6], "label":"del", "x":15.25, "y":0}, + {"matrix": [6, 7], "label":"enc", "x":16.5, "y":0, "encoder": 0}, + + + {"matrix": [1, 0], "label":"`", "x":0, "y":1}, + {"matrix": [1, 1], "label":"1", "x":1, "y":1}, + {"matrix": [1, 2], "label":"2", "x":2, "y":1}, + {"matrix": [1, 3], "label":"3", "x":3, "y":1}, + {"matrix": [1, 4], "label":"4", "x":4, "y":1}, + {"matrix": [1, 5], "label":"5", "x":5, "y":1}, + {"matrix": [1, 6], "label":"6", "x":6, "y":1}, + + {"matrix": [7, 1], "label":"7", "x":9.5, "y":1}, + {"matrix": [7, 2], "label":"8", "x":10.5, "y":1}, + {"matrix": [7, 3], "label":"9", "x":11.5, "y":1}, + {"matrix": [7, 4], "label":"0", "x":12.5, "y":1}, + {"matrix": [7, 5], "label":"-", "x":13.5, "y":1}, + {"matrix": [7, 6], "label":"=", "x":14.5, "y":1}, + {"matrix": [7, 7], "label":"<", "x":15.5, "y":1, "w":2}, + + + {"matrix": [2, 0], "label":"tab", "x":0, "y":2, "w":1.5}, + {"matrix": [2, 1], "label":"q", "x":1.5, "y":2}, + {"matrix": [2, 2], "label":"w", "x":2.5, "y":2}, + {"matrix": [2, 3], "label":"e", "x":3.5, "y":2}, + {"matrix": [2, 4], "label":"r", "x":4.5, "y":2}, + {"matrix": [2, 5], "label":"t", "x":5.5, "y":2}, + + {"matrix": [8, 0], "label":"y", "x":9, "y":2}, + {"matrix": [8, 1], "label":"u", "x":10, "y":2}, + {"matrix": [8, 2], "label":"i", "x":11, "y":2}, + {"matrix": [8, 3], "label":"o", "x":12, "y":2}, + {"matrix": [8, 4], "label":"p", "x":13, "y":2}, + {"matrix": [8, 5], "label":"[", "x":14, "y":2}, + {"matrix": [8, 6], "label":"]", "x":15, "y":2}, + {"matrix": [8, 7], "x":16.25, "y":2, "w":1.25, "h":2}, + + + {"matrix": [3, 0], "label":"caps", "x":0, "y":3, "w":1.75}, + {"matrix": [3, 1], "label":"a", "x":1.75, "y":3}, + {"matrix": [3, 2], "label":"s", "x":2.75, "y":3}, + {"matrix": [3, 3], "label":"d", "x":3.75, "y":3}, + {"matrix": [3, 4], "label":"f", "x":4.75, "y":3}, + {"matrix": [3, 5], "label":"g", "x":5.75, "y":3}, + + {"matrix": [9, 0], "label":"h", "x":9.25, "y":3}, + {"matrix": [9, 1], "label":"j", "x":10.25, "y":3}, + {"matrix": [9, 2], "label":"k", "x":11.25, "y":3}, + {"matrix": [9, 3], "label":"l", "x":12.25, "y":3}, + {"matrix": [9, 4], "label":";", "x":13.25, "y":3}, + {"matrix": [9, 5], "label":"'", "x":14.25, "y":3}, + {"matrix": [9, 6], "label":"\\", "x":15.25, "y":3}, + + + {"matrix": [4, 0], "label":"shift", "x":0, "y":4, "w":1.25}, + {"matrix": [4, 1], "label":"<", "x":1.25, "y":4}, + {"matrix": [4, 2], "label":"z", "x":2.25, "y":4}, + {"matrix": [4, 3], "label":"x", "x":3.25, "y":4}, + {"matrix": [4, 4], "label":"c", "x":4.25, "y":4}, + {"matrix": [4, 5], "label":"v", "x":5.25, "y":4}, + {"matrix": [4, 6], "label":"b", "x":6.25, "y":4}, + + {"matrix": [10, 2], "label":"n", "x":9.75, "y":4}, + {"matrix": [10, 3], "label":"m", "x":10.75, "y":4}, + {"matrix": [10, 4], "label":",", "x":11.75, "y":4}, + {"matrix": [10, 5], "label":".", "x":12.75, "y":4}, + {"matrix": [10, 6], "label":"/", "x":13.75, "y":4}, + {"matrix": [10, 7], "x":14.75, "y":4}, + + + {"matrix": [5, 0], "label":"ctrl", "x":0, "y":5, "w":1.25}, + {"matrix": [5, 1], "label":"win", "x":1.25, "y":5, "w":1.25}, + {"matrix": [5, 2], "label":"alt", "x":2.5, "y":5, "w":1.25}, + {"matrix": [5, 3], "label":"space", "x":3.75, "y":5, "w":1.75}, + {"matrix": [5, 4], "label":"na", "x":5.5, "y":5}, + + {"matrix": [11, 3], "label":"space", "x":10.5, "y":5, "w":2}, + {"matrix": [11, 4], "label":"alt gr", "x":12.5, "y":5, "w":1.25}, + {"matrix": [11, 5], "label":"ctrl", "x":13.75, "y":5, "w":1.25}, + {"matrix": [11, 6], "label":"?", "x":15, "y":5, "w":1.25}, + {"matrix": [11, 7], "label":"?", "x":16.25, "y":5, "w":1.25} + ] + } + } +} diff --git a/keyboards/fatotesa/keymaps/default/keymap.c b/keyboards/fatotesa/keymaps/default/keymap.c new file mode 100644 index 000000000000..1f6aa8048897 --- /dev/null +++ b/keyboards/fatotesa/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#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_VOLD, KC_VOLU) }, +}; +#endif + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_END, KC_INSERT, KC_DELETE, KC_KB_MUTE, + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, + LT(1, KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_ENTER, + KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_BACKSLASH, + KC_LEFT_SHIFT, KC_LEFT_ANGLE_BRACKET, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, + CW_TOGG, KC_LWIN, KC_LEFT_ALT, KC_BACKSPACE, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, KC_RIGHT_CTRL, KC_NO, KC_NO + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______ + )}; diff --git a/keyboards/fatotesa/keymaps/default/rules.mk b/keyboards/fatotesa/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/fatotesa/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/fatotesa/readme.md b/keyboards/fatotesa/readme.md new file mode 100644 index 000000000000..a3794cfd667a --- /dev/null +++ b/keyboards/fatotesa/readme.md @@ -0,0 +1,25 @@ +# fatotesa + +![fatotesa](https://i.imgur.com/LbxQcU2.png) + +This is the QMK firmware for the [fat-o-tesa](https://github.com/stefangluszek/fat-o-tesa) keyboard. + +* Keyboard Maintainer: [Stefan Gluszek](https://github.com/stefangluszek) + +Make example for this keyboard (after setting up your build environment): + + make fatotesa:default + +Flashing example for this keyboard: + + make fatotesa: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 (4,1) in the matrix and plug in the keyboard - this is somewhat unusual choice but our split halves are not symmetrical and we can't use (0,0) but instead a key that maps to the same matrix position regardless of which part is being connected to the computer and flashed. +* **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/fatotesa/rules.mk b/keyboards/fatotesa/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/fatotesa/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4f4602abd532ede6dca9a99dd9c96a52076916d2 Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:49:34 -0400 Subject: [PATCH 073/125] [Keyboard] Vault35 WKL universal (#23519) --- keyboards/jlw/vault35_wkl_universal/config.h | 11 + keyboards/jlw/vault35_wkl_universal/halconf.h | 8 + keyboards/jlw/vault35_wkl_universal/info.json | 765 ++++++++++++++++++ .../keymaps/default/keymap.c | 36 + .../keymaps/default/rules.mk | 1 + keyboards/jlw/vault35_wkl_universal/mcuconf.h | 11 + keyboards/jlw/vault35_wkl_universal/readme.md | 27 + keyboards/jlw/vault35_wkl_universal/rules.mk | 1 + 8 files changed, 860 insertions(+) create mode 100644 keyboards/jlw/vault35_wkl_universal/config.h create mode 100644 keyboards/jlw/vault35_wkl_universal/halconf.h create mode 100644 keyboards/jlw/vault35_wkl_universal/info.json create mode 100644 keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c create mode 100644 keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk create mode 100644 keyboards/jlw/vault35_wkl_universal/mcuconf.h create mode 100644 keyboards/jlw/vault35_wkl_universal/readme.md create mode 100644 keyboards/jlw/vault35_wkl_universal/rules.mk diff --git a/keyboards/jlw/vault35_wkl_universal/config.h b/keyboards/jlw/vault35_wkl_universal/config.h new file mode 100644 index 000000000000..7edfb1b7c6bb --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_PWM_DRIVER PWMD17 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_DMA_STREAM STM32_DMA1_STREAM1 +#define WS2812_DMA_CHANNEL 1 diff --git a/keyboards/jlw/vault35_wkl_universal/halconf.h b/keyboards/jlw/vault35_wkl_universal/halconf.h new file mode 100644 index 000000000000..e5c3093515a7 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/jlw/vault35_wkl_universal/info.json b/keyboards/jlw/vault35_wkl_universal/info.json new file mode 100644 index 000000000000..3274b7177318 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/info.json @@ -0,0 +1,765 @@ +{ + "manufacturer": "jlw", + "keyboard_name": "vault 35 WKL universal", + "maintainer": "jlw", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "A7"}, + {"pin_a": "B2", "pin_b": "B1"}, + {"pin_a": "B3", "pin_b": "A15"}, + {"pin_a": "B5", "pin_b": "B4"}, + {"pin_a": "A1", "pin_b": "A2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B6", "B8", "A13", "B13", "B14", "A14", "A0", "A3", "A4", "A5", "A6"], + "rows": ["B9", "B12", "B15", "A8"] + }, + "processor": "STM32F072", + "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", + "hue_steps": 4, + "layout": [ + {"matrix": [1, 0], "x": 1, "y": 22, "flags": 4}, + {"matrix": [0, 0], "x": 1, "y": 11, "flags": 4}, + {"matrix": [0, 0], "x": 3, "y": 2, "flags": 4}, + {"matrix": [0, 0], "x": 12, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 23, "y": 2, "flags": 4}, + {"matrix": [1, 1], "x": 30, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 42, "y": 2, "flags": 4}, + {"matrix": [0, 2], "x": 51, "y": 2, "flags": 4}, + {"matrix": [1, 2], "x": 60, "y": 2, "flags": 4}, + {"matrix": [0, 3], "x": 70, "y": 2, "flags": 4}, + {"matrix": [1, 3], "x": 79, "y": 2, "flags": 4}, + {"matrix": [0, 4], "x": 88, "y": 2, "flags": 4}, + {"matrix": [0, 5], "x": 98, "y": 2, "flags": 4}, + {"matrix": [0, 6], "x": 107, "y": 2, "flags": 4}, + {"matrix": [0, 7], "x": 116, "y": 2, "flags": 4}, + {"matrix": [1, 7], "x": 126, "y": 2, "flags": 4}, + {"matrix": [0, 7], "x": 135, "y": 2, "flags": 4}, + {"matrix": [0, 8], "x": 144, "y": 2, "flags": 4}, + {"matrix": [1, 8], "x": 154, "y": 2, "flags": 4}, + {"matrix": [0, 9], "x": 163, "y": 2, "flags": 4}, + {"matrix": [1, 9], "x": 173, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 183, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 192, "y": 2, "flags": 4}, + {"matrix": [0, 10], "x": 195, "y": 13, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 23, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 32, "flags": 4}, + {"matrix": [1, 10], "x": 195, "y": 43, "flags": 4}, + {"matrix": [2, 10], "x": 195, "y": 55, "flags": 4}, + {"matrix": [2, 10], "x": 195, "y": 67, "flags": 4}, + {"matrix": [3, 10], "x": 190, "y": 79, "flags": 4}, + {"matrix": [3, 10], "x": 195, "y": 87, "flags": 4}, + {"matrix": [3, 10], "x": 185, "y": 88, "flags": 4}, + {"matrix": [3, 9], "x": 176, "y": 88, "flags": 4}, + {"matrix": [3, 9], "x": 171, "y": 82, "flags": 4}, + {"matrix": [2, 9], "x": 171, "y": 73, "flags": 4}, + {"matrix": [2, 9], "x": 170, "y": 67, "flags": 4}, + {"matrix": [2, 9], "x": 164, "y": 67, "flags": 4}, + {"matrix": [2, 8], "x": 157, "y": 67, "flags": 4}, + {"matrix": [2, 8], "x": 151, "y": 67, "flags": 4}, + {"matrix": [3, 8], "x": 150, "y": 74, "flags": 4}, + {"matrix": [2, 8], "x": 150, "y": 81, "flags": 4}, + {"matrix": [3, 8], "x": 147, "y": 88, "flags": 4}, + {"matrix": [3, 7], "x": 139, "y": 88, "flags": 4}, + {"matrix": [2, 7], "x": 130, "y": 88, "flags": 4}, + {"matrix": [3, 7], "x": 122, "y": 88, "flags": 4}, + {"matrix": [3, 6], "x": 113, "y": 88, "flags": 4}, + {"matrix": [2, 5], "x": 102, "y": 85, "flags": 4}, + {"matrix": [3, 5], "x": 94, "y": 85, "flags": 4}, + {"matrix": [3, 4], "x": 85, "y": 88, "flags": 4}, + {"matrix": [2, 3], "x": 75, "y": 88, "flags": 4}, + {"matrix": [3, 3], "x": 66, "y": 88, "flags": 4}, + {"matrix": [2, 2], "x": 57, "y": 88, "flags": 4}, + {"matrix": [3, 2], "x": 49, "y": 88, "flags": 4}, + {"matrix": [3, 2], "x": 46, "y": 83, "flags": 4}, + {"matrix": [3, 2], "x": 46, "y": 75, "flags": 4}, + {"matrix": [2, 1], "x": 45, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 39, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 33, "y": 67, "flags": 4}, + {"matrix": [2, 1], "x": 26, "y": 67, "flags": 4}, + {"matrix": [3, 0], "x": 25, "y": 73, "flags": 4}, + {"matrix": [3, 0], "x": 25, "y": 82, "flags": 4}, + {"matrix": [3, 0], "x": 21, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 12, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 1, "y": 88, "flags": 4}, + {"matrix": [3, 0], "x": 6, "y": 80, "flags": 4}, + {"matrix": [3, 0], "x": 1, "y": 70, "flags": 4}, + {"matrix": [2, 0], "x": 1, "y": 58, "flags": 4}, + {"matrix": [2, 0], "x": 1, "y": 46, "flags": 4}, + {"matrix": [1, 0], "x": 1, "y": 34, "flags": 4} + ], + "sat_steps": 4, + "val_steps": 4 + }, + "url": "https://jlw-kb.com", + "usb": { + "device_version": "0.0.1", + "pid": "0xA457", + "vid": "0x1209" + }, + "ws2812": { + "driver": "pwm", + "pin": "B7" + }, + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_alpha": { + "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": [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": [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, 6], "x": 5.5, "y": 2}, + {"matrix": [2, 7], "x": 6.5, "y": 2}, + {"matrix": [2, 8], "x": 7.5, "y": 2}, + {"matrix": [2, 9], "x": 8.5, "y": 2}, + {"matrix": [2, 10], "x": 9.5, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_katana": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"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, 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.5, "y": 0, "w": 1.25, "h": 2}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_katana_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"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, 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.5, "y": 0, "w": 1.25, "h": 2}, + {"matrix": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_125_center1u": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.25}, + {"matrix": [3, 4], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "w": 1.25}, + {"matrix": [3, 7], "x": 7.25, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_150_center1u": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3, "w": 1.5}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_2u_bars": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 2}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 2}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_3u_bars": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 3], "x": 2.5, "y": 3, "w": 3}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_6u_bar": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 2.5, "y": 3, "w": 6}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_cain_bars": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.75}, + {"matrix": [3, 6], "x": 5.5, "y": 3, "w": 1.75}, + {"matrix": [3, 7], "x": 7.25, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_ortho_centered_3u": { + "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": [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": [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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.5}, + {"matrix": [3, 4], "x": 4, "y": 3, "w": 3}, + {"matrix": [3, 7], "x": 7, "y": 3, "w": 1.5}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_row": { + "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": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.25, "y": 1}, + {"matrix": [1, 7], "x": 6.25, "y": 1}, + {"matrix": [1, 8], "x": 7.25, "y": 1}, + {"matrix": [1, 9], "x": 8.25, "y": 1}, + {"matrix": [1, 10], "x": 9.25, "y": 1, "w": 1.75}, + {"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, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_treadstone": { + "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": [1, 0], "x": 0.25, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.75, "y": 1}, + {"matrix": [1, 7], "x": 6.75, "y": 1}, + {"matrix": [1, 8], "x": 7.75, "y": 1}, + {"matrix": [1, 9], "x": 8.75, "y": 1}, + {"matrix": [1, 10], "x": 9.75, "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": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + }, + "LAYOUT_uniform": { + "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": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 6], "x": 5.25, "y": 1}, + {"matrix": [1, 7], "x": 6.25, "y": 1}, + {"matrix": [1, 8], "x": 7.25, "y": 1}, + {"matrix": [1, 9], "x": 8.25, "y": 1}, + {"matrix": [1, 10], "x": 9.25, "y": 1, "w": 1.75}, + {"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, 6], "x": 5.5, "y": 2}, + {"matrix": [2, 7], "x": 6.5, "y": 2}, + {"matrix": [2, 8], "x": 7.5, "y": 2}, + {"matrix": [2, 9], "x": 8.5, "y": 2}, + {"matrix": [2, 10], "x": 9.5, "y": 2, "w": 1.5}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.5} + ] + } + } +} diff --git a/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c b/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c new file mode 100644 index 000000000000..ae5f304eed62 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_VOLU, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLD, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, RGB_TOG, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_ESC, MO(1), KC_ENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_BSPC + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, + _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, + _______, _______, _______, _______, _______, QK_BOOT, _______, KC_1, KC_2, KC_3, _______, + _______, _______, _______, _______, _______, _______, MO(2), _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_LEFT, _______, + _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef 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(RGB_HUD, RGB_HUI) }, + [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } +}; +#endif + diff --git a/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk b/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk new file mode 100644 index 000000000000..a40474b4d5c7 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/jlw/vault35_wkl_universal/mcuconf.h b/keyboards/jlw/vault35_wkl_universal/mcuconf.h new file mode 100644 index 000000000000..3f3e8009459b --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM17 +#define STM32_PWM_USE_TIM17 TRUE +#define STM32_TIM17_SUPPRESS_ISR + diff --git a/keyboards/jlw/vault35_wkl_universal/readme.md b/keyboards/jlw/vault35_wkl_universal/readme.md new file mode 100644 index 000000000000..d06ee1a998b8 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/readme.md @@ -0,0 +1,27 @@ +# Vault 35 WKL Universal + +![Vault 35 WKL Universal](https://i.imgur.com/gtJwgiv.png) + +A drop in replacement PCB for the Vault 35 WKL case, originally designed by ProjectCain Mechvault. + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: Vault 35 WKL Universal PCB +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/vault35_wkl_universal:default + +Flashing example for this keyboard: + + make jlw/vault35_wkl_universal: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 (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/jlw/vault35_wkl_universal/rules.mk b/keyboards/jlw/vault35_wkl_universal/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/jlw/vault35_wkl_universal/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From f215da3b7c92c2d2c9e5f791bfc1d654ddba6046 Mon Sep 17 00:00:00 2001 From: Joe Scotto <8194147+joe-scotto@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:50:18 -0400 Subject: [PATCH 074/125] Add ScottoWing keyboard (#23513) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/scottokeebs/scottowing/info.json | 75 +++++++++++++++++++ .../scottowing/keymaps/default/config.h | 23 ++++++ .../scottowing/keymaps/default/keymap.c | 45 +++++++++++ keyboards/scottokeebs/scottowing/readme.md | 29 +++++++ keyboards/scottokeebs/scottowing/rules.mk | 1 + 5 files changed, 173 insertions(+) create mode 100644 keyboards/scottokeebs/scottowing/info.json create mode 100644 keyboards/scottokeebs/scottowing/keymaps/default/config.h create mode 100644 keyboards/scottokeebs/scottowing/keymaps/default/keymap.c create mode 100644 keyboards/scottokeebs/scottowing/readme.md create mode 100644 keyboards/scottokeebs/scottowing/rules.mk diff --git a/keyboards/scottokeebs/scottowing/info.json b/keyboards/scottokeebs/scottowing/info.json new file mode 100644 index 000000000000..770e2fd18ec4 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/info.json @@ -0,0 +1,75 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoWing (PCB Edition)", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "bootmagic": { + "matrix": [0, 1] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP20", "GP22", "GP26", "GP27", "GP28", "GP29"], + "rows": ["GP8", "GP9", "GP23", "GP21"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1026", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT_split_3x6_2": { + "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, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3} + ] + } + } +} diff --git a/keyboards/scottokeebs/scottowing/keymaps/default/config.h b/keyboards/scottokeebs/scottowing/keymaps/default/config.h new file mode 100644 index 000000000000..eb03070d83a8 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2024 Joe Scotto + +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 options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c b/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c new file mode 100644 index 000000000000..9a1c7daef303 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2024 Joe Scotto + +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_split_3x6_2( + 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_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, KC_QUOT, + KC_LSFT, LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), KC_RSFT, + KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) + ), + [1] = LAYOUT_split_3x6_2( + KC_TRNS, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, KC_TRNS, + KC_TRNS, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x6_2( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x6_2( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_TRNS, + KC_TRNS, KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/scottokeebs/scottowing/readme.md b/keyboards/scottokeebs/scottowing/readme.md new file mode 100644 index 000000000000..bf20164e6664 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/readme.md @@ -0,0 +1,29 @@ +# ScottoWing (PCB Edition) + +![ScottoWing](https://i.imgur.com/ckaYMAx.jpeg) + +The ScottoWing (PCB Edition) is a 3x5 (34-keys) or 3x6 (40-keys) split monoblock ergonomic column-staggered keyboard. + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: RP2040 Pro Micro, nice!nano +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [AliExpress](https://aliexpress.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make scottokeebs/scottowing:default + +Flashing example for this keyboard: + + make scottokeebs/scottowing: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,1) 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/scottokeebs/scottowing/rules.mk b/keyboards/scottokeebs/scottowing/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/scottokeebs/scottowing/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From e2618dc35cc04fbbcf857559df78d7eb9aa43640 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Tue, 30 Apr 2024 09:54:05 +0100 Subject: [PATCH 075/125] Uniform ISO Enter key sequence in JIS Community Layouts (#23181) --- layouts/default/60_jis/info.json | 2 +- layouts/default/tkl_f13_jis/info.json | 2 +- layouts/default/tkl_jis/info.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/default/60_jis/info.json b/layouts/default/60_jis/info.json index 56972148bda3..039ced42f4ad 100644 --- a/layouts/default/60_jis/info.json +++ b/layouts/default/60_jis/info.json @@ -34,7 +34,6 @@ {"x": 10.5, "y": 1}, {"x": 11.5, "y": 1}, {"x": 12.5, "y": 1}, - {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"x": 0, "y": 2, "w": 1.75}, {"x": 1.75, "y": 2}, @@ -49,6 +48,7 @@ {"x": 10.75, "y": 2}, {"x": 11.75, "y": 2}, {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"x": 0, "y": 3, "w": 2.25}, {"x": 2.25, "y": 3}, diff --git a/layouts/default/tkl_f13_jis/info.json b/layouts/default/tkl_f13_jis/info.json index 97f5bd3880e1..20ff38f61179 100644 --- a/layouts/default/tkl_f13_jis/info.json +++ b/layouts/default/tkl_f13_jis/info.json @@ -55,7 +55,6 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -73,6 +72,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 0, "y": 4.25, "w": 2.25}, {"x": 2.25, "y": 4.25}, diff --git a/layouts/default/tkl_jis/info.json b/layouts/default/tkl_jis/info.json index 513852193a57..e1d16e2beb78 100644 --- a/layouts/default/tkl_jis/info.json +++ b/layouts/default/tkl_jis/info.json @@ -54,7 +54,6 @@ {"x": 10.5, "y": 2.25}, {"x": 11.5, "y": 2.25}, {"x": 12.5, "y": 2.25}, - {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 15.25, "y": 2.25}, {"x": 16.25, "y": 2.25}, {"x": 17.25, "y": 2.25}, @@ -72,6 +71,7 @@ {"x": 10.75, "y": 3.25}, {"x": 11.75, "y": 3.25}, {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, {"x": 0, "y": 4.25, "w": 2.25}, {"x": 2.25, "y": 4.25}, From 636c96ad256b1b2f21c4c810d195c78402e060a0 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:34:37 +0200 Subject: [PATCH 076/125] Add EC Virgo (#23173) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/cipulot/ec_23u/config.h | 5 - keyboards/cipulot/ec_23u/info.json | 6 + keyboards/cipulot/ec_23u/rules.mk | 3 +- keyboards/cipulot/ec_60/config.h | 6 - keyboards/cipulot/ec_60/info.json | 6 + keyboards/cipulot/ec_60/rules.mk | 3 +- keyboards/cipulot/ec_alveus/1_0_0/config.h | 6 - keyboards/cipulot/ec_alveus/1_0_0/info.json | 6 + keyboards/cipulot/ec_alveus/1_0_0/rules.mk | 3 +- keyboards/cipulot/ec_alveus/1_2_0/config.h | 6 - keyboards/cipulot/ec_alveus/1_2_0/info.json | 6 + keyboards/cipulot/ec_alveus/1_2_0/rules.mk | 3 +- keyboards/cipulot/ec_pro2/config.h | 5 - keyboards/cipulot/ec_pro2/info.json | 6 + keyboards/cipulot/ec_pro2/rules.mk | 3 +- keyboards/cipulot/ec_prox/ansi_iso/config.h | 6 - keyboards/cipulot/ec_prox/ansi_iso/info.json | 6 + keyboards/cipulot/ec_prox/ansi_iso/rules.mk | 3 +- keyboards/cipulot/ec_prox/jis/config.h | 6 - keyboards/cipulot/ec_prox/jis/info.json | 6 + keyboards/cipulot/ec_prox/jis/rules.mk | 3 +- keyboards/cipulot/ec_theca/config.h | 6 - keyboards/cipulot/ec_theca/info.json | 10 +- keyboards/cipulot/ec_theca/rules.mk | 3 +- keyboards/cipulot/ec_virgo/config.h | 66 +++++++++ .../{kawayo/config.h => ec_virgo/halconf.h} | 9 +- keyboards/cipulot/ec_virgo/info.json | 136 ++++++++++++++++++ .../cipulot/ec_virgo/keymaps/default/keymap.c | 37 +++++ .../cipulot/ec_virgo/keymaps/via/keymap.c | 37 +++++ .../cipulot/ec_virgo/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_virgo/mcuconf.h | 22 +++ keyboards/cipulot/ec_virgo/post_rules.mk | 3 + keyboards/cipulot/ec_virgo/readme.md | 26 ++++ keyboards/cipulot/ec_virgo/rules.mk | 5 + keyboards/cipulot/kallos/config.h | 23 --- keyboards/cipulot/kallos/info.json | 6 + keyboards/cipulot/kawayo/info.json | 6 + keyboards/cipulot/rf_r1_8_9xu/config.h | 6 - keyboards/cipulot/rf_r1_8_9xu/info.json | 7 +- keyboards/cipulot/rf_r1_8_9xu/rules.mk | 3 +- 40 files changed, 421 insertions(+), 94 deletions(-) create mode 100644 keyboards/cipulot/ec_virgo/config.h rename keyboards/cipulot/{kawayo/config.h => ec_virgo/halconf.h} (76%) create mode 100644 keyboards/cipulot/ec_virgo/info.json create mode 100644 keyboards/cipulot/ec_virgo/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_virgo/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_virgo/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_virgo/mcuconf.h create mode 100644 keyboards/cipulot/ec_virgo/post_rules.mk create mode 100644 keyboards/cipulot/ec_virgo/readme.md create mode 100644 keyboards/cipulot/ec_virgo/rules.mk delete mode 100644 keyboards/cipulot/kallos/config.h diff --git a/keyboards/cipulot/ec_23u/config.h b/keyboards/cipulot/ec_23u/config.h index 3a3d482e3d3a..f5b74b9e6009 100644 --- a/keyboards/cipulot/ec_23u/config.h +++ b/keyboards/cipulot/ec_23u/config.h @@ -62,8 +62,3 @@ #define EECONFIG_KB_DATA_SIZE 57 -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_23u/info.json b/keyboards/cipulot/ec_23u/info.json index 0f656f8e8ca3..17aa5eb6e7a0 100644 --- a/keyboards/cipulot/ec_23u/info.json +++ b/keyboards/cipulot/ec_23u/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_23u/rules.mk b/keyboards/cipulot/ec_23u/rules.mk index ab6c37cad435..318e0215ce90 100644 --- a/keyboards/cipulot/ec_23u/rules.mk +++ b/keyboards/cipulot/ec_23u/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_60/config.h b/keyboards/cipulot/ec_60/config.h index c936b248c452..245255014396 100644 --- a/keyboards/cipulot/ec_60/config.h +++ b/keyboards/cipulot/ec_60/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 159 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_60/info.json b/keyboards/cipulot/ec_60/info.json index a86b20bfd639..860594f611a8 100644 --- a/keyboards/cipulot/ec_60/info.json +++ b/keyboards/cipulot/ec_60/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_60/rules.mk b/keyboards/cipulot/ec_60/rules.mk index 70494b635f68..ce525670a68b 100644 --- a/keyboards/cipulot/ec_60/rules.mk +++ b/keyboards/cipulot/ec_60/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/config.h b/keyboards/cipulot/ec_alveus/1_0_0/config.h index ea43ba348d5f..ab51289c023c 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/config.h +++ b/keyboards/cipulot/ec_alveus/1_0_0/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 169 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_alveus/1_0_0/info.json b/keyboards/cipulot/ec_alveus/1_0_0/info.json index 4652166cc5e2..cffd3ade586c 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/info.json +++ b/keyboards/cipulot/ec_alveus/1_0_0/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk index 70494b635f68..ce525670a68b 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/config.h b/keyboards/cipulot/ec_alveus/1_2_0/config.h index ea43ba348d5f..ab51289c023c 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/config.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 169 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_alveus/1_2_0/info.json b/keyboards/cipulot/ec_alveus/1_2_0/info.json index 8b63d02f770b..da212f834118 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/info.json +++ b/keyboards/cipulot/ec_alveus/1_2_0/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk index 70494b635f68..ce525670a68b 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_pro2/config.h b/keyboards/cipulot/ec_pro2/config.h index c936b248c452..a05e716823a2 100644 --- a/keyboards/cipulot/ec_pro2/config.h +++ b/keyboards/cipulot/ec_pro2/config.h @@ -65,8 +65,3 @@ #define EECONFIG_KB_DATA_SIZE 159 -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_pro2/info.json b/keyboards/cipulot/ec_pro2/info.json index 2929edfb19c6..2e05cff3c16c 100644 --- a/keyboards/cipulot/ec_pro2/info.json +++ b/keyboards/cipulot/ec_pro2/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_pro2/rules.mk b/keyboards/cipulot/ec_pro2/rules.mk index ab6c37cad435..318e0215ce90 100644 --- a/keyboards/cipulot/ec_pro2/rules.mk +++ b/keyboards/cipulot/ec_pro2/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_prox/ansi_iso/config.h b/keyboards/cipulot/ec_prox/ansi_iso/config.h index 6a165cf3abd6..bf25d0b71289 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/config.h +++ b/keyboards/cipulot/ec_prox/ansi_iso/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 159 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_prox/ansi_iso/info.json b/keyboards/cipulot/ec_prox/ansi_iso/info.json index 3f390d0bc61c..9a68d8b0bf7b 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/info.json +++ b/keyboards/cipulot/ec_prox/ansi_iso/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk index ab6c37cad435..318e0215ce90 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk +++ b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_prox/jis/config.h b/keyboards/cipulot/ec_prox/jis/config.h index 6a686d740448..fd3c048bc38b 100644 --- a/keyboards/cipulot/ec_prox/jis/config.h +++ b/keyboards/cipulot/ec_prox/jis/config.h @@ -64,9 +64,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define EECONFIG_KB_DATA_SIZE 149 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_prox/jis/info.json b/keyboards/cipulot/ec_prox/jis/info.json index 88067f9305e6..4c92f8c6732b 100644 --- a/keyboards/cipulot/ec_prox/jis/info.json +++ b/keyboards/cipulot/ec_prox/jis/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, diff --git a/keyboards/cipulot/ec_prox/jis/rules.mk b/keyboards/cipulot/ec_prox/jis/rules.mk index ab6c37cad435..318e0215ce90 100644 --- a/keyboards/cipulot/ec_prox/jis/rules.mk +++ b/keyboards/cipulot/ec_prox/jis/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 diff --git a/keyboards/cipulot/ec_theca/config.h b/keyboards/cipulot/ec_theca/config.h index 4b834fdff681..d9fea5596756 100644 --- a/keyboards/cipulot/ec_theca/config.h +++ b/keyboards/cipulot/ec_theca/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define DYNAMIC_KEYMAP_LAYER_COUNT 3 #define EECONFIG_KB_DATA_SIZE 201 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/ec_theca/info.json b/keyboards/cipulot/ec_theca/info.json index fbd7d7ec4712..a438e4018069 100644 --- a/keyboards/cipulot/ec_theca/info.json +++ b/keyboards/cipulot/ec_theca/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, @@ -27,10 +33,6 @@ "LAYOUT_all": "LAYOUT_tkl_ansi", "LAYOUT_tkl_ansi_tsangan_wkl": "LAYOUT_tkl_ansi_wkl" }, - "community_layouts": [ - "tkl_ansi", - "tkl_ansi_tsangan" - ], "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/cipulot/ec_theca/rules.mk b/keyboards/cipulot/ec_theca/rules.mk index 70494b635f68..ce525670a68b 100644 --- a/keyboards/cipulot/ec_theca/rules.mk +++ b/keyboards/cipulot/ec_theca/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 3 diff --git a/keyboards/cipulot/ec_virgo/config.h b/keyboards/cipulot/ec_virgo/config.h new file mode 100644 index 000000000000..2fce8cd7fa7c --- /dev/null +++ b/keyboards/cipulot/ec_virgo/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +#define MATRIX_ROW_PINS \ + { B6, B7, B5, B4, B3, A15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 16 + +#define AMUX_EN_PINS \ + { A9, A8 } + +#define AMUX_SEL_PINS \ + { B12, B13, B15, B14 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 7, 11 } + +#define AMUX_0_COL_CHANNELS \ + { 2, 1, 0, 3, 5, 4, 7 } + +#define AMUX_1_COL_CHANNELS \ + { 2, 1, 0, 15, 14, 13, 12, 8, 11, 10, 9 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A3 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 225 diff --git a/keyboards/cipulot/kawayo/config.h b/keyboards/cipulot/ec_virgo/halconf.h similarity index 76% rename from keyboards/cipulot/kawayo/config.h rename to keyboards/cipulot/ec_virgo/halconf.h index a08011b9cf92..835d43b6a0af 100644 --- a/keyboards/cipulot/kawayo/config.h +++ b/keyboards/cipulot/ec_virgo/halconf.h @@ -1,4 +1,4 @@ -/* Copyright 2022 Cipulot +/* Copyright 2023 Cipulot * * 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 @@ -16,7 +16,6 @@ #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 HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_virgo/info.json b/keyboards/cipulot/ec_virgo/info.json new file mode 100644 index 000000000000..6b37880181b6 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/info.json @@ -0,0 +1,136 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Virgo EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC0", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "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.5, "y": 0}, + {"matrix": [0, 7], "x": 9, "y": 0}, + {"matrix": [0, 8], "x": 10, "y": 0}, + {"matrix": [0, 9], "x": 11, "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, 15], "x": 17.25, "y": 0}, + {"matrix": [0, 16], "x": 18.25, "y": 0}, + {"matrix": [0, 17], "x": 19.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": 9, "y": 1.5}, + {"matrix": [1, 8], "x": 10, "y": 1.5}, + {"matrix": [1, 9], "x": 11, "y": 1.5}, + {"matrix": [1, 10], "x": 12, "y": 1.5}, + {"matrix": [1, 11], "x": 13, "y": 1.5}, + {"matrix": [1, 12], "x": 14, "y": 1.5}, + {"matrix": [1, 13], "x": 15, "y": 1.5}, + {"matrix": [1, 14], "x": 16, "y": 1.5}, + {"matrix": [1, 15], "x": 17.25, "y": 1.5}, + {"matrix": [1, 16], "x": 18.25, "y": 1.5}, + {"matrix": [1, 17], "x": 19.25, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 8.5, "y": 2.5}, + {"matrix": [2, 7], "x": 9.5, "y": 2.5}, + {"matrix": [2, 8], "x": 10.5, "y": 2.5}, + {"matrix": [2, 9], "x": 11.5, "y": 2.5}, + {"matrix": [2, 10], "x": 12.5, "y": 2.5}, + {"matrix": [2, 11], "x": 13.5, "y": 2.5}, + {"matrix": [2, 12], "x": 14.5, "y": 2.5}, + {"matrix": [2, 13], "x": 15.5, "y": 2.5}, + {"matrix": [2, 14], "x": 16.5, "y": 2.5, "w": 0.5}, + {"matrix": [2, 15], "x": 17.25, "y": 2.5}, + {"matrix": [2, 16], "x": 18.25, "y": 2.5}, + {"matrix": [2, 17], "x": 19.25, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 8.75, "y": 3.5}, + {"matrix": [3, 7], "x": 9.75, "y": 3.5}, + {"matrix": [3, 8], "x": 10.75, "y": 3.5}, + {"matrix": [3, 9], "x": 11.75, "y": 3.5}, + {"matrix": [3, 10], "x": 12.75, "y": 3.5}, + {"matrix": [3, 11], "x": 13.75, "y": 3.5}, + {"matrix": [3, 12], "x": 14.75, "y": 3.5}, + {"matrix": [3, 13], "x": 15.75, "y": 3.5, "w": 1.25}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"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": [5, 6], "x": 8.25, "y": 4.5}, + {"matrix": [4, 7], "x": 9.25, "y": 4.5}, + {"matrix": [4, 8], "x": 10.25, "y": 4.5}, + {"matrix": [4, 9], "x": 11.25, "y": 4.5}, + {"matrix": [4, 10], "x": 12.25, "y": 4.5}, + {"matrix": [4, 11], "x": 13.25, "y": 4.5}, + {"matrix": [4, 13], "x": 14.25, "y": 4.5, "w": 1.75}, + {"matrix": [4, 14], "x": 16, "y": 4.5}, + {"matrix": [4, 16], "x": 18.25, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.5, "w": 1.25}, + {"matrix": [5, 5], "x": 5, "y": 5.5, "w": 2.25}, + {"matrix": [5, 7], "x": 8.25, "y": 5.5, "w": 2.75}, + {"matrix": [5, 9], "x": 11, "y": 5.5, "w": 1.25}, + {"matrix": [5, 10], "x": 12.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 14.5, "y": 5.5, "w": 1.5}, + {"matrix": [5, 15], "x": 17.25, "y": 5.5}, + {"matrix": [5, 16], "x": 18.25, "y": 5.5}, + {"matrix": [5, 17], "x": 19.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c b/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c new file mode 100644 index 000000000000..f176ec71dc08 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_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_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + + // clang-format on +}; diff --git a/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c b/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c new file mode 100644 index 000000000000..f176ec71dc08 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_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_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, 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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + + // clang-format on +}; diff --git a/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk b/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_virgo/mcuconf.h b/keyboards/cipulot/ec_virgo/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_virgo/post_rules.mk b/keyboards/cipulot/ec_virgo/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_virgo/readme.md b/keyboards/cipulot/ec_virgo/readme.md new file mode 100644 index 000000000000..ddf976ca7924 --- /dev/null +++ b/keyboards/cipulot/ec_virgo/readme.md @@ -0,0 +1,26 @@ +# Virgo EC + +![Virgo EC PCB](https://i.imgur.com/iaKYqySh.jpeg) + +EC version of the Virgo keyboard. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Virgo EC PCB +* Hardware Availability: [Antipode](https://www.antipode.no/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_virgo:default + +Flashing example for this keyboard: + + make cipulot/ec_virgo: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to QK_BOOT if it is available diff --git a/keyboards/cipulot/ec_virgo/rules.mk b/keyboards/cipulot/ec_virgo/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/ec_virgo/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 diff --git a/keyboards/cipulot/kallos/config.h b/keyboards/cipulot/kallos/config.h deleted file mode 100644 index dfe6b13b0668..000000000000 --- a/keyboards/cipulot/kallos/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Cipulot - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/kallos/info.json b/keyboards/cipulot/kallos/info.json index b2f265c13fd7..77330c2a66d4 100644 --- a/keyboards/cipulot/kallos/info.json +++ b/keyboards/cipulot/kallos/info.json @@ -30,6 +30,12 @@ "cols": ["F5", "F6", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "F7", "D2", "D1", "B7"], "rows": ["B3", "B2", "F0", "C7", "F4", "F1"] }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/cipulot/kawayo/info.json b/keyboards/cipulot/kawayo/info.json index 85a5f81c2b31..93c362d6649e 100644 --- a/keyboards/cipulot/kawayo/info.json +++ b/keyboards/cipulot/kawayo/info.json @@ -12,6 +12,12 @@ "cols": ["B10", "A0", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "A14", "A4", "A3", "A2", "A1"], "rows": ["B1", "B12", "C13", "A7", "B0"] }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "processor": "STM32F411", "bootloader": "stm32-dfu", diff --git a/keyboards/cipulot/rf_r1_8_9xu/config.h b/keyboards/cipulot/rf_r1_8_9xu/config.h index fbd65f259fd6..cd98ff7f3da6 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/config.h +++ b/keyboards/cipulot/rf_r1_8_9xu/config.h @@ -63,9 +63,3 @@ // #define DEBUG_MATRIX_SCAN_RATE #define DYNAMIC_KEYMAP_LAYER_COUNT 3 #define EECONFIG_KB_DATA_SIZE 201 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/cipulot/rf_r1_8_9xu/info.json b/keyboards/cipulot/rf_r1_8_9xu/info.json index 6d3ab8b70917..4c1a0e4384cf 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/info.json +++ b/keyboards/cipulot/rf_r1_8_9xu/info.json @@ -6,6 +6,12 @@ "build": { "lto": true }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, "diode_direction": "COL2ROW", "features": { "bootmagic": false, @@ -47,7 +53,6 @@ }, "vid": "0x6369" }, - "community_layouts": ["tkl_jis", "tkl_iso_tsangan", "tkl_ansi_tsangan"], "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/cipulot/rf_r1_8_9xu/rules.mk b/keyboards/cipulot/rf_r1_8_9xu/rules.mk index ab6c37cad435..318e0215ce90 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/rules.mk +++ b/keyboards/cipulot/rf_r1_8_9xu/rules.mk @@ -1,4 +1,5 @@ CUSTOM_MATRIX = lite ANALOG_DRIVER_REQUIRED = yes -SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c OPT = 2 From 4e9967557ef9d68202f9e321a0798be2490b51a7 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:35:40 +0200 Subject: [PATCH 077/125] Add EC Type-B (#23170) --- keyboards/cipulot/ec_typeb/config.h | 66 +++++++++++++ keyboards/cipulot/ec_typeb/halconf.h | 21 ++++ keyboards/cipulot/ec_typeb/info.json | 98 +++++++++++++++++++ .../cipulot/ec_typeb/keymaps/default/keymap.c | 42 ++++++++ .../cipulot/ec_typeb/keymaps/via/keymap.c | 42 ++++++++ .../cipulot/ec_typeb/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_typeb/mcuconf.h | 22 +++++ keyboards/cipulot/ec_typeb/post_rules.mk | 3 + keyboards/cipulot/ec_typeb/readme.md | 26 +++++ keyboards/cipulot/ec_typeb/rules.mk | 5 + 10 files changed, 326 insertions(+) create mode 100644 keyboards/cipulot/ec_typeb/config.h create mode 100644 keyboards/cipulot/ec_typeb/halconf.h create mode 100644 keyboards/cipulot/ec_typeb/info.json create mode 100644 keyboards/cipulot/ec_typeb/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_typeb/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_typeb/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_typeb/mcuconf.h create mode 100644 keyboards/cipulot/ec_typeb/post_rules.mk create mode 100644 keyboards/cipulot/ec_typeb/readme.md create mode 100644 keyboards/cipulot/ec_typeb/rules.mk diff --git a/keyboards/cipulot/ec_typeb/config.h b/keyboards/cipulot/ec_typeb/config.h new file mode 100644 index 000000000000..bf25d0b71289 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { A7, B0, A4, A5, A6 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B3 } + +#define AMUX_SEL_PINS \ + { B4, B5, B6 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6, 4 } + +#define AMUX_1_COL_CHANNELS \ + { 0, 3, 1, 2, 5, 7, 6 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A2 +#define ANALOG_PORT A1 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_typeb/halconf.h b/keyboards/cipulot/ec_typeb/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/ec_typeb/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_typeb/info.json b/keyboards/cipulot/ec_typeb/info.json new file mode 100644 index 000000000000..2036632af59f --- /dev/null +++ b/keyboards/cipulot/ec_typeb/info.json @@ -0,0 +1,98 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Type-B", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BAA", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "3,14", "matrix": [3, 14], "x": 14, "y": 3}, + {"label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "4,2", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "4,6", "matrix": [4, 6], "x": 4, "y": 4, "w": 6}, + {"label": "4,9", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.5}, + {"label": "4,10", "matrix": [4, 10], "x": 11.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c b/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c new file mode 100644 index 000000000000..71f8cd0368d7 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_GRV, + 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_DEL, + 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_ENTER, + 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c b/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c new file mode 100644 index 000000000000..71f8cd0368d7 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_GRV, + 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_DEL, + 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_ENTER, + 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk b/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_typeb/mcuconf.h b/keyboards/cipulot/ec_typeb/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_typeb/post_rules.mk b/keyboards/cipulot/ec_typeb/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_typeb/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_typeb/readme.md b/keyboards/cipulot/ec_typeb/readme.md new file mode 100644 index 000000000000..c3bfe812388b --- /dev/null +++ b/keyboards/cipulot/ec_typeb/readme.md @@ -0,0 +1,26 @@ +# EC Type-B + +![EC Type-B](https://i.imgur.com/B6yFoUJh.jpg) + +EC Type-B Keyboard by bababaul. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Type-B +* Hardware Availability: [Sand Keys](https://sandkeys.me/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_typeb:default + +Flashing example for this keyboard: + + make cipulot/ec_typeb: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: + +* **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_typeb/rules.mk b/keyboards/cipulot/ec_typeb/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/ec_typeb/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From a426abf017cce185c0b79fc2eb7f16a8c1442bed Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:36:28 +0200 Subject: [PATCH 078/125] Add EC TKL (#23177) --- keyboards/cipulot/ec_tkl/config.h | 69 +++ keyboards/cipulot/ec_tkl/halconf.h | 23 + keyboards/cipulot/ec_tkl/info.json | 433 ++++++++++++++++++ .../cipulot/ec_tkl/keymaps/default/keymap.c | 39 ++ .../ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c | 37 ++ .../ec_tkl/keymaps/tkl_iso_tsangan/keymap.c | 37 ++ .../cipulot/ec_tkl/keymaps/tkl_jis/keymap.c | 39 ++ keyboards/cipulot/ec_tkl/keymaps/via/config.h | 20 + keyboards/cipulot/ec_tkl/keymaps/via/keymap.c | 39 ++ keyboards/cipulot/ec_tkl/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_tkl/mcuconf.h | 25 + keyboards/cipulot/ec_tkl/post_rules.mk | 3 + keyboards/cipulot/ec_tkl/readme.md | 26 ++ keyboards/cipulot/ec_tkl/rules.mk | 5 + 14 files changed, 796 insertions(+) create mode 100644 keyboards/cipulot/ec_tkl/config.h create mode 100644 keyboards/cipulot/ec_tkl/halconf.h create mode 100644 keyboards/cipulot/ec_tkl/info.json create mode 100644 keyboards/cipulot/ec_tkl/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/config.h create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_tkl/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_tkl/mcuconf.h create mode 100644 keyboards/cipulot/ec_tkl/post_rules.mk create mode 100644 keyboards/cipulot/ec_tkl/readme.md create mode 100644 keyboards/cipulot/ec_tkl/rules.mk diff --git a/keyboards/cipulot/ec_tkl/config.h b/keyboards/cipulot/ec_tkl/config.h new file mode 100644 index 000000000000..95a7f9137a11 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/config.h @@ -0,0 +1,69 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS \ + { B6, B5, B12, B10, B13, B7 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 16 + +#define AMUX_EN_PINS \ + { A8 } + +#define AMUX_SEL_PINS \ + { B14, B15, A9, A10 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 16 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE +#define EECONFIG_KB_DATA_SIZE 201 + +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 5 diff --git a/keyboards/cipulot/ec_tkl/halconf.h b/keyboards/cipulot/ec_tkl/halconf.h new file mode 100644 index 000000000000..f2c222023134 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE +#define HAL_USE_PAL TRUE +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/cipulot/ec_tkl/info.json b/keyboards/cipulot/ec_tkl/info.json new file mode 100644 index 000000000000..0c56fb838d84 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/info.json @@ -0,0 +1,433 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC TKL", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "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": 22 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC3", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "B4" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,13", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 14, "y": 1.25}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,13", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 0.75}, + {"label": "2,14", "matrix": [2, 14], "x": 14.25, "y": 2.25, "w": 0.75}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "3,13", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,12", "matrix": [4, 12], "x": 12.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,4", "matrix": [5, 4], "x": 4, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 5.5, "y": 5.25, "w": 2.5}, + {"label": "5,7", "matrix": [5, 7], "x": 8, "y": 5.25, "w": 1.5}, + {"label": "5,8", "matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 1.5}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,13", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,13", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,14", "matrix": [2, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_jis": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 9.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 14, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 15.25, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 16.25, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "1,13", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "1,14", "matrix": [1, 14], "x": 14, "y": 1.25}, + {"label": "3,14", "matrix": [3, 14], "x": 15.25, "y": 1.25}, + {"label": "2,15", "matrix": [2, 15], "x": 16.25, "y": 1.25}, + {"label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 1.25}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "2,2", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "2,3", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "2,5", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "2,6", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "2,7", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "2,8", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "2,10", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "2,11", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "2,12", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "2,14", "matrix": [2, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 2.25}, + {"label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 2.25}, + {"label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 2.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "3,3", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "3,5", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "3,6", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "3,7", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "3,8", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "3,10", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "3,11", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "3,12", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "4,12", "matrix": [4, 12], "x": 12.25, "y": 4.25}, + {"label": "4,13", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75}, + {"label": "5,14", "matrix": [5, 14], "x": 16.25, "y": 4.25}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "5,1", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "5,2", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "5,4", "matrix": [5, 4], "x": 4, "y": 5.25, "w": 1.5}, + {"label": "5,6", "matrix": [5, 6], "x": 5.5, "y": 5.25, "w": 2.5}, + {"label": "5,7", "matrix": [5, 7], "x": 8, "y": 5.25, "w": 1.5}, + {"label": "5,8", "matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 1.5}, + {"label": "5,9", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "5,10", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "5,11", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "5,12", "matrix": [5, 12], "x": 15.25, "y": 5.25}, + {"label": "5,13", "matrix": [5, 13], "x": 16.25, "y": 5.25}, + {"label": "5,15", "matrix": [5, 15], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c new file mode 100644 index 000000000000..983bdefe8a99 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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, JP_YEN, 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_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_KANA, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c new file mode 100644 index 000000000000..ba948b4fc120 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_ansi_tsangan/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_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_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_ENTER, + 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_RIGHT), + + [1] = LAYOUT_tkl_ansi_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c new file mode 100644 index 000000000000..1689d44d4083 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_iso_tsangan/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_iso_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_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_ENT, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_tkl_iso_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c new file mode 100644 index 000000000000..e44575f74f92 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/tkl_jis/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_tkl_jis( + 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, + JP_ZKHK, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, JP_Q, JP_W, JP_E, JP_R, JP_T, JP_Y, JP_U, JP_I, JP_O, JP_P, JP_AT, JP_LBRC, KC_ENTER, KC_DEL, KC_END, KC_PGDN, + JP_EISU, JP_A, JP_S, JP_D, JP_F, JP_G, JP_H, JP_J, JP_K, JP_L, JP_SCLN, JP_COLN, JP_RBRC, + KC_LSFT, JP_Z, JP_X, JP_C, JP_V, JP_B, JP_N, JP_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_tkl_jis( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/config.h b/keyboards/cipulot/ec_tkl/keymaps/via/config.h new file mode 100644 index 000000000000..1ab0d3d9aa2a --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// This is the firmware version for VIA support to avoid conflicts on menu fetching +#define VIA_FIRMWARE_VERSION 1 diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c b/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c new file mode 100644 index 000000000000..983bdefe8a99 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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, JP_YEN, 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_ENTER, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_UNDS, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_KANA, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk b/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_tkl/mcuconf.h b/keyboards/cipulot/ec_tkl/mcuconf.h new file mode 100644 index 000000000000..206928272fb8 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/cipulot/ec_tkl/post_rules.mk b/keyboards/cipulot/ec_tkl/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_tkl/readme.md b/keyboards/cipulot/ec_tkl/readme.md new file mode 100644 index 000000000000..31467b94d74d --- /dev/null +++ b/keyboards/cipulot/ec_tkl/readme.md @@ -0,0 +1,26 @@ +# EC TKL + +![EC TKL PCB](https://i.imgur.com/jQTHGzBh.png) + +Universal TKL Electrostatic Capacitive PCB, with multi-layout support. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC TKL PCB Rev 1.1 +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_tkl:default + +Flashing example for this keyboard: + + make cipulot/ec_tkl: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: + +* **Physical reset**: Long short the exposed pins on the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_tkl/rules.mk b/keyboards/cipulot/ec_tkl/rules.mk new file mode 100644 index 000000000000..318e0215ce90 --- /dev/null +++ b/keyboards/cipulot/ec_tkl/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 2 From 3377813f5d2e08818474c4ea1b0029b776826be7 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:38:12 +0200 Subject: [PATCH 079/125] Add EC660C (#23171) --- keyboards/cipulot/ec_660c/config.h | 66 +++++++++++ keyboards/cipulot/ec_660c/halconf.h | 21 ++++ keyboards/cipulot/ec_660c/info.json | 111 ++++++++++++++++++ .../cipulot/ec_660c/keymaps/default/keymap.c | 43 +++++++ .../cipulot/ec_660c/keymaps/via/keymap.c | 43 +++++++ .../cipulot/ec_660c/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_660c/mcuconf.h | 22 ++++ keyboards/cipulot/ec_660c/post_rules.mk | 3 + keyboards/cipulot/ec_660c/readme.md | 26 ++++ keyboards/cipulot/ec_660c/rules.mk | 5 + 10 files changed, 341 insertions(+) create mode 100644 keyboards/cipulot/ec_660c/config.h create mode 100644 keyboards/cipulot/ec_660c/halconf.h create mode 100644 keyboards/cipulot/ec_660c/info.json create mode 100644 keyboards/cipulot/ec_660c/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_660c/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_660c/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_660c/mcuconf.h create mode 100644 keyboards/cipulot/ec_660c/post_rules.mk create mode 100644 keyboards/cipulot/ec_660c/readme.md create mode 100644 keyboards/cipulot/ec_660c/rules.mk diff --git a/keyboards/cipulot/ec_660c/config.h b/keyboards/cipulot/ec_660c/config.h new file mode 100644 index 000000000000..9e883c40da28 --- /dev/null +++ b/keyboards/cipulot/ec_660c/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B1, B10, B0, A1, A0 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B7, B6 } + +#define AMUX_SEL_PINS \ + { B5, B4, B3 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A5 +#define ANALOG_PORT A4 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_660c/halconf.h b/keyboards/cipulot/ec_660c/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/ec_660c/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_660c/info.json b/keyboards/cipulot/ec_660c/info.json new file mode 100644 index 000000000000..32ac397b6bfe --- /dev/null +++ b/keyboards/cipulot/ec_660c/info.json @@ -0,0 +1,111 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 660C", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B14", + "scroll_lock": "B15" + }, + "processor": "STM32F401", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BA6", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "1,14", "matrix": [1, 14], "x": 15.5, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "2,14", "matrix": [2, 14], "x": 15.5, "y": 1}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,12", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.25}, + {"label": "3,13", "matrix": [3, 13], "x": 14.5, "y": 3}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "4,2", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "4,6", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6}, + {"label": "4,9", "matrix": [4, 9], "x": 9.75, "y": 4, "w": 1.25}, + {"label": "4,10", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.25}, + {"label": "4,11", "matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.25}, + {"label": "4,12", "matrix": [4, 12], "x": 13.5, "y": 4}, + {"label": "4,13", "matrix": [4, 13], "x": 14.5, "y": 4}, + {"label": "4,14", "matrix": [4, 14], "x": 15.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_660c/keymaps/default/keymap.c b/keyboards/cipulot/ec_660c/keymaps/default/keymap.c new file mode 100644 index 000000000000..5d82bdc3abdf --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_BSPC, 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_DEL, + 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_BSLS, 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_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_660c/keymaps/via/keymap.c b/keyboards/cipulot/ec_660c/keymaps/via/keymap.c new file mode 100644 index 000000000000..5d82bdc3abdf --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = 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_BSPC, 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_DEL, + 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_BSLS, 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_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_660c/keymaps/via/rules.mk b/keyboards/cipulot/ec_660c/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_660c/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_660c/mcuconf.h b/keyboards/cipulot/ec_660c/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/ec_660c/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_660c/post_rules.mk b/keyboards/cipulot/ec_660c/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_660c/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_660c/readme.md b/keyboards/cipulot/ec_660c/readme.md new file mode 100644 index 000000000000..c01bb3252e02 --- /dev/null +++ b/keyboards/cipulot/ec_660c/readme.md @@ -0,0 +1,26 @@ +# EC660C + +![EC660C PCB](https://i.imgur.com/HfTvrkph.jpg) + +Replacement PCB for the Leopold FC660C. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC660C PCB +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_660c:default + +Flashing example for this keyboard: + + make cipulot/ec_660c: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_660c/rules.mk b/keyboards/cipulot/ec_660c/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/ec_660c/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From d21363325dcc197725ddbe77063527314452751e Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:39:50 +0200 Subject: [PATCH 080/125] Add EC Dolice (#23178) --- keyboards/cipulot/ec_dolice/config.h | 66 ++++ keyboards/cipulot/ec_dolice/halconf.h | 21 ++ keyboards/cipulot/ec_dolice/info.json | 319 ++++++++++++++++++ .../ec_dolice/keymaps/default/keymap.c | 41 +++ .../cipulot/ec_dolice/keymaps/via/keymap.c | 41 +++ .../cipulot/ec_dolice/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_dolice/mcuconf.h | 22 ++ keyboards/cipulot/ec_dolice/post_rules.mk | 3 + keyboards/cipulot/ec_dolice/readme.md | 26 ++ keyboards/cipulot/ec_dolice/rules.mk | 5 + 10 files changed, 545 insertions(+) create mode 100644 keyboards/cipulot/ec_dolice/config.h create mode 100644 keyboards/cipulot/ec_dolice/halconf.h create mode 100644 keyboards/cipulot/ec_dolice/info.json create mode 100644 keyboards/cipulot/ec_dolice/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_dolice/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_dolice/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_dolice/mcuconf.h create mode 100644 keyboards/cipulot/ec_dolice/post_rules.mk create mode 100644 keyboards/cipulot/ec_dolice/readme.md create mode 100644 keyboards/cipulot/ec_dolice/rules.mk diff --git a/keyboards/cipulot/ec_dolice/config.h b/keyboards/cipulot/ec_dolice/config.h new file mode 100644 index 000000000000..a5c56e794917 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/config.h @@ -0,0 +1,66 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B13, A8, B12, B14, B15 } + +#define AMUX_COUNT 2 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { B9, B8 } + +#define AMUX_SEL_PINS \ + { B7, B6, B5 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7 } + +#define AMUX_0_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 3, 0, 1, 2, 4, 6, 7 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS + +#define DISCHARGE_PIN A3 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +// #define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_dolice/halconf.h b/keyboards/cipulot/ec_dolice/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/ec_dolice/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_dolice/info.json b/keyboards/cipulot/ec_dolice/info.json new file mode 100644 index 000000000000..e81422e2c546 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/info.json @@ -0,0 +1,319 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Dolice EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B4", + "num_lock": "A15", + "scroll_lock": "B3", + "on_state": 0 + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB9", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_alice_split_bs" + }, + "layouts": { + "LAYOUT_alice": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2}, + {"matrix": [2, 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": [3, 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, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"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": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 17.25, "y": 3}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_alice_split_bs": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 13], "x": 16.25, "y": 0}, + {"matrix": [0, 14], "x": 17.25, "y": 0}, + {"matrix": [2, 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": [3, 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, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"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": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 17.25, "y": 3}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_long_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 14], "x": 16.25, "y": 0, "w": 2}, + {"matrix": [2, 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": [3, 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, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"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": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_long_rshift_split_bs": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [0, 7], "x": 10.25, "y": 0}, + {"matrix": [0, 8], "x": 11.25, "y": 0}, + {"matrix": [0, 9], "x": 12.25, "y": 0}, + {"matrix": [0, 10], "x": 13.25, "y": 0}, + {"matrix": [0, 11], "x": 14.25, "y": 0}, + {"matrix": [0, 12], "x": 15.25, "y": 0}, + {"matrix": [0, 13], "x": 16.25, "y": 0}, + {"matrix": [0, 14], "x": 17.25, "y": 0}, + {"matrix": [2, 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": [3, 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, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"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": 9.5, "y": 3}, + {"matrix": [3, 8], "x": 10.5, "y": 3}, + {"matrix": [3, 9], "x": 11.5, "y": 3}, + {"matrix": [3, 10], "x": 12.5, "y": 3}, + {"matrix": [3, 11], "x": 13.5, "y": 3}, + {"matrix": [3, 12], "x": 14.5, "y": 3}, + {"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75}, + {"matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 16.75, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c b/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c new file mode 100644 index 000000000000..5a501e29823c --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_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, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = 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, + _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c b/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c new file mode 100644 index 000000000000..5a501e29823c --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/via/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_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, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = 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, + _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk b/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_dolice/mcuconf.h b/keyboards/cipulot/ec_dolice/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_dolice/post_rules.mk b/keyboards/cipulot/ec_dolice/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_dolice/readme.md b/keyboards/cipulot/ec_dolice/readme.md new file mode 100644 index 000000000000..a947df139c37 --- /dev/null +++ b/keyboards/cipulot/ec_dolice/readme.md @@ -0,0 +1,26 @@ +# Dolice EC + +![Dolice EC](https://i.imgur.com/uvM0G5v.png) + +The Dolice is a alice keyboard designed by Lx3 (Linworks) and yuktsi (TGR) and run by KLC. EC Version designed by Cipulot. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Dolice EC +* Hardware availability: Groupbuys. Check the ongoing ones on [the KLC Discord](https://discord.gg/d2A72mGPRB) or [Webshop](https://klc-playground.com/). + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_dolice:default + +Flashing example for this keyboard: + + make cipulot/ec_dolice: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_dolice/rules.mk b/keyboards/cipulot/ec_dolice/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/ec_dolice/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 822ba1edfa0a4309eeb8304749fb31fd414d369c Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:40:40 +0200 Subject: [PATCH 081/125] Add EC Vero (#23176) --- keyboards/cipulot/ec_vero/config.h | 61 +++++++ keyboards/cipulot/ec_vero/halconf.h | 21 +++ keyboards/cipulot/ec_vero/info.json | 165 ++++++++++++++++++ .../cipulot/ec_vero/keymaps/60_hhkb/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/default/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/via/keymap.c | 42 +++++ .../cipulot/ec_vero/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_vero/mcuconf.h | 22 +++ keyboards/cipulot/ec_vero/post_rules.mk | 3 + keyboards/cipulot/ec_vero/readme.md | 26 +++ keyboards/cipulot/ec_vero/rules.mk | 5 + 11 files changed, 430 insertions(+) create mode 100644 keyboards/cipulot/ec_vero/config.h create mode 100644 keyboards/cipulot/ec_vero/halconf.h create mode 100644 keyboards/cipulot/ec_vero/info.json create mode 100644 keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_vero/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_vero/mcuconf.h create mode 100644 keyboards/cipulot/ec_vero/post_rules.mk create mode 100644 keyboards/cipulot/ec_vero/readme.md create mode 100644 keyboards/cipulot/ec_vero/rules.mk diff --git a/keyboards/cipulot/ec_vero/config.h b/keyboards/cipulot/ec_vero/config.h new file mode 100644 index 000000000000..89f7474b552d --- /dev/null +++ b/keyboards/cipulot/ec_vero/config.h @@ -0,0 +1,61 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS \ + { B7, B6, A9, A10, B3 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 15 + +#define AMUX_EN_PINS \ + { B14 } + +#define AMUX_SEL_PINS \ + { B13, B12, B15, A8 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 15 } + +#define AMUX_0_COL_CHANNELS \ + { 1, 2, 3, 4, 5, 6, 7, 0, 8, 9, 10, 11, 13, 12, 14} + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A2 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +#define EECONFIG_KB_DATA_SIZE 159 diff --git a/keyboards/cipulot/ec_vero/halconf.h b/keyboards/cipulot/ec_vero/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/ec_vero/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_vero/info.json b/keyboards/cipulot/ec_vero/info.json new file mode 100644 index 000000000000..a2cc1e4a07d9 --- /dev/null +++ b/keyboards/cipulot/ec_vero/info.json @@ -0,0 +1,165 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Vero EC", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BC1", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "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, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "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": 6}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4} + ] + }, + "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": 0.75}, + {"matrix": [1, 14], "x": 14.25, "y": 1, "w": 0.75}, + {"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, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "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": 6}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c b/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c new file mode 100644 index 000000000000..bd4df694af9d --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/60_hhkb/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_hhkb( + 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_GRV, + 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_DEL, + 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_ENTER, + 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_60_hhkb( + _______, 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_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, + _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_60_hhkb( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/default/keymap.c b/keyboards/cipulot/ec_vero/keymaps/default/keymap.c new file mode 100644 index 000000000000..06b3651d94a6 --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_GRV, + 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_DEL, KC_ENTER, + 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_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/via/keymap.c b/keyboards/cipulot/ec_vero/keymaps/via/keymap.c new file mode 100644 index 000000000000..06b3651d94a6 --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_GRV, + 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_DEL, KC_ENTER, + 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_NUHS, KC_ENTER, + KC_LSFT, KC_BSLS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, KC_UP, _______, KC_BSPC, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, S(KC_8), KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, S(KC_EQL), KC_MINS, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, MO(2)), + + [2] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_vero/keymaps/via/rules.mk b/keyboards/cipulot/ec_vero/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_vero/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_vero/mcuconf.h b/keyboards/cipulot/ec_vero/mcuconf.h new file mode 100644 index 000000000000..fa3c955e0d89 --- /dev/null +++ b/keyboards/cipulot/ec_vero/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_vero/post_rules.mk b/keyboards/cipulot/ec_vero/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_vero/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_vero/readme.md b/keyboards/cipulot/ec_vero/readme.md new file mode 100644 index 000000000000..590423fa0237 --- /dev/null +++ b/keyboards/cipulot/ec_vero/readme.md @@ -0,0 +1,26 @@ +# Vero EC + +![Vero EC PCB](https://i.imgur.com/JV8pMaXh.jpg) + +EC version of the Vero R2 keyboard. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Vero EC PCB +* Hardware Availability: [Antipode](https://www.antipode.no/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_vero:default + +Flashing example for this keyboard: + + make cipulot/ec_vero: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_vero/rules.mk b/keyboards/cipulot/ec_vero/rules.mk new file mode 100644 index 000000000000..ce525670a68b --- /dev/null +++ b/keyboards/cipulot/ec_vero/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c +OPT = 3 From 900bec6211eb5c801c158bd30969397ff06b47fe Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:41:29 +0200 Subject: [PATCH 082/125] Add EC Menhir (#23175) --- keyboards/cipulot/ec_menhir/config.h | 61 +++++++++++++ keyboards/cipulot/ec_menhir/halconf.h | 21 +++++ keyboards/cipulot/ec_menhir/info.json | 87 +++++++++++++++++++ .../ec_menhir/keymaps/default/keymap.c | 27 ++++++ .../cipulot/ec_menhir/keymaps/via/keymap.c | 27 ++++++ .../cipulot/ec_menhir/keymaps/via/rules.mk | 1 + keyboards/cipulot/ec_menhir/mcuconf.h | 22 +++++ keyboards/cipulot/ec_menhir/post_rules.mk | 3 + keyboards/cipulot/ec_menhir/readme.md | 26 ++++++ keyboards/cipulot/ec_menhir/rules.mk | 4 + 10 files changed, 279 insertions(+) create mode 100644 keyboards/cipulot/ec_menhir/config.h create mode 100644 keyboards/cipulot/ec_menhir/halconf.h create mode 100644 keyboards/cipulot/ec_menhir/info.json create mode 100644 keyboards/cipulot/ec_menhir/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_menhir/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_menhir/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_menhir/mcuconf.h create mode 100644 keyboards/cipulot/ec_menhir/post_rules.mk create mode 100644 keyboards/cipulot/ec_menhir/readme.md create mode 100644 keyboards/cipulot/ec_menhir/rules.mk diff --git a/keyboards/cipulot/ec_menhir/config.h b/keyboards/cipulot/ec_menhir/config.h new file mode 100644 index 000000000000..bd0094c7f159 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/config.h @@ -0,0 +1,61 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_ROW_PINS \ + { A0, A3, A2, A1 } + +#define AMUX_COUNT 1 +#define AMUX_MAX_COLS_COUNT 12 + +#define AMUX_EN_PINS \ + { C10 } + +#define AMUX_SEL_PINS \ + { C11, B3, A15, A14 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 12 } + +#define AMUX_0_COL_CHANNELS \ + { 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS + +#define DISCHARGE_PIN A4 +#define ANALOG_PORT A5 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 50 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +#define EECONFIG_KB_DATA_SIZE 105 diff --git a/keyboards/cipulot/ec_menhir/halconf.h b/keyboards/cipulot/ec_menhir/halconf.h new file mode 100644 index 000000000000..835d43b6a0af --- /dev/null +++ b/keyboards/cipulot/ec_menhir/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_menhir/info.json b/keyboards/cipulot/ec_menhir/info.json new file mode 100644 index 000000000000..4cc6a8452598 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/info.json @@ -0,0 +1,87 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC Menhir", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "embedded_flash", + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "STM32G431", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BB8", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"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, "w": 1.75}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0.5, "y": 2, "w": 1.25}, + {"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, "w": 1.5}, + {"matrix": [3, 1], "x": 1.75, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3, "w": 2}, + {"matrix": [3, 5], "x": 6, "y": 3}, + {"matrix": [3, 6], "x": 7, "y": 3, "w": 2}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3} + ] + } + } +} diff --git a/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c b/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c new file mode 100644 index 000000000000..e6780e6439f7 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LCTL) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c b/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c new file mode 100644 index 000000000000..e6780e6439f7 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LCTL) + // clang-format on +}; diff --git a/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk b/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/ec_menhir/mcuconf.h b/keyboards/cipulot/ec_menhir/mcuconf.h new file mode 100644 index 000000000000..b120f145c5b7 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC2 +#define STM32_ADC_USE_ADC2 TRUE diff --git a/keyboards/cipulot/ec_menhir/post_rules.mk b/keyboards/cipulot/ec_menhir/post_rules.mk new file mode 100644 index 000000000000..d726a112a8c7 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(VIA_ENABLE)), yes) + SRC += keyboards/cipulot/common/via_ec.c +endif diff --git a/keyboards/cipulot/ec_menhir/readme.md b/keyboards/cipulot/ec_menhir/readme.md new file mode 100644 index 000000000000..234b1ab9d0e2 --- /dev/null +++ b/keyboards/cipulot/ec_menhir/readme.md @@ -0,0 +1,26 @@ +# EC Menhir + +![EC Menhir](https://i.imgur.com/m0feb2Zh.png) + +EC version of the Menhir. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC Menhir +* Hardware Availability: [fruitykeeb](https://fruitykeeb.xyz/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_menhir:default + +Flashing example for this keyboard: + + make cipulot/ec_menhir: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: + +* **Physical Boot0 pins**: Short the Boot0 pins on the back of the PCB while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_menhir/rules.mk b/keyboards/cipulot/ec_menhir/rules.mk new file mode 100644 index 000000000000..e7d73cefc98a --- /dev/null +++ b/keyboards/cipulot/ec_menhir/rules.mk @@ -0,0 +1,4 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +VPATH += keyboards/cipulot/common +SRC += matrix.c ec_board.c ec_switch_matrix.c From 69acadf967ed9b8389a3087425c3d2a772c09495 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:43:06 +0200 Subject: [PATCH 083/125] Add Chroma Support (#22889) Co-authored-by: Duncan Sutherland Co-authored-by: Drashna Jaelre --- keyboards/cipulot/chroma/info.json | 679 ++++++++++++++++++ .../chroma/keymaps/60_ansi_tsangan/keymap.c | 43 ++ .../chroma/keymaps/60_ansi_wkl/keymap.c | 43 ++ .../60_ansi_wkl_split_bs_rshift/keymap.c | 43 ++ .../chroma/keymaps/60_iso_tsangan/keymap.c | 43 ++ .../60_iso_tsangan_split_bs_rshift/keymap.c | 43 ++ .../chroma/keymaps/60_iso_wkl/keymap.c | 43 ++ .../60_iso_wkl_split_bs_rshift/keymap.c | 43 ++ .../cipulot/chroma/keymaps/default/keymap.c | 43 ++ keyboards/cipulot/chroma/keymaps/via/keymap.c | 43 ++ keyboards/cipulot/chroma/keymaps/via/rules.mk | 1 + keyboards/cipulot/chroma/readme.md | 27 + keyboards/cipulot/chroma/rules.mk | 0 13 files changed, 1094 insertions(+) create mode 100644 keyboards/cipulot/chroma/info.json create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/chroma/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/chroma/readme.md create mode 100644 keyboards/cipulot/chroma/rules.mk diff --git a/keyboards/cipulot/chroma/info.json b/keyboards/cipulot/chroma/info.json new file mode 100644 index 000000000000..5d418fdce1ff --- /dev/null +++ b/keyboards/cipulot/chroma/info.json @@ -0,0 +1,679 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "Chroma", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11", "B12", "A15", "B3", "B4", "B5", "B7", "B6"], + "rows": ["F0", "A2", "A3", "A4", "C15"] + }, + "processor": "STM32F072", + "usb": { + "device_version": "0.0.1", + "pid": "0x6BBF", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "community_layouts": ["60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"], + "layouts": { + "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, 7], "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_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, 7], "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, 7], "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_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, 7], "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_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, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"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": [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, 7], "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, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"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": [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, 7], "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, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"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": [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, 7], "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, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"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": [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, 7], "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_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, 7], "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_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.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c new file mode 100644 index 000000000000..df27a14861aa --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_tsangan/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_tsangan( + 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, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_60_ansi_tsangan( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_ansi_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c new file mode 100644 index 000000000000..4bc80d1d24b9 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_wkl( + 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, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_ansi_wkl( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_ansi_wkl( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..e9cdf26567f2 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_ansi_wkl_split_bs_rshift( + 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_ansi_wkl_split_bs_rshift( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_ansi_wkl_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c new file mode 100644 index 000000000000..55492c3e4d40 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_tsangan( + 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_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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_60_iso_tsangan( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_iso_tsangan( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..3cce71124478 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_tsangan_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_tsangan_split_bs_rshift( + 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_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_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, KC_RCTL + ), + [1] = LAYOUT_60_iso_tsangan_split_bs_rshift( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_iso_tsangan_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c new file mode 100644 index 000000000000..01bb84f50d43 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_wkl/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_wkl( + 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_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, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_iso_wkl( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_iso_wkl( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c b/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..d412f2a977d7 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/60_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_60_iso_wkl_split_bs_rshift( + 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_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_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_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_60_iso_wkl_split_bs_rshift( + 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_60_iso_wkl_split_bs_rshift( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/default/keymap.c b/keyboards/cipulot/chroma/keymaps/default/keymap.c new file mode 100644 index 000000000000..c93d9110efe3 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_BSPC, 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, KC_RCTL + ), + [1] = 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/via/keymap.c b/keyboards/cipulot/chroma/keymaps/via/keymap.c new file mode 100644 index 000000000000..c93d9110efe3 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_BSPC, 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, KC_RCTL + ), + [1] = 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_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MO(2) + ), + [2] = LAYOUT_all( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; diff --git a/keyboards/cipulot/chroma/keymaps/via/rules.mk b/keyboards/cipulot/chroma/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cipulot/chroma/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cipulot/chroma/readme.md b/keyboards/cipulot/chroma/readme.md new file mode 100644 index 000000000000..9a08bbecac1a --- /dev/null +++ b/keyboards/cipulot/chroma/readme.md @@ -0,0 +1,27 @@ +# Chroma + +![Chroma](https://i.imgur.com/clhRkDDh.png) + +A 60% hot swap PCB for MX switches. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: Chroma +* Hardware Availability: [Eloquent Clicks](https://eloquentclicks.com/) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/chroma:default + +Flashing example for this keyboard: + + make cipulot/chroma: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: + +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured. +* **Physical reset button**: Long press the reset button soldered on the PCB. +* **Bootmagic reset**: Hold down the top left key and plug in the controller. diff --git a/keyboards/cipulot/chroma/rules.mk b/keyboards/cipulot/chroma/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 From 31c81d432cbe963a1132f231036d38aa908c9403 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 30 Apr 2024 20:32:08 +0200 Subject: [PATCH 084/125] Add EC980C (#23172) --- keyboards/cipulot/ec_980c/config.h | 86 +++ keyboards/cipulot/ec_980c/ec_980c.c | 116 ++++ keyboards/cipulot/ec_980c/ec_switch_matrix.c | 318 +++++++++++ keyboards/cipulot/ec_980c/ec_switch_matrix.h | 83 +++ keyboards/cipulot/ec_980c/halconf.h | 23 + keyboards/cipulot/ec_980c/info.json | 170 ++++++ .../cipulot/ec_980c/keymaps/default/keymap.c | 48 ++ .../cipulot/ec_980c/keymaps/via/keymap.c | 48 ++ .../cipulot/ec_980c/keymaps/via/rules.mk | 3 + .../ec_980c/keymaps/via/via_ec_indicators.c | 499 ++++++++++++++++++ keyboards/cipulot/ec_980c/matrix.c | 42 ++ keyboards/cipulot/ec_980c/mcuconf.h | 28 + keyboards/cipulot/ec_980c/readme.md | 26 + keyboards/cipulot/ec_980c/rules.mk | 4 + 14 files changed, 1494 insertions(+) create mode 100644 keyboards/cipulot/ec_980c/config.h create mode 100644 keyboards/cipulot/ec_980c/ec_980c.c create mode 100644 keyboards/cipulot/ec_980c/ec_switch_matrix.c create mode 100644 keyboards/cipulot/ec_980c/ec_switch_matrix.h create mode 100644 keyboards/cipulot/ec_980c/halconf.h create mode 100644 keyboards/cipulot/ec_980c/info.json create mode 100644 keyboards/cipulot/ec_980c/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c create mode 100644 keyboards/cipulot/ec_980c/matrix.c create mode 100644 keyboards/cipulot/ec_980c/mcuconf.h create mode 100644 keyboards/cipulot/ec_980c/readme.md create mode 100644 keyboards/cipulot/ec_980c/rules.mk diff --git a/keyboards/cipulot/ec_980c/config.h b/keyboards/cipulot/ec_980c/config.h new file mode 100644 index 000000000000..e3723822e331 --- /dev/null +++ b/keyboards/cipulot/ec_980c/config.h @@ -0,0 +1,86 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 19 + +#define MATRIX_ROW_PINS \ + { B13, B12, B14, A9, B6, B7 } + +#define AMUX_COUNT 3 +#define AMUX_MAX_COLS_COUNT 8 + +#define AMUX_EN_PINS \ + { A0, A1, A8 } + +#define AMUX_SEL_PINS \ + { A4, A3, A2 } + +#define AMUX_COL_CHANNELS_SIZES \ + { 8, 7, 4 } + +#define AMUX_0_COL_CHANNELS \ + { 0, 3, 1, 2, 4, 6, 7, 5 } + +#define AMUX_1_COL_CHANNELS \ + { 1, 0, 3, 2, 4, 6, 7 } + +#define AMUX_2_COL_CHANNELS \ + { 4, 6, 7, 5 } + +#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS, AMUX_2_COL_CHANNELS + +#define DISCHARGE_PIN A6 +#define ANALOG_PORT A7 + +#define DEFAULT_ACTUATION_MODE 0 +#define DEFAULT_MODE_0_ACTUATION_LEVEL 550 +#define DEFAULT_MODE_0_RELEASE_LEVEL 500 +#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL +#define DEFAULT_MODE_1_ACTUATION_OFFSET 70 +#define DEFAULT_MODE_1_RELEASE_OFFSET 70 +#define DEFAULT_EXTREMUM 1023 +#define EXPECTED_NOISE_FLOOR 0 +#define NOISE_FLOOR_THRESHOLD 50 +#define BOTTOMING_CALIBRATION_THRESHOLD 100 +#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30 +#define DEFAULT_BOTTOMING_READING 1023 +#define DEFAULT_CALIBRATION_STARTER true + +#define DISCHARGE_TIME 10 + +//#define DEBUG_MATRIX_SCAN_RATE + +#define EECONFIG_KB_DATA_SIZE 249 + +// Indicators +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 + +#define NUM_INDICATOR_INDEX 0 +#define CAPS_INDICATOR_INDEX 1 +#define SCROLL_INDICATOR_INDEX 2 + +#define RGB_MATRIX_DEFAULT_VAL 60 +#define RGB_MATRIX_SLEEP +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR diff --git a/keyboards/cipulot/ec_980c/ec_980c.c b/keyboards/cipulot/ec_980c/ec_980c.c new file mode 100644 index 000000000000..2b40d5a5e697 --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_980c.c @@ -0,0 +1,116 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "quantum.h" + +void eeconfig_init_kb(void) { + // Default values + eeprom_ec_config.num.h = 0; + eeprom_ec_config.num.s = 0; + eeprom_ec_config.num.v = 60; + eeprom_ec_config.num.enabled = true; + eeprom_ec_config.caps.h = 0; + eeprom_ec_config.caps.s = 0; + eeprom_ec_config.caps.v = 60; + eeprom_ec_config.caps.enabled = true; + eeprom_ec_config.scroll.h = 0; + eeprom_ec_config.scroll.s = 0; + eeprom_ec_config.scroll.v = 60; + eeprom_ec_config.scroll.enabled = true; + eeprom_ec_config.actuation_mode = DEFAULT_ACTUATION_MODE; + eeprom_ec_config.mode_0_actuation_threshold = DEFAULT_MODE_0_ACTUATION_LEVEL; + eeprom_ec_config.mode_0_release_threshold = DEFAULT_MODE_0_RELEASE_LEVEL; + eeprom_ec_config.mode_1_initial_deadzone_offset = DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET; + eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; + eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + eeprom_ec_config.bottoming_reading[row][col] = DEFAULT_BOTTOMING_READING; + } + } + // Write default value to EEPROM now + eeconfig_update_kb_datablock(&eeprom_ec_config); + + eeconfig_init_user(); +} + +// On Keyboard startup +void keyboard_post_init_kb(void) { + // Read custom menu variables from memory + eeconfig_read_kb_datablock(&eeprom_ec_config); + + // Set runtime values to EEPROM values + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + ec_config.mode_0_actuation_threshold = eeprom_ec_config.mode_0_actuation_threshold; + ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; + ec_config.mode_1_initial_deadzone_offset = eeprom_ec_config.mode_1_initial_deadzone_offset; + ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; + ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; + ec_config.bottoming_calibration = false; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.bottoming_calibration_starter[row][col] = true; + ec_config.bottoming_reading[row][col] = eeprom_ec_config.bottoming_reading[row][col]; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + + // Call the indicator callback to set the indicator color + rgb_matrix_indicators_kb(); + + keyboard_post_init_user(); +} + +// INDICATOR CALLBACK ------------------------------------------------------------------------------ +/* LED index to physical position + * + * LED0 | LED1 | LED2 + * -----+------+-------- + * Num | Caps | Scroll | + */ +bool rgb_matrix_indicators_kb(void) { + if (eeprom_ec_config.num.enabled) { + // The rgb_matrix_set_color function needs an RGB code to work, so first the indicator color is cast to an HSV value and then translated to RGB + HSV hsv_num_indicator_color = {eeprom_ec_config.num.h, eeprom_ec_config.num.s, eeprom_ec_config.num.v}; + RGB rgb_num_indicator_color = hsv_to_rgb(hsv_num_indicator_color); + if (host_keyboard_led_state().num_lock) + rgb_matrix_set_color(NUM_INDICATOR_INDEX, rgb_num_indicator_color.r, rgb_num_indicator_color.g, rgb_num_indicator_color.b); + else + rgb_matrix_set_color(NUM_INDICATOR_INDEX, 0, 0, 0); + } + if (eeprom_ec_config.caps.enabled) { + HSV hsv_caps_indicator_color = {eeprom_ec_config.caps.h, eeprom_ec_config.caps.s, eeprom_ec_config.caps.v}; + RGB rgb_caps_indicator_color = hsv_to_rgb(hsv_caps_indicator_color); + if (host_keyboard_led_state().caps_lock) + rgb_matrix_set_color(CAPS_INDICATOR_INDEX, rgb_caps_indicator_color.r, rgb_caps_indicator_color.g, rgb_caps_indicator_color.b); + else + rgb_matrix_set_color(CAPS_INDICATOR_INDEX, 0, 0, 0); + } + if (eeprom_ec_config.scroll.enabled) { + HSV hsv_scroll_indicator_color = {eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s, eeprom_ec_config.scroll.v}; + RGB rgb_scroll_indicator_color = hsv_to_rgb(hsv_scroll_indicator_color); + if (host_keyboard_led_state().scroll_lock) + rgb_matrix_set_color(SCROLL_INDICATOR_INDEX, rgb_scroll_indicator_color.r, rgb_scroll_indicator_color.g, rgb_scroll_indicator_color.b); + else + rgb_matrix_set_color(SCROLL_INDICATOR_INDEX, 0, 0, 0); + } + + return true; +} diff --git a/keyboards/cipulot/ec_980c/ec_switch_matrix.c b/keyboards/cipulot/ec_980c/ec_switch_matrix.c new file mode 100644 index 000000000000..33123bd236e1 --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_switch_matrix.c @@ -0,0 +1,318 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "analog.h" +#include "atomic_util.h" +#include "math.h" +#include "print.h" +#include "wait.h" + +#if defined(__AVR__) +# error "AVR platforms not supported due to a variety of reasons. Among them there are limited memory, limited number of pins and ADC not being able to give satisfactory results." +#endif + +#define OPEN_DRAIN_SUPPORT defined(PAL_MODE_OUTPUT_OPENDRAIN) + +eeprom_ec_config_t eeprom_ec_config; +ec_config_t ec_config; + +// Pin and port array +const pin_t row_pins[] = MATRIX_ROW_PINS; +const pin_t amux_sel_pins[] = AMUX_SEL_PINS; +const pin_t amux_en_pins[] = AMUX_EN_PINS; +const pin_t amux_n_col_sizes[] = AMUX_COL_CHANNELS_SIZES; +const pin_t amux_n_col_channels[][AMUX_MAX_COLS_COUNT] = {AMUX_COL_CHANNELS}; + +#define AMUX_SEL_PINS_COUNT ARRAY_SIZE(amux_sel_pins) +#define EXPECTED_AMUX_SEL_PINS_COUNT ceil(log2(AMUX_MAX_COLS_COUNT) +// Checks for the correctness of the configuration +_Static_assert(ARRAY_SIZE(amux_en_pins) == AMUX_COUNT, "AMUX_EN_PINS doesn't have the minimum number of bits required to enable all the multiplexers available"); +// Check that number of select pins is enough to select all the channels +_Static_assert(AMUX_SEL_PINS_COUNT == EXPECTED_AMUX_SEL_PINS_COUNT), "AMUX_SEL_PINS doesn't have the minimum number of bits required address all the channels"); +// Check that number of elements in AMUX_COL_CHANNELS_SIZES is enough to specify the number of channels for all the multiplexers available +_Static_assert(ARRAY_SIZE(amux_n_col_sizes) == AMUX_COUNT, "AMUX_COL_CHANNELS_SIZES doesn't have the minimum number of elements required to specify the number of channels for all the multiplexers available"); + +static uint16_t sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static adc_mux adcMux; + +// Initialize the row pins +void init_row(void) { + // Set all row pins as output and low + for (uint8_t idx = 0; idx < MATRIX_ROWS; idx++) { + gpio_set_pin_output(row_pins[idx]); + gpio_write_pin_low(row_pins[idx]); + } +} + +// Initialize the multiplexers +void init_amux(void) { + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + gpio_set_pin_output(amux_en_pins[idx]); + gpio_write_pin_low(amux_en_pins[idx]); + } + for (uint8_t idx = 0; idx < AMUX_SEL_PINS_COUNT; idx++) { + gpio_set_pin_output(amux_sel_pins[idx]); + } +} + +// Select the multiplexer channel of the specified multiplexer +void select_amux_channel(uint8_t channel, uint8_t col) { + // Get the channel for the specified multiplexer + uint8_t ch = amux_n_col_channels[channel][col]; + // momentarily disable specified multiplexer + gpio_write_pin_high(amux_en_pins[channel]); + // Select the multiplexer channel + for (uint8_t i = 0; i < AMUX_SEL_PINS_COUNT; i++) { + gpio_write_pin(amux_sel_pins[i], ch & (1 << i)); + } + // re enable specified multiplexer + gpio_write_pin_low(amux_en_pins[channel]); +} + +// Disable all the unused multiplexers +void disable_unused_amux(uint8_t channel) { + // disable all the other multiplexers apart from the current selected one + for (uint8_t idx = 0; idx < AMUX_COUNT; idx++) { + if (idx != channel) { + gpio_write_pin_high(amux_en_pins[idx]); + } + } +} +// Discharge the peak hold capacitor +void discharge_capacitor(void) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_low(DISCHARGE_PIN); +#else + gpio_write_pin_low(DISCHARGE_PIN); + gpio_set_pin_output(DISCHARGE_PIN); +#endif +} + +// Charge the peak hold capacitor +void charge_capacitor(uint8_t row) { +#ifdef OPEN_DRAIN_SUPPORT + gpio_write_pin_high(DISCHARGE_PIN); +#else + gpio_set_pin_input(DISCHARGE_PIN); +#endif + gpio_write_pin_high(row_pins[row]); +} + +// Initialize the peripherals pins +int ec_init(void) { + // Initialize ADC + palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG); + adcMux = pinToMux(ANALOG_PORT); + + // Dummy call to make sure that adcStart() has been called in the appropriate state + adc_read(adcMux); + + // Initialize discharge pin as discharge mode + gpio_write_pin_low(DISCHARGE_PIN); +#ifdef OPEN_DRAIN_SUPPORT + gpio_set_pin_output_open_drain(DISCHARGE_PIN); +#else + gpio_set_pin_output(DISCHARGE_PIN); +#endif + + // Initialize drive lines + init_row(); + + // Initialize AMUXs + init_amux(); + + return 0; +} + +// Get the noise floor +void ec_noise_floor(void) { + // Initialize the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] = 0; + } + } + + // Sample the noise floor + for (uint8_t i = 0; i < DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; i++) { + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + ec_config.noise_floor[row][adjusted_col] += ec_readkey_raw(amux, row, col); + } + } + } + wait_ms(5); + } + + // Average the noise floor + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.noise_floor[row][col] /= DEFAULT_NOISE_FLOOR_SAMPLING_COUNT; + } + } +} + +// Scan key values and update matrix state +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (uint8_t amux = 0; amux < AMUX_COUNT; amux++) { + disable_unused_amux(amux); + for (uint8_t col = 0; col < amux_n_col_sizes[amux]; col++) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + uint8_t sum = 0; + for (uint8_t i = 0; i < (amux > 0 ? amux : 0); i++) + sum += amux_n_col_sizes[i]; + uint8_t adjusted_col = col + sum; + sw_value[row][adjusted_col] = ec_readkey_raw(amux, row, col); + + if (ec_config.bottoming_calibration) { + if (ec_config.bottoming_calibration_starter[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + ec_config.bottoming_calibration_starter[row][adjusted_col] = false; + } else if (sw_value[row][adjusted_col] > ec_config.bottoming_reading[row][adjusted_col]) { + ec_config.bottoming_reading[row][adjusted_col] = sw_value[row][adjusted_col]; + } + } else { + updated |= ec_update_key(¤t_matrix[row], row, adjusted_col, sw_value[row][adjusted_col]); + } + } + } + } + + return ec_config.bottoming_calibration ? false : updated; +} + +// Read the capacitive sensor value +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + // Select the multiplexer + select_amux_channel(channel, col); + + // Set the row pin to low state to avoid ghosting + gpio_write_pin_low(row_pins[row]); + + ATOMIC_BLOCK_FORCEON { + // Set the row pin to high state and have capacitor charge + charge_capacitor(row); + // Read the ADC value + sw_value = adc_read(adcMux); + } + // Discharge peak hold capacitor + discharge_capacitor(); + // Waiting for the ghost capacitor to discharge fully + wait_us(DISCHARGE_TIME); + + return sw_value; +} + +// Update press/release state of key +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // Real Time Noise Floor Calibration + if (sw_value < (ec_config.noise_floor[row][col] - NOISE_FLOOR_THRESHOLD)) { + uprintf("Noise Floor Change: %d, %d, %d\n", row, col, sw_value); + ec_config.noise_floor[row][col] = sw_value; + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + + // Normal board-wide APC + if (ec_config.actuation_mode == 0) { + if (current_state && sw_value < ec_config.rescaled_mode_0_release_threshold[row][col]) { + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + if ((!current_state) && sw_value > ec_config.rescaled_mode_0_actuation_threshold[row][col]) { + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Rapid Trigger + else if (ec_config.actuation_mode == 1) { + // Is key in active zone? + if (sw_value > ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]) { + // Is key pressed while in active zone? + if (current_state) { + // Is the key still moving down? + if (sw_value > ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + } + // Has key moved up enough to be released? + else if (sw_value < ec_config.extremum[row][col] - ec_config.mode_1_release_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + uprintf("Key released: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + // Key is not pressed while in active zone + else { + // Is the key still moving up? + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + } + // Has key moved down enough to be pressed? + else if (sw_value > ec_config.extremum[row][col] + ec_config.mode_1_actuation_offset) { + ec_config.extremum[row][col] = sw_value; + *current_row |= (1 << col); + uprintf("Key pressed: %d, %d, %d\n", row, col, sw_value); + return true; + } + } + } + // Key is not in active zone + else { + // Check to avoid key being stuck in pressed state near the active zone threshold + if (sw_value < ec_config.extremum[row][col]) { + ec_config.extremum[row][col] = sw_value; + *current_row &= ~(1 << col); + return true; + } + } + } + return false; +} + +// Print the matrix values +void ec_print_matrix(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", sw_value[row][col]); + } + uprintf("%4d\n", sw_value[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Rescale the value to a different range +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max) { + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} diff --git a/keyboards/cipulot/ec_980c/ec_switch_matrix.h b/keyboards/cipulot/ec_980c/ec_switch_matrix.h new file mode 100644 index 000000000000..8a75b5de5fba --- /dev/null +++ b/keyboards/cipulot/ec_980c/ec_switch_matrix.h @@ -0,0 +1,83 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "matrix.h" +#include "eeconfig.h" +#include "util.h" + +typedef struct _indicator_config_t { + uint8_t h; + uint8_t s; + uint8_t v; + bool enabled; +} indicator_config; + +typedef struct PACKED { + indicator_config num; + indicator_config caps; + indicator_config scroll; + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point, 2: Rapid trigger from resting point + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 and 2 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 and 2 (1-255) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} eeprom_ec_config_t; + +typedef struct { + uint8_t actuation_mode; // 0: normal board-wide APC, 1: Rapid trigger from specific board-wide actuation point (it can be very near that baseline noise and be "full travel") + uint16_t mode_0_actuation_threshold; // threshold for key press in mode 0 + uint16_t mode_0_release_threshold; // threshold for key release in mode 0 + uint16_t mode_1_initial_deadzone_offset; // threshold for key press in mode 1 (initial deadzone) + uint16_t rescaled_mode_0_actuation_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 0 rescaled to actual scale + uint16_t rescaled_mode_0_release_threshold[MATRIX_ROWS][MATRIX_COLS]; // threshold for key release in mode 0 rescaled to actual scale + uint16_t rescaled_mode_1_initial_deadzone_offset[MATRIX_ROWS][MATRIX_COLS]; // threshold for key press in mode 1 (initial deadzone) rescaled to actual scale + uint8_t mode_1_actuation_offset; // offset for key press in mode 1 (1-255) + uint8_t mode_1_release_offset; // offset for key release in mode 1 (1-255) + uint16_t extremum[MATRIX_ROWS][MATRIX_COLS]; // extremum values for mode 1 + uint16_t noise_floor[MATRIX_ROWS][MATRIX_COLS]; // noise floor detected during startup + bool bottoming_calibration; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + bool bottoming_calibration_starter[MATRIX_ROWS][MATRIX_COLS]; // calibration mode for bottoming out values (true: calibration mode, false: normal mode) + uint16_t bottoming_reading[MATRIX_ROWS][MATRIX_COLS]; // bottoming reading +} ec_config_t; + +// Check if the size of the reserved persistent memory is the same as the size of struct eeprom_ec_config_t +_Static_assert(sizeof(eeprom_ec_config_t) == EECONFIG_KB_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); + +extern eeprom_ec_config_t eeprom_ec_config; + +extern ec_config_t ec_config; + +void init_row(void); +void init_amux(void); +void select_amux_channel(uint8_t channel, uint8_t col); +void disable_unused_amux(uint8_t channel); +void discharge_capacitor(void); +void charge_capacitor(uint8_t row); + +int ec_init(void); +void ec_noise_floor(void); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +uint16_t ec_readkey_raw(uint8_t channel, uint8_t row, uint8_t col); +bool ec_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value); +void ec_print_matrix(void); + +uint16_t rescale(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max); diff --git a/keyboards/cipulot/ec_980c/halconf.h b/keyboards/cipulot/ec_980c/halconf.h new file mode 100644 index 000000000000..24de09548583 --- /dev/null +++ b/keyboards/cipulot/ec_980c/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_ADC TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/cipulot/ec_980c/info.json b/keyboards/cipulot/ec_980c/info.json new file mode 100644 index 000000000000..6d3cb22719cf --- /dev/null +++ b/keyboards/cipulot/ec_980c/info.json @@ -0,0 +1,170 @@ +{ + "manufacturer": "Cipulot", + "keyboard_name": "EC 980C", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, + "features": { + "bootmagic": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "processor": "STM32F411", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_left_right": true, + "solid_color": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 15], "x": 16.25, "y": 1, "flags": 4}, + {"matrix": [0, 16], "x": 17.25, "y": 1, "flags": 4}, + {"matrix": [0, 17], "x": 18.25, "y": 1, "flags": 4} + ], + "led_count": 3, + "max_brightness": 255 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x6BBE", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "B15" + }, + "layouts": { + "LAYOUT": { + "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.5, "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.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], "x": 13, "y": 1.5}, + {"matrix": [1, 14], "x": 14, "y": 1.5}, + {"matrix": [1, 15], "x": 15.5, "y": 1.5}, + {"matrix": [1, 16], "x": 16.5, "y": 1.5}, + {"matrix": [1, 17], "x": 17.5, "y": 1.5}, + {"matrix": [1, 18], "x": 18.5, "y": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"matrix": [2, 2], "x": 2.5, "y": 2.5}, + {"matrix": [2, 3], "x": 3.5, "y": 2.5}, + {"matrix": [2, 4], "x": 4.5, "y": 2.5}, + {"matrix": [2, 5], "x": 5.5, "y": 2.5}, + {"matrix": [2, 6], "x": 6.5, "y": 2.5}, + {"matrix": [2, 7], "x": 7.5, "y": 2.5}, + {"matrix": [2, 8], "x": 8.5, "y": 2.5}, + {"matrix": [2, 9], "x": 9.5, "y": 2.5}, + {"matrix": [2, 10], "x": 10.5, "y": 2.5}, + {"matrix": [2, 11], "x": 11.5, "y": 2.5}, + {"matrix": [2, 12], "x": 12.5, "y": 2.5}, + {"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 0.75}, + {"matrix": [2, 14], "x": 14.25, "y": 2.5, "w": 0.75}, + {"matrix": [2, 15], "x": 15.5, "y": 2.5}, + {"matrix": [2, 16], "x": 16.5, "y": 2.5}, + {"matrix": [2, 17], "x": 17.5, "y": 2.5}, + {"matrix": [2, 18], "x": 18.5, "y": 2.5}, + {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"matrix": [3, 2], "x": 2.75, "y": 3.5}, + {"matrix": [3, 3], "x": 3.75, "y": 3.5}, + {"matrix": [3, 4], "x": 4.75, "y": 3.5}, + {"matrix": [3, 5], "x": 5.75, "y": 3.5}, + {"matrix": [3, 6], "x": 6.75, "y": 3.5}, + {"matrix": [3, 7], "x": 7.75, "y": 3.5}, + {"matrix": [3, 8], "x": 8.75, "y": 3.5}, + {"matrix": [3, 9], "x": 9.75, "y": 3.5}, + {"matrix": [3, 10], "x": 10.75, "y": 3.5}, + {"matrix": [3, 11], "x": 11.75, "y": 3.5}, + {"matrix": [3, 12], "x": 12.75, "y": 3.5}, + {"matrix": [3, 13], "x": 13.75, "y": 3.5, "w": 1.25}, + {"matrix": [3, 15], "x": 15.5, "y": 3.5}, + {"matrix": [3, 16], "x": 16.5, "y": 3.5}, + {"matrix": [3, 17], "x": 17.5, "y": 3.5}, + {"matrix": [3, 18], "x": 18.5, "y": 3.5}, + {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"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], "x": 12.25, "y": 4.5, "w": 1.75}, + {"matrix": [4, 14], "x": 14.25, "y": 4.75}, + {"matrix": [4, 15], "x": 15.5, "y": 4.5}, + {"matrix": [4, 16], "x": 16.5, "y": 4.5}, + {"matrix": [4, 17], "x": 17.5, "y": 4.5}, + {"matrix": [4, 18], "x": 18.5, "y": 4.5}, + {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.5}, + {"matrix": [5, 2], "x": 2.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 3], "x": 3.5, "y": 5.5}, + {"matrix": [5, 5], "x": 4.5, "y": 5.5, "w": 2.5}, + {"matrix": [5, 6], "x": 7, "y": 5.5, "w": 1.25}, + {"matrix": [5, 8], "x": 8.25, "y": 5.5, "w": 1.25}, + {"matrix": [5, 9], "x": 9.5, "y": 5.5, "w": 1.25}, + {"matrix": [5, 10], "x": 10.75, "y": 5.5}, + {"matrix": [5, 11], "x": 11.75, "y": 5.5, "w": 1.25}, + {"matrix": [5, 13], "x": 13.25, "y": 5.75}, + {"matrix": [5, 14], "x": 14.25, "y": 5.75}, + {"matrix": [5, 15], "x": 15.25, "y": 5.75}, + {"matrix": [5, 16], "x": 16.5, "y": 5.5}, + {"matrix": [5, 17], "x": 17.5, "y": 5.5}, + {"matrix": [5, 18], "x": 18.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/cipulot/ec_980c/keymaps/default/keymap.c b/keyboards/cipulot/ec_980c/keymaps/default/keymap.c new file mode 100644 index 000000000000..c60db783528a --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_INS, KC_PGUP, KC_PGDN, + 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, JP_YEN, 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_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_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_SPC, _______, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + // clang-format on +}; diff --git a/keyboards/cipulot/ec_980c/keymaps/via/keymap.c b/keyboards/cipulot/ec_980c/keymaps/via/keymap.c new file mode 100644 index 000000000000..c60db783528a --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [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_INS, KC_PGUP, KC_PGDN, + 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, JP_YEN, 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_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_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_SPC, _______, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUSE, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + // clang-format on +}; diff --git a/keyboards/cipulot/ec_980c/keymaps/via/rules.mk b/keyboards/cipulot/ec_980c/keymaps/via/rules.mk new file mode 100644 index 000000000000..b870b6349c08 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_ec_indicators.c diff --git a/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c b/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c new file mode 100644 index 000000000000..f885e7943577 --- /dev/null +++ b/keyboards/cipulot/ec_980c/keymaps/via/via_ec_indicators.c @@ -0,0 +1,499 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "keyboards/cipulot/common/eeprom_tools.h" +#include "ec_switch_matrix.h" +#include "action.h" +#include "print.h" +#include "via.h" + +#ifdef VIA_ENABLE + +void ec_rescale_values(uint8_t item); +void ec_save_threshold_data(uint8_t option); +void ec_save_bottoming_reading(void); +void ec_show_calibration_data(void); +void ec_clear_bottoming_calibration_data(void); + +// Declaring enums for VIA config menu +enum via_enums { + // clang-format off + id_num_indicator_enabled = 1, + id_num_indicator_brightness = 2, + id_num_indicator_color = 3, + id_caps_indicator_enabled = 4, + id_caps_indicator_brightness = 5, + id_caps_indicator_color = 6, + id_scroll_indicator_enabled = 7, + id_scroll_indicator_brightness = 8, + id_scroll_indicator_color = 9, + id_actuation_mode = 10, + id_mode_0_actuation_threshold = 11, + id_mode_0_release_threshold = 12, + id_save_threshold_data = 13, + id_mode_1_initial_deadzone_offset = 14, + id_mode_1_actuation_offset = 15, + id_mode_1_release_offset = 16, + id_bottoming_calibration = 17, + id_noise_floor_calibration = 18, + id_show_calibration_data = 19, + id_clear_bottoming_calibration_data = 20 + // clang-format on +}; + +// Handle the data received by the keyboard from the VIA menus +void via_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.num.enabled = true; + uprintf("#########################\n"); + uprintf("# Num indicator enabled #\n"); + uprintf("#########################\n"); + } else { + eeprom_ec_config.num.enabled = false; + uprintf("##########################\n"); + uprintf("# Num indicator disabled #\n"); + uprintf("##########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.enabled); + break; + } + case id_num_indicator_brightness: { + eeprom_ec_config.num.v = value_data[0]; + uprintf("Num indicator brightness: %d\n", eeprom_ec_config.num.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.v); + break; + } + case id_num_indicator_color: { + eeprom_ec_config.num.h = value_data[0]; + eeprom_ec_config.num.s = value_data[1]; + uprintf("Num indicator color: %d, %d\n", eeprom_ec_config.num.h, eeprom_ec_config.num.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, num.s); + break; + } + case id_caps_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.caps.enabled = true; + uprintf("##########################\n"); + uprintf("# Caps indicator enabled #\n"); + uprintf("##########################\n"); + } else { + eeprom_ec_config.caps.enabled = false; + uprintf("###########################\n"); + uprintf("# Caps indicator disabled #\n"); + uprintf("###########################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.enabled); + break; + } + case id_caps_indicator_brightness: { + eeprom_ec_config.caps.v = value_data[0]; + uprintf("Caps indicator brightness: %d\n", eeprom_ec_config.caps.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.v); + break; + } + case id_caps_indicator_color: { + eeprom_ec_config.caps.h = value_data[0]; + eeprom_ec_config.caps.s = value_data[1]; + uprintf("Caps indicator color: %d, %d\n", eeprom_ec_config.caps.h, eeprom_ec_config.caps.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, caps.s); + break; + } + case id_scroll_indicator_enabled: { + if (value_data[0] == 1) { + eeprom_ec_config.scroll.enabled = true; + uprintf("############################\n"); + uprintf("# Scroll indicator enabled #\n"); + uprintf("############################\n"); + } else { + eeprom_ec_config.scroll.enabled = false; + uprintf("#############################\n"); + uprintf("# Scroll indicator disabled #\n"); + uprintf("#############################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.enabled); + break; + } + case id_scroll_indicator_brightness: { + eeprom_ec_config.scroll.v = value_data[0]; + uprintf("Scroll indicator brightness: %d\n", eeprom_ec_config.scroll.v); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.v); + break; + } + case id_scroll_indicator_color: { + eeprom_ec_config.scroll.h = value_data[0]; + eeprom_ec_config.scroll.s = value_data[1]; + uprintf("Scroll indicator color: %d, %d\n", eeprom_ec_config.scroll.h, eeprom_ec_config.scroll.s); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.h); + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, scroll.s); + break; + } + case id_actuation_mode: { + eeprom_ec_config.actuation_mode = value_data[0]; + ec_config.actuation_mode = eeprom_ec_config.actuation_mode; + if (ec_config.actuation_mode == 0) { + uprintf("#########################\n"); + uprintf("# Actuation Mode: APC #\n"); + uprintf("#########################\n"); + } else if (ec_config.actuation_mode == 1) { + uprintf("#################################\n"); + uprintf("# Actuation Mode: Rapid Trigger #\n"); + uprintf("#################################\n"); + } + EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, actuation_mode); + break; + } + case id_mode_0_actuation_threshold: { + ec_config.mode_0_actuation_threshold = value_data[1] | (value_data[0] << 8); + uprintf("APC Mode Actuation Threshold: %d\n", ec_config.mode_0_actuation_threshold); + break; + } + case id_mode_0_release_threshold: { + ec_config.mode_0_release_threshold = value_data[1] | (value_data[0] << 8); + uprintf("APC Mode Release Threshold: %d\n", ec_config.mode_0_release_threshold); + break; + } + case id_mode_1_initial_deadzone_offset: { + ec_config.mode_1_initial_deadzone_offset = value_data[1] | (value_data[0] << 8); + uprintf("Rapid Trigger Mode Initial Deadzone Offset: %d\n", ec_config.mode_1_initial_deadzone_offset); + break; + } + case id_mode_1_actuation_offset: { + ec_config.mode_1_actuation_offset = value_data[0]; + uprintf("Rapid Trigger Mode Actuation Offset: %d\n", ec_config.mode_1_actuation_offset); + break; + } + case id_mode_1_release_offset: { + ec_config.mode_1_release_offset = value_data[0]; + uprintf("Rapid Trigger Mode Release Offset: %d\n", ec_config.mode_1_release_offset); + break; + } + case id_bottoming_calibration: { + if (value_data[0] == 1) { + ec_config.bottoming_calibration = true; + uprintf("##############################\n"); + uprintf("# Bottoming calibration mode #\n"); + uprintf("##############################\n"); + } else { + ec_config.bottoming_calibration = false; + ec_save_bottoming_reading(); + uprintf("## Bottoming calibration done ##\n"); + ec_show_calibration_data(); + } + break; + } + case id_save_threshold_data: { + ec_save_threshold_data(value_data[0]); + break; + } + case id_noise_floor_calibration: { + if (value_data[0] == 0) { + ec_noise_floor(); + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + uprintf("#############################\n"); + uprintf("# Noise floor data acquired #\n"); + uprintf("#############################\n"); + break; + } + } + case id_show_calibration_data: { + if (value_data[0] == 0) { + ec_show_calibration_data(); + break; + } + } + case id_clear_bottoming_calibration_data: { + if (value_data[0] == 0) { + ec_clear_bottoming_calibration_data(); + } + } + default: { + // Unhandled value. + break; + } + } +} + +// Handle the data sent by the keyboard to the VIA menus +void via_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_num_indicator_enabled: { + value_data[0] = eeprom_ec_config.num.enabled; + break; + } + case id_num_indicator_brightness: { + value_data[0] = eeprom_ec_config.num.v; + break; + } + case id_num_indicator_color: { + value_data[0] = eeprom_ec_config.num.h; + value_data[1] = eeprom_ec_config.num.s; + break; + } + case id_caps_indicator_enabled: { + value_data[0] = eeprom_ec_config.caps.enabled; + break; + } + case id_caps_indicator_brightness: { + value_data[0] = eeprom_ec_config.caps.v; + break; + } + case id_caps_indicator_color: { + value_data[0] = eeprom_ec_config.caps.h; + value_data[1] = eeprom_ec_config.caps.s; + break; + } + case id_scroll_indicator_enabled: { + value_data[0] = eeprom_ec_config.scroll.enabled; + break; + } + case id_scroll_indicator_brightness: { + value_data[0] = eeprom_ec_config.scroll.v; + break; + } + case id_scroll_indicator_color: { + value_data[0] = eeprom_ec_config.scroll.h; + value_data[1] = eeprom_ec_config.scroll.s; + break; + } + case id_actuation_mode: { + value_data[0] = eeprom_ec_config.actuation_mode; + break; + } + case id_mode_0_actuation_threshold: { + value_data[0] = eeprom_ec_config.mode_0_actuation_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_actuation_threshold & 0xFF; + break; + } + case id_mode_0_release_threshold: { + value_data[0] = eeprom_ec_config.mode_0_release_threshold >> 8; + value_data[1] = eeprom_ec_config.mode_0_release_threshold & 0xFF; + break; + } + case id_mode_1_initial_deadzone_offset: { + value_data[0] = eeprom_ec_config.mode_1_initial_deadzone_offset >> 8; + value_data[1] = eeprom_ec_config.mode_1_initial_deadzone_offset & 0xFF; + break; + } + case id_mode_1_actuation_offset: { + value_data[0] = eeprom_ec_config.mode_1_actuation_offset; + break; + } + case id_mode_1_release_offset: { + value_data[0] = eeprom_ec_config.mode_1_release_offset; + break; + } + default: { + // Unhandled value. + break; + } + } +} + +// Handle the commands sent and received by the keyboard with VIA +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + via_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + via_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + // Bypass the save function in favor of pinpointed saves + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; +} + +// Rescale the values received by VIA to fit the new range +void ec_rescale_values(uint8_t item) { + switch (item) { + // Rescale the APC mode actuation thresholds + case 0: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_actuation_threshold[row][col] = rescale(ec_config.mode_0_actuation_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the APC mode release thresholds + case 1: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_0_release_threshold[row][col] = rescale(ec_config.mode_0_release_threshold, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + // Rescale the Rapid Trigger mode initial deadzone offsets + case 2: + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + ec_config.rescaled_mode_1_initial_deadzone_offset[row][col] = rescale(ec_config.mode_1_initial_deadzone_offset, 0, 1023, ec_config.noise_floor[row][col], eeprom_ec_config.bottoming_reading[row][col]); + } + } + break; + + default: + // Unhandled item. + break; + } +} + +void ec_save_threshold_data(uint8_t option) { + // Save APC mode thresholds and rescale them for runtime usage + if (option == 0) { + eeprom_ec_config.mode_0_actuation_threshold = ec_config.mode_0_actuation_threshold; + eeprom_ec_config.mode_0_release_threshold = ec_config.mode_0_release_threshold; + ec_rescale_values(0); + ec_rescale_values(1); + } + // Save Rapid Trigger mode thresholds and rescale them for runtime usage + else if (option == 1) { + eeprom_ec_config.mode_1_initial_deadzone_offset = ec_config.mode_1_initial_deadzone_offset; + eeprom_ec_config.mode_1_actuation_offset = ec_config.mode_1_actuation_offset; + eeprom_ec_config.mode_1_release_offset = ec_config.mode_1_release_offset; + ec_rescale_values(2); + } + eeconfig_update_kb_datablock(&eeprom_ec_config); + uprintf("####################################\n"); + uprintf("# New thresholds applied and saved #\n"); + uprintf("####################################\n"); +} + +// Save the bottoming reading +void ec_save_bottoming_reading(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + // If the bottom reading doesn't go over the noise floor by BOTTOMING_CALIBRATION_THRESHOLD, it is likely that: + // 1. The key is not actually in the matrix + // 2. The key is on an alternative layout, therefore not being pressed + // 3. The key in in the current layout but not being pressed + if (ec_config.bottoming_reading[row][col] < (ec_config.noise_floor[row][col] + BOTTOMING_CALIBRATION_THRESHOLD)) { + eeprom_ec_config.bottoming_reading[row][col] = 1023; + } else { + eeprom_ec_config.bottoming_reading[row][col] = ec_config.bottoming_reading[row][col]; + } + } + } + // Rescale the values to fit the new range for runtime usage + ec_rescale_values(0); + ec_rescale_values(1); + ec_rescale_values(2); + eeconfig_update_kb_datablock(&eeprom_ec_config); +} + +// Show the calibration data +void ec_show_calibration_data(void) { + uprintf("\n###############\n"); + uprintf("# Noise Floor #\n"); + uprintf("###############\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.noise_floor[row][col]); + } + uprintf("%4d\n", ec_config.noise_floor[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################\n"); + uprintf("# Bottoming Readings #\n"); + uprintf("######################\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", eeprom_ec_config.bottoming_reading[row][col]); + } + uprintf("%4d\n", eeprom_ec_config.bottoming_reading[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Actuation Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Actuation Point: %4d\n", ec_config.mode_0_actuation_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_actuation_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_actuation_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n######################################\n"); + uprintf("# Rescaled APC Mode Release Points #\n"); + uprintf("######################################\n"); + uprintf("Original APC Mode Release Point: %4d\n", ec_config.mode_0_release_threshold); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_0_release_threshold[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_0_release_threshold[row][MATRIX_COLS - 1]); + } + + uprintf("\n#######################################################\n"); + uprintf("# Rescaled Rapid Trigger Mode Initial Deadzone Offset #\n"); + uprintf("#######################################################\n"); + uprintf("Original Rapid Trigger Mode Initial Deadzone Offset: %4d\n", ec_config.mode_1_initial_deadzone_offset); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS - 1; col++) { + uprintf("%4d,", ec_config.rescaled_mode_1_initial_deadzone_offset[row][col]); + } + uprintf("%4d\n", ec_config.rescaled_mode_1_initial_deadzone_offset[row][MATRIX_COLS - 1]); + } + print("\n"); +} + +// Clear the calibration data +void ec_clear_bottoming_calibration_data(void) { + // Clear the EEPROM data + eeconfig_init_kb(); + + // Reset the runtime values to the EEPROM values + keyboard_post_init_kb(); + + uprintf("######################################\n"); + uprintf("# Bottoming calibration data cleared #\n"); + uprintf("######################################\n"); +} + +#endif // VIA_ENABLE diff --git a/keyboards/cipulot/ec_980c/matrix.c b/keyboards/cipulot/ec_980c/matrix.c new file mode 100644 index 000000000000..cfa2efe05069 --- /dev/null +++ b/keyboards/cipulot/ec_980c/matrix.c @@ -0,0 +1,42 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" +#include "matrix.h" + +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +// Custom matrix init function +void matrix_init_custom(void) { + // Initialize EC + ec_init(); + + // Get the noise floor at boot + ec_noise_floor(); +} + +// Custom matrix scan function +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + return updated; +} + +// Bootmagic overriden to avoid conflicts with EC +void bootmagic_scan(void) { + ; +} diff --git a/keyboards/cipulot/ec_980c/mcuconf.h b/keyboards/cipulot/ec_980c/mcuconf.h new file mode 100644 index 000000000000..5f9ecca48dd8 --- /dev/null +++ b/keyboards/cipulot/ec_980c/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2023 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/cipulot/ec_980c/readme.md b/keyboards/cipulot/ec_980c/readme.md new file mode 100644 index 000000000000..20be2d4928b2 --- /dev/null +++ b/keyboards/cipulot/ec_980c/readme.md @@ -0,0 +1,26 @@ +# EC980C + +![EC980C PCB](https://i.imgur.com/KcnLdVFh.png) + +Replacement PCB for the Leopold FC980C. + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: EC980C PCB +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make cipulot/ec_980c:default + +Flashing example for this keyboard: + + make cipulot/ec_980c: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: + +* **Physical reset**: Long short the exposed pads on the top of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cipulot/ec_980c/rules.mk b/keyboards/cipulot/ec_980c/rules.mk new file mode 100644 index 000000000000..1ff311f102d4 --- /dev/null +++ b/keyboards/cipulot/ec_980c/rules.mk @@ -0,0 +1,4 @@ +CUSTOM_MATRIX = lite +ANALOG_DRIVER_REQUIRED = yes +SRC += matrix.c ec_switch_matrix.c +OPT = 2 From 94e9bb406b5537c093db34dc791ff86eaec6317b Mon Sep 17 00:00:00 2001 From: Simon <68034180+rarepotato8de@users.noreply.github.com> Date: Wed, 1 May 2024 08:31:23 +0200 Subject: [PATCH 085/125] [Keyboard] 3x3macropad (#23594) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- .../rarepotato8de/3x3macropad/3x3macropad.c | 54 ++++++++++++++++ keyboards/rarepotato8de/3x3macropad/info.json | 63 +++++++++++++++++++ .../3x3macropad/keymaps/default/keymap.c | 25 ++++++++ keyboards/rarepotato8de/3x3macropad/readme.md | 28 +++++++++ keyboards/rarepotato8de/3x3macropad/rules.mk | 0 5 files changed, 170 insertions(+) create mode 100644 keyboards/rarepotato8de/3x3macropad/3x3macropad.c create mode 100644 keyboards/rarepotato8de/3x3macropad/info.json create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c create mode 100644 keyboards/rarepotato8de/3x3macropad/readme.md create mode 100644 keyboards/rarepotato8de/3x3macropad/rules.mk diff --git a/keyboards/rarepotato8de/3x3macropad/3x3macropad.c b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c new file mode 100644 index 000000000000..ad7ad642158c --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c @@ -0,0 +1,54 @@ +/* Copyright 2024 RarePotato8DE + * + * 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 OLED_ENABLE +static void render_bongo1(void) { + static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x1c, 0x0e, 0x03, 0x01, 0x03, 0x07, 0x1c, 0x38, 0x30, 0x60, 0x60, 0x60, 0xc0, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x30, 0x18, 0x18, 0x08, 0x18, 0x98, 0x30, 0x70, 0xf0, 0xb0, 0x18, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x30, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x8e, 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1e, 0x1e, 0x0e, 0x00, 0x10, 0x38, 0x70, 0x70, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x1c, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x87, 0xc7, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(data, sizeof(data)); +} + +static void render_bongo2(void) { + static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x18, 0x0e, 0x07, 0x03, 0x01, 0x07, 0x0e, 0x1c, 0x30, 0x20, 0x60, 0x60, 0x40, 0xc0, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x60, 0x70, 0x30, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0x08, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x20, 0x30, 0x30, 0x18, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe0, 0x38, 0x1c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x0e, 0x04, 0x00, 0x38, 0x30, 0x70, 0x30, 0x70, 0xe0, 0xe0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x70, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x90, 0x00, 0x1f, 0x31, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x03, 0x07, 0x07, 0x00, 0xff, 0xff, 0x00, 0x08, 0x01, 0x38, 0x38, 0x02, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x78, 0xe0, 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}; + oled_write_raw_P(data, sizeof(data)); +} + +/* This code switches the shown image on the oled on every 350th call of this function */ +bool showBongo1 = true; +int calls = 0; +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (calls++ > 350) { + showBongo1 = !showBongo1; + calls = 0; + } + if (showBongo1) { + render_bongo1(); + } else { + render_bongo2(); + } + return false; +} +#endif diff --git a/keyboards/rarepotato8de/3x3macropad/info.json b/keyboards/rarepotato8de/3x3macropad/info.json new file mode 100644 index 000000000000..607c6509966a --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/info.json @@ -0,0 +1,63 @@ +{ + "manufacturer": "RarePotato8DE", + "keyboard_name": "3x3macropad", + "maintainer": "RarePotato8DE", + "development_board": "promicro", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "F4", "pin_b": "B1"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "nkro": true, + "oled": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D7", "B3", "B2"], + "rows": ["F7", "B5", "B6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true + }, + "led_count": 6 + }, + "url": "https://github.com/rarepotato8de/3x3macropad", + "usb": { + "device_version": "0.0.1", + "pid": "0x0001", + "vid": "0x5353" + }, + "ws2812": { + "pin": "E6" + }, + "community_layouts": ["ortho_3x3"], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "k10", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "k11", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "k12", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "k20", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "k21", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "k22", "matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c new file mode 100644 index 000000000000..7f68e145e735 --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +/* Copyright 2024 RarePotato8DE + * + * 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_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/rarepotato8de/3x3macropad/readme.md b/keyboards/rarepotato8de/3x3macropad/readme.md new file mode 100644 index 000000000000..60a5caa2220e --- /dev/null +++ b/keyboards/rarepotato8de/3x3macropad/readme.md @@ -0,0 +1,28 @@ +# 3x3macropad + +![3x3macropad](https://i.imgur.com/LMkcKOw.jpg) + +The 3x3macropad is a small macropad with a cool OLED screen and rotary encoder. +It was inspired by stacked FR4 keyboards like the Discipline65. + +* Keyboard Maintainer: [RarePotato8DE](https://github.com/rarepotato8de) +* Hardware Supported: 3x3macropad +* Hardware Availability: [Open source!](https://github.com/rarepotato8de/3x3macropad) + +Make example for this keyboard (after setting up your build environment): + + make rarepotato8de/3x3macropad:default + +Flashing example for this keyboard: + + make rarepotato8de/3x3macropad: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,1) in the matrix (the top left one below the OLED) and plug in the keyboard +* **Physical reset button**: Short the two through hole pins on the back of the PCB (positioned at the rotary encoder) +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/rarepotato8de/3x3macropad/rules.mk b/keyboards/rarepotato8de/3x3macropad/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 From 9289d934b00ad5e522cfefe1a156baa77762dbf2 Mon Sep 17 00:00:00 2001 From: Ivan Gromov <38141348+key10iq@users.noreply.github.com> Date: Wed, 1 May 2024 10:32:35 +0400 Subject: [PATCH 086/125] [Keyboard] Add imi60 (#23570) Co-authored-by: Drashna Jaelre --- keyboards/keyten/imi60/info.json | 92 +++++++++++++++++++ .../keyten/imi60/keymaps/default/keymap.c | 22 +++++ keyboards/keyten/imi60/keymaps/via/keymap.c | 22 +++++ keyboards/keyten/imi60/keymaps/via/rules.mk | 1 + keyboards/keyten/imi60/readme.md | 27 ++++++ keyboards/keyten/imi60/rules.mk | 0 6 files changed, 164 insertions(+) create mode 100644 keyboards/keyten/imi60/info.json create mode 100644 keyboards/keyten/imi60/keymaps/default/keymap.c create mode 100644 keyboards/keyten/imi60/keymaps/via/keymap.c create mode 100644 keyboards/keyten/imi60/keymaps/via/rules.mk create mode 100644 keyboards/keyten/imi60/readme.md create mode 100644 keyboards/keyten/imi60/rules.mk diff --git a/keyboards/keyten/imi60/info.json b/keyboards/keyten/imi60/info.json new file mode 100644 index 000000000000..2ccf83141162 --- /dev/null +++ b/keyboards/keyten/imi60/info.json @@ -0,0 +1,92 @@ +{ + "manufacturer": "keyten", + "keyboard_name": "imi60", + "maintainer": "key10iq", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["A15", "A5", "F1", "A6", "F0", "A7", "C15", "B0", "C14", "B1", "C13", "B11", "B4", "B3"], + "rows": ["B10", "B2", "B7", "B6", "B5"] + }, + "processor": "STM32F072", + "usb": { + "device_version": "0.0.1", + "pid": "0x6005", + "vid": "0xEB69" + }, + "community_layouts": ["60_tsangan_hhkb"], + "layouts": { + "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": [2, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"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], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"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], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [4, 12], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "w": 1.5, "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4}, + {"matrix": [4, 6], "w": 7, "x": 4, "y": 4}, + {"matrix": [4, 10], "w": 1.5, "x": 11, "y": 4}, + {"matrix": [4, 11], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4} + ] + } + } +} diff --git a/keyboards/keyten/imi60/keymaps/default/keymap.c b/keyboards/keyten/imi60/keymaps/default/keymap.c new file mode 100644 index 000000000000..36859fad550e --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_tsangan_hhkb( + 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_GRV, + 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_LCTL, 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_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT_60_tsangan_hhkb( + 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_INS, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/keymaps/via/keymap.c b/keyboards/keyten/imi60/keymaps/via/keymap.c new file mode 100644 index 000000000000..36859fad550e --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_tsangan_hhkb( + 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_GRV, + 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_LCTL, 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_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT_60_tsangan_hhkb( + 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_INS, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/keymaps/via/rules.mk b/keyboards/keyten/imi60/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/keyten/imi60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keyten/imi60/readme.md b/keyboards/keyten/imi60/readme.md new file mode 100644 index 000000000000..0d4db774e094 --- /dev/null +++ b/keyboards/keyten/imi60/readme.md @@ -0,0 +1,27 @@ +# keyten imi60 + +imi60 - 60% PCB compatible with keyboards by La-Versa: Animi, Mirimi and Otsukimi + +![imi60](https://i.imgur.com/s37K4wY.png) + +* Keyboard Maintainer: [keyten](https://github.com/key10iq) +* Hardware Supported: keyten imi60 +* Hardware Availability: private GB + +Make example for this keyboard (after setting up your build environment): + + make keyten/imi60:default + +Flashing example for this keyboard: + + make keyten/imi60: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 +* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available +* Physical reset button: Hold the button on the back of the PCB diff --git a/keyboards/keyten/imi60/rules.mk b/keyboards/keyten/imi60/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 From 8129b73d8a79647ab7e0338ab006c58ecb4a958b Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Wed, 1 May 2024 02:35:39 -0400 Subject: [PATCH 087/125] [Keyboard] add Bruce the keyboard (#23639) --- keyboards/jlw/bruce_the_keyboard/info.json | 68 +++++++++++++++++++ .../keymaps/default/keymap.c | 35 ++++++++++ keyboards/jlw/bruce_the_keyboard/readme.md | 29 ++++++++ keyboards/jlw/bruce_the_keyboard/rules.mk | 1 + 4 files changed, 133 insertions(+) create mode 100644 keyboards/jlw/bruce_the_keyboard/info.json create mode 100644 keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c create mode 100644 keyboards/jlw/bruce_the_keyboard/readme.md create mode 100644 keyboards/jlw/bruce_the_keyboard/rules.mk diff --git a/keyboards/jlw/bruce_the_keyboard/info.json b/keyboards/jlw/bruce_the_keyboard/info.json new file mode 100644 index 000000000000..0405869d408f --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/info.json @@ -0,0 +1,68 @@ +{ + "keyboard_name": "Bruce the Keyboard", + "manufacturer": "jlw", + "url": "https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources", + "maintainer": "jlw", + "usb": { + "vid": "0x1209", + "pid": "0xA459", + "device_version": "3.0.0" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B0", "A7", "A4", "A3", "B7", "B6", "B5", "B4", "B3"], + "rows": ["B11", "B9", "A5", "A6"] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "h":1.75}, + {"matrix": [0, 1], "x": 1, "y": 0, "h":1.5}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0, "h":1.25}, + {"matrix": [0, 4], "x": 4, "y": 0, "h":1.25}, + {"matrix": [0, 5], "x": 5, "y": 0, "h":1.25}, + {"matrix": [0, 6], "x": 6, "y": 0, "h":1.25}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0, "h":1.5}, + {"matrix": [0, 9], "x": 9, "y": 0, "h":1.75}, + + {"matrix": [1, 0], "x": 0, "y": 1.75}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"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}, + {"matrix": [1, 8], "x": 8, "y": 1.5}, + {"matrix": [1, 9], "x": 9, "y": 1.75}, + + {"matrix": [2, 0], "x": 0, "y": 2.75, "h":1.5}, + {"matrix": [2, 1], "x": 1, "y": 2.5, "h":1.75}, + {"matrix": [2, 2], "x": 2, "y": 2, "h":1.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "x": 4, "y": 2.25}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [2, 6], "x": 6, "y": 2.25}, + {"matrix": [2, 7], "x": 7, "y": 2, "h":1.25}, + {"matrix": [2, 8], "x": 8, "y": 2.5, "h":1.75}, + {"matrix": [2, 9], "x": 9, "y": 2.75, "h":1.5}, + + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25, "w": 2}, + {"matrix": [3, 5], "x": 5, "y": 3.25, "w": 2}, + {"matrix": [3, 7], "x": 7, "y": 3.25}, + ] + } + + } +} diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..73ef2e0213cb --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2024 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), KC_T, KC_G, KC_M, KC_N, RCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + LT(3, KC_TAB), SFT_T(KC_BSPC), LT(1, KC_SPC), LT(2,KC_ENT) + ), + + [1] = LAYOUT( + KC_GRAVE, KC_F2, XXXXXXX, KC_F4, KC_F5, KC_BSLS, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(1), XXXXXXX, _______, _______, KC_SCLN, + _______, _______, _______, _______ + ), + + [2] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [3] = LAYOUT( + XXXXXXX, XXXXXXX, LSG(KC_4),LSG(KC_S),XXXXXXX, KC_HOME, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, + KC_LGUI, KC_LALT, KC_LCTL, KC_LGUI, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/jlw/bruce_the_keyboard/readme.md b/keyboards/jlw/bruce_the_keyboard/readme.md new file mode 100644 index 000000000000..a12624c3705b --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/readme.md @@ -0,0 +1,29 @@ +# Bruce the Keyboard + +Please note that Bruce is a keyboard, not a human. + +Bruce the Keyboard is a column staggered 34-key board created by [jlw](github.com/josh-l-wang) and whydobearsxplod with a single layout. + +![Bruce the Keyboard](https://i.imgur.com/HkbwkK0.jpeg) + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: [Bruce the Keyboard the PCB and the Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/bruce_the_keyboard:default + +Flashing example for this keyboard: + + make jlw/bruce_the_keyboard: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 (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/jlw/bruce_the_keyboard/rules.mk b/keyboards/jlw/bruce_the_keyboard/rules.mk new file mode 100644 index 000000000000..218d8921e515 --- /dev/null +++ b/keyboards/jlw/bruce_the_keyboard/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank. From 719c99afa1a5449edee4453cf5b1bf3c8e75e0eb Mon Sep 17 00:00:00 2001 From: Joy Lee Date: Wed, 1 May 2024 14:35:58 +0800 Subject: [PATCH 088/125] [Keyboard] Add skiller_sgk50_s4 keyboard (#23636) Co-authored-by: wb Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Duncan Sutherland --- keyboards/sharkoon/skiller_sgk50_s4/config.h | 13 + keyboards/sharkoon/skiller_sgk50_s4/halconf.h | 10 + keyboards/sharkoon/skiller_sgk50_s4/info.json | 356 ++++++++++++++++++ .../skiller_sgk50_s4/keymaps/default/keymap.c | 22 ++ .../skiller_sgk50_s4/keymaps/via/keymap.c | 22 ++ .../skiller_sgk50_s4/keymaps/via/rules.mk | 1 + keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h | 9 + keyboards/sharkoon/skiller_sgk50_s4/readme.md | 24 ++ keyboards/sharkoon/skiller_sgk50_s4/rules.mk | 1 + 9 files changed, 458 insertions(+) create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/config.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/halconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/info.json create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/readme.md create mode 100644 keyboards/sharkoon/skiller_sgk50_s4/rules.mk diff --git a/keyboards/sharkoon/skiller_sgk50_s4/config.h b/keyboards/sharkoon/skiller_sgk50_s4/config.h new file mode 100644 index 000000000000..1d0f8f9a9016 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/config.h @@ -0,0 +1,13 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* 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 diff --git a/keyboards/sharkoon/skiller_sgk50_s4/halconf.h b/keyboards/sharkoon/skiller_sgk50_s4/halconf.h new file mode 100644 index 000000000000..9d456a5106fa --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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/sharkoon/skiller_sgk50_s4/info.json b/keyboards/sharkoon/skiller_sgk50_s4/info.json new file mode 100644 index 000000000000..7d36616e52b9 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/info.json @@ -0,0 +1,356 @@ +{ + "manufacturer": "Sharkoon Technologies GmbH", + "keyboard_name": "SKILLER SGK50 S4", + "maintainer": "JoyLee", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "backing_size": 4096, + "driver": "spi_flash" + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "A6", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7"], + "rows": ["A0", "A1", "A2", "A3", "C13"] + }, + "processor": "WB32FQ95", + "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 + }, + "default": { + "val": 80 + }, + "driver": "ws2812", + "layout": [ + {"matrix": [4, 6], "x": 103, "y": 64, "flags": 4}, + {"matrix": [4, 10], "x": 172, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 190, "y": 64, "flags": 4}, + {"matrix": [4, 12], "x": 207, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 224, "y": 64, "flags": 4}, + {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4}, + {"matrix": [3, 11], "x": 190, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 172, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 155, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 138, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 121, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 103, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 86, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 34, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 17, "y": 48, "flags": 4}, + {"matrix": [4, 2], "x": 34, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 17, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 17, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 34, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 52, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 69, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 103, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 121, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 138, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 155, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 190, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 207, "y": 32, "flags": 4}, + {"matrix": [2, 12], "x": 224, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 207, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 190, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 172, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 155, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 138, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 103, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 86, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 69, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 52, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 34, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 17, "y": 16, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 17, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 34, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 69, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 86, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 103, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 121, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 138, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 155, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 172, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 190, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 207, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 224, "y": 0, "flags": 4} + ], + "max_brightness": 110, + "sleep": true, + "val_steps": 28 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x1020", + "suspend_wakeup_delay": 1000, + "vid": "0x6332" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": ["60_ansi", "60_iso"], + "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, "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, 12], "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": 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, 13], "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": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 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": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [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, 13], "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} + ] + } + } +} diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c new file mode 100644 index 000000000000..84e72510d795 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + + [1] = 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_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, RGB_VAI, + _______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAD, _______, + _______, GU_TOGG, _______, _______, _______, _______, RGB_HUI, RGB_MOD + ) +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c new file mode 100644 index 000000000000..84e72510d795 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + + [1] = 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_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, RGB_VAI, + _______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAD, _______, + _______, GU_TOGG, _______, _______, _______, _______, RGB_HUI, RGB_MOD + ) +}; diff --git a/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h b/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h new file mode 100644 index 000000000000..ae7ee58001a9 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 JoyLee (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE diff --git a/keyboards/sharkoon/skiller_sgk50_s4/readme.md b/keyboards/sharkoon/skiller_sgk50_s4/readme.md new file mode 100644 index 000000000000..db6650546ed5 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/readme.md @@ -0,0 +1,24 @@ +# SHARKOON SKILLER SGK50 S4 + +![ISO](https://i.imgur.com/4WDIMm0.png) + +* Keyboard Maintainer: [JoyLee](https://github.com/itarze) +* Hardware Supported: [SHARKOON SKILLER SGK50 S4 PCB](http://www.sharkoon.com/) + +Make example for this keyboard (after setting up your build environment): + + make sharkoon/skiller_sgk50_s4:default + +Flashing example for this keyboard: + + make sharkoon/skiller_sgk50_s4: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/sharkoon/skiller_sgk50_s4/rules.mk b/keyboards/sharkoon/skiller_sgk50_s4/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/sharkoon/skiller_sgk50_s4/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 8fbdc4564886d03680fb0b7321db34bb043c8cf1 Mon Sep 17 00:00:00 2001 From: Druah <54309603+Druah@users.noreply.github.com> Date: Wed, 1 May 2024 02:42:43 -0400 Subject: [PATCH 089/125] [Keyboard] Add DK Saver Redux (#23510) --- keyboards/druah/dk_saver_redux/info.json | 323 ++++++++++++++++++ .../dk_saver_redux/keymaps/default/keymap.c | 32 ++ .../druah/dk_saver_redux/keymaps/via/keymap.c | 32 ++ .../druah/dk_saver_redux/keymaps/via/rules.mk | 1 + keyboards/druah/dk_saver_redux/readme.md | 27 ++ keyboards/druah/dk_saver_redux/rules.mk | 1 + 6 files changed, 416 insertions(+) create mode 100644 keyboards/druah/dk_saver_redux/info.json create mode 100644 keyboards/druah/dk_saver_redux/keymaps/default/keymap.c create mode 100644 keyboards/druah/dk_saver_redux/keymaps/via/keymap.c create mode 100644 keyboards/druah/dk_saver_redux/keymaps/via/rules.mk create mode 100644 keyboards/druah/dk_saver_redux/readme.md create mode 100644 keyboards/druah/dk_saver_redux/rules.mk diff --git a/keyboards/druah/dk_saver_redux/info.json b/keyboards/druah/dk_saver_redux/info.json new file mode 100644 index 000000000000..6c76e1075656 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/info.json @@ -0,0 +1,323 @@ +{ + "manufacturer": "KBDMania", + "keyboard_name": "DK Saver", + "maintainer": "Druah", + "backlight": { + "breathing": true, + "levels": 10, + "pin": "B7" + }, + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "C2", + "scroll_lock": "C1" + }, + "matrix_pins": { + "cols": ["F5", "F6", "F7", "A1", "A2", "B5", "B4", "B3", "B2", "F2", "F1", "F0", "F4", "B1", "C5", "C6", "C0"], + "rows": ["C3", "F3", "B6", "A0", "C7", "C4"] + }, + "processor": "at90usb646", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "url": "https://druah.moe", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x444E" + }, + "community_layouts": ["tkl_f13_ansi", "tkl_f13_ansi_tsangan"], + "layout_aliases": { + "LAYOUT_all": "LAYOUT_tkl_f13_ansi" + }, + "layouts": { + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 7], "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, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "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, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 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": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c b/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c new file mode 100644 index 000000000000..cf959d606a89 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2024 Druah (@Druah) +// 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││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │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_F13, 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, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c b/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c new file mode 100644 index 000000000000..cf959d606a89 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2024 Druah (@Druah) +// 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││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │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_F13, 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, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk b/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/druah/dk_saver_redux/readme.md b/keyboards/druah/dk_saver_redux/readme.md new file mode 100644 index 000000000000..0929182b8805 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/readme.md @@ -0,0 +1,27 @@ +# DK Saver Redux + +![PCB](https://i.imgur.com/eEw8Yog.png) + +A replacement TKL PCB for the DK Saver keyboard + +* Keyboard Maintainer: [Druah](https://github.com/Druah) +* Hardware Supported: DK Saver Redux +* Hardware Availability: Private buy + +Make example for this keyboard (after setting up your build environment): + + make druah/dk_saver_redux:default + +Flashing example for this keyboard: + + make druah/dk_saver_redux: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 (the Escape/top left key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB labelled with "RESET" +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/druah/dk_saver_redux/rules.mk b/keyboards/druah/dk_saver_redux/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/druah/dk_saver_redux/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 0a3c486476ce384bd292d7291d1ac6fd3427e735 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 30 Apr 2024 23:43:43 -0700 Subject: [PATCH 090/125] Epomaker Tide 65: Layout Data Cleanup (#23643) --- keyboards/epomaker/tide65/info.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/epomaker/tide65/info.json b/keyboards/epomaker/tide65/info.json index 2715b923f477..60f1b46f708e 100644 --- a/keyboards/epomaker/tide65/info.json +++ b/keyboards/epomaker/tide65/info.json @@ -184,7 +184,7 @@ {"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": [1, 14], "x": 15, "y": 1.25}, + {"matrix": [1, 14], "x": 15, "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}, @@ -197,8 +197,8 @@ {"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": 1.75}, - {"matrix": [2, 14], "x": 15, "y": 2.25}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, {"matrix": [3, 1], "x": 2.25, "y": 3}, {"matrix": [3, 2], "x": 3.25, "y": 3}, @@ -217,8 +217,8 @@ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, {"matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25}, - {"matrix": [4, 5], "x": 6, "y": 3.75, "w": 1.25}, - {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 1.25, "h": 0.5}, + {"matrix": [4, 4], "x": 6, "y": 4.5, "w": 1.25, "h": 0.5}, {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.75}, {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, From 5f755b982266970ae586ba516c4120c6cc684310 Mon Sep 17 00:00:00 2001 From: era <73109780+eerraa@users.noreply.github.com> Date: Wed, 1 May 2024 15:50:53 +0900 Subject: [PATCH 091/125] [Keyboard] Add N87 (#23457) --- keyboards/era/linx3/n87/config.h | 8 + keyboards/era/linx3/n87/info.json | 455 ++++++++++++++++++ .../era/linx3/n87/keymaps/default/keymap.c | 24 + keyboards/era/linx3/n87/keymaps/via/keymap.c | 24 + keyboards/era/linx3/n87/keymaps/via/rules.mk | 1 + keyboards/era/linx3/n87/readme.md | 23 + keyboards/era/linx3/n87/rules.mk | 1 + 7 files changed, 536 insertions(+) create mode 100644 keyboards/era/linx3/n87/config.h create mode 100644 keyboards/era/linx3/n87/info.json create mode 100644 keyboards/era/linx3/n87/keymaps/default/keymap.c create mode 100644 keyboards/era/linx3/n87/keymaps/via/keymap.c create mode 100644 keyboards/era/linx3/n87/keymaps/via/rules.mk create mode 100644 keyboards/era/linx3/n87/readme.md create mode 100644 keyboards/era/linx3/n87/rules.mk diff --git a/keyboards/era/linx3/n87/config.h b/keyboards/era/linx3/n87/config.h new file mode 100644 index 000000000000..8b294dd91b18 --- /dev/null +++ b/keyboards/era/linx3/n87/config.h @@ -0,0 +1,8 @@ +// Copyright 2024 Hyojin Bak (@eerraa) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Reset */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 2000U \ No newline at end of file diff --git a/keyboards/era/linx3/n87/info.json b/keyboards/era/linx3/n87/info.json new file mode 100644 index 000000000000..548a37faddb0 --- /dev/null +++ b/keyboards/era/linx3/n87/info.json @@ -0,0 +1,455 @@ +{ + "manufacturer": "eerraa", + "keyboard_name": "N87", + "maintainer": "eerraa", + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP11", "GP9", "GP5"], + "rows": ["GP3", "GP2", "GP1", "GP0", "GP10", "GP8"] + }, + "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, 16], "x": 224, "y": 0, "flags": 4}, + {"matrix": [0, 15], "x": 211, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 198, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 182, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 169, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 156, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 143, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 123, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 97, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 65, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 39, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 39, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 65, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 78, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 91, "y": 15, "flags": 4}, + {"matrix": [1, 8], "x": 104, "y": 15, "flags": 4}, + {"matrix": [1, 9], "x": 117, "y": 15, "flags": 4}, + {"matrix": [1, 10], "x": 130, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 143, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 156, "y": 15, "flags": 4}, + {"matrix": [1, 13], "x": 175, "y": 15, "flags": 1}, + {"matrix": [2, 14], "x": 198, "y": 15, "flags": 4}, + {"matrix": [1, 15], "x": 211, "y": 15, "flags": 4}, + {"matrix": [1, 16], "x": 224, "y": 15, "flags": 4}, + {"matrix": [2, 16], "x": 224, "y": 27, "flags": 4}, + {"matrix": [2, 15], "x": 211, "y": 27, "flags": 4}, + {"matrix": [3, 14], "x": 198, "y": 27, "flags": 4}, + {"matrix": [2, 13], "x": 179, "y": 27, "flags": 4}, + {"matrix": [2, 12], "x": 162, "y": 27, "flags": 4}, + {"matrix": [2, 11], "x": 149, "y": 27, "flags": 4}, + {"matrix": [2, 10], "x": 136, "y": 27, "flags": 4}, + {"matrix": [2, 9], "x": 123, "y": 27, "flags": 4}, + {"matrix": [2, 8], "x": 110, "y": 27, "flags": 4}, + {"matrix": [2, 7], "x": 97, "y": 27, "flags": 4}, + {"matrix": [2, 6], "x": 84, "y": 27, "flags": 4}, + {"matrix": [2, 5], "x": 71, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 58, "y": 27, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 27, "flags": 4}, + {"matrix": [2, 1], "x": 19, "y": 27, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1}, + {"matrix": [3, 0], "x": 2, "y": 40, "flags": 1}, + {"matrix": [3, 1], "x": 23, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 36, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 49, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 75, "y": 40, "flags": 4}, + {"matrix": [3, 6], "x": 88, "y": 40, "flags": 4}, + {"matrix": [3, 7], "x": 101, "y": 40, "flags": 4}, + {"matrix": [3, 8], "x": 114, "y": 40, "flags": 4}, + {"matrix": [3, 9], "x": 127, "y": 40, "flags": 4}, + {"matrix": [3, 10], "x": 140, "y": 40, "flags": 4}, + {"matrix": [3, 11], "x": 153, "y": 40, "flags": 4}, + {"matrix": [3, 13], "x": 174, "y": 40, "flags": 1}, + {"matrix": [4, 15], "x": 211, "y": 52, "flags": 1}, + {"matrix": [4, 13], "x": 182, "y": 52, "flags": 4}, + {"matrix": [4, 12], "x": 170, "y": 52, "flags": 1}, + {"matrix": [4, 11], "x": 146, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 133, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 120, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 107, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 94, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 81, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 68, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 55, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4}, + {"matrix": [4, 0], "x": 8, "y": 52, "flags": 1}, + {"matrix": [5, 0], "x": 2, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 34, "y": 64, "flags": 1}, + {"x": 57, "y": 64, "flags": 4}, + {"x": 70, "y": 64, "flags": 4}, + {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4}, + {"x": 96, "y": 64, "flags": 4}, + {"x": 109, "y": 64, "flags": 4}, + {"matrix": [5, 10], "x": 131, "y": 64, "flags": 1}, + {"matrix": [5, 11], "x": 148, "y": 64, "flags": 1}, + {"matrix": [5, 12], "x": 164, "y": 64, "flags": 1}, + {"matrix": [5, 13], "x": 180, "y": 64, "flags": 1}, + {"matrix": [5, 14], "x": 198, "y": 64, "flags": 1}, + {"matrix": [5, 15], "x": 211, "y": 64, "flags": 1}, + {"matrix": [5, 16], "x": 224, "y": 64, "flags": 1} + ], + "sleep": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0009", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP4" + }, + "community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [1, 14], "x": 14, "y": 1.25}, + {"matrix": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "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, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_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, 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.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": [2, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/linx3/n87/keymaps/default/keymap.c b/keyboards/era/linx3/n87/keymaps/default/keymap.c new file mode 100644 index 000000000000..a16e6a21105a --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n87/keymaps/via/keymap.c b/keyboards/era/linx3/n87/keymaps/via/keymap.c new file mode 100644 index 000000000000..a16e6a21105a --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 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_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, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/linx3/n87/keymaps/via/rules.mk b/keyboards/era/linx3/n87/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/linx3/n87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/linx3/n87/readme.md b/keyboards/era/linx3/n87/readme.md new file mode 100644 index 000000000000..ff5b29d3bd11 --- /dev/null +++ b/keyboards/era/linx3/n87/readme.md @@ -0,0 +1,23 @@ +# N87 + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: Syryan & Linx3 +* Hardware availability: [Syryan](https://srind.mysoho.com/) & [Linx3](https://allthatkeyboard.com) + +Make example for this keyboard (after setting up your build environment): + + make era/linx3/n87:default + +Flashing example for this keyboard: + + make era/linx3/n87: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/linx3/n87/rules.mk b/keyboards/era/linx3/n87/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/era/linx3/n87/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 8753ae354be6a62965b3d0ab931e0877bf34ef77 Mon Sep 17 00:00:00 2001 From: josh-l-wang <22173775+josh-l-wang@users.noreply.github.com> Date: Wed, 1 May 2024 03:05:45 -0400 Subject: [PATCH 092/125] add Bruce le Clavier (#23640) --- keyboards/jlw/bruce_le_clavier/info.json | 82 +++++++++++++++++++ .../bruce_le_clavier/keymaps/default/keymap.c | 43 ++++++++++ keyboards/jlw/bruce_le_clavier/readme.md | 53 ++++++++++++ keyboards/jlw/bruce_le_clavier/rules.mk | 1 + 4 files changed, 179 insertions(+) create mode 100644 keyboards/jlw/bruce_le_clavier/info.json create mode 100644 keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c create mode 100644 keyboards/jlw/bruce_le_clavier/readme.md create mode 100644 keyboards/jlw/bruce_le_clavier/rules.mk diff --git a/keyboards/jlw/bruce_le_clavier/info.json b/keyboards/jlw/bruce_le_clavier/info.json new file mode 100644 index 000000000000..998140599dd0 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Bruce the Keyboard", + "manufacturer": "jlw", + "url": "https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources", + "maintainer": "jlw", + "usb": { + "vid": "0x1209", + "pid": "0xA460", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B0", "A7", "A4", "A3", "B7", "B6", "B5", "B4", "B3", "B14"], + "rows": ["B11", "B9", "A5", "A6", "B15"] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "bootmagic": { + "matrix": [4, 10] + }, + "encoder": { + "rotary": [ + {"pin_a": "B12", "pin_b": "B13"} + ] + }, + "ws2812": { + "pin": "B8" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "h":1.75}, + {"matrix": [0, 1], "x": 1, "y": 0, "h":1.5}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0, "h":1.25}, + {"matrix": [0, 4], "x": 4, "y": 0, "h":1.25}, + + {"matrix": [4, 10], "x": 5.25, "y": 0}, + + {"matrix": [0, 5], "x": 6.5, "y": 0, "h":1.25}, + {"matrix": [0, 6], "x": 7.5, "y": 0, "h":1.25}, + {"matrix": [0, 7], "x": 8.5, "y": 0}, + {"matrix": [0, 8], "x": 9.5, "y": 0, "h":1.5}, + {"matrix": [0, 9], "x": 10.5, "y": 0, "h":1.75}, + + {"matrix": [1, 0], "x": 0, "y": 1.75}, + {"matrix": [1, 1], "x": 1, "y": 1.5}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 6.5, "y": 1.25}, + {"matrix": [1, 6], "x": 7.5, "y": 1.25}, + {"matrix": [1, 7], "x": 8.5, "y": 1}, + {"matrix": [1, 8], "x": 9.5, "y": 1.5}, + {"matrix": [1, 9], "x": 10.5,"y": 1.75}, + + {"matrix": [2, 0], "x": 0, "y": 2.75, "h":1.5}, + {"matrix": [2, 1], "x": 1, "y": 2.5, "h":1.75}, + {"matrix": [2, 2], "x": 2, "y": 2, "h":1.25}, + {"matrix": [2, 3], "x": 3, "y": 2.25}, + {"matrix": [2, 4], "x": 4, "y": 2.25}, + {"matrix": [2, 5], "x": 6.5, "y": 2.25}, + {"matrix": [2, 6], "x": 7.5, "y": 2.25}, + {"matrix": [2, 7], "x": 8.5, "y": 2, "h":1.25}, + {"matrix": [2, 8], "x": 9.5, "y": 2.5, "h":1.75}, + {"matrix": [2, 9], "x": 10.5,"y": 2.75, "h":1.5}, + + {"matrix": [3, 2], "x": 2, "y": 3.25}, + {"matrix": [3, 3], "x": 3, "y": 3.25, "w": 2}, + {"matrix": [3, 5], "x": 6.5, "y": 3.25, "w": 2}, + {"matrix": [3, 7], "x": 8.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c b/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c new file mode 100644 index 000000000000..51a8f0939d46 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +// Copyright 2023 jlw +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, QK_BOOT, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), KC_T, KC_G, KC_M, KC_N, RCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + LT(3, KC_TAB), SFT_T(KC_BSPC), LT(1, KC_SPC), LT(2,KC_ENT) + ), + + [1] = LAYOUT( + KC_GRAVE, KC_F2, XXXXXXX, KC_F4, KC_F5, XXXXXXX, KC_BSLS, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(1), XXXXXXX, _______, _______, KC_SCLN, + _______, _______, _______, _______ + ), + + [2] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ), + [3] = LAYOUT( + XXXXXXX, XXXXXXX, LSG(KC_4),LSG(KC_S),XXXXXXX, XXXXXXX, KC_HOME, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, + KC_LGUI, KC_LALT, KC_LCTL, KC_LGUI, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, + DF(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(2), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______ + ) +}; + +// Encoder Map +#ifdef ENCODER_MAP_ENABLE + const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(S(KC_F2), KC_F2) }, + [1] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, + [2] = { ENCODER_CCW_CW(_______, _______) }, + [3] = { ENCODER_CCW_CW(_______, _______) } + }; +#endif diff --git a/keyboards/jlw/bruce_le_clavier/readme.md b/keyboards/jlw/bruce_le_clavier/readme.md new file mode 100644 index 000000000000..7bef2d5eef71 --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/readme.md @@ -0,0 +1,53 @@ +# Bruce le Clavier + +Please note that Bruce le Clavier is a keyboard, not a human, and is also not Bruce the Keyboard. + +Bruce the Keyboard is a column staggered unibody split 35-key board created by [jlw](github.com/josh-l-wang), with the option to replace the middle key for an EC11 rotary encoder (with or without switch function). + +This keyboard has RGB, 3.3V, and GND pins broken out if you wish to add an LED strip. + +![Bruce le Clavier](https://i.imgur.com/qL9WHW4.jpg) + +* Keyboard Maintainer: [jlw](https://github.com/josh-l-wang) +* Hardware Supported: [Bruce le Clavier and Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Hardware Availability: [jlw-kb.com](https://jlw-kb.com) + +Make example for this keyboard (after setting up your build environment): + + make jlw/bruce_le_clavier:default + +Flashing example for this keyboard: + + make jlw/bruce_le_clavier: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 (the top left key) and plug in the keyboard +* **Physical reset button**: Hold button on the back of the PCB while plugging in the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + + + + +# Ceci est le micrologiciel pour Bruce le clavier + +Notez bien que Bruce le clavier n'est pas un humain. + +Bruce le clavier est un clavier de 35 touches colonnaire créé par [jlw](github.com/josh-l-wang). Il y a une option d'utiliser un encodeur rotatif au centre. + +* Maintaineur de clavier: [jlw](https://github.com/josh-l-wang) +* Matériel supporté: [Bruce le Clavier and Cases](https://github.com/josh-l-wang/Bruce-the-Keyboard-the-Resources) +* Matériel disponibilité: [jlw-kb.com](https://jlw-kb.com) + +Exemple de « make » (après avoir installé votre environnement de développement): + + make jlw/bruce_le_clavier:default + +Exemple de flash pour ce clavier: + + make jlw/bruce_le_clavier:flash + \ No newline at end of file diff --git a/keyboards/jlw/bruce_le_clavier/rules.mk b/keyboards/jlw/bruce_le_clavier/rules.mk new file mode 100644 index 000000000000..d4f87a82781a --- /dev/null +++ b/keyboards/jlw/bruce_le_clavier/rules.mk @@ -0,0 +1 @@ +#This file intentionally left blank From 7b838f330f11a2dd3ffb49b2ffbea48020004b7c Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 1 May 2024 20:02:03 +0100 Subject: [PATCH 093/125] add tkl_(ansi|iso)_wkl* community layouts (#21809) * update layouts/default/readme.md * add tkl_wkl layouts to layouts/default * amend layouts/default/readme.md * `tsangan_wkl` to `wkl` * Update readme.md * update keymap.c * local testing corrections applied * add layouts/community readmes * minor text correction(s) * Apply suggestions from code review * further copyright header changes --- layouts/community/tkl_ansi_wkl/readme.md | 3 + .../tkl_ansi_wkl_split_bs_rshift/readme.md | 3 + layouts/community/tkl_f13_ansi_wkl/readme.md | 3 + .../readme.md | 3 + layouts/community/tkl_f13_iso_wkl/readme.md | 3 + .../tkl_f13_iso_wkl_split_bs_rshift/readme.md | 3 + layouts/community/tkl_iso_wkl/readme.md | 3 + .../tkl_iso_wkl_split_bs_rshift/readme.md | 3 + layouts/default/readme.md | 249 ++++++++++++++---- .../default_tkl_ansi_wkl/keymap.c | 32 +++ layouts/default/tkl_ansi_wkl/info.json | 105 ++++++++ layouts/default/tkl_ansi_wkl/layout.json | 6 + layouts/default/tkl_ansi_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_ansi_wkl_split_bs_rshift/info.json | 107 ++++++++ .../tkl_ansi_wkl_split_bs_rshift/layout.json | 6 + .../tkl_ansi_wkl_split_bs_rshift/readme.md | 3 + .../default_tkl_f13_ansi_wkl/keymap.c | 32 +++ layouts/default/tkl_f13_ansi_wkl/info.json | 106 ++++++++ layouts/default/tkl_f13_ansi_wkl/layout.json | 6 + layouts/default/tkl_f13_ansi_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../info.json | 108 ++++++++ .../layout.json | 6 + .../readme.md | 3 + .../default_tkl_f13_iso_wkl/keymap.c | 32 +++ layouts/default/tkl_f13_iso_wkl/info.json | 107 ++++++++ layouts/default/tkl_f13_iso_wkl/layout.json | 6 + layouts/default/tkl_f13_iso_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_f13_iso_wkl_split_bs_rshift/info.json | 109 ++++++++ .../layout.json | 6 + .../tkl_f13_iso_wkl_split_bs_rshift/readme.md | 3 + .../tkl_iso_wkl/default_tkl_iso_wkl/keymap.c | 32 +++ layouts/default/tkl_iso_wkl/info.json | 106 ++++++++ layouts/default/tkl_iso_wkl/layout.json | 6 + layouts/default/tkl_iso_wkl/readme.md | 3 + .../keymap.c | 32 +++ .../tkl_iso_wkl_split_bs_rshift/info.json | 108 ++++++++ .../tkl_iso_wkl_split_bs_rshift/layout.json | 6 + .../tkl_iso_wkl_split_bs_rshift/readme.md | 3 + 41 files changed, 1404 insertions(+), 53 deletions(-) create mode 100644 layouts/community/tkl_ansi_wkl/readme.md create mode 100644 layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_f13_ansi_wkl/readme.md create mode 100644 layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_f13_iso_wkl/readme.md create mode 100644 layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/community/tkl_iso_wkl/readme.md create mode 100644 layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c create mode 100644 layouts/default/tkl_ansi_wkl/info.json create mode 100644 layouts/default/tkl_ansi_wkl/layout.json create mode 100644 layouts/default/tkl_ansi_wkl/readme.md create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c create mode 100644 layouts/default/tkl_f13_ansi_wkl/info.json create mode 100644 layouts/default/tkl_f13_ansi_wkl/layout.json create mode 100644 layouts/default/tkl_f13_ansi_wkl/readme.md create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c create mode 100644 layouts/default/tkl_f13_iso_wkl/info.json create mode 100644 layouts/default/tkl_f13_iso_wkl/layout.json create mode 100644 layouts/default/tkl_f13_iso_wkl/readme.md create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c create mode 100644 layouts/default/tkl_iso_wkl/info.json create mode 100644 layouts/default/tkl_iso_wkl/layout.json create mode 100644 layouts/default/tkl_iso_wkl/readme.md create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md diff --git a/layouts/community/tkl_ansi_wkl/readme.md b/layouts/community/tkl_ansi_wkl/readme.md new file mode 100644 index 000000000000..6541a0f23aba --- /dev/null +++ b/layouts/community/tkl_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl + + LAYOUT_tkl_ansi_wkl diff --git a/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..352356037280 --- /dev/null +++ b/layouts/community/tkl_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_ansi_wkl_split_bs_rshift diff --git a/layouts/community/tkl_f13_ansi_wkl/readme.md b/layouts/community/tkl_f13_ansi_wkl/readme.md new file mode 100644 index 000000000000..607692c2392c --- /dev/null +++ b/layouts/community/tkl_f13_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl + + LAYOUT_tkl_f13_ansi_wkl diff --git a/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..614c0913f625 --- /dev/null +++ b/layouts/community/tkl_f13_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift diff --git a/layouts/community/tkl_f13_iso_wkl/readme.md b/layouts/community/tkl_f13_iso_wkl/readme.md new file mode 100644 index 000000000000..46c441959231 --- /dev/null +++ b/layouts/community/tkl_f13_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl + + LAYOUT_tkl_f13_iso_wkl diff --git a/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..a9059abfba2f --- /dev/null +++ b/layouts/community/tkl_f13_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl_split_bs_rshift + + LAYOUT_tkl_f13_iso_wkl_split_bs_rshift diff --git a/layouts/community/tkl_iso_wkl/readme.md b/layouts/community/tkl_iso_wkl/readme.md new file mode 100644 index 000000000000..56fe1e914730 --- /dev/null +++ b/layouts/community/tkl_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl + + LAYOUT_tkl_iso_wkl diff --git a/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md b/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..ec820424a5b5 --- /dev/null +++ b/layouts/community/tkl_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl_split_bs_rshift + + LAYOUT_tkl_iso_split_bs_rshift diff --git a/layouts/default/readme.md b/layouts/default/readme.md index 892dbf1e0347..fab13d47c55e 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -641,6 +641,42 @@ LAYOUT_tkl_ansi_tsangan_split_bs_rshift └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_ansi_wkl +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_ansi_wkl_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_iso ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ @@ -713,6 +749,42 @@ LAYOUT_tkl_iso_tsangan_split_bs_rshift └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_iso_wkl +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_iso_wkl_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_jis ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ @@ -787,20 +859,56 @@ LAYOUT_tkl_f13_ansi_tsangan ``` LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ ││ │ │ │ -└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_ansi_wkl +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ ``` ``` @@ -823,20 +931,20 @@ LAYOUT_tkl_f13_iso ``` LAYOUT_tkl_f13_iso_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ │ ││ │ │ │ -└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` ``` @@ -859,39 +967,74 @@ LAYOUT_tkl_f13_iso_tsangan ``` LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ -│ │ │ │ │ │ │ ││ │ │ │ -└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ ``` ``` -LAYOUT_tkl_f13_jis -┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ -│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │ │ │ -└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ -┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │ -├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ +LAYOUT_tkl_f13_iso_wkl +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┐ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴──┬┴───┴───┴───┴─┬─┴──┬┴───┼───┴┬──┴─┬────┤┌───┼───┼───┐ -│ │ │ │ │ │ │ │ │ │ ││ │ │ │ -└────┴────┴────┴────┴──────────────┴────┴────┴────┴────┴────┘└───┴───┴───┘ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` +``` +LAYOUT_tkl_f13_iso_wkl_split_bs_rshift +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_f13_jis +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ +│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬───┴┬──┴─┬─┴──┬┴───┴───┴───┴─┬─┴──┬┴───┼───┴┬──┴─┬────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────┴──────────────┴────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` ``` diff --git a/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c b/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c new file mode 100644 index 000000000000..3d8cef64fc2a --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/default_tkl_ansi_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK +// 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 │ - │ = │ Backsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_wkl( + 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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_wkl/info.json b/layouts/default/tkl_ansi_wkl/info.json new file mode 100644 index 000000000000..eb08eacd3709 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_wkl/layout.json b/layouts/default/tkl_ansi_wkl/layout.json new file mode 100644 index 000000000000..b6d3505b159a --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_wkl/readme.md b/layouts/default/tkl_ansi_wkl/readme.md new file mode 100644 index 000000000000..6541a0f23aba --- /dev/null +++ b/layouts/default/tkl_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl + + LAYOUT_tkl_ansi_wkl diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..a5b27ee42bb2 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/default_tkl_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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 │ - │ = │Bsp│Bsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_wkl_split_bs_rshift( + 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, 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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json b/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json new file mode 100644 index 000000000000..62b48e3bc840 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json new file mode 100644 index 000000000000..0fba13348bb9 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..352356037280 --- /dev/null +++ b/layouts/default/tkl_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_ansi_wkl_split_bs_rshift diff --git a/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c b/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c new file mode 100644 index 000000000000..709988ac76d1 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/default_tkl_f13_ansi_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_ansi_wkl/info.json b/layouts/default/tkl_f13_ansi_wkl/info.json new file mode 100644 index 000000000000..ca03585d00aa --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with F13 key", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_ansi_wkl/layout.json b/layouts/default/tkl_f13_ansi_wkl/layout.json new file mode 100644 index 000000000000..850ffc9bdc9c --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_ansi_wkl/readme.md b/layouts/default/tkl_f13_ansi_wkl/readme.md new file mode 100644 index 000000000000..607692c2392c --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl + + LAYOUT_tkl_f13_ansi_wkl diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..6089b7681f9c --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Sft│ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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, 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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json new file mode 100644 index 000000000000..755e7a80d78c --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Tenkeyless ANSI Windows keyless layout with F13 key, split Backspace, and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json new file mode 100644 index 000000000000..6992dff912b5 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..614c0913f625 --- /dev/null +++ b/layouts/default/tkl_f13_ansi_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_ansi_wkl_split_bs_rshift + + LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift diff --git a/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c b/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c new file mode 100644 index 000000000000..5a32e674e8d2 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/default_tkl_f13_iso_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_iso_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_iso_wkl/info.json b/layouts/default/tkl_f13_iso_wkl/info.json new file mode 100644 index 000000000000..e597716b5dc8 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_iso_wkl/layout.json b/layouts/default/tkl_f13_iso_wkl/layout.json new file mode 100644 index 000000000000..0c6f178b4524 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_iso_wkl/readme.md b/layouts/default/tkl_f13_iso_wkl/readme.md new file mode 100644 index 000000000000..46c441959231 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl + + LAYOUT_tkl_f13_iso_wkl diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..7642de46e2fd --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/default_tkl_f13_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_iso_wkl_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json new file mode 100644 index 000000000000..4ccde283690e --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout with F13 key, split Backspace, and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_f13_iso_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json new file mode 100644 index 000000000000..a07a1307e773 --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..a9059abfba2f --- /dev/null +++ b/layouts/default/tkl_f13_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_f13_iso_wkl_split_bs_rshift + + LAYOUT_tkl_f13_iso_wkl_split_bs_rshift diff --git a/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c b/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c new file mode 100644 index 000000000000..940c968917bb --- /dev/null +++ b/layouts/default/tkl_iso_wkl/default_tkl_iso_wkl/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_wkl( + 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_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_wkl/info.json b/layouts/default/tkl_iso_wkl/info.json new file mode 100644 index 000000000000..07f3311296da --- /dev/null +++ b/layouts/default/tkl_iso_wkl/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_wkl/layout.json b/layouts/default/tkl_iso_wkl/layout.json new file mode 100644 index 000000000000..8d51a4064da2 --- /dev/null +++ b/layouts/default/tkl_iso_wkl/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_wkl/readme.md b/layouts/default/tkl_iso_wkl/readme.md new file mode 100644 index 000000000000..56fe1e914730 --- /dev/null +++ b/layouts/default/tkl_iso_wkl/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl + + LAYOUT_tkl_iso_wkl diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..5b9474863bc8 --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/default_tkl_iso_wkl_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 QMK +// 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 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │ │Alt │ │ Alt│ │ Ctrl│ │ ← │ ↓ │ → │ + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_wkl_split_bs_rshift( + 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_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json b/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json new file mode 100644 index 000000000000..aa0ebce31ed8 --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Tenkeyless ISO Windows keyless layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_wkl_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":13.5, "y":5.25, "w":1.5}, + + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json b/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json new file mode 100644 index 000000000000..09c79e0f4a4f --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"",{x:1,w:1.5},"",{w:7},"",{w:1.5},"",{x:1,w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md b/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md new file mode 100644 index 000000000000..ec820424a5b5 --- /dev/null +++ b/layouts/default/tkl_iso_wkl_split_bs_rshift/readme.md @@ -0,0 +1,3 @@ +# tkl_iso_wkl_split_bs_rshift + + LAYOUT_tkl_iso_split_bs_rshift From 337776105dc614a08d2d3a0db66c7c5be34afc4c Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 1 May 2024 20:27:40 +0100 Subject: [PATCH 094/125] add 60_iso_arrow and arrow_split_bs Community Layouts (#22556) --- .../60_ansi_arrow_split_bs/readme.md | 3 + layouts/community/60_iso_arrow/readme.md | 3 + .../community/60_iso_arrow_split_bs/readme.md | 3 + .../default_60_ansi_arrow/keymap.c | 10 +-- .../default_60_ansi_arrow_split_bs/keymap.c | 27 +++++++ .../default/60_ansi_arrow_split_bs/info.json | 79 ++++++++++++++++++ .../60_ansi_arrow_split_bs/layout.json | 5 ++ .../default/60_ansi_arrow_split_bs/readme.md | 3 + .../default_60_iso_arrow/keymap.c | 27 +++++++ layouts/default/60_iso_arrow/info.json | 79 ++++++++++++++++++ layouts/default/60_iso_arrow/layout.json | 5 ++ layouts/default/60_iso_arrow/readme.md | 3 + .../default_60_iso_arrow_split_bs/keymap.c | 27 +++++++ .../default/60_iso_arrow_split_bs/info.json | 80 +++++++++++++++++++ .../default/60_iso_arrow_split_bs/layout.json | 5 ++ .../default/60_iso_arrow_split_bs/readme.md | 3 + layouts/default/readme.md | 45 +++++++++++ 17 files changed, 402 insertions(+), 5 deletions(-) create mode 100644 layouts/community/60_ansi_arrow_split_bs/readme.md create mode 100644 layouts/community/60_iso_arrow/readme.md create mode 100644 layouts/community/60_iso_arrow_split_bs/readme.md create mode 100644 layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c create mode 100644 layouts/default/60_ansi_arrow_split_bs/info.json create mode 100644 layouts/default/60_ansi_arrow_split_bs/layout.json create mode 100644 layouts/default/60_ansi_arrow_split_bs/readme.md create mode 100644 layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c create mode 100644 layouts/default/60_iso_arrow/info.json create mode 100644 layouts/default/60_iso_arrow/layout.json create mode 100644 layouts/default/60_iso_arrow/readme.md create mode 100644 layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c create mode 100644 layouts/default/60_iso_arrow_split_bs/info.json create mode 100644 layouts/default/60_iso_arrow_split_bs/layout.json create mode 100644 layouts/default/60_iso_arrow_split_bs/readme.md diff --git a/layouts/community/60_ansi_arrow_split_bs/readme.md b/layouts/community/60_ansi_arrow_split_bs/readme.md new file mode 100644 index 000000000000..c008b4a6dec3 --- /dev/null +++ b/layouts/community/60_ansi_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_ansi_arrow_split_bs + + LAYOUT_60_ansi_arrow_split_bs diff --git a/layouts/community/60_iso_arrow/readme.md b/layouts/community/60_iso_arrow/readme.md new file mode 100644 index 000000000000..73015ab248e5 --- /dev/null +++ b/layouts/community/60_iso_arrow/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow + + LAYOUT_60_iso_arrow diff --git a/layouts/community/60_iso_arrow_split_bs/readme.md b/layouts/community/60_iso_arrow_split_bs/readme.md new file mode 100644 index 000000000000..8f47644fe23a --- /dev/null +++ b/layouts/community/60_iso_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow_split_bs + + LAYOUT_60_iso_arrow_split_bs diff --git a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c index c0baf9f47a77..5ad94501d06e 100644 --- a/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c +++ b/layouts/default/60_ansi_arrow/default_60_ansi_arrow/keymap.c @@ -6,15 +6,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │Esc│1 │2 │3 │4 │5 │6 │7 │8 │9 │0 │- │+ │Bspc │ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │Tab │Q │W │E │R │T │Y │U │I │O │P │[ │] │\ │ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │Caps │A │S │D │F │G │H │J │K │L │; │' │Enter │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │Shift │Z │X │C │V │B │N │M │, │. │Shift │↑ │/ │ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │Space │Alt│GUI│← │↓ │→ │ + * │Ctrl│GUI │Alt │Space │Alt│GUI│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_60_ansi_arrow( diff --git a/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c b/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c new file mode 100644 index 000000000000..e95baa6f4dbe --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/default_60_ansi_arrow_split_bs/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │ ` │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ Bspc│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_ansi_arrow_split_bs( + 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_GRV, + 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_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_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_ansi_arrow_split_bs/info.json b/layouts/default/60_ansi_arrow_split_bs/info.json new file mode 100644 index 000000000000..23e4b6937d46 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "60% ANSI Arrow Layout with Split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_ansi_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_ansi_arrow_split_bs/layout.json b/layouts/default/60_ansi_arrow_split_bs/layout.json new file mode 100644 index 000000000000..595b88bb558c --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_ansi_arrow_split_bs/readme.md b/layouts/default/60_ansi_arrow_split_bs/readme.md new file mode 100644 index 000000000000..c008b4a6dec3 --- /dev/null +++ b/layouts/default/60_ansi_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_ansi_arrow_split_bs + + LAYOUT_60_ansi_arrow_split_bs diff --git a/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c b/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c new file mode 100644 index 000000000000..d3eaa4786854 --- /dev/null +++ b/layouts/default/60_iso_arrow/default_60_iso_arrow/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │ Backsp│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_iso_arrow( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_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_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_iso_arrow/info.json b/layouts/default/60_iso_arrow/info.json new file mode 100644 index 000000000000..a14008b14f7a --- /dev/null +++ b/layouts/default/60_iso_arrow/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "60% ISO Arrow Layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_iso_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_iso_arrow/layout.json b/layouts/default/60_iso_arrow/layout.json new file mode 100644 index 000000000000..90f25c3ca8c0 --- /dev/null +++ b/layouts/default/60_iso_arrow/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","",{w:2},""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_iso_arrow/readme.md b/layouts/default/60_iso_arrow/readme.md new file mode 100644 index 000000000000..73015ab248e5 --- /dev/null +++ b/layouts/default/60_iso_arrow/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow + + LAYOUT_60_iso_arrow diff --git a/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c b/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c new file mode 100644 index 000000000000..651c97366c22 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/default_60_iso_arrow_split_bs/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + │Bsp│Del│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Shift│ ↑ │ / │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt│GUI│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_60_iso_arrow_split_bs( + 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_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_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_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/60_iso_arrow_split_bs/info.json b/layouts/default/60_iso_arrow_split_bs/info.json new file mode 100644 index 000000000000..5a7b78e40d56 --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "60% ISO Arrow Layout with Split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_iso_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/layouts/default/60_iso_arrow_split_bs/layout.json b/layouts/default/60_iso_arrow_split_bs/layout.json new file mode 100644 index 000000000000..bf494ab25f1a --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","",""] diff --git a/layouts/default/60_iso_arrow_split_bs/readme.md b/layouts/default/60_iso_arrow_split_bs/readme.md new file mode 100644 index 000000000000..8f47644fe23a --- /dev/null +++ b/layouts/default/60_iso_arrow_split_bs/readme.md @@ -0,0 +1,3 @@ +# 60_iso_arrow_split_bs + + LAYOUT_60_iso_arrow_split_bs diff --git a/layouts/default/readme.md b/layouts/default/readme.md index fab13d47c55e..2460f64701ff 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -49,6 +49,21 @@ LAYOUT_60_ansi_arrow └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ ``` +``` +LAYOUT_60_ansi_arrow_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_60_ansi_arrow_split_bs_7u_spc ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -154,6 +169,36 @@ LAYOUT_60_iso └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ ``` +``` +LAYOUT_60_iso_arrow +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + +``` +LAYOUT_60_iso_arrow_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_60_iso_split_bs_rshift ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ From 29a4e5c50b9cc828ea0a14a7c2cbe8d309a19079 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 2 May 2024 03:02:38 -0700 Subject: [PATCH 095/125] N86: Layout Data Correction (#23644) * Correct `LAYOUT_all` data Corrects incorrect key sizes and positioning. * Correct `LAYOUT_tkl_ansi_tsangan` data Corrects incorrect matrix assignments on the bottom row. * Correct `LAYOUT_tkl_ansi_tsangan_split_bs_rshift` data Corrects incorrect matrix assignments on the bottom row. * Set `LAYOUT_all` as an alias Sets `LAYOUT_all` as an alias for `LAYOUT_tkl_ansi_tsangan_split_bs_rshift`, because the layout and matrix data for these two macros is identical. --- keyboards/era/linx3/n86/info.json | 109 +++--------------------------- 1 file changed, 10 insertions(+), 99 deletions(-) diff --git a/keyboards/era/linx3/n86/info.json b/keyboards/era/linx3/n86/info.json index 40e1f78baaa6..c0b8b5525a12 100644 --- a/keyboards/era/linx3/n86/info.json +++ b/keyboards/era/linx3/n86/info.json @@ -171,100 +171,11 @@ "driver": "vendor", "pin": "GP4" }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_tkl_ansi_tsangan_split_bs_rshift" + }, "community_layouts": ["tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift"], "layouts": { - "LAYOUT_all": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 2], "x": 2.25, "y": 0}, - {"matrix": [0, 3], "x": 3.25, "y": 0}, - {"matrix": [0, 4], "x": 4.25, "y": 0}, - {"matrix": [0, 5], "x": 5.5, "y": 0}, - {"matrix": [0, 6], "x": 6.5, "y": 0}, - {"matrix": [0, 7], "x": 7.5, "y": 0}, - {"matrix": [0, 8], "x": 8.5, "y": 0}, - {"matrix": [0, 9], "x": 9.75, "y": 0}, - {"matrix": [0, 10], "x": 10.75, "y": 0}, - {"matrix": [0, 11], "x": 11.75, "y": 0}, - {"matrix": [0, 12], "x": 12.75, "y": 0}, - {"matrix": [0, 13], "x": 14, "y": 0}, - {"matrix": [0, 14], "x": 15.25, "y": 0}, - {"matrix": [0, 15], "x": 16.25, "y": 0}, - {"matrix": [0, 16], "x": 17.25, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1.25}, - {"matrix": [1, 1], "x": 1, "y": 1.25}, - {"matrix": [1, 2], "x": 2, "y": 1.25}, - {"matrix": [1, 3], "x": 3, "y": 1.25}, - {"matrix": [1, 4], "x": 4, "y": 1.25}, - {"matrix": [1, 5], "x": 5, "y": 1.25}, - {"matrix": [1, 6], "x": 6, "y": 1.25}, - {"matrix": [1, 7], "x": 7, "y": 1.25}, - {"matrix": [1, 8], "x": 8, "y": 1.25}, - {"matrix": [1, 9], "x": 9, "y": 1.25}, - {"matrix": [1, 10], "x": 10, "y": 1.25}, - {"matrix": [1, 11], "x": 11, "y": 1.25}, - {"matrix": [1, 12], "x": 12, "y": 1.25}, - {"matrix": [1, 13], "x": 13, "y": 1.25}, - {"matrix": [1, 14], "x": 14, "y": 1.25}, - {"matrix": [2, 14], "x": 15.25, "y": 1.25}, - {"matrix": [1, 15], "x": 16.25, "y": 1.25}, - {"matrix": [1, 16], "x": 17.25, "y": 1.25}, - {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, - {"matrix": [2, 1], "x": 1.5, "y": 2.25}, - {"matrix": [2, 2], "x": 2.5, "y": 2.25}, - {"matrix": [2, 3], "x": 3.5, "y": 2.25}, - {"matrix": [2, 4], "x": 4.5, "y": 2.25}, - {"matrix": [2, 5], "x": 5.5, "y": 2.25}, - {"matrix": [2, 6], "x": 6.5, "y": 2.25}, - {"matrix": [2, 7], "x": 7.5, "y": 2.25}, - {"matrix": [2, 8], "x": 8.5, "y": 2.25}, - {"matrix": [2, 9], "x": 9.5, "y": 2.25}, - {"matrix": [2, 10], "x": 10.5, "y": 2.25}, - {"matrix": [2, 11], "x": 11.5, "y": 2.25}, - {"matrix": [2, 12], "x": 12.5, "y": 2.25}, - {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, - {"matrix": [3, 14], "x": 15.25, "y": 2.25}, - {"matrix": [2, 15], "x": 16.25, "y": 2.25}, - {"matrix": [2, 16], "x": 17.25, "y": 2.25}, - {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, - {"matrix": [3, 1], "x": 1.75, "y": 3.25}, - {"matrix": [3, 2], "x": 2.75, "y": 3.25}, - {"matrix": [3, 3], "x": 3.75, "y": 3.25}, - {"matrix": [3, 4], "x": 4.75, "y": 3.25}, - {"matrix": [3, 5], "x": 5.75, "y": 3.25}, - {"matrix": [3, 6], "x": 6.75, "y": 3.25}, - {"matrix": [3, 7], "x": 7.75, "y": 3.25}, - {"matrix": [3, 8], "x": 8.75, "y": 3.25}, - {"matrix": [3, 9], "x": 9.75, "y": 3.25}, - {"matrix": [3, 10], "x": 11.75, "y": 3.25}, - {"matrix": [3, 11], "x": 12.75, "y": 3.25}, - {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25}, - {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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, 15], "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, "w": 1}, - {"matrix": [5, 2], "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, 12], "x": 12.5, "y": 5.25, "w": 1}, - {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, - {"matrix": [5, 14], "x": 15.25, "y": 5.25}, - {"matrix": [5, 15], "x": 16.25, "y": 5.25}, - {"matrix": [5, 16], "x": 17.25, "y": 5.25} - ] - }, "LAYOUT_tkl_ansi_tsangan": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -346,9 +257,9 @@ {"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, 6], "x": 4, "y": 5.25, "w": 7}, - {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, - {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "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, 14], "x": 15.25, "y": 5.25}, {"matrix": [5, 15], "x": 16.25, "y": 5.25}, @@ -438,9 +349,9 @@ {"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, 6], "x": 4, "y": 5.25, "w": 7}, - {"matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, - {"matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "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, 14], "x": 15.25, "y": 5.25}, {"matrix": [5, 15], "x": 16.25, "y": 5.25}, @@ -448,4 +359,4 @@ ] } } -} \ No newline at end of file +} From 9a4f39b7388745b6e395710e020cce8835f0d781 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Thu, 2 May 2024 20:08:41 +1000 Subject: [PATCH 096/125] clangd enhancements. (#23310) --- .clangd | 2 +- .../qmk/cli/generate/compilation_database.py | 34 ++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.clangd b/.clangd index 2be2d817fc7c..6133ae7229d8 100644 --- a/.clangd +++ b/.clangd @@ -1,4 +1,4 @@ CompileFlags: Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option] - Remove: [-W*, -mcall-prologues] + Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues] Compiler: clang diff --git a/lib/python/qmk/cli/generate/compilation_database.py b/lib/python/qmk/cli/generate/compilation_database.py index a2190fee66c7..b9c716bf0c52 100755 --- a/lib/python/qmk/cli/generate/compilation_database.py +++ b/lib/python/qmk/cli/generate/compilation_database.py @@ -25,7 +25,6 @@ def system_libs(binary: str) -> List[Path]: """Find the system include directory that the given build tool uses. """ cli.log.debug("searching for system library directory for binary: %s", binary) - bin_path = shutil.which(binary) # Actually query xxxxxx-gcc to find its include paths. if binary.endswith("gcc") or binary.endswith("g++"): @@ -37,7 +36,31 @@ def system_libs(binary: str) -> List[Path]: paths.append(Path(line.strip()).resolve()) return paths - return list(Path(bin_path).resolve().parent.parent.glob("*/include")) if bin_path else [] + return list(Path(binary).resolve().parent.parent.glob("*/include")) if binary else [] + + +@lru_cache(maxsize=10) +def cpu_defines(binary: str, compiler_args: str) -> List[str]: + cli.log.debug("gathering definitions for compilation: %s %s", binary, compiler_args) + if binary.endswith("gcc") or binary.endswith("g++"): + invocation = [binary, '-dM', '-E'] + if binary.endswith("gcc"): + invocation.extend(['-x', 'c']) + elif binary.endswith("g++"): + invocation.extend(['-x', 'c++']) + compiler_args = shlex.split(compiler_args) + invocation.extend(compiler_args) + invocation.append('-') + result = cli.run(invocation, capture_output=True, check=True, stdin=None, input='\n') + define_args = [] + for line in result.stdout.splitlines(): + line_args = line.split(' ', 2) + if len(line_args) == 3 and line_args[0] == '#define': + define_args.append(f'-D{line_args[1]}={line_args[2]}') + elif len(line_args) == 2 and line_args[0] == '#define': + define_args.append(f'-D{line_args[1]}') + return list(sorted(set(define_args))) + return [] file_re = re.compile(r'printf "Compiling: ([^"]+)') @@ -68,9 +91,12 @@ def parse_make_n(f: Iterator[str]) -> List[Dict[str, str]]: # we have a hit! this_cmd = m.group(1) args = shlex.split(this_cmd) - for s in system_libs(args[0]): + binary = shutil.which(args[0]) + compiler_args = set(filter(lambda x: x.startswith('-m') or x.startswith('-f'), args)) + for s in system_libs(binary): args += ['-isystem', '%s' % s] - new_cmd = ' '.join(shlex.quote(s) for s in args if s != '-mno-thumb-interwork') + args.extend(cpu_defines(binary, ' '.join(shlex.quote(s) for s in compiler_args))) + new_cmd = ' '.join(shlex.quote(s) for s in args) records.append({"directory": str(QMK_FIRMWARE.resolve()), "command": new_cmd, "file": this_file}) state = 'start' From 26d444c6162c2bffc5e715cc451690d9c7b49b05 Mon Sep 17 00:00:00 2001 From: yiancar Date: Thu, 2 May 2024 15:21:01 -0700 Subject: [PATCH 097/125] [Keyboard] NK Classic TKL (#23435) * First commit * Fix keycode range and color on indicator * bit of cleanup * prettify * Update keyboards/novelkeys/nk_classic_tkl/keymaps/default/keymap.c Co-authored-by: Joel Challis * Update keyboards/novelkeys/nk_classic_tkl/info.json Co-authored-by: Joel Challis * Update keyboards/novelkeys/nk_classic_tkl/info.json Co-authored-by: Joel Challis * readme fix --------- Co-authored-by: yiancar Co-authored-by: Joel Challis --- keyboards/novelkeys/nk_classic_tkl/config.h | 25 ++ keyboards/novelkeys/nk_classic_tkl/halconf.h | 21 ++ keyboards/novelkeys/nk_classic_tkl/info.json | 270 ++++++++++++++++++ .../nk_classic_tkl/keymaps/default/keymap.c | 69 +++++ .../nk_classic_tkl/keymaps/via/keymap.c | 69 +++++ .../nk_classic_tkl/keymaps/via/rules.mk | 1 + keyboards/novelkeys/nk_classic_tkl/mcuconf.h | 22 ++ keyboards/novelkeys/nk_classic_tkl/readme.md | 32 +++ keyboards/novelkeys/nk_classic_tkl/rules.mk | 2 + 9 files changed, 511 insertions(+) create mode 100644 keyboards/novelkeys/nk_classic_tkl/config.h create mode 100644 keyboards/novelkeys/nk_classic_tkl/halconf.h create mode 100755 keyboards/novelkeys/nk_classic_tkl/info.json create mode 100644 keyboards/novelkeys/nk_classic_tkl/keymaps/default/keymap.c create mode 100644 keyboards/novelkeys/nk_classic_tkl/keymaps/via/keymap.c create mode 100644 keyboards/novelkeys/nk_classic_tkl/keymaps/via/rules.mk create mode 100644 keyboards/novelkeys/nk_classic_tkl/mcuconf.h create mode 100644 keyboards/novelkeys/nk_classic_tkl/readme.md create mode 100644 keyboards/novelkeys/nk_classic_tkl/rules.mk diff --git a/keyboards/novelkeys/nk_classic_tkl/config.h b/keyboards/novelkeys/nk_classic_tkl/config.h new file mode 100644 index 000000000000..62744a2589b8 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/config.h @@ -0,0 +1,25 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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 + +/* RGB options */ + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 diff --git a/keyboards/novelkeys/nk_classic_tkl/halconf.h b/keyboards/novelkeys/nk_classic_tkl/halconf.h new file mode 100644 index 000000000000..c7f5bab5c855 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2024 Yiancar-Designs + * + * 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 diff --git a/keyboards/novelkeys/nk_classic_tkl/info.json b/keyboards/novelkeys/nk_classic_tkl/info.json new file mode 100755 index 000000000000..53d10ce32ae4 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/info.json @@ -0,0 +1,270 @@ +{ + "manufacturer": "Yiancar-Designs", + "keyboard_name": "NK_ Classic TKL", + "maintainer": "Yiancar", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B12", "B13", "B14", "B15", "A8", "A10", "A14", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "A0", "A1"], + "rows": ["B11", "B10", "B2", "B1", "A9", "A5"] + }, + "processor": "STM32F072", + "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, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 38, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 51, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 83, "y": 0, "flags": 1}, + {"matrix": [0, 6], "x": 96, "y": 0, "flags": 1}, + {"matrix": [0, 7], "x": 109, "y": 0, "flags": 1}, + {"matrix": [0, 8], "x": 122, "y": 0, "flags": 1}, + {"matrix": [0, 9], "x": 141, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 154, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 166, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 195, "y": 0, "flags": 1}, + {"matrix": [0, 15], "x": 208, "y": 0, "flags": 1}, + {"matrix": [0, 16], "x": 221, "y": 0, "flags": 1}, + {"matrix": [1, 16], "x": 221, "y": 15, "flags": 1}, + {"matrix": [1, 15], "x": 208, "y": 15, "flags": 1}, + {"matrix": [1, 14], "x": 195, "y": 15, "flags": 1}, + {"matrix": [1, 13], "x": 173, "y": 15, "flags": 1}, + {"matrix": [1, 12], "x": 154, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 141, "y": 15, "flags": 4}, + {"matrix": [1, 10], "x": 128, "y": 15, "flags": 4}, + {"matrix": [1, 9], "x": 115, "y": 15, "flags": 4}, + {"matrix": [1, 8], "x": 102, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 90, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 77, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 64, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 51, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 38, "y": 15, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 15, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 15, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1}, + {"matrix": [2, 1], "x": 19, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 27, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 58, "y": 27, "flags": 4}, + {"matrix": [2, 5], "x": 70, "y": 27, "flags": 4}, + {"matrix": [2, 6], "x": 83, "y": 27, "flags": 4}, + {"matrix": [2, 7], "x": 96, "y": 27, "flags": 4}, + {"matrix": [2, 8], "x": 109, "y": 27, "flags": 4}, + {"matrix": [2, 9], "x": 122, "y": 27, "flags": 4}, + {"matrix": [2, 10], "x": 134, "y": 27, "flags": 4}, + {"matrix": [2, 11], "x": 147, "y": 27, "flags": 4}, + {"matrix": [2, 12], "x": 160, "y": 27, "flags": 4}, + {"matrix": [3, 12], "x": 176, "y": 27, "flags": 4}, + {"matrix": [2, 14], "x": 195, "y": 27, "flags": 1}, + {"matrix": [2, 15], "x": 208, "y": 27, "flags": 1}, + {"matrix": [2, 16], "x": 221, "y": 27, "flags": 1}, + {"x": 224, "y": 34, "flags": 9}, + {"x": 218, "y": 34, "flags": 9}, + {"x": 211, "y": 34, "flags": 9}, + {"x": 205, "y": 34, "flags": 9}, + {"x": 198, "y": 34, "flags": 9}, + {"x": 192, "y": 34, "flags": 9}, + {"matrix": [3, 13], "x": 171, "y": 40, "flags": 1}, + {"matrix": [3, 11], "x": 150, "y": 40, "flags": 4}, + {"matrix": [3, 10], "x": 138, "y": 40, "flags": 4}, + {"matrix": [3, 9], "x": 125, "y": 40, "flags": 4}, + {"matrix": [3, 8], "x": 112, "y": 40, "flags": 4}, + {"matrix": [3, 7], "x": 99, "y": 40, "flags": 4}, + {"matrix": [3, 6], "x": 86, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 74, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 61, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 35, "y": 40, "flags": 4}, + {"matrix": [3, 1], "x": 22, "y": 40, "flags": 4}, + {"matrix": [3, 0], "x": 5, "y": 40, "flags": 1}, + {"matrix": [4, 0], "x": 8, "y": 52, "flags": 1}, + {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 54, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 67, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 80, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 93, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 106, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 118, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 131, "y": 52, "flags": 4}, + {"matrix": [4, 11], "x": 144, "y": 52, "flags": 4}, + {"matrix": [4, 12], "x": 168, "y": 52, "flags": 1}, + {"matrix": [4, 15], "x": 208, "y": 52, "flags": 1}, + {"matrix": [5, 16], "x": 221, "y": 64, "flags": 1}, + {"matrix": [5, 15], "x": 208, "y": 64, "flags": 1}, + {"matrix": [5, 14], "x": 195, "y": 64, "flags": 1}, + {"matrix": [5, 13], "x": 176, "y": 64, "flags": 1}, + {"matrix": [5, 12], "x": 160, "y": 64, "flags": 1}, + {"matrix": [5, 11], "x": 144, "y": 64, "flags": 1}, + {"matrix": [5, 6], "x": 90, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 35, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 19, "y": 64, "flags": 1}, + {"matrix": [5, 0], "x": 3, "y": 64, "flags": 1} + ], + "max_brightness": 120, + "sleep": true + }, + "url": "www.yiancar-designs.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x4E54", + "vid": "0x8968" + }, + "ws2812": { + "driver": "pwm", + "pin": "B0" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_tkl_ansi_tsangan" + }, + "layouts": { + "LAYOUT_tkl_ansi_tsangan": { + "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, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [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.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 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, 15], "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, 6], "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, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/default/keymap.c b/keyboards/novelkeys/nk_classic_tkl/keymaps/default/keymap.c new file mode 100644 index 000000000000..a99350ef7fce --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2024 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum my_keycodes { + RETRO_RGB = QK_USER_0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_tkl_ansi_tsangan( /* 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_tkl_ansi_tsangan( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, _______, _______, + _______, _______, _______, RETRO_RGB, _______, _______, _______, _______, _______, _______), + +}; + +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 50; i <= 55; i++) { + rgb_matrix_set_color(i, 255, 86, 0); + } + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RETRO_RGB: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_INDICATOR); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } + break; + } + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/via/keymap.c b/keyboards/novelkeys/nk_classic_tkl/keymaps/via/keymap.c new file mode 100644 index 000000000000..cc3ed86d2f21 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2024 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum my_keycodes { + RETRO_RGB = QK_KB_0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_tkl_ansi_tsangan( /* 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_tkl_ansi_tsangan( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, _______, _______, + _______, _______, _______, RETRO_RGB, _______, _______, _______, _______, _______, _______), + +}; + +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = 50; i <= 55; i++) { + rgb_matrix_set_color(i, 255, 86, 0); + } + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RETRO_RGB: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_INDICATOR); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } + break; + } + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/via/rules.mk b/keyboards/novelkeys/nk_classic_tkl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/novelkeys/nk_classic_tkl/mcuconf.h b/keyboards/novelkeys/nk_classic_tkl/mcuconf.h new file mode 100644 index 000000000000..ec984442ed0e --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2024 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/novelkeys/nk_classic_tkl/readme.md b/keyboards/novelkeys/nk_classic_tkl/readme.md new file mode 100644 index 000000000000..61f4f0cd9e51 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/readme.md @@ -0,0 +1,32 @@ +# NK Classic TKL + +This is a TKL PCB. It supports VIA and full per-key RGB. + +* Keyboard Maintainer: [Yiancar](https://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A TKL keyboard with STM32F072CB or APM compatible +* Hardware Availability: https://novelkeys.com/ + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make novelkeys/nk_classic_tkl: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). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or dfu-util (`make novelkeys/nk_classic_tkl::dfu-util`) diff --git a/keyboards/novelkeys/nk_classic_tkl/rules.mk b/keyboards/novelkeys/nk_classic_tkl/rules.mk new file mode 100644 index 000000000000..0ab54aaaf718 --- /dev/null +++ b/keyboards/novelkeys/nk_classic_tkl/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF From e3fed98ecb93123cede36c1b8326882856347690 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Thu, 2 May 2024 20:42:33 -0400 Subject: [PATCH 098/125] [Keyboard] Add Petrichor Keyboard (#23413) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/cannonkeys/petrichor/config.h | 9 + keyboards/cannonkeys/petrichor/info.json | 394 ++++++++++++++++++ .../petrichor/keymaps/default/keymap.c | 24 ++ .../cannonkeys/petrichor/keymaps/via/keymap.c | 24 ++ .../cannonkeys/petrichor/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/petrichor/petrichor.c | 40 ++ keyboards/cannonkeys/petrichor/readme.md | 28 ++ keyboards/cannonkeys/petrichor/rules.mk | 1 + 8 files changed, 521 insertions(+) create mode 100644 keyboards/cannonkeys/petrichor/config.h create mode 100644 keyboards/cannonkeys/petrichor/info.json create mode 100644 keyboards/cannonkeys/petrichor/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/petrichor/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/petrichor/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/petrichor/petrichor.c create mode 100644 keyboards/cannonkeys/petrichor/readme.md create mode 100644 keyboards/cannonkeys/petrichor/rules.mk diff --git a/keyboards/cannonkeys/petrichor/config.h b/keyboards/cannonkeys/petrichor/config.h new file mode 100644 index 000000000000..ea5c26b6c72f --- /dev/null +++ b/keyboards/cannonkeys/petrichor/config.h @@ -0,0 +1,9 @@ +// Copyright 2024 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 \ No newline at end of file diff --git a/keyboards/cannonkeys/petrichor/info.json b/keyboards/cannonkeys/petrichor/info.json new file mode 100644 index 000000000000..ecec61e7cf21 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/info.json @@ -0,0 +1,394 @@ +{ + "manufacturer": "CannonKeys", + "keyboard_name": "Petrichor", + "maintainer": "awkannan", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP9", "GP6", "GP5", "GP4", "GP3"], + "rows": ["GP13", "GP12", "GP11", "GP10", "GP8"] + }, + "processor": "RP2040", + "rgblight": { + "animations": { + "rainbow_mood": true, + "rainbow_swirl": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 3, + "layers": { + "enabled": true, + "override_rgb": false + }, + "default": { + "animation": "rainbow_swirl" + } + }, + "url": "https://cannonkeys.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x0029", + "vid": "0xCA04" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP7" + }, + "layouts": { + "LAYOUT_7u_no_split": { + "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.5, "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": [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": [1, 14], "x": 15.5, "y": 1}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [1, 16], "x": 17.5, "y": 1}, + {"matrix": [1, 17], "x": 18.5, "y": 1, "h": 2}, + {"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": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [2, 15], "x": 16.5, "y": 2}, + {"matrix": [2, 16], "x": 17.5, "y": 2}, + {"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.25, "y": 3.25}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.5, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4} + ] + }, + "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": [2, 12], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.5, "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": [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": [1, 14], "x": 15.5, "y": 1}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [1, 16], "x": 17.5, "y": 1}, + {"matrix": [1, 17], "x": 18.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, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [2, 15], "x": 16.5, "y": 2}, + {"matrix": [2, 16], "x": 17.5, "y": 2}, + {"matrix": [2, 17], "x": 18.5, "y": 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.25, "y": 3.25}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "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, "w": 1.25}, + {"matrix": [4, 6], "x": 3.5, "y": 4, "w": 6}, + {"matrix": [4, 9], "x": 9.5, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 10.75, "y": 4}, + {"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.5, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4}, + {"matrix": [4, 17], "x": 18.5, "y": 4} + ] + }, + "LAYOUT_default": { + "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.5, "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": [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": [1, 14], "x": 15.5, "y": 1}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [1, 16], "x": 17.5, "y": 1}, + {"matrix": [1, 17], "x": 18.5, "y": 1, "h": 2}, + {"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": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [2, 15], "x": 16.5, "y": 2}, + {"matrix": [2, 16], "x": 17.5, "y": 2}, + {"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.25, "y": 3.25}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3, "h": 2}, + {"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.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.5, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4} + ] + }, + "LAYOUT_iso_6u_split_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": [2, 12], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.5, "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": [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, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [1, 14], "x": 15.5, "y": 1}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [1, 16], "x": 17.5, "y": 1}, + {"matrix": [1, 17], "x": 18.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": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [2, 15], "x": 16.5, "y": 2}, + {"matrix": [2, 16], "x": 17.5, "y": 2}, + {"matrix": [2, 17], "x": 18.5, "y": 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.25, "y": 3.25}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [3, 16], "x": 17.5, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "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, "w": 1.25}, + {"matrix": [4, 6], "x": 3.5, "y": 4, "w": 6}, + {"matrix": [4, 9], "x": 9.5, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 10.75, "y": 4}, + {"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13.25, "y": 4.25}, + {"matrix": [4, 13], "x": 14.25, "y": 4.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4.25}, + {"matrix": [4, 15], "x": 16.5, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4}, + {"matrix": [4, 17], "x": 18.5, "y": 4} + ] + } + } +} diff --git a/keyboards/cannonkeys/petrichor/keymaps/default/keymap.c b/keyboards/cannonkeys/petrichor/keymaps/default/keymap.c new file mode 100644 index 000000000000..8f2a516b7321 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( /* Base */ + 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_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_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 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_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_all( /* Function Layer */ + 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, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ + ), + +}; \ No newline at end of file diff --git a/keyboards/cannonkeys/petrichor/keymaps/via/keymap.c b/keyboards/cannonkeys/petrichor/keymaps/via/keymap.c new file mode 100644 index 000000000000..8f2a516b7321 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2024 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( /* Base */ + 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_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_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 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_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_all( /* Function Layer */ + 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, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ + ), + +}; \ No newline at end of file diff --git a/keyboards/cannonkeys/petrichor/keymaps/via/rules.mk b/keyboards/cannonkeys/petrichor/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/petrichor/petrichor.c b/keyboards/cannonkeys/petrichor/petrichor.c new file mode 100644 index 000000000000..a80036c7b3a8 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/petrichor.c @@ -0,0 +1,40 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_PURPLE} +); +const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_GREEN} +); +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_BLUE} +); + +const rgblight_segment_t* const PROGMEM enabled_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_numlock_layer, + my_layer1_layer +); + +void keyboard_post_init_kb(void) { + keyboard_post_init_user(); + rgblight_layers = enabled_rgb_layers; +} + +bool led_update_kb(led_t led_state) { + if(!led_update_user(led_state)){ + return false; + } + rgblight_set_layer_state(0, led_state.caps_lock); + rgblight_set_layer_state(1, led_state.num_lock); + return true; +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + rgblight_set_layer_state(2, layer_state_cmp(state, 1)); + return state; +} diff --git a/keyboards/cannonkeys/petrichor/readme.md b/keyboards/cannonkeys/petrichor/readme.md new file mode 100644 index 000000000000..5eb1c96e48f7 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/readme.md @@ -0,0 +1,28 @@ +# Petrichor PCB + +Petrichor PCB from CannonKeys for the AKB Petrichor keyboard +(This firmware is used for both the hotswap and solderable variant) + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: RP2040 +* Hardware Availability: [CannonKeys](https://cannonkeys.com) + + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/petrichor:default + +Flashing example for this keyboard: + + make cannonkeys/petrichor: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 4 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 "BOOTSEL" button on the back of the PCB and briefly press the "REBOOT" button on the back of the PCB. +* **Top side reboot pads**: Bridge the reboot pads on the top of the PCB with a pair of tweezers twice in a row, quickly. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cannonkeys/petrichor/rules.mk b/keyboards/cannonkeys/petrichor/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/cannonkeys/petrichor/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 257319f9ffc07a34ca101de7adfb83970d2811e6 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 2 May 2024 21:07:43 -0700 Subject: [PATCH 099/125] Tomak: Layout Data Correction (#23649) Corrects the key size and positioning for position [8, 7] on all layouts. --- keyboards/era/sirind/tomak/info.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/era/sirind/tomak/info.json b/keyboards/era/sirind/tomak/info.json index da7d12e94d1c..58025e67a183 100644 --- a/keyboards/era/sirind/tomak/info.json +++ b/keyboards/era/sirind/tomak/info.json @@ -260,7 +260,7 @@ {"matrix": [8, 4], "x": 13, "y": 2.5}, {"matrix": [8, 5], "x": 14, "y": 2.5}, {"matrix": [8, 6], "x": 15, "y": 2.5}, - {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 7], "x": 16, "y": 2.5, "w": 1.5}, {"matrix": [8, 8], "x": 17.75, "y": 2.5}, {"matrix": [8, 9], "x": 18.75, "y": 2.5}, {"matrix": [8, 10], "x": 19.75, "y": 2.5}, @@ -359,7 +359,7 @@ {"matrix": [8, 4], "x": 13, "y": 2.5}, {"matrix": [8, 5], "x": 14, "y": 2.5}, {"matrix": [8, 6], "x": 15, "y": 2.5}, - {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 7], "x": 16, "y": 2.5, "w": 1.5}, {"matrix": [8, 8], "x": 17.75, "y": 2.5}, {"matrix": [8, 9], "x": 18.75, "y": 2.5}, {"matrix": [8, 10], "x": 19.75, "y": 2.5}, @@ -457,7 +457,7 @@ {"matrix": [8, 4], "x": 13, "y": 2.5}, {"matrix": [8, 5], "x": 14, "y": 2.5}, {"matrix": [8, 6], "x": 15, "y": 2.5}, - {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 7], "x": 16, "y": 2.5, "w": 1.5}, {"matrix": [8, 8], "x": 17.75, "y": 2.5}, {"matrix": [8, 9], "x": 18.75, "y": 2.5}, {"matrix": [8, 10], "x": 19.75, "y": 2.5}, @@ -557,7 +557,7 @@ {"matrix": [8, 4], "x": 13, "y": 2.5}, {"matrix": [8, 5], "x": 14, "y": 2.5}, {"matrix": [8, 6], "x": 15, "y": 2.5}, - {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 7], "x": 16, "y": 2.5, "w": 1.5}, {"matrix": [8, 8], "x": 17.75, "y": 2.5}, {"matrix": [8, 9], "x": 18.75, "y": 2.5}, {"matrix": [8, 10], "x": 19.75, "y": 2.5}, @@ -657,7 +657,7 @@ {"matrix": [8, 4], "x": 13, "y": 2.5}, {"matrix": [8, 5], "x": 14, "y": 2.5}, {"matrix": [8, 6], "x": 15, "y": 2.5}, - {"matrix": [8, 7], "x": 16.25, "y": 2.5, "w": 1.25}, + {"matrix": [8, 7], "x": 16, "y": 2.5, "w": 1.5}, {"matrix": [8, 8], "x": 17.75, "y": 2.5}, {"matrix": [8, 9], "x": 18.75, "y": 2.5}, {"matrix": [8, 10], "x": 19.75, "y": 2.5}, @@ -707,4 +707,4 @@ ] } } -} \ No newline at end of file +} From 8075003e6068d6f8fa5396972c2a17d39d14c584 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 2 May 2024 22:11:23 -0700 Subject: [PATCH 100/125] ZSA Voyager Layout Fix (#23651) --- keyboards/zsa/voyager/info.json | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/keyboards/zsa/voyager/info.json b/keyboards/zsa/voyager/info.json index 14e7584f5cc4..3a7e7865ea90 100644 --- a/keyboards/zsa/voyager/info.json +++ b/keyboards/zsa/voyager/info.json @@ -161,52 +161,52 @@ "layouts": { "LAYOUT": { "layout": [ - {"label": "k00", "matrix": [0, 1], "x": 3, "y": 0}, - {"label": "k01", "matrix": [0, 2], "x": 12, "y": 0}, + {"label": "k00", "matrix": [0, 1], "x": 0, "y": 0.5}, + {"label": "k01", "matrix": [0, 2], "x": 1, "y": 0.5}, {"label": "k02", "matrix": [0, 3], "x": 2, "y": 0.25}, - {"label": "k03", "matrix": [0, 4], "x": 4, "y": 0.25}, - {"label": "k04", "matrix": [0, 5], "x": 11, "y": 0.25}, - {"label": "k05", "matrix": [0, 6], "x": 13, "y": 0.25}, - {"label": "k26", "matrix": [6, 0], "x": 0, "y": 0.5}, - {"label": "k27", "matrix": [6, 1], "x": 1, "y": 0.5}, - {"label": "k28", "matrix": [6, 2], "x": 5, "y": 0.5}, - {"label": "k29", "matrix": [6, 3], "x": 10, "y": 0.5}, + {"label": "k03", "matrix": [0, 4], "x": 3, "y": 0}, + {"label": "k04", "matrix": [0, 5], "x": 4, "y": 0.25}, + {"label": "k05", "matrix": [0, 6], "x": 5, "y": 0.5}, + {"label": "k26", "matrix": [6, 0], "x": 10, "y": 0.5}, + {"label": "k27", "matrix": [6, 1], "x": 11, "y": 0.25}, + {"label": "k28", "matrix": [6, 2], "x": 12, "y": 0}, + {"label": "k29", "matrix": [6, 3], "x": 13, "y": 0.25}, {"label": "k30", "matrix": [6, 4], "x": 14, "y": 0.5}, {"label": "k31", "matrix": [6, 5], "x": 15, "y": 0.5}, - {"label": "k06", "matrix": [1, 1], "x": 3, "y": 1}, - {"label": "k07", "matrix": [1, 2], "x": 12, "y": 1}, + {"label": "k06", "matrix": [1, 1], "x": 0, "y": 1.5}, + {"label": "k07", "matrix": [1, 2], "x": 1, "y": 1.5}, {"label": "k08", "matrix": [1, 3], "x": 2, "y": 1.25}, - {"label": "k09", "matrix": [1, 4], "x": 4, "y": 1.25}, - {"label": "k10", "matrix": [1, 5], "x": 11, "y": 1.25}, - {"label": "k11", "matrix": [1, 6], "x": 13, "y": 1.25}, - {"label": "k32", "matrix": [7, 0], "x": 0, "y": 1.5}, - {"label": "k33", "matrix": [7, 1], "x": 1, "y": 1.5}, - {"label": "k34", "matrix": [7, 2], "x": 5, "y": 1.5}, - {"label": "k35", "matrix": [7, 3], "x": 10, "y": 1.5}, + {"label": "k09", "matrix": [1, 4], "x": 3, "y": 1}, + {"label": "k10", "matrix": [1, 5], "x": 4, "y": 1.25}, + {"label": "k11", "matrix": [1, 6], "x": 5, "y": 1.5}, + {"label": "k32", "matrix": [7, 0], "x": 10, "y": 1.5}, + {"label": "k33", "matrix": [7, 1], "x": 11, "y": 1.25}, + {"label": "k34", "matrix": [7, 2], "x": 12, "y": 1}, + {"label": "k35", "matrix": [7, 3], "x": 13, "y": 1.25}, {"label": "k36", "matrix": [7, 4], "x": 14, "y": 1.5}, {"label": "k37", "matrix": [7, 5], "x": 15, "y": 1.5}, - {"label": "k12", "matrix": [2, 1], "x": 3, "y": 2}, - {"label": "k13", "matrix": [2, 2], "x": 12, "y": 2}, + {"label": "k12", "matrix": [2, 1], "x": 0, "y": 2.5}, + {"label": "k13", "matrix": [2, 2], "x": 1, "y": 2.5}, {"label": "k14", "matrix": [2, 3], "x": 2, "y": 2.25}, - {"label": "k15", "matrix": [2, 4], "x": 4, "y": 2.25}, - {"label": "k16", "matrix": [2, 5], "x": 11, "y": 2.25}, - {"label": "k17", "matrix": [2, 6], "x": 13, "y": 2.25}, - {"label": "k38", "matrix": [8, 0], "x": 0, "y": 2.5}, - {"label": "k39", "matrix": [8, 1], "x": 1, "y": 2.5}, - {"label": "k40", "matrix": [8, 2], "x": 5, "y": 2.5}, - {"label": "k41", "matrix": [8, 3], "x": 10, "y": 2.5}, + {"label": "k15", "matrix": [2, 4], "x": 3, "y": 2}, + {"label": "k16", "matrix": [2, 5], "x": 4, "y": 2.25}, + {"label": "k17", "matrix": [2, 6], "x": 5, "y": 2.5}, + {"label": "k38", "matrix": [8, 0], "x": 10, "y": 2.5}, + {"label": "k39", "matrix": [8, 1], "x": 11, "y": 2.25}, + {"label": "k40", "matrix": [8, 2], "x": 12, "y": 2}, + {"label": "k41", "matrix": [8, 3], "x": 13, "y": 2.25}, {"label": "k42", "matrix": [8, 4], "x": 14, "y": 2.5}, {"label": "k43", "matrix": [8, 5], "x": 15, "y": 2.5}, - {"label": "k18", "matrix": [3, 1], "x": 3, "y": 3}, - {"label": "k19", "matrix": [3, 2], "x": 12, "y": 3}, + {"label": "k18", "matrix": [3, 1], "x": 0, "y": 3.5}, + {"label": "k19", "matrix": [3, 2], "x": 1, "y": 3.5}, {"label": "k20", "matrix": [3, 3], "x": 2, "y": 3.25}, - {"label": "k21", "matrix": [3, 4], "x": 4, "y": 3.25}, - {"label": "k22", "matrix": [3, 5], "x": 11, "y": 3.25}, - {"label": "k23", "matrix": [4, 4], "x": 13, "y": 3.25}, - {"label": "k44", "matrix": [10, 2], "x": 0, "y": 3.5}, - {"label": "k45", "matrix": [9, 1], "x": 1, "y": 3.5}, - {"label": "k46", "matrix": [9, 2], "x": 5, "y": 3.5}, - {"label": "k47", "matrix": [9, 3], "x": 10, "y": 3.5}, + {"label": "k21", "matrix": [3, 4], "x": 3, "y": 3}, + {"label": "k22", "matrix": [3, 5], "x": 4, "y": 3.25}, + {"label": "k23", "matrix": [4, 4], "x": 5, "y": 3.5}, + {"label": "k44", "matrix": [10, 2], "x": 10, "y": 3.5}, + {"label": "k45", "matrix": [9, 1], "x": 11, "y": 3.25}, + {"label": "k46", "matrix": [9, 2], "x": 12, "y": 3}, + {"label": "k47", "matrix": [9, 3], "x": 13, "y": 3.25}, {"label": "k48", "matrix": [9, 4], "x": 14, "y": 3.5}, {"label": "k49", "matrix": [9, 5], "x": 15, "y": 3.5}, {"label": "k24", "matrix": [5, 0], "x": 5, "y": 4.5}, From e3e587fc7491e56c77fecd0c5c91f0c10027f1a1 Mon Sep 17 00:00:00 2001 From: Alexei Robyn Date: Sun, 5 May 2024 01:38:32 +0000 Subject: [PATCH 101/125] Add support for Smart 68 keyboard (#23043) --- keyboards/smart68/info.json | 328 +++++++++++++++++++++ keyboards/smart68/keymaps/default/keymap.c | 55 ++++ keyboards/smart68/keymaps/default/rules.mk | 1 + keyboards/smart68/readme.md | 34 +++ keyboards/smart68/rules.mk | 1 + 5 files changed, 419 insertions(+) create mode 100644 keyboards/smart68/info.json create mode 100644 keyboards/smart68/keymaps/default/keymap.c create mode 100644 keyboards/smart68/keymaps/default/rules.mk create mode 100644 keyboards/smart68/readme.md create mode 100644 keyboards/smart68/rules.mk diff --git a/keyboards/smart68/info.json b/keyboards/smart68/info.json new file mode 100644 index 000000000000..f97c347ed511 --- /dev/null +++ b/keyboards/smart68/info.json @@ -0,0 +1,328 @@ +{ + "manufacturer": "DeeLonG", + "keyboard_name": "Smart 68", + "maintainer": "Shados", + "backlight": { + "pin": "B7" + }, + "bootloader": "atmel-dfu", + "bootmagic": { + "matrix": [3, 5] + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B2", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["F0", "F1", "E6", "C7", "C6", "B6", "D4", "B1", "B0", "B5", "B4", "D7", "D6", "B3", "F7"], + "rows": ["D0", "D1", "D2", "D3", "D5"] + }, + "processor": "atmega32u4", + "url": "https://web.archive.org/web/20180703134842/https://geekhack.org/index.php?topic=83442.0", + "usb": { + "device_version": "1.0.0", + "pid": "0x6868", + "vid": "0x444C" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all", + "LAYOUT_v1_a": "LAYOUT_all" + }, + "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, "w": 2}, + {"matrix": [0, 14], "x": 15, "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 13], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [3, 13], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.75, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4.25, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + {"matrix": [4, 6], "x": 5.5, "y": 5, "w": 5, "h": 0.5} + ] + }, + "LAYOUT_v1_b": { + "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, "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 13], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [3, 13], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.75, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4.25, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10.5, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + {"matrix": [4, 6], "x": 5.5, "y": 5, "w": 5, "h": 0.5} + ] + }, + "LAYOUT_v2_a": { + "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, "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 13], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [3, 13], "x": 15, "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, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + {"matrix": [4, 6], "x": 5.5, "y": 5, "w": 5, "h": 0.5} + ] + }, + "LAYOUT_v2_b": { + "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, "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": [1, 14], "x": 15, "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, "w": 2.25}, + {"matrix": [2, 13], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 14, "y": 3}, + {"matrix": [3, 13], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 3, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 11.5, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + {"matrix": [4, 6], "x": 5.5, "y": 5, "w": 5, "h": 0.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/smart68/keymaps/default/keymap.c b/keyboards/smart68/keymaps/default/keymap.c new file mode 100644 index 000000000000..fd92dc79012f --- /dev/null +++ b/keyboards/smart68/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +// Copyright 2024 Alexei Robyn (@Shados) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│` │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬───┼───┼───┤ + * │Ctrl │GUI │Alt │ │Alt │Ctrl│ ← │ ↓ │ → │ + * └─────┴────┴─────┴────────────────────────┴────┴────┴───┴───┴───┘ + * ┌───────────────────┐ + * │ Fn │ + * └───────────────────┘ + */ + [0] = 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_GRV, + 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_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, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, + MO(1) + ), + /* FN Layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Mut│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│QK_BOOT│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ ↑ │ │ │ │ │ │ │ │Psc│Slk│Pau│ Ins │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ ← │ ↓ │ → │ │ │ │ │ │ │ │ │BL_TOGG │Hom│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │VoU│End│ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │BL-│VoD│BL+│ + * └─────┴────┴─────┴────────────────────────┴────┴────┴───┴───┴───┘ + * ┌───────────────────┐ + * │ │ + * └───────────────────┘ + */ + [1] = LAYOUT( + KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_END, + _______, _______, _______, _______, _______, _______, BL_DOWN, KC_VOLD, BL_UP, + _______ + ), +}; diff --git a/keyboards/smart68/keymaps/default/rules.mk b/keyboards/smart68/keymaps/default/rules.mk new file mode 100644 index 000000000000..0288e8f5c1ad --- /dev/null +++ b/keyboards/smart68/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMMAND_ENABLE = yes diff --git a/keyboards/smart68/readme.md b/keyboards/smart68/readme.md new file mode 100644 index 000000000000..a8a7a5410f72 --- /dev/null +++ b/keyboards/smart68/readme.md @@ -0,0 +1,34 @@ +# Smart 68 + +![Smart 68 V1 and V2](https://i.imgur.com/Ed2e083h.jpg) +![Smart 68 front shot](https://i.imgur.com/0NgcWqyh.jpg) + +A 68% keyboard with hot-swappable switches & backlight LEDs, and a +front-mounted Fn key/bar using an Omron switch. + +* Keyboard Maintainer: [Shados](https://github.com/Shados) +* Hardware Supported: Smart 68 PCB +* Hardware Availability: [A 2016 Geekhack group buy](https://web.archive.org/web/20180703134842/https://geekhack.org/index.php?topic=83442.0) + +Make example for this keyboard (after setting up your build environment): + + make smart68:default + +Flashing example for this keyboard: + + make smart68: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 + +You can enter the bootloader in three different ways: + +1. **Bootmagic reset**: Hold down the key at (3,5) in the matrix (the 'B' key + in qwerty layouts) and plug in the keyboard. This will also work if the + board is still running its original TMK firmware. +2. **Physical reset button**: Briefly press the button on the back of the PCB. + This will also work if the board is still running its original TMK firmware. +3. **Keycode in layout**: Press the key mapped to `QK_BOOT` (Fn + Backspace, in + the default layout). This will *not* work if the board is still running its + original TMK firmware. diff --git a/keyboards/smart68/rules.mk b/keyboards/smart68/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/smart68/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 7fc552632eb41b031d9557fe317f71e43377dde7 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 5 May 2024 20:38:31 +1000 Subject: [PATCH 102/125] Add page for capabilties used by docs site. (#23428) --- docs/__capabilities.md | 257 +++++++++++++++++++++++++++++++++++++++++ docs/flashing.md | 2 +- docs/newbs.md | 2 +- 3 files changed, 259 insertions(+), 2 deletions(-) create mode 100644 docs/__capabilities.md diff --git a/docs/__capabilities.md b/docs/__capabilities.md new file mode 100644 index 000000000000..469da462eb1a --- /dev/null +++ b/docs/__capabilities.md @@ -0,0 +1,257 @@ +# Documentation Capabilities + +This page lays out the capabilities used by the QMK Firmware documentation, in order to aid future transitions to other page generators. Focuses mainly on things other than normal Markdown, as it's assumed that markdown generators should still function accordingly. + +## Overall capabilities + +Unrelated to styling, high-level tech. + +* I18n -- translations to other languages: [_langs.md](_langs.md) +* Sidebar -- listing of pages by category: [_summary.md](_summary.md) +* Title anchors -- `:id=some-anchor-name`, used for direct linking to sections + * Links to anchors: + * Style 1: [early initialization](platformdev_chibios_earlyinit.md?id=board-init) + * Style 2: [early initialization](platformdev_chibios_earlyinit.md#board-init) + * Links to anchors on the same page, i.e. [Emoji](#emoji) +* Specifying CNAME for root domain -- `docs.qmk.fm` +* Moved pages, see `index.html` +* Text search +* Footnotes [like this][1] + + + + + + +### Dividing lines + +--- + +
+ +
+ +### Images + +![QMK Color Wheel with HSV Values](https://i.imgur.com/vkYVo66.jpg) + +HSV Color Wheel + +### Lists + +Newlines with `
`: + +Line one
+Line two
+Line three + +Nested dotted: + +* The PR is complete and ready to merge +* GitHub checks for the PR are green whenever possible + * A "red" check may be disregarded by maintainers if the items flagged are unrelated to the change proposed in the PR + * Modifications to existing files should not need to add license headers to pass lint, for instance. + * If it's not directly related to your PR's functionality, prefer avoiding making a change. + +Nested dashed: + +- The PR is complete and ready to merge +- GitHub checks for the PR are green whenever possible + - A "red" check may be disregarded by maintainers if the items flagged are unrelated to the change proposed in the PR + - Modifications to existing files should not need to add license headers to pass lint, for instance. + - If it's not directly related to your PR's functionality, prefer avoiding making a change. + +Nested numbered: + +1. The PR is complete and ready to merge +1. GitHub checks for the PR are green whenever possible + 1. A "red" check may be disregarded by maintainers if the items flagged are unrelated to the change proposed in the PR + 1. Modifications to existing files should not need to add license headers to pass lint, for instance. + 1. If it's not directly related to your PR's functionality, prefer avoiding making a change. + +Nested mixed: + +1. Add it to the schema in `data/schemas/keyboards.jsonschema` +1. Add a mapping in `data/maps` +1. (optional and discouraged) Add code to extract/generate it to: + * `lib/python/qmk/info.py` + * `lib/python/qmk/cli/generate/config_h.py` + * `lib/python/qmk/cli/generate/rules_mk.py` + +### Emoji :id=emoji + +#### Direct: + +👍🎉 First off, thanks for taking the time to read this and contribute! 🎉👍 + +#### As colon-name-colon: + +:heavy_check_mark: : works and was tested + +:o: : does not apply + +:x: : not supported by MCU + +### XML Entities + +[`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← This is the organization folder, there's no `rules.mk` file + +1–4 + +Command+` + +## Styling + +### CSS-ish + +This is 150% of normal sizing, and bold! + + +### Tables + +| Column A | Column B | +|----------|----------| +| Left | Right | + +### Indented sections + +> Indent without any sort of marker + +?> Query, this? + +!> Notification, damnit! + +### Keyboard keys + +, + +Right Alt+Right Shift + +1. Click File > New > Makefile Project with Existing Code + +1. Click File > Preferences > > Settings + +1. Hit Ctrl-` (Grave) to bring up the terminal or go to View > Terminal (command `workbench.action.terminal.toggleTerminal`). A new terminal will be opened if there isn‘t one already. + + This should start the terminal in the workspace's folder (so the `qmk_firmware` folder), and then you can compile your keyboard. + + +### Code Blocks + +Inline code with tag: test + +Inline code with backticks: `test` + + This is preformatted + Indented by 4 spaces + The letters lined up + +```c +int c_code(void) { + return -1; +} +``` + +```makefile +ifeq ($(BUILD),) + CHUNDER_REQUIRED = yes +endif +``` + +```python +from pathlib import Path + +p = Path('/path/to/qmk_firmware') +``` + +```json +{ + "a": "b", + "c": 4, + "d": { + "e": [ + 0, 1, 2, 3 + ] + } +} +``` + +```diff + #undef RGBLIGHT_LED_COUNT ++#undef RGBLIGHT_EFFECT_STATIC_GRADIENT ++#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_LED_COUNT 12 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 +``` + +Indented code as part of a list: + +* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI) +* [Teensy Loader](https://www.pjrc.com/teensy/loader.html) +* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) / `:teensy` target in QMK (recommended command line) + ``` + teensy_loader_cli -v -mmcu= + ``` + + +### Sub/Superscript + +This is subscripted, apparently. + +This is superscripted, apparently. + +I2C + +T0H, T0L + +### Tabs + +Tabs are based on section headers, with `**` enclosing the tab title. + + + +#### ** Tab one ** + +Content one + + + +##### ** Nested one ** + +Nested content one + +##### ** Nested two ** + +Nested content two + + + +#### ** Tab two ** + +Content two + +#### ** Tab three ** + +Content three + + + +## Details sections + +Expandable: + +
+ Some summary text that shows up before expanding + +!> Embedded notification! + +This is some inner content. +
+ + [1]: https://en.wikipedia.org/wiki/Eclipse_(software) diff --git a/docs/flashing.md b/docs/flashing.md index 95b368041006..4867c20bec85 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -236,7 +236,7 @@ Flashing sequence: ## STM32/APM32 DFU -All STM32 and APM32 MCUs, except for F103 (see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted. +All USB-capable STM32 and APM32 MCUs, except for a small handful (such as STM32F103 -- see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted. To ensure compatibility with the STM32-DFU bootloader, make sure this block is present in your `rules.mk` (optionally with `apm32-dfu` instead): diff --git a/docs/newbs.md b/docs/newbs.md index 2763b2612272..b4d14947946e 100644 --- a/docs/newbs.md +++ b/docs/newbs.md @@ -7,7 +7,7 @@ QMK tries to put a lot of power into your hands by making easy things easy, and Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](https://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do. ?> **Is This Guide For Me?**
-If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead. +If the thought of programming intimidates you, please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead. ## Overview From dca7c3f86ff70a6a410fc86ad9961aa21512702a Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 6 May 2024 17:24:53 +1000 Subject: [PATCH 103/125] Reworked CI builds for `master`/`develop`. (#23182) --- .github/workflows/ci_build_major_branch.yml | 122 ++++++++++++ .../ci_build_major_branch_keymap.yml | 181 ++++++++++++++++++ 2 files changed, 303 insertions(+) create mode 100644 .github/workflows/ci_build_major_branch.yml create mode 100644 .github/workflows/ci_build_major_branch_keymap.yml diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml new file mode 100644 index 000000000000..608e266ce4b8 --- /dev/null +++ b/.github/workflows/ci_build_major_branch.yml @@ -0,0 +1,122 @@ +name: CI Build Major Branch + +permissions: + contents: read + actions: write + +on: + push: + branches: [master, develop] + workflow_dispatch: + inputs: + branch: + type: choice + description: "Branch to build" + options: [master, develop] + +env: + # https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits + # We've decreased it from 20 to 15 to allow for other GHA to run unimpeded + CONCURRENT_JOBS: 15 + +# Ensure we only have one build running at a time, cancelling any active builds if a new commit is pushed to the respective branch +concurrency: + group: ci_build-${{ github.event.inputs.branch || github.ref_name }} + cancel-in-progress: true + +jobs: + determine_concurrency: + name: "Determine concurrency" + if: github.repository == 'qmk/qmk_firmware' + runs-on: ubuntu-latest + container: ghcr.io/qmk/qmk_cli + + outputs: + slice_length: ${{ steps.generate_slice_length.outputs.slice_length }} + + steps: + - name: Install prerequisites + run: | + apt-get update + apt-get install -y jq + + - name: Disable safe.directory check + run: | + git config --global --add safe.directory '*' + + - name: Checkout QMK Firmware + uses: actions/checkout@v4 + + - name: Determine concurrency + id: generate_slice_length + run: | + target_count=$( { + qmk find -km default 2>/dev/null + qmk find -km via 2>/dev/null + } | sort | uniq | wc -l) + slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution as we're splitting default and via + echo "slice_length=$slice_length" >> $GITHUB_OUTPUT + + build_targets: + name: "Compile keymap ${{ matrix.keymap }}" + needs: determine_concurrency + strategy: + fail-fast: false + matrix: + keymap: [default, via] + uses: ./.github/workflows/ci_build_major_branch_keymap.yml + with: + branch: ${{ inputs.branch || github.ref_name }} + keymap: ${{ matrix.keymap }} + slice_length: ${{ needs.determine_concurrency.outputs.slice_length }} + + rollup_tasks: + name: "Housekeeping" + needs: build_targets + runs-on: ubuntu-latest + + steps: + - name: Download firmwares + uses: actions/download-artifact@v4 + with: + pattern: firmware-* + path: firmwares + merge-multiple: true + + - name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }} + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: qmk-ci + AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }} + AWS_REGION: nyc3 + AWS_S3_ENDPOINT: nyc3.digitaloceanspaces.com + SOURCE_DIR: firmwares + DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }} + + - name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest + uses: jakejarvis/s3-sync-action@master + with: + args: --acl public-read --follow-symlinks --delete + env: + AWS_S3_BUCKET: qmk-ci + AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }} + AWS_REGION: nyc3 + AWS_S3_ENDPOINT: nyc3.digitaloceanspaces.com + SOURCE_DIR: firmwares + DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest + + - name: Check if failure marker file exists + id: check_failure_marker + uses: andstor/file-existence-action@v3 + with: + files: firmwares/.failed + + - name: Fail build if needed + if: steps.check_failure_marker.outputs.exists == 'true' + run: | + # Exit with failure if the compilation stage failed + exit 1 diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml new file mode 100644 index 000000000000..f722f9f1069f --- /dev/null +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -0,0 +1,181 @@ +name: CI Build Major Branch Keymap + +permissions: + contents: read + actions: write + +on: + workflow_call: + inputs: + branch: + type: string + required: true + keymap: + type: string + required: true + slice_length: + type: string + required: true + +jobs: + generate_targets: + name: "Generate targets (${{ inputs.keymap }})" + runs-on: ubuntu-latest + container: ghcr.io/qmk/qmk_cli + + outputs: + targets: ${{ steps.generate_targets.outputs.targets }} + + steps: + - name: Install prerequisites + run: | + apt-get update + apt-get install -y jq + + - name: Disable safe.directory check + run: | + git config --global --add safe.directory '*' + + - name: Checkout QMK Firmware + uses: actions/checkout@v4 + + - name: Generate build targets + id: generate_targets + run: | + { # Intentionally use `shuf` here so that we share manufacturers across all build groups -- some have a lot of ARM-based boards which inherently take longer + counter=0 + echo -n '{' + qmk find -km ${{ inputs.keymap }} 2>/dev/null | sort | uniq | shuf | xargs -L${{ inputs.slice_length }} | while IFS=$'\n' read target ; do + if [ $counter -gt 0 ]; then + echo -n ',' + fi + counter=$((counter+1)) + printf "\"group %02d\":{" $counter + echo -n '"targets":"' + echo $target | tr ' ' '\n' | sort | uniq | xargs echo -n + echo -n '"}' + done + echo -n '}' + } | sed -e 's@\n@@g' > targets.json + + # Output the target keys as a variable + echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT + + - name: Upload targets json + uses: actions/upload-artifact@v4 + with: + name: targets-${{ inputs.keymap }} + path: targets.json + + build_targets: + name: "Compile ${{ matrix.target }} (${{ inputs.keymap }})" + needs: generate_targets + runs-on: ubuntu-latest + container: ghcr.io/qmk/qmk_cli + continue-on-error: true + + strategy: + matrix: + target: ${{ fromJson(needs.generate_targets.outputs.targets) }} + + steps: + - name: Install prerequisites + run: | + apt-get update + apt-get install -y jq + + - name: Disable safe.directory check + run: | + git config --global --add safe.directory '*' + + - name: Checkout QMK Firmware + uses: actions/checkout@v4 + + - name: Get target definitions + uses: actions/download-artifact@v4 + with: + name: targets-${{ inputs.keymap }} + path: . + + - name: Deploy submodules + run: | + qmk git-submodule -f + + - name: Dump targets + run: | + jq -r '.["${{ matrix.target }}"].targets' targets.json | tr ' ' '\n' | sort + + - name: Build targets + continue-on-error: true + run: | + export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) + qmk mass-compile -t -j $NCPUS -e DUMP_CI_METADATA=yes $(jq -r '.["${{ matrix.target }}"].targets' targets.json) || touch .failed + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: firmware-${{ inputs.keymap }}-${{ matrix.target }} + if-no-files-found: ignore + path: | + *.bin + *.hex + *.uf2 + .build/failed.* + .failed + + - name: Fail build if any group failed + run: | + # Exit with failure if the compilation stage failed + [ ! -f .failed ] || exit 1 + + repack_firmware: + if: always() + name: "Repack artifacts" + needs: build_targets + runs-on: ubuntu-latest + + steps: + - name: Checkout QMK Firmware + uses: actions/checkout@v4 + + - name: Download firmwares + uses: actions/download-artifact@v4 + with: + pattern: firmware-${{ inputs.keymap }}-* + path: . + merge-multiple: true + + - name: Upload all firmwares + uses: actions/upload-artifact@v4 + with: + name: firmware-${{ inputs.keymap }} + if-no-files-found: ignore + path: | + *.bin + *.hex + *.uf2 + .build/failed.* + .failed + + - name: Generate output logs + run: | + # Generate the step summary markdown + ./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY || true + # Truncate to a maximum of 1MB to deal with GitHub workflow limit + truncate --size='<960K' $GITHUB_STEP_SUMMARY || true + + - name: Delete temporary build artifacts + uses: geekyeggo/delete-artifact@v4 + with: + name: | + firmware-${{ inputs.keymap }}-* + targets-${{ inputs.keymap }} + + - name: 'CI Discord Notification' + if: always() + working-directory: util/ci/ + env: + DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} + run: | + python3 -m pip install -r requirements.txt + python3 ./discord-results.py --branch ${{ inputs.branch || github.ref_name }} --keymap ${{ inputs.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} From 834d03b57748c774a71ac957823b74f2aae1846c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 21:00:27 +0100 Subject: [PATCH 104/125] Bump geekyeggo/delete-artifact from 4 to 5 (#23674) Bumps [geekyeggo/delete-artifact](https://github.com/geekyeggo/delete-artifact) from 4 to 5. - [Release notes](https://github.com/geekyeggo/delete-artifact/releases) - [Changelog](https://github.com/GeekyEggo/delete-artifact/blob/main/CHANGELOG.md) - [Commits](https://github.com/geekyeggo/delete-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: geekyeggo/delete-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci_build_major_branch_keymap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index f722f9f1069f..c38d0458d7a3 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -165,7 +165,7 @@ jobs: truncate --size='<960K' $GITHUB_STEP_SUMMARY || true - name: Delete temporary build artifacts - uses: geekyeggo/delete-artifact@v4 + uses: geekyeggo/delete-artifact@v5 with: name: | firmware-${{ inputs.keymap }}-* From 02737307ff9bfa785aace33d32fc8fa620c2643b Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 7 May 2024 08:45:17 +1000 Subject: [PATCH 105/125] [CI] Allow secrets to propagate from parent to child workflow. (#23675) --- .github/workflows/ci_build_major_branch.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index 608e266ce4b8..2717e7cdcc21 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -69,6 +69,7 @@ jobs: branch: ${{ inputs.branch || github.ref_name }} keymap: ${{ matrix.keymap }} slice_length: ${{ needs.determine_concurrency.outputs.slice_length }} + secrets: inherit rollup_tasks: name: "Housekeeping" From a58906ceb3aedcc12b2c3e808f8f5a14a944d582 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 7 May 2024 12:23:56 +1000 Subject: [PATCH 106/125] [CI] Use existing repo variables instead (#23676) --- .github/workflows/ci_build_major_branch.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index 2717e7cdcc21..f1c586599a74 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -72,7 +72,7 @@ jobs: secrets: inherit rollup_tasks: - name: "Housekeeping" + name: "Consolidation" needs: build_targets runs-on: ubuntu-latest @@ -89,11 +89,11 @@ jobs: with: args: --acl public-read --follow-symlinks --delete env: - AWS_S3_BUCKET: qmk-ci + AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }} - AWS_REGION: nyc3 - AWS_S3_ENDPOINT: nyc3.digitaloceanspaces.com + AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }} + AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }} SOURCE_DIR: firmwares DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }} @@ -102,11 +102,11 @@ jobs: with: args: --acl public-read --follow-symlinks --delete env: - AWS_S3_BUCKET: qmk-ci + AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }} - AWS_REGION: nyc3 - AWS_S3_ENDPOINT: nyc3.digitaloceanspaces.com + AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }} + AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }} SOURCE_DIR: firmwares DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest From 69640365f81c23d189a1d2266b772b536049aa25 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 7 May 2024 19:02:16 +1000 Subject: [PATCH 107/125] [CI] Fail workflow if there were build failures (#23678) More whack-a-mole --- .github/workflows/ci_build_major_branch.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index f1c586599a74..77755ba71f41 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -117,7 +117,7 @@ jobs: files: firmwares/.failed - name: Fail build if needed - if: steps.check_failure_marker.outputs.exists == 'true' + if: steps.check_failure_marker.outputs.files_exists == 'true' run: | # Exit with failure if the compilation stage failed exit 1 From 16557f9975abf693675e2cc246f3d1b1f73faf96 Mon Sep 17 00:00:00 2001 From: Alexandr <37986872+sannoization@users.noreply.github.com> Date: Tue, 7 May 2024 14:51:46 +0300 Subject: [PATCH 108/125] add example for c2json command (#23061) --- docs/cli_commands.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/cli_commands.md b/docs/cli_commands.md index cf174949afb1..685fad43b73a 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -322,6 +322,18 @@ Creates a keymap.json from a keymap.c. qmk c2json -km KEYMAP -kb KEYBOARD [-q] [--no-cpp] [-o OUTPUT] filename ``` +**Examples**: + +``` +qmk c2json -km default -kb handwired/dactyl_promicro +``` + +or with filename: + +``` +qmk c2json keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c +``` + ## `qmk lint` Checks over a keyboard and/or keymap and highlights common errors, problems, and anti-patterns. From af4a806e3f1d338402f2ec828120ebc3ba43b3c8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 11 May 2024 19:03:16 +1000 Subject: [PATCH 109/125] `qmk find`: Fix typo in filter logging (#23693) --- lib/python/qmk/search.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/python/qmk/search.py b/lib/python/qmk/search.py index 33550a3db274..2afb3033fcca 100644 --- a/lib/python/qmk/search.py +++ b/lib/python/qmk/search.py @@ -222,8 +222,8 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str continue valid_keymaps = filter(filter_class.apply, valid_keymaps) - value_str = f", {{fg_cyan}}{value}{{fg_reset}})" if value is not None else "" - cli.log.info(f'Filtering on condition: {{fg_green}}{func_name}{{fg_reset}}({{fg_cyan}}{key}{{fg_reset}}{value_str}...') + value_str = f", {{fg_cyan}}{value}{{fg_reset}}" if value is not None else "" + cli.log.info(f'Filtering on condition: {{fg_green}}{func_name}{{fg_reset}}({{fg_cyan}}{key}{{fg_reset}}{value_str})...') elif equals_match is not None: key = equals_match.group('key') From a8e9d4f2078795f1f51a06c4fb88cff3c475fca2 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 11 May 2024 18:26:11 +0100 Subject: [PATCH 110/125] Add embed to docs capabilities (#23698) --- docs/__capabilities.md | 4 ++++ docs/__capabilities_inc.md | 1 + 2 files changed, 5 insertions(+) create mode 100644 docs/__capabilities_inc.md diff --git a/docs/__capabilities.md b/docs/__capabilities.md index 469da462eb1a..71183ed76087 100644 --- a/docs/__capabilities.md +++ b/docs/__capabilities.md @@ -255,3 +255,7 @@ This is some inner content. [1]: https://en.wikipedia.org/wiki/Eclipse_(software) + +## Embed + +[example embed](__capabilities_inc.md ':include') diff --git a/docs/__capabilities_inc.md b/docs/__capabilities_inc.md new file mode 100644 index 000000000000..d2cf010d36ff --- /dev/null +++ b/docs/__capabilities_inc.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet. From d09ea04fa1b42b362a81218785ff41d3004df081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 12 May 2024 07:33:01 +0800 Subject: [PATCH 111/125] [Doc] Revise squeezing AVR (#23665) * Note AVR's flash space * Include guards for magic functions * Remove mention of silicon shortage * Demote an unavailable controller --- docs/squeezing_avr.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md index c3b9e5595e11..3f014cafb7e6 100644 --- a/docs/squeezing_avr.md +++ b/docs/squeezing_avr.md @@ -2,7 +2,7 @@ AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints. -However, if you need to reduce the compiled size of your firmware, there are a number of options to do so. +However, if you need to reduce the compiled size of your firmware to fit the controller's limited flash size, there are a number of options to do so. ## `rules.mk` Settings First and foremost is enabling link time optimization. To do so, add this to your rules.mk: @@ -91,15 +91,19 @@ Or if you're not using layers at all, you can outright remove the functionality There are two `__attribute__ ((weak))` placeholder functions available to customize magic keycodes. If you are not using that feature to swap keycodes, such as backslash with backspace, add the following to your `keymap.c` or user space code: ```c +#ifndef MAGIC_ENABLE uint16_t keycode_config(uint16_t keycode) { return keycode; } +#endif ``` Likewise, if you are not using magic keycodes to swap modifiers, such as Control with GUI, add the following to your `keymap.c` or user space code: ```c +#ifndef MAGIC_ENABLE uint8_t mod_config(uint8_t mod) { return mod; } +#endif ``` Both of them will overwrite the placeholder functions with a simple return statement to reduce firmware size. @@ -197,11 +201,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that # Final Thoughts -If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst. - -- Drashna - -That said, there are a number of Pro Micro replacements with ARM controllers: -* [Proton C](https://qmk.fm/proton-c/) (out of stock) +If you've done all of this, and your firmware is still too large, then it is time to consider making the switch to ARM. There are a number of Pro Micro replacements with an ARM controller: * [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA) * [STeMCell](https://github.com/megamind4089/STeMCell) (Open Source, DIY/PCBA) * [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040) @@ -212,6 +212,7 @@ That said, there are a number of Pro Micro replacements with ARM controllers: * [Liatris](https://splitkb.com/products/liatris) * [Imera](https://splitkb.com/products/imera) * [Michi](https://github.com/ci-bus/michi-promicro-rp2040) +* [Proton C](https://qmk.fm/proton-c/) (out of stock) There are other, non-Pro Micro compatible boards out there. The most popular being: * [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD) From 8c05254a68f291a374eef3ac4174914a196c726a Mon Sep 17 00:00:00 2001 From: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com> Date: Mon, 13 May 2024 19:33:25 +1000 Subject: [PATCH 112/125] [Bug][Keyboard] Fix encoder resolution issue with Binepad BNK9 (#23707) --- keyboards/binepad/bnk9/config.h | 2 -- keyboards/binepad/bnk9/info.json | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/keyboards/binepad/bnk9/config.h b/keyboards/binepad/bnk9/config.h index c774a0f2b096..1d553e3fea4c 100644 --- a/keyboards/binepad/bnk9/config.h +++ b/keyboards/binepad/bnk9/config.h @@ -3,8 +3,6 @@ #pragma once -#define ENCODER_DEFAULT_POS 0x3 // enable 1:1 resolution - // Default PIO0 cases flickering in this board. Setting to PIO1 resolves this issue. #define WS2812_PIO_USE_PIO1 diff --git a/keyboards/binepad/bnk9/info.json b/keyboards/binepad/bnk9/info.json index 1f3b7cb7b0f0..89e25f9d063a 100644 --- a/keyboards/binepad/bnk9/info.json +++ b/keyboards/binepad/bnk9/info.json @@ -8,7 +8,7 @@ "diode_direction": "COL2ROW", "encoder": { "rotary": [ - {"pin_a": "GP13", "pin_b": "GP14"} + {"pin_a": "GP13", "pin_b": "GP14", "resolution": 2} ] }, "features": { @@ -83,4 +83,4 @@ ] } } -} \ No newline at end of file +} From 6d222b71c6de320097e3dd25ef3f2783da0d638f Mon Sep 17 00:00:00 2001 From: leep-frog <66687468+leep-frog@users.noreply.github.com> Date: Mon, 13 May 2024 13:15:52 -0400 Subject: [PATCH 113/125] Add housekeeping execution to unit tests (#22999) --- tests/housekeeping/config.h | 19 +++++++ tests/housekeeping/test.mk | 18 +++++++ tests/housekeeping/test_housekeeping.cpp | 68 ++++++++++++++++++++++++ tests/test_common/test_fixture.cpp | 4 +- 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 tests/housekeeping/config.h create mode 100644 tests/housekeeping/test.mk create mode 100644 tests/housekeeping/test_housekeeping.cpp diff --git a/tests/housekeeping/config.h b/tests/housekeeping/config.h new file mode 100644 index 000000000000..bf1f8cd27fb1 --- /dev/null +++ b/tests/housekeeping/config.h @@ -0,0 +1,19 @@ +/* Copyright 2024 leep-frog + * + * 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 "test_common.h" diff --git a/tests/housekeeping/test.mk b/tests/housekeeping/test.mk new file mode 100644 index 000000000000..bf46b735ce88 --- /dev/null +++ b/tests/housekeeping/test.mk @@ -0,0 +1,18 @@ +# Copyright 2024 leep-frog +# +# 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 . + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/housekeeping/test_housekeeping.cpp b/tests/housekeeping/test_housekeeping.cpp new file mode 100644 index 000000000000..6f1e6a62841d --- /dev/null +++ b/tests/housekeeping/test_housekeeping.cpp @@ -0,0 +1,68 @@ +/* Copyright 2024 leep-frog + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_keymap_key.hpp" + +using testing::_; + +class HousekeepingMock { + public: + virtual ~HousekeepingMock() {} + + // mock methods + MOCK_METHOD0(housekeeping_task_kb, void(void)); + MOCK_METHOD0(housekeeping_task_user, void(void)); +}; + +class Housekeeping : public TestFixture { + public: + Housekeeping() { + _housekeepingMock.reset(new ::testing::NiceMock()); + } + virtual ~Housekeeping() { + _housekeepingMock.reset(); + } + + static std::unique_ptr _housekeepingMock; +}; + +std::unique_ptr Housekeeping::_housekeepingMock; + +extern "C" { +void housekeeping_task_kb(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_kb(); + } +} + +void housekeeping_task_user(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_user(); + } +} +} + +TEST_F(Housekeeping, Works) { + TestDriver driver; + + EXPECT_CALL(*_housekeepingMock, housekeeping_task_kb()).Times(1); + EXPECT_CALL(*_housekeepingMock, housekeeping_task_user()).Times(1); + run_one_scan_loop(); +} diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp index 72763d0bc08c..3cfb2cb4c292 100644 --- a/tests/test_common/test_fixture.cpp +++ b/tests/test_common/test_fixture.cpp @@ -58,7 +58,8 @@ void TestFixture::TearDownTestCase() {} TestFixture::TestFixture() { m_this = this; timer_clear(); - test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &(keyrecord_t){}) << "ms" << std::endl; + keyrecord_t empty_keyrecord = {0}; + test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &empty_keyrecord) << "ms" << std::endl; } TestFixture::~TestFixture() { @@ -175,6 +176,7 @@ void TestFixture::idle_for(unsigned time) { test_logger.trace() << +time << " keyboard task " << (time > 1 ? "loops" : "loop") << std::endl; for (unsigned i = 0; i < time; i++) { keyboard_task(); + housekeeping_task(); advance_time(1); } } From fcbbaf448569679323b6533e1d441385e3a0fa7d Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 13 May 2024 20:20:47 +0200 Subject: [PATCH 114/125] Fix for RGB color override and brightness for EC Type K (#23703) Fix for RGB color override and brightness --- keyboards/cipulot/ec_typek/config.h | 2 +- keyboards/cipulot/ec_typek/ec_typek.c | 9 +++++---- keyboards/cipulot/ec_typek/info.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/keyboards/cipulot/ec_typek/config.h b/keyboards/cipulot/ec_typek/config.h index a6619c600c8b..1fad97e71173 100644 --- a/keyboards/cipulot/ec_typek/config.h +++ b/keyboards/cipulot/ec_typek/config.h @@ -73,7 +73,7 @@ #define WS2812_DMA_CHANNEL 6 #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM1_UP -#define RGBLIGHT_DEFAULT_VAL 200 +#define RGBLIGHT_DEFAULT_VAL 175 #define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 5) #define NUM_INDICATOR_INDEX 2 diff --git a/keyboards/cipulot/ec_typek/ec_typek.c b/keyboards/cipulot/ec_typek/ec_typek.c index 035c90303ca5..3d128d4cdc59 100644 --- a/keyboards/cipulot/ec_typek/ec_typek.c +++ b/keyboards/cipulot/ec_typek/ec_typek.c @@ -35,8 +35,8 @@ void eeconfig_init_kb(void) { eeprom_ec_config.mode_0_actuation_threshold = DEFAULT_MODE_0_ACTUATION_LEVEL; eeprom_ec_config.mode_0_release_threshold = DEFAULT_MODE_0_RELEASE_LEVEL; eeprom_ec_config.mode_1_initial_deadzone_offset = DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET; - eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; - eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; + eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; + eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; for (uint8_t row = 0; row < MATRIX_ROWS; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { @@ -59,8 +59,8 @@ void keyboard_post_init_kb(void) { ec_config.mode_0_actuation_threshold = eeprom_ec_config.mode_0_actuation_threshold; ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; ec_config.mode_1_initial_deadzone_offset = eeprom_ec_config.mode_1_initial_deadzone_offset; - ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; - ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; + ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; + ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; ec_config.bottoming_calibration = false; for (uint8_t row = 0; row < MATRIX_ROWS; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { @@ -115,5 +115,6 @@ bool indicators_callback(void) { else sethsv(0, 0, 0, (rgb_led_t *)&led[SCROLL_INDICATOR_INDEX]); + rgblight_set(); return true; } diff --git a/keyboards/cipulot/ec_typek/info.json b/keyboards/cipulot/ec_typek/info.json index e4642ee55536..be8c6d027017 100644 --- a/keyboards/cipulot/ec_typek/info.json +++ b/keyboards/cipulot/ec_typek/info.json @@ -42,7 +42,7 @@ }, "led_count": 69, "led_map": [0, 1, 2, 3, 4, 5, 66, 67, 68, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], - "max_brightness": 200 + "max_brightness": 175 }, "usb": { "device_version": "0.0.1", From 501f9886664d6f41fab09733f038851cddf699f0 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 15 May 2024 11:31:14 +1000 Subject: [PATCH 115/125] [CLI] Fixup return code for `qmk userspace-compile`. (#23720) --- lib/python/qmk/cli/userspace/compile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/userspace/compile.py b/lib/python/qmk/cli/userspace/compile.py index 0a42dd5bf5bf..fb320a16f0d6 100644 --- a/lib/python/qmk/cli/userspace/compile.py +++ b/lib/python/qmk/cli/userspace/compile.py @@ -35,4 +35,4 @@ def userspace_compile(cli): if len(keyboard_keymap_targets) > 0: build_targets.extend(search_keymap_targets(keyboard_keymap_targets)) - mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, **build_environment(cli.args.env)) + return mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, **build_environment(cli.args.env)) From eb5172f4b5b1589d83a0a4c63ad40340d68da673 Mon Sep 17 00:00:00 2001 From: Vertex-kb <102476474+Vertex-kb@users.noreply.github.com> Date: Wed, 15 May 2024 12:06:17 +0800 Subject: [PATCH 116/125] [Keyboard] Add cycle7 (#23290) * Add files via upload * Update keyboards/vertex/cycle7/readme.md Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/mcuconf.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/halconf.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/config.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Add files via upload * Update info.json * Add files via upload * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland --------- Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: Duncan Sutherland --- keyboards/vertex/cycle7/config.h | 19 + keyboards/vertex/cycle7/halconf.h | 21 + keyboards/vertex/cycle7/info.json | 739 ++++++++++++++++++ .../vertex/cycle7/keymaps/default/keymap.c | 27 + keyboards/vertex/cycle7/keymaps/via/keymap.c | 27 + keyboards/vertex/cycle7/keymaps/via/rules.mk | 2 + keyboards/vertex/cycle7/mcuconf.h | 22 + keyboards/vertex/cycle7/readme.md | 25 + keyboards/vertex/cycle7/rules.mk | 1 + 9 files changed, 883 insertions(+) create mode 100644 keyboards/vertex/cycle7/config.h create mode 100644 keyboards/vertex/cycle7/halconf.h create mode 100644 keyboards/vertex/cycle7/info.json create mode 100644 keyboards/vertex/cycle7/keymaps/default/keymap.c create mode 100644 keyboards/vertex/cycle7/keymaps/via/keymap.c create mode 100644 keyboards/vertex/cycle7/keymaps/via/rules.mk create mode 100644 keyboards/vertex/cycle7/mcuconf.h create mode 100644 keyboards/vertex/cycle7/readme.md create mode 100644 keyboards/vertex/cycle7/rules.mk diff --git a/keyboards/vertex/cycle7/config.h b/keyboards/vertex/cycle7/config.h new file mode 100644 index 000000000000..4b316ce63042 --- /dev/null +++ b/keyboards/vertex/cycle7/config.h @@ -0,0 +1,19 @@ +/* Copyright 2022 Eason + +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_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 5 diff --git a/keyboards/vertex/cycle7/halconf.h b/keyboards/vertex/cycle7/halconf.h new file mode 100644 index 000000000000..e6258a974c85 --- /dev/null +++ b/keyboards/vertex/cycle7/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 Eason + * + * 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 + + #include_next diff --git a/keyboards/vertex/cycle7/info.json b/keyboards/vertex/cycle7/info.json new file mode 100644 index 000000000000..d9b2f3016848 --- /dev/null +++ b/keyboards/vertex/cycle7/info.json @@ -0,0 +1,739 @@ +{ + "keyboard_name": "Cycle7", + "manufacturer": "vertex", + "maintainer": "Eason", + "usb": { + "vid": "0x9A94", + "pid": "0x9F70", + "device_version": "0.0.1", + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 1, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "knight": true, + "christmas": true, + "static_gradient": true, + "rgb_test": true, + "alternating": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "matrix_pins": { + "rows": [ "A8", "A9", "A10", "B3", "A15"], + "cols": [ "A3", "A2", "A1", "A0", "C15", "C14", "B9", "B8", "B7", "B6", "A7", "A6", "A5", "A4", "B5", "B4"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F103", + "bootloader": "uf2boot", + "community_layouts": [ + "tkl_nofrow_ansi", + "tkl_nofrow_iso" + ], + "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": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 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": [3, 15], "x": 16.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, 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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_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": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.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, 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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + +] +}, + "LAYOUT_tkl_nofrow_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": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 12], "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, 15], "x": 16.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, 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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_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, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 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": [3, 15], "x": 16.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, 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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_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": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 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": [3, 15], "x": 16.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, 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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_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": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 12], "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, 15], "x": 16.25, "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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_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, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 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": [3, 15], "x": 16.25, "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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_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": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.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": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.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, 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": [3, 15], "x": 16.25, "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}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + } + } +} diff --git a/keyboards/vertex/cycle7/keymaps/default/keymap.c b/keyboards/vertex/cycle7/keymaps/default/keymap.c new file mode 100644 index 000000000000..c5f7e8699b3f --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * 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_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_1, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/vertex/cycle7/keymaps/via/keymap.c b/keyboards/vertex/cycle7/keymaps/via/keymap.c new file mode 100644 index 000000000000..c5f7e8699b3f --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * 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_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_1, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/vertex/cycle7/keymaps/via/rules.mk b/keyboards/vertex/cycle7/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/vertex/cycle7/mcuconf.h b/keyboards/vertex/cycle7/mcuconf.h new file mode 100644 index 000000000000..45bdcba17407 --- /dev/null +++ b/keyboards/vertex/cycle7/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2022 Eason + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/vertex/cycle7/readme.md b/keyboards/vertex/cycle7/readme.md new file mode 100644 index 000000000000..ad36741dedc7 --- /dev/null +++ b/keyboards/vertex/cycle7/readme.md @@ -0,0 +1,25 @@ +# Cycle7 + +![Cycle7](https://i.imgur.com/v5d8D7h.png) + +* A customizable hotswap 70% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: Cycle7 PCB +* Hardware Availability: [EASON](https://github.com/EasonQian1) + +Make example for this keyboard (after setting up your build environment): + + make vertex/cycle7:default + +Flashing example for this keyboard: + + make vertex/cycle7: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 ESC in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/vertex/cycle7/rules.mk b/keyboards/vertex/cycle7/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/vertex/cycle7/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 340be4bae34d35137b65f3c303f3091ede3c8938 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 17 May 2024 00:06:19 +0100 Subject: [PATCH 117/125] Resolve home directory in userspace config (#23730) --- lib/python/qmk/userspace.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/python/qmk/userspace.py b/lib/python/qmk/userspace.py index 7e4cb847c80d..1e5823b22919 100644 --- a/lib/python/qmk/userspace.py +++ b/lib/python/qmk/userspace.py @@ -12,29 +12,29 @@ def qmk_userspace_paths(): - test_dirs = {} + test_dirs = set() # If we're already in a directory with a qmk.json and a keyboards or layouts directory, interpret it as userspace if environ.get('ORIG_CWD') is not None: current_dir = Path(environ['ORIG_CWD']) while len(current_dir.parts) > 1: if (current_dir / 'qmk.json').is_file(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) current_dir = current_dir.parent # If we have a QMK_USERSPACE environment variable, use that if environ.get('QMK_USERSPACE') is not None: - current_dir = Path(environ['QMK_USERSPACE']) + current_dir = Path(environ['QMK_USERSPACE']).expanduser() if current_dir.is_dir(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) # If someone has configured a directory, use that if cli.config.user.overlay_dir is not None: - current_dir = Path(cli.config.user.overlay_dir) + current_dir = Path(cli.config.user.overlay_dir).expanduser().resolve() if current_dir.is_dir(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) - return list(test_dirs.keys()) + return list(test_dirs) def qmk_userspace_validate(path): From 47bc02b2ff84c9a35b8f778a8a1012f737372eea Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Fri, 17 May 2024 22:59:45 +0100 Subject: [PATCH 118/125] Force CPI update using timer when using split pointing. (#23545) --- quantum/split_common/transactions.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c index 33bc9e9f575a..2bebd2757dae 100644 --- a/quantum/split_common/transactions.c +++ b/quantum/split_common/transactions.c @@ -710,16 +710,17 @@ static bool pointing_handlers_master(matrix_row_t master_matrix[], matrix_row_t return true; } # endif - static uint32_t last_update = 0; - static uint16_t last_cpi = 0; + static uint32_t last_update = 0; + static uint32_t last_cpi_update = 0; + static uint16_t last_cpi = 0; report_mouse_t temp_state; uint16_t temp_cpi; bool okay = read_if_checksum_mismatch(GET_POINTING_CHECKSUM, GET_POINTING_DATA, &last_update, &temp_state, &split_shmem->pointing.report, sizeof(temp_state)); if (okay) pointing_device_set_shared_report(temp_state); temp_cpi = pointing_device_get_shared_cpi(); - if (temp_cpi && last_cpi != temp_cpi) { + if (temp_cpi) { split_shmem->pointing.cpi = temp_cpi; - okay = transport_write(PUT_POINTING_CPI, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi)); + okay = send_if_condition(PUT_POINTING_CPI, &last_cpi_update, last_cpi != temp_cpi, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi)); if (okay) { last_cpi = temp_cpi; } From 8f2085421e60fe1ac7ebc2c9b0fc7047daaaa1b5 Mon Sep 17 00:00:00 2001 From: Danny Date: Sat, 18 May 2024 13:51:02 -0400 Subject: [PATCH 119/125] [Keyboard] Add Irispad (#23724) * Add Irispad * Fix x positions for RGB LEDs * Add encoder/bootmagic settings in info.json and run format-json * Add missing info.json * Fix README formatting --- keyboards/keebio/irispad/info.json | 8 + .../irispad/keymaps/default/keymap.json | 43 +++++ .../keebio/irispad/keymaps/via/keymap.json | 43 +++++ keyboards/keebio/irispad/readme.md | 21 +++ keyboards/keebio/irispad/rev8/config.h | 11 ++ keyboards/keebio/irispad/rev8/info.json | 151 ++++++++++++++++++ keyboards/keebio/irispad/rev8/rules.mk | 1 + 7 files changed, 278 insertions(+) create mode 100644 keyboards/keebio/irispad/info.json create mode 100644 keyboards/keebio/irispad/keymaps/default/keymap.json create mode 100644 keyboards/keebio/irispad/keymaps/via/keymap.json create mode 100644 keyboards/keebio/irispad/readme.md create mode 100644 keyboards/keebio/irispad/rev8/config.h create mode 100644 keyboards/keebio/irispad/rev8/info.json create mode 100644 keyboards/keebio/irispad/rev8/rules.mk diff --git a/keyboards/keebio/irispad/info.json b/keyboards/keebio/irispad/info.json new file mode 100644 index 000000000000..669038aff1fe --- /dev/null +++ b/keyboards/keebio/irispad/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "Keebio", + "url": "https://keeb.io", + "maintainer": "Keebio", + "usb": { + "vid": "0xCB10" + } +} diff --git a/keyboards/keebio/irispad/keymaps/default/keymap.json b/keyboards/keebio/irispad/keymaps/default/keymap.json new file mode 100644 index 000000000000..fd0dc3bb5eef --- /dev/null +++ b/keyboards/keebio/irispad/keymaps/default/keymap.json @@ -0,0 +1,43 @@ +{ + "config": { "features": {"encoder_map": true, "tri_layer": true} }, + "keyboard": "keebio/irispad", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "QK_GESC", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , + "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , + "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "TL_UPPR", + "KC_LGUI", "TL_LOWR", "KC_ENT" + ], + [ + "KC_TILD", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_GRV" , "_______", "KC_UP" , "_______", "QK_BOOT", "_______", + "KC_DEL" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "KC_LBRC", + "RGB_MOD", "EE_CLR" , "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", + "_______", "_______", "KC_DEL" + ], + [ + "KC_F6" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , + "KC_F12", "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", + "_______", "_______", "_______" + ] + ], + "encoders": [ + [ + {"ccw": "KC_PGUP", "cw": "KC_PGDN"}, + {"ccw": "KC_VOLD", "cw": "KC_VOLU"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ] + ] +} diff --git a/keyboards/keebio/irispad/keymaps/via/keymap.json b/keyboards/keebio/irispad/keymaps/via/keymap.json new file mode 100644 index 000000000000..97fc085b92ea --- /dev/null +++ b/keyboards/keebio/irispad/keymaps/via/keymap.json @@ -0,0 +1,43 @@ +{ + "config": { "features": {"encoder_map": true, "via": true} }, + "keyboard": "keebio/irispad", + "keymap": "via", + "layout": "LAYOUT", + "layers": [ + [ + "QK_GESC", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , + "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , + "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "TL_UPPR", + "KC_LGUI", "TL_LOWR", "KC_ENT" + ], + [ + "KC_TILD", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_GRV" , "_______", "KC_UP" , "_______", "QK_BOOT", "_______", + "KC_DEL" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "KC_LBRC", + "RGB_MOD", "EE_CLR" , "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", + "_______", "_______", "KC_DEL" + ], + [ + "KC_F6" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , + "KC_F12", "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", + "_______", "_______", "_______" + ] + ], + "encoders": [ + [ + {"ccw": "KC_PGUP", "cw": "KC_PGDN"}, + {"ccw": "KC_VOLD", "cw": "KC_VOLU"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ] + ] +} diff --git a/keyboards/keebio/irispad/readme.md b/keyboards/keebio/irispad/readme.md new file mode 100644 index 000000000000..28e0334eed85 --- /dev/null +++ b/keyboards/keebio/irispad/readme.md @@ -0,0 +1,21 @@ +# Irispad + +An ergonomic gamepad based off of the Iris and sold by Keebio. [More info at Keebio](https://keeb.io). + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Supported: RP2040 +* Hardware Availability: [Keebio](https://keeb.io) + +Make example for this keyboard (after setting up your build environment): + + make keebio/irispad/rev8:default + +Example of flashing this keyboard: + + make keebio/irispad/rev8:default:flash + +See [build environment setup](https://docs.qmk.fm/#/newbs_getting_started) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + +A build guide for this keyboard can be found here: [Iris Build Guide](https://docs.keeb.io/iris-rev6-build-guide) + +Note: The Irispad PCB is a repurposed Iris Rev. 8 PCB from a batch that had all of the diodes flipped, so if you would like to use a regular Iris Rev. 8 PCB, you will need to change `ROW2COL` to `COL2ROW` in `keyboard.json`. diff --git a/keyboards/keebio/irispad/rev8/config.h b/keyboards/keebio/irispad/rev8/config.h new file mode 100644 index 000000000000..c0407f20bbb6 --- /dev/null +++ b/keyboards/keebio/irispad/rev8/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Danny Nguyen (danny@keeb.io) +// 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 I2C_DRIVER I2CD2 +#define I2C1_SDA_PIN GP10 +#define I2C1_SCL_PIN GP11 diff --git a/keyboards/keebio/irispad/rev8/info.json b/keyboards/keebio/irispad/rev8/info.json new file mode 100644 index 000000000000..9845ebc9fd9e --- /dev/null +++ b/keyboards/keebio/irispad/rev8/info.json @@ -0,0 +1,151 @@ +{ + "keyboard_name": "Irispad Rev. 8", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "GP14", "pin_b": "GP15"}, + {"pin_a": "GP26", "pin_b": "GP25"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP29", "GP27", "GP6", "GP5"], + "rows": ["GP0", "GP1", "GP7", "GP16", "GP28"] + }, + "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, 0], "x": 0, "y": 5, "flags": 4}, + {"x": 18, "y": 5, "flags": 2}, + {"matrix": [0, 1], "x": 37, "y": 5, "flags": 4}, + {"matrix": [0, 2], "x": 76, "y": 2, "flags": 4}, + {"x": 91, "y": 1, "flags": 2}, + {"matrix": [0, 3], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 146, "y": 5, "flags": 4}, + {"x": 165, "y": 3, "flags": 2}, + {"matrix": [0, 5], "x": 183, "y": 3, "flags": 4}, + {"matrix": [1, 5], "x": 183, "y": 17, "flags": 4}, + {"matrix": [1, 4], "x": 137, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 110, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 73, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 37, "y": 18, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 18, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 37, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 73, "y": 28, "flags": 4}, + {"matrix": [2, 3], "x": 110, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 137, "y": 28, "flags": 4}, + {"matrix": [2, 5], "x": 183, "y": 30, "flags": 4}, + {"matrix": [3, 5], "x": 183, "y": 43, "flags": 4}, + {"matrix": [3, 4], "x": 146, "y": 42, "flags": 4}, + {"matrix": [3, 3], "x": 110, "y": 40, "flags": 4}, + {"x": 91, "y": 50, "flags": 2}, + {"matrix": [3, 2], "x": 73, "y": 42, "flags": 4}, + {"matrix": [3, 1], "x": 37, "y": 45, "flags": 4}, + {"x": 18, "y": 43, "flags": 2}, + {"matrix": [3, 0], "x": 0, "y": 45, "flags": 4}, + {"matrix": [4, 5], "x": 224, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 206, "y": 64, "flags": 4}, + {"x": 183, "y": 58, "flags": 2}, + {"matrix": [4, 3], "x": 165, "y": 58, "flags": 4}, + {"matrix": [4, 2], "x": 128, "y": 47, "flags": 4} + ], + "max_brightness": 180, + "sleep": true + }, + "usb": { + "device_version": "8.0.0", + "pid": "0x8356" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP9" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.375}, + {"matrix": [0, 1], "x": 1, "y": 0.375}, + {"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": [1, 0], "x": 0, "y": 1.375}, + {"matrix": [1, 1], "x": 1, "y": 1.375}, + {"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": [2, 0], "x": 0, "y": 2.375}, + {"matrix": [2, 1], "x": 1, "y": 2.375}, + {"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": [3, 0], "x": 0, "y": 3.375}, + {"matrix": [3, 1], "x": 1, "y": 3.375}, + {"matrix": [3, 2], "x": 2, "y": 3.125}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3.125}, + {"matrix": [3, 5], "x": 5, "y": 3.25}, + {"matrix": [4, 5], "x": 6.15, "y": 3.75}, + {"matrix": [4, 2], "x": 3.5, "y": 4.25}, + {"matrix": [4, 3], "x": 4.5, "y": 4.375}, + {"matrix": [4, 4], "x": 5.6, "y": 4.75} + ] + } + } +} diff --git a/keyboards/keebio/irispad/rev8/rules.mk b/keyboards/keebio/irispad/rev8/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/keebio/irispad/rev8/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From d0ac04a841a11bd51d3bda73c989724289ddae0f Mon Sep 17 00:00:00 2001 From: c0ldbru Date: Sat, 18 May 2024 13:52:24 -0400 Subject: [PATCH 120/125] [Keyboard] Add h4ckb0ard (#23717) * adds h4ckb0ard * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update info.json updating flags to indicate backlighting * Update info.json reduces max brightness to 100 * Delete keyboards/rot13labs/h4ckb0ard/config.h removes this since its not needed anymore * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c Co-authored-by: jack <0x6a73@protonmail.com> --------- Co-authored-by: c0ldbru Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/rot13labs/h4ckb0ard/info.json | 159 ++++++++++++++++++ .../h4ckb0ard/keymaps/default/keymap.c | 45 +++++ keyboards/rot13labs/h4ckb0ard/readme.md | 19 +++ keyboards/rot13labs/h4ckb0ard/rules.mk | 1 + 4 files changed, 224 insertions(+) create mode 100644 keyboards/rot13labs/h4ckb0ard/info.json create mode 100755 keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c create mode 100644 keyboards/rot13labs/h4ckb0ard/readme.md create mode 100644 keyboards/rot13labs/h4ckb0ard/rules.mk diff --git a/keyboards/rot13labs/h4ckb0ard/info.json b/keyboards/rot13labs/h4ckb0ard/info.json new file mode 100644 index 000000000000..0ffe5be40de9 --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/info.json @@ -0,0 +1,159 @@ +{ + "manufacturer": "rot13labs", + "keyboard_name": "H4CKB0ARD", + "maintainer": "c0ldbru", + "bootloader": "usbasploader", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "C4", "C5", "D0", "D1", "B5", "D7", "D6", "D4"], + "rows": ["B0", "B1", "B2", "B3"] + }, + "processor": "atmega328p", + "usb": { + "pid": "0xBABE", + "vid": "0xBEEF", + "device_version": "13.3.7", + "no_startup_check": true + }, + "ws2812": { + "pin": "B4" + }, + "rgb_matrix": { + "animations": { + "cycle_up_down": true, + "jellybean_raindrops": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "pixel_fractal": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "pixel_rain": true, + "dual_beacon": true, + "hue_breathing": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_reactive_cross": true + }, + "driver": "ws2812", + "default": { + "animation": "cycle_up_down" + }, + "layout": [ + {"flags": 4, "matrix": [0, 11], "x": 0, "y": 0}, + {"flags": 4, "matrix": [0, 10], "x": 1, "y": 0}, + {"flags": 4, "matrix": [0, 9], "x": 2, "y": 0}, + {"flags": 4, "matrix": [0, 8], "x": 3, "y": 0}, + {"flags": 4, "matrix": [0, 7], "x": 4, "y": 0}, + {"flags": 4, "matrix": [0, 6], "x": 5, "y": 0}, + {"flags": 4, "matrix": [0, 5], "x": 6, "y": 0}, + {"flags": 4, "matrix": [0, 4], "x": 7, "y": 0}, + {"flags": 4, "matrix": [0, 3], "x": 8, "y": 0}, + {"flags": 4, "matrix": [0, 2], "x": 9, "y": 0}, + {"flags": 4, "matrix": [0, 1], "x": 10, "y": 0}, + {"flags": 4, "matrix": [0, 0], "x": 11, "y": 0}, + + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 1}, + {"flags": 4, "matrix": [1, 1], "x": 1.25, "y": 1}, + {"flags": 4, "matrix": [1, 2], "x": 2.25, "y": 1}, + {"flags": 4, "matrix": [1, 3], "x": 3.25, "y": 1}, + {"flags": 4, "matrix": [1, 4], "x": 4.25, "y": 1}, + {"flags": 4, "matrix": [1, 5], "x": 5.25, "y": 1}, + {"flags": 4, "matrix": [1, 6], "x": 6.25, "y": 1}, + {"flags": 4, "matrix": [1, 7], "x": 7.25, "y": 1}, + {"flags": 4, "matrix": [1, 8], "x": 8.25, "y": 1}, + {"flags": 4, "matrix": [1, 9], "x": 9.25, "y": 1}, + {"flags": 4, "matrix": [1, 11], "x": 10.25, "y": 1}, + + {"flags": 4, "matrix": [2, 11], "x": 0, "y": 2}, + {"flags": 4, "matrix": [2, 10], "x": 1.75, "y": 2}, + {"flags": 4, "matrix": [2, 8], "x": 2.75, "y": 2}, + {"flags": 4, "matrix": [2, 7], "x": 3.75, "y": 2}, + {"flags": 4, "matrix": [2, 6], "x": 4.75, "y": 2}, + {"flags": 4, "matrix": [2, 5], "x": 5.75, "y": 2}, + {"flags": 4, "matrix": [2, 4], "x": 6.75, "y": 2}, + {"flags": 4, "matrix": [2, 3], "x": 7.75, "y": 2}, + {"flags": 4, "matrix": [2, 2], "x": 8.75, "y": 2}, + {"flags": 4, "matrix": [2, 1], "x": 10.5, "y": 2}, + {"flags": 4, "matrix": [2, 0], "x": 11.5, "y": 2}, + + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 3}, + {"flags": 4, "matrix": [3, 1], "x": 1.25, "y": 3}, + {"flags": 4, "matrix": [3, 2], "x": 2.5, "y": 3}, + {"flags": 4, "matrix": [3, 4], "x": 3.5, "y": 3}, + {"flags": 4, "matrix": [3, 6], "x": 5.75, "y": 3}, + {"flags": 4, "matrix": [3, 8], "x": 8.5, "y": 3}, + {"flags": 4, "matrix": [3, 9], "x": 9.5, "y": 3}, + {"flags": 4, "matrix": [3, 10], "x": 10.5, "y": 3}, + {"flags": 4, "matrix": [3, 11], "x": 11.5, "y": 3} + ], + "max_brightness": 100 + + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"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, "w": 1.5}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 2.25}, + + {"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, "w": 1.75}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 4], "x": 3.5, "y": 3, "w": 2.25}, + {"matrix": [3, 6], "x": 5.75, "y": 3, "w": 2.75}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3} + ] + } + } +} + diff --git a/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c b/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c new file mode 100755 index 000000000000..ab938a9b3d1b --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2024 rot13labs + * + * 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_UP, DF(1), + KC_LCTL, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + /* FN - symbols & audio controls */ + [1] = LAYOUT( + KC_ESC, KC_MINS, KC_EQL, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_LBRC, KC_RBRC, KC_BSLS, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL, KC_VOLU, DF(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), + + /* ALT - numbers */ + [2] = LAYOUT( + 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_UP, DF(3), + KC_LCTL, KC_LGUI, _______, MO(3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT), + + /* SPC - RGB control layer */ + [3] = LAYOUT( + KC_ESC, KC_Q, RGB_M_SW, KC_E, RGB_M_R, KC_T, KC_Y, RGB_SPD, RGB_SPI, RGB_RMOD, RGB_MOD, KC_DEL, + KC_TAB, KC_A, RGB_M_P, KC_D, KC_F, KC_G, KC_H, RGB_SAD, RGB_SAI, RGB_TOG, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, RGB_M_B, KC_N, KC_M, KC_RCTL, RGB_VAI, DF(0), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, _______, RGB_HUD, RGB_VAD, RGB_HUI), +}; \ No newline at end of file diff --git a/keyboards/rot13labs/h4ckb0ard/readme.md b/keyboards/rot13labs/h4ckb0ard/readme.md new file mode 100644 index 000000000000..fdf42fa5b8e5 --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/readme.md @@ -0,0 +1,19 @@ +# h4ckb0ard + +![h4ckb0ard](https://i.imgur.com/U325abR.jpg) + +A 40% keyboard for hackers using the c0ldbru layout, designed to minimize space without requiring users to buy extra keycaps just to use less. + +* Keyboard Maintainer: [c0ldbru](https://github.com/c0ldbru) +* Hardware Supported: h4ckb0ard // atmega328p +* Hardware Availability: [rot13labs](https://rot13labs.com) + +Make example for this keyboard (after setting up your build environment): + + make rot13labs/h4ckb0ard:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +You can enter the bootloader to flash on new firmware by holding down the ESC key while plugging the h4ckb0ard in. diff --git a/keyboards/rot13labs/h4ckb0ard/rules.mk b/keyboards/rot13labs/h4ckb0ard/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From dd56bee9e13979a140b2e691bf7ab8a0ec9a066d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 19 May 2024 12:41:03 +0800 Subject: [PATCH 121/125] [Doc] Reference advance keycodes in combos (#23666) --- docs/feature_combo.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/feature_combo.md b/docs/feature_combo.md index 61f8b2ee1971..496e97bd3c1d 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -17,11 +17,12 @@ combo_t key_combos[] = { This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys. -## Mod-Tap Support -[Mod-Tap](mod_tap.md) feature is also supported together with combos. You will need to use the full Mod-Tap keycode in the combo definition, e.g.: +## Advanced Keycodes Support +Advanced keycodes, such as [Mod-Tap](mod_tap.md) and [Tap Dance](feature_tap_dance.md) are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.: ```c const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END}; +const uint16_t PROGMEM test_combo2[] = {TD(TD_ESC_CAPS), KC_F1, COMBO_END}; ``` ## Overlapping Combos From 5bb01794ee51f984d5bd904a1234da89a5762149 Mon Sep 17 00:00:00 2001 From: Coby Sher <63015754+CobyPear@users.noreply.github.com> Date: Sat, 18 May 2024 23:51:36 -0500 Subject: [PATCH 122/125] Add sleepy_craft_studios sleepy_keeb (#23659) Co-authored-by: Duncan Sutherland --- .../sleepy_keeb/info.json | 92 +++++++++++++++++++ .../sleepy_keeb/keymaps/default/keymap.c | 31 +++++++ .../sleepy_keeb/keymaps/via/keymap.c | 31 +++++++ .../sleepy_keeb/keymaps/via/rules.mk | 1 + .../sleepy_keeb/readme.md | 27 ++++++ .../sleepy_craft_studios/sleepy_keeb/rules.mk | 1 + 6 files changed, 183 insertions(+) create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/info.json create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/readme.md create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/info.json b/keyboards/sleepy_craft_studios/sleepy_keeb/info.json new file mode 100644 index 000000000000..635a780ed4a8 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/info.json @@ -0,0 +1,92 @@ +{ + "manufacturer": "Sleepy Craft Studios", + "keyboard_name": "sleepy_keeb", + "maintainer": "Sleepy Craft Studios", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D7", "E6", "B4", "B5", "F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"], + "rows": ["D1", "D0", "D4", "C6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 17 + }, + "url": "https://sleepycraftstudios.com/downloads/sleepy-keeb", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x7373" + }, + "ws2812": { + "pin": "D2" + }, + "community_layouts": ["planck_mit"], + "layouts": { + "LAYOUT_planck_mit": { + "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, 6], "x": 5, "y": 3, "w": 2}, + {"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/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c new file mode 100644 index 000000000000..1082b0afa6be --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2024 Sleepy Craft Studios +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum keeb_layers { + _BASE, + _RAISE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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_GRV, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT + ), + [_RAISE] = LAYOUT_planck_mit( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_MOD, + 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, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_FN] = LAYOUT_planck_mit( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, + 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/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c new file mode 100644 index 000000000000..1082b0afa6be --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2024 Sleepy Craft Studios +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum keeb_layers { + _BASE, + _RAISE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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_GRV, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT + ), + [_RAISE] = LAYOUT_planck_mit( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_MOD, + 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, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_FN] = LAYOUT_planck_mit( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, + 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/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md b/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md new file mode 100644 index 000000000000..9e99b9002a71 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md @@ -0,0 +1,27 @@ +# Sleepy Keeb + +![sleepy_keeb](https://i.imgur.com/y3cessF.jpeg) + +The Sleepy Keeb is a hand-wired keyboard based on the 4x12 Planck layout. The Sleepy Keeb integrates hot-swap socket and diode holders into the plate for easier building. + +- Keyboard Maintainer: [Sleepy Craft Studios](https://github.com/sleepy-craft-studios) +- Hardware Supported: Pro Micro development board (and clones/adapations of) +- Hardware Availability: [Sleepy Craft Studios Shop](https://sleepycraftstudios.com/shop) for kits and full builds, [Sleepy Craft Studios Downloads](https://sleepycraftstudios.com/downloads) for CC-BY-SA-NC licensed stl files for 3D printing. + +Make example for this keyboard (after setting up your build environment): + + make sleepy_keeb:default + +Flashing example for this keyboard: + + make sleepy_keeb: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/sleepy_craft_studios/sleepy_keeb/rules.mk b/keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 2420487e55fb922e93fae846cee1a73244358019 Mon Sep 17 00:00:00 2001 From: blindassassin111 <38090555+blindassassin111@users.noreply.github.com> Date: Sun, 19 May 2024 00:19:32 -0500 Subject: [PATCH 123/125] [Keyboard] Adding TX_Roundup_Pad PCB (#23526) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/viktus/tx_roundup_pad/info.json | 54 +++++++++++++++++++ .../tx_roundup_pad/keymaps/default/keymap.c | 28 ++++++++++ .../tx_roundup_pad/keymaps/via/keymap.c | 28 ++++++++++ .../tx_roundup_pad/keymaps/via/rules.mk | 1 + keyboards/viktus/tx_roundup_pad/readme.md | 27 ++++++++++ keyboards/viktus/tx_roundup_pad/rules.mk | 1 + 6 files changed, 139 insertions(+) create mode 100644 keyboards/viktus/tx_roundup_pad/info.json create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk create mode 100644 keyboards/viktus/tx_roundup_pad/readme.md create mode 100644 keyboards/viktus/tx_roundup_pad/rules.mk diff --git a/keyboards/viktus/tx_roundup_pad/info.json b/keyboards/viktus/tx_roundup_pad/info.json new file mode 100644 index 000000000000..c4b013bb0ef6 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/info.json @@ -0,0 +1,54 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "TX Roundup Pad", + "maintainer": "BlindAssassin111", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5", "F4"], + "rows": ["B5", "B4", "E6", "D7", "C6", "D4"] + }, + "url": "https://viktus.design", + "usb": { + "device_version": "1.0.0", + "pid": "0x5458", + "vid": "0x5644" + }, + "community_layouts": [ "numpad_6x4" ], + "layouts": { + "LAYOUT_numpad_6x4": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "K11", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "K21", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "K31", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "K32", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "K23", "matrix": [2, 3], "x": 3, "y": 2, "h": 2}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "K41", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "K51", "matrix": [5, 1], "x": 0, "y": 5, "w": 2}, + {"label": "K52", "matrix": [5, 2], "x": 2, "y": 5}, + {"label": "K53", "matrix": [5, 3], "x": 3, "y": 4, "h": 2} + ] + } + } +} diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c b/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c new file mode 100644 index 000000000000..50d4c0928456 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2024 Viktus Design LLC + * + * 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_numpad_6x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c b/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c new file mode 100644 index 000000000000..50d4c0928456 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2024 Viktus Design LLC + * + * 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_numpad_6x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk b/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/tx_roundup_pad/readme.md b/keyboards/viktus/tx_roundup_pad/readme.md new file mode 100644 index 000000000000..ab034ed8c5af --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/readme.md @@ -0,0 +1,27 @@ +# TX Roundup Pad + +![tx_roundup_pad](https://i.imgur.com/7O9CkPw.jpeg) + +The PCB badge for the April 27, 2024 Texas Roundup meet in Dallas, Tx. + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: TX Roundup Pad Badge PCB +- Hardware Availability: At meetup only + +Make example for this keyboard (after setting up your build environment): + + make viktus/tx_roundup_pad:default + +Flashing example for this keyboard: + + make viktus/tx_roundup_pad: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/viktus/tx_roundup_pad/rules.mk b/keyboards/viktus/tx_roundup_pad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 93023511ab0f334bb0394d279b9175d46fe1b3c6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 19 May 2024 15:23:24 +1000 Subject: [PATCH 124/125] macOS install script: remove `brew upgrade --ignore-pinned` (#23735) --- util/install/macos.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/install/macos.sh b/util/install/macos.sh index 8890c5a3f08c..a1b79fe86839 100755 --- a/util/install/macos.sh +++ b/util/install/macos.sh @@ -9,7 +9,7 @@ _qmk_install_prepare() { return 1 fi - brew update && brew upgrade --formulae --ignore-pinned + brew update && brew upgrade --formulae } _qmk_install() { From 2fd56317763e8b3b73f0db7488ef42a70f5b946e Mon Sep 17 00:00:00 2001 From: gskygithub <106651989+gskygithub@users.noreply.github.com> Date: Sun, 19 May 2024 13:25:19 +0800 Subject: [PATCH 125/125] [Keyboard] Add Projectd 75 iso (#21942) Co-authored-by: Ryan Co-authored-by: gksygithub <106651989+gksygithub@users.noreply.github.com> --- keyboards/projectd/75/iso/config.h | 30 ++ keyboards/projectd/75/iso/halconf.h | 23 ++ keyboards/projectd/75/iso/info.json | 287 ++++++++++++++++++ keyboards/projectd/75/iso/iso.c | 206 +++++++++++++ keyboards/projectd/75/iso/iso.h | 27 ++ .../projectd/75/iso/keymaps/default/keymap.c | 46 +++ .../projectd/75/iso/keymaps/via/keymap.c | 46 +++ .../projectd/75/iso/keymaps/via/rules.mk | 1 + keyboards/projectd/75/iso/mcuconf.h | 25 ++ keyboards/projectd/75/iso/readme.md | 25 ++ keyboards/projectd/75/iso/rules.mk | 1 + 11 files changed, 717 insertions(+) create mode 100644 keyboards/projectd/75/iso/config.h create mode 100644 keyboards/projectd/75/iso/halconf.h create mode 100644 keyboards/projectd/75/iso/info.json create mode 100644 keyboards/projectd/75/iso/iso.c create mode 100644 keyboards/projectd/75/iso/iso.h create mode 100644 keyboards/projectd/75/iso/keymaps/default/keymap.c create mode 100644 keyboards/projectd/75/iso/keymaps/via/keymap.c create mode 100644 keyboards/projectd/75/iso/keymaps/via/rules.mk create mode 100644 keyboards/projectd/75/iso/mcuconf.h create mode 100644 keyboards/projectd/75/iso/readme.md create mode 100644 keyboards/projectd/75/iso/rules.mk diff --git a/keyboards/projectd/75/iso/config.h b/keyboards/projectd/75/iso/config.h new file mode 100644 index 000000000000..282e20a8e2bf --- /dev/null +++ b/keyboards/projectd/75/iso/config.h @@ -0,0 +1,30 @@ +/* Copyright 2023 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 + +/* External spi flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 + +/* 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 AW20216S_CS_PIN_1 A15 +#define AW20216S_CS_PIN_2 B15 +#define AW20216S_EN_PIN C13 diff --git a/keyboards/projectd/75/iso/halconf.h b/keyboards/projectd/75/iso/halconf.h new file mode 100644 index 000000000000..64a184eb924e --- /dev/null +++ b/keyboards/projectd/75/iso/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2023 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/projectd/75/iso/info.json b/keyboards/projectd/75/iso/info.json new file mode 100644 index 000000000000..d86150003163 --- /dev/null +++ b/keyboards/projectd/75/iso/info.json @@ -0,0 +1,287 @@ +{ + "manufacturer": "ProjectD", + "keyboard_name": "ProjectD 75% ISO", + "maintainer": "Gsky", + "bootloader": "wb32-dfu", + "bootmagic": { + "matrix": [1, 3] + }, + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"] + }, + "processor": "WB32FQ95", + "qmk": { + "tap_keycode_delay": 10, + "locking": { + "enabled": true, + "resync": true + } + }, + "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": [78, 20], + "driver": "aw20216s", + "sleep": true, + "layout": [ + { "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [2, 6], "x": 12.5, "y": 0 }, + { "flags": 4, "matrix": [3, 6], "x": 22.5, "y": 0 }, + { "flags": 4, "matrix": [3, 1], "x": 32.5, "y": 0 }, + { "flags": 4, "matrix": [3, 3], "x": 42.5, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 55, "y": 0 }, + { "flags": 4, "matrix": [6, 3], "x": 65, "y": 0 }, + { "flags": 4, "matrix": [7, 1], "x": 75, "y": 0 }, + { "flags": 4, "matrix": [7, 6], "x": 85, "y": 0 }, + { "flags": 4, "matrix": [10, 6], "x": 97.5, "y": 0 }, + { "flags": 4, "matrix": [10, 7], "x": 107.5, "y": 0 }, + { "flags": 4, "matrix": [10, 3], "x": 117.5, "y": 0 }, + { "flags": 4, "matrix": [10, 5], "x": 127.5, "y": 0 }, + { "flags": 4, "matrix": [9, 7], "x": 140, "y": 0 }, + { "flags": 4, "matrix": [6, 5], "x": 155, "y": 0 }, + + { "flags": 4, "matrix": [1, 6], "x": 0, "y": 12.5 }, + { "flags": 4, "matrix": [1, 7], "x": 10, "y": 12.5 }, + { "flags": 4, "matrix": [2, 7], "x": 20, "y": 12.5 }, + { "flags": 4, "matrix": [3, 7], "x": 30, "y": 12.5 }, + { "flags": 4, "matrix": [4, 7], "x": 40, "y": 12.5 }, + { "flags": 4, "matrix": [4, 6], "x": 50, "y": 12.5 }, + { "flags": 4, "matrix": [5, 6], "x": 60, "y": 12.5 }, + { "flags": 4, "matrix": [5, 7], "x": 70, "y": 12.5 }, + { "flags": 4, "matrix": [6, 7], "x": 80, "y": 12.5 }, + { "flags": 4, "matrix": [7, 7], "x": 90, "y": 12.5 }, + { "flags": 4, "matrix": [8, 7], "x": 100, "y": 12.5 }, + { "flags": 4, "matrix": [8, 6], "x": 110, "y": 12.5 }, + { "flags": 4, "matrix": [6, 6], "x": 120, "y": 12.5 }, + { "flags": 4, "matrix": [10, 1], "x": 130, "y": 12.5 }, + { "flags": 4, "matrix": [0, 2], "x": 155, "y": 12.5 }, + + { "flags": 4, "matrix": [1, 1], "x": 0, "y": 22.5 }, + { "flags": 4, "matrix": [1, 0], "x": 15, "y": 22.5 }, + { "flags": 4, "matrix": [2, 0], "x": 25, "y": 22.5 }, + { "flags": 4, "matrix": [3, 0], "x": 35, "y": 22.5 }, + { "flags": 4, "matrix": [4, 0], "x": 45, "y": 22.5 }, + { "flags": 4, "matrix": [4, 1], "x": 55, "y": 22.5 }, + { "flags": 4, "matrix": [5, 1], "x": 65, "y": 22.5 }, + { "flags": 4, "matrix": [5, 0], "x": 75, "y": 22.5 }, + { "flags": 4, "matrix": [6, 0], "x": 85, "y": 22.5 }, + { "flags": 4, "matrix": [7, 0], "x": 95, "y": 22.5 }, + { "flags": 4, "matrix": [8, 0], "x": 105, "y": 22.5 }, + { "flags": 4, "matrix": [8, 1], "x": 115, "y": 22.5 }, + { "flags": 4, "matrix": [6, 1], "x": 125, "y": 22.5 }, + { "flags": 4, "matrix": [1, 5], "x": 155.5, "y": 22.5 }, + + { "flags": 8, "matrix": [2, 1], "x": 0, "y": 32.5 }, + { "flags": 4, "matrix": [1, 2], "x": 17.5, "y": 32.5 }, + { "flags": 4, "matrix": [2, 2], "x": 27.5, "y": 32.5 }, + { "flags": 4, "matrix": [3, 2], "x": 37.5, "y": 32.5 }, + { "flags": 4, "matrix": [4, 2], "x": 47.5, "y": 32.5 }, + { "flags": 4, "matrix": [4, 3], "x": 57.5, "y": 32.5 }, + { "flags": 4, "matrix": [5, 3], "x": 67.5, "y": 32.5 }, + { "flags": 4, "matrix": [5, 2], "x": 77.5, "y": 32.5 }, + { "flags": 4, "matrix": [6, 2], "x": 87.5, "y": 32.5 }, + { "flags": 4, "matrix": [7, 2], "x": 97.5, "y": 32.5 }, + { "flags": 4, "matrix": [8, 2], "x": 107.5, "y": 32.5 }, + { "flags": 4, "matrix": [8, 3], "x": 117.5, "y": 32.5 }, + { "flags": 4, "matrix": [10, 2], "x": 127.5, "y": 32.5 }, + { "flags": 4, "matrix": [10, 4], "x": 137.5, "y": 22.5 }, + { "flags": 4, "matrix": [2, 5], "x": 155.5, "y": 32.5 }, + + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 42.5 }, + { "flags": 4, "matrix": [0, 1], "x": 12.5, "y": 42.5 }, + { "flags": 4, "matrix": [1, 4], "x": 22.5, "y": 42.5 }, + { "flags": 4, "matrix": [2, 4], "x": 32.5, "y": 42.5 }, + { "flags": 4, "matrix": [3, 4], "x": 42.5, "y": 42.5 }, + { "flags": 4, "matrix": [4, 4], "x": 52.5, "y": 42.5 }, + { "flags": 4, "matrix": [4, 5], "x": 62.5, "y": 42.5 }, + { "flags": 4, "matrix": [5, 5], "x": 72.5, "y": 42.5 }, + { "flags": 4, "matrix": [5, 4], "x": 82.5, "y": 42.5 }, + { "flags": 4, "matrix": [6, 4], "x": 92.5, "y": 42.5 }, + { "flags": 4, "matrix": [7, 4], "x": 102.5, "y": 42.5 }, + { "flags": 4, "matrix": [8, 5], "x": 112.5, "y": 42.5 }, + { "flags": 4, "matrix": [9, 1], "x": 122.5, "y": 42.5 }, + { "flags": 4, "matrix": [3, 5], "x": 142.5, "y": 45 }, + { "flags": 4, "matrix": [7, 5], "x": 155, "y": 42.5 }, + + { "flags": 4, "matrix": [0, 6], "x": 0, "y": 52.5 }, + { "flags": 4, "matrix": [9, 0], "x": 12.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 3], "x": 25, "y": 52.5 }, + { "flags": 4, "x": 61.5, "y": 52.5 }, + { "flags": 4, "x": 62.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 4], "x": 65, "y": 52.5 }, + { "flags": 4, "x": 67.5, "y": 52.5 }, + { "flags": 4, "x": 68.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 5], "x": 100, "y": 52.5 }, + { "flags": 4, "matrix": [9, 2], "x": 110, "y": 52.5 }, + { "flags": 4, "matrix": [0, 4], "x": 120, "y": 52.5 }, + { "flags": 4, "matrix": [0, 3], "x": 132.5, "y": 52.5 }, + { "flags": 4, "matrix": [7, 3], "x": 142.5, "y": 52.5 }, + { "flags": 4, "matrix": [0, 5], "x": 152.5, "y": 52.5 } + ] + }, + "url": "", + "usb": { + "device_version": "0.0.2", + "pid": "0x0011", + "vid": "0x3233" + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 4096 + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "matrix": [1, 3], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [2, 6], "x": 1.25, "y": 0 }, + { "label": "F2", "matrix": [3, 6], "x": 2.25, "y": 0 }, + { "label": "F3", "matrix": [3, 1], "x": 3.25, "y": 0 }, + { "label": "F4", "matrix": [3, 3], "x": 4.25, "y": 0 }, + { "label": "F5", "matrix": [0, 7], "x": 5.5, "y": 0 }, + { "label": "F6", "matrix": [6, 3], "x": 6.5, "y": 0 }, + { "label": "F7", "matrix": [7, 1], "x": 7.5, "y": 0 }, + { "label": "F8", "matrix": [7, 6], "x": 8.5, "y": 0 }, + { "label": "F9", "matrix": [10, 6], "x": 9.75, "y": 0 }, + { "label": "F10", "matrix": [10, 7], "x": 10.75, "y": 0 }, + { "label": "F11", "matrix": [10, 3], "x": 11.75, "y": 0 }, + { "label": "F12", "matrix": [10, 5], "x": 12.75, "y": 0 }, + { "label": "PrintScreen", "matrix": [9, 7], "x": 14, "y": 0 }, + { "label": "Delete", "matrix": [6, 5], "x": 15.5, "y": 0 }, + + { "label": "`", "matrix": [1, 6], "x": 0, "y": 1.25 }, + { "label": "1", "matrix": [1, 7], "x": 1, "y": 1.25 }, + { "label": "2", "matrix": [2, 7], "x": 2, "y": 1.25 }, + { "label": "3", "matrix": [3, 7], "x": 3, "y": 1.25 }, + { "label": "4", "matrix": [4, 7], "x": 4, "y": 1.25 }, + { "label": "5", "matrix": [4, 6], "x": 5, "y": 1.25 }, + { "label": "6", "matrix": [5, 6], "x": 6, "y": 1.25 }, + { "label": "7", "matrix": [5, 7], "x": 7, "y": 1.25 }, + { "label": "8", "matrix": [6, 7], "x": 8, "y": 1.25 }, + { "label": "9", "matrix": [7, 7], "x": 9, "y": 1.25 }, + { "label": "0", "matrix": [8, 7], "x": 10, "y": 1.25 }, + { "label": "-", "matrix": [8, 6], "x": 11, "y": 1.25 }, + { "label": "=", "matrix": [6, 6], "x": 12, "y": 1.25 }, + { "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1.25 }, + { "label": "Home", "matrix": [0, 2], "x": 15.5, "y": 1.25 }, + + { "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2.25 }, + { "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.25 }, + { "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.25 }, + { "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.25 }, + { "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.25 }, + { "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.25 }, + { "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.25 }, + { "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.25 }, + { "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.25 }, + { "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.25 }, + { "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.25 }, + { "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.25 }, + { "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.25 }, + { "label": "PGUP", "matrix": [1, 5], "x": 15.5, "y": 2.25 }, + + { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3.25 }, + { "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.25 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.25 }, + { "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.25 }, + { "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.25 }, + { "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.25 }, + { "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.25 }, + { "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.25 }, + { "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.25 }, + { "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.25 }, + { "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.25 }, + { "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.25 }, + { "label": "|", "matrix": [10, 2], "x": 12.75, "y": 3.25 }, + { "label": "ENTER", "matrix": [10, 4], "w": 1.25, "h": 2, "x": 13.75, "y": 2.25 }, + { "label": "PGDN", "matrix": [2, 5], "x": 15.5, "y": 3.25 }, + + { "label": "L Shift", "matrix": [0, 0], "w": 1.25, "x": 0, "y": 4.25 }, + { "label": "|", "matrix": [0, 1], "x": 1.25, "y": 4.25 }, + { "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.25 }, + { "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.25 }, + { "label": "C", "matrix": [3, 4], "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": [5, 5], "x": 7.25, "y": 4.25 }, + { "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.25 }, + { "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.25 }, + { "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.25 }, + { "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.25 }, + { "label": "R Shift", "matrix": [9, 1], "w": 1.75, "x": 12.25, "y": 4.25 }, + { "label": "Up", "matrix": [3, 5], "x": 14.25, "y": 4.5 }, + { "label": "End", "matrix": [7, 5], "x": 15.5, "y": 4.25 }, + + { "label": "L Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5.25 }, + { "label": "L Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5.25 }, + { "label": "L Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5.25 }, + { "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5.25 }, + { "label": "R Alt", "matrix": [9, 5], "x": 10, "y": 5.25 }, + { "label": "FN", "matrix": [9, 2], "x": 11, "y": 5.25 }, + { "label": "R Ctrl", "matrix": [0, 4], "x": 12, "y": 5.25 }, + { "label": "Left", "matrix": [0, 3], "x": 13.25, "y": 5.5 }, + { "label": "Down", "matrix": [7, 3], "x": 14.25, "y": 5.5 }, + { "label": "Right", "matrix": [0, 5], "x": 15.25, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/projectd/75/iso/iso.c b/keyboards/projectd/75/iso/iso.c new file mode 100644 index 000000000000..59544db359d2 --- /dev/null +++ b/keyboards/projectd/75/iso/iso.c @@ -0,0 +1,206 @@ +/* Copyright 2023 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 "iso.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw20216s_led_t g_aw20216s_leds[AW20216S_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + //{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, k00, Esc + + {0, SW1_CS1, SW1_CS2, SW1_CS3}, // Esc + {0, SW2_CS1, SW2_CS2, SW2_CS3}, // F1 + {0, SW3_CS1, SW3_CS2, SW3_CS3}, // F2 + {0, SW4_CS1, SW4_CS2, SW4_CS3}, // F3 + {0, SW5_CS1, SW5_CS2, SW5_CS3}, // F4 + {0, SW6_CS1, SW6_CS2, SW6_CS3}, // F5 + {0, SW7_CS1, SW7_CS2, SW7_CS3}, // F6 + {0, SW8_CS1, SW8_CS2, SW8_CS3}, // F7 + {0, SW9_CS1, SW9_CS2, SW9_CS3}, // F8 + {0, SW10_CS1, SW10_CS2, SW10_CS3}, // F9 + {0, SW11_CS1, SW11_CS2, SW11_CS3}, // F10 + {0, SW12_CS1, SW12_CS2, SW12_CS3}, // F11 + {1, SW1_CS1, SW1_CS2, SW1_CS3}, // F12 + {1, SW1_CS4, SW1_CS5, SW1_CS6}, // Printscreen + {1, SW3_CS4, SW3_CS5, SW3_CS6}, // Delete + + {0, SW1_CS4, SW1_CS5, SW1_CS6}, // ` + {0, SW2_CS4, SW2_CS5, SW2_CS6}, // 1 + {0, SW3_CS4, SW3_CS5, SW3_CS6}, // 2 + {0, SW4_CS4, SW4_CS5, SW4_CS6}, // 3 + {0, SW5_CS4, SW5_CS5, SW5_CS6}, // 4 + {0, SW6_CS4, SW6_CS5, SW6_CS6}, // 5 + {0, SW7_CS4, SW7_CS5, SW7_CS6}, // 6 + {0, SW8_CS4, SW8_CS5, SW8_CS6}, // 7 + {0, SW9_CS4, SW9_CS5, SW9_CS6}, // 8 + {0, SW10_CS4, SW10_CS5, SW10_CS6}, // 9 + {0, SW11_CS4, SW11_CS5, SW11_CS6}, // 0 + {0, SW12_CS4, SW12_CS5, SW12_CS6}, // - + {1, SW5_CS1, SW5_CS2, SW5_CS3}, // = + {1, SW7_CS1, SW7_CS2, SW7_CS3}, // Backspace + {1, SW5_CS4, SW5_CS5, SW5_CS6}, // Home + + {0, SW1_CS7, SW1_CS8, SW1_CS9}, // Tab + {0, SW2_CS7, SW2_CS8, SW2_CS9}, // Q + {0, SW3_CS7, SW3_CS8, SW3_CS9}, // W + {0, SW4_CS7, SW4_CS8, SW4_CS9}, // E + {0, SW5_CS7, SW5_CS8, SW5_CS9}, // R + {0, SW6_CS7, SW6_CS8, SW6_CS9}, // T + {0, SW7_CS7, SW7_CS8, SW7_CS9}, // Y + {0, SW8_CS7, SW8_CS8, SW8_CS9}, // U + {0, SW9_CS7, SW9_CS8, SW9_CS9}, // I + {0, SW10_CS7, SW10_CS8, SW10_CS9}, // O + {0, SW11_CS7, SW11_CS8, SW11_CS9}, // P + {0, SW12_CS7, SW12_CS8, SW12_CS9}, // [ + {1, SW8_CS1, SW8_CS2, SW8_CS3}, // ] + {1, SW4_CS4, SW4_CS5, SW4_CS6}, // PGUP + + {0, SW1_CS10, SW1_CS11, SW1_CS12}, // Caps Lock + {0, SW2_CS10, SW2_CS11, SW2_CS12}, // A + {0, SW3_CS10, SW3_CS11, SW3_CS12}, // S + {0, SW4_CS10, SW4_CS11, SW4_CS12}, // D + {0, SW5_CS10, SW5_CS11, SW5_CS12}, // F + {0, SW6_CS10, SW6_CS11, SW6_CS12}, // G + {0, SW7_CS10, SW7_CS11, SW7_CS12}, // H + {0, SW8_CS10, SW8_CS11, SW8_CS12}, // J + {0, SW9_CS10, SW9_CS11, SW9_CS12}, // K + {0, SW10_CS10, SW10_CS11, SW10_CS12}, // L + {0, SW11_CS10, SW11_CS11, SW11_CS12}, // ; + {0, SW12_CS10, SW12_CS11, SW12_CS12}, // ' + {1, SW9_CS1, SW9_CS2, SW9_CS3}, // || + {1, SW11_CS1, SW11_CS2, SW11_CS3}, // Enter + {1, SW7_CS4, SW7_CS5, SW7_CS6}, // PGDN + + {0, SW1_CS13, SW1_CS14, SW1_CS15}, // L Shift + {0, SW12_CS13, SW12_CS14, SW12_CS15}, // | + {0, SW2_CS13, SW2_CS14, SW2_CS15}, // Z + {0, SW3_CS13, SW3_CS14, SW3_CS15}, // X + {0, SW4_CS13, SW4_CS14, SW4_CS15}, // C + {0, SW5_CS13, SW5_CS14, SW5_CS15}, // V + {0, SW6_CS13, SW6_CS14, SW6_CS15}, // B + {0, SW7_CS13, SW7_CS14, SW7_CS15}, // N + {0, SW8_CS13, SW8_CS14, SW8_CS15}, // M + {0, SW9_CS13, SW9_CS14, SW9_CS15}, // , + {0, SW10_CS13, SW10_CS14, SW10_CS15}, // . + {0, SW11_CS13, SW11_CS14, SW11_CS15}, // "/"" + {1, SW8_CS4, SW8_CS5, SW8_CS6}, // R Shift + {1, SW9_CS4, SW9_CS5, SW9_CS6}, // Up + {1, SW6_CS4, SW6_CS5, SW6_CS6}, // END + + {0, SW1_CS16, SW1_CS17, SW1_CS18}, // L Ctrl + {0, SW2_CS16, SW2_CS17, SW2_CS18}, // L Win + {0, SW3_CS16, SW3_CS17, SW3_CS18}, // L Alt + {0, SW4_CS16, SW4_CS17, SW4_CS18}, // LED1 + {0, SW5_CS16, SW5_CS17, SW5_CS18}, // LED2 + {0, SW6_CS16, SW6_CS17, SW6_CS18}, // Space + {0, SW7_CS16, SW7_CS17, SW7_CS18}, // LED3 + {0, SW8_CS16, SW8_CS17, SW8_CS18}, // LED4 + {0, SW9_CS16, SW9_CS17, SW9_CS18}, // R Alt + {0, SW10_CS16, SW10_CS17, SW10_CS18}, // FN + {0, SW12_CS16, SW12_CS17, SW12_CS18}, // R Ctrl + + {1, SW10_CS4, SW10_CS5, SW10_CS6}, // Left + {1, SW11_CS4, SW11_CS5, SW11_CS6}, // Down + {1, SW5_CS10, SW5_CS11, SW5_CS12}, // 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 + gpio_set_pin_input(SPI_SCK_PIN); + gpio_set_pin_input(SPI_MOSI_PIN); + gpio_set_pin_input(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 +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(44, 255, 255, 255); + } + + return false; +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + + case RGB_R: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_G: + if (record->event.pressed) { + rgb_matrix_sethsv(85, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_B: + if (record->event.pressed) { + rgb_matrix_sethsv(170, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_W: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 0, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case SW_cy: + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(13); + return false; /* Skip all further processing of this key */ + + + default: + return true; /* Process all other keycodes normally */ + } +}; diff --git a/keyboards/projectd/75/iso/iso.h b/keyboards/projectd/75/iso/iso.h new file mode 100644 index 000000000000..4e65d84ba74c --- /dev/null +++ b/keyboards/projectd/75/iso/iso.h @@ -0,0 +1,27 @@ +/* Copyright 2023 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 my_keycodes { + RGB_R = QK_KB, + RGB_G, + RGB_B, + RGB_W, + SW_cy, +}; diff --git a/keyboards/projectd/75/iso/keymaps/default/keymap.c b/keyboards/projectd/75/iso/keymaps/default/keymap.c new file mode 100644 index 000000000000..2f6e6cf31058 --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 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. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[0] = LAYOUT( + QK_GESC, 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_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(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + _______, _______, _______, _______, MO(2), _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/projectd/75/iso/keymaps/via/keymap.c b/keyboards/projectd/75/iso/keymaps/via/keymap.c new file mode 100644 index 000000000000..2f6e6cf31058 --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 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. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[0] = LAYOUT( + QK_GESC, 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_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(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + _______, _______, _______, _______, MO(2), _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/projectd/75/iso/keymaps/via/rules.mk b/keyboards/projectd/75/iso/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/projectd/75/iso/mcuconf.h b/keyboards/projectd/75/iso/mcuconf.h new file mode 100644 index 000000000000..e4b8d1f97328 --- /dev/null +++ b/keyboards/projectd/75/iso/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2023 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/projectd/75/iso/readme.md b/keyboards/projectd/75/iso/readme.md new file mode 100644 index 000000000000..1b9f7f48975f --- /dev/null +++ b/keyboards/projectd/75/iso/readme.md @@ -0,0 +1,25 @@ +# ProjectD 75% ISO + +![ProjectD 75 ISO](https://imgur.com/pbGXTUd.png) + +A 75% keyboard with the WestBerry Q95 microcontroller integrated into PCB. + +* Keyboard Maintainer: [GSKY](https://github.com/gksygithub) +* Hardware Supported: ProjectD 75% ISO PCB +* Hardware Availability: [GSKY](https://github.com/gskygithub/projectd_75_iso) + +Make example for this keyboard (after setting up your build environment): + + make projectd/75/iso:default + +Flashing example for this keyboard: + + make projectd/75/iso:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted under the space key after the USB cable is connected +* Hold the Esc key while connecting the USB cable (also erases persistent settings) +* Fn+Alt+Tab 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/projectd/75/iso/rules.mk b/keyboards/projectd/75/iso/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/projectd/75/iso/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank