From 1643793327e81144f2970a34bed4ef58b57460fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:03:49 +0200 Subject: [PATCH 01/36] feat: Working on new pipeline --- .github/workflows/build_firmware.yml | 76 ++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/build_firmware.yml diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml new file mode 100644 index 0000000..538ac63 --- /dev/null +++ b/.github/workflows/build_firmware.yml @@ -0,0 +1,76 @@ +name: Build kb firmware + +on: + pull_request: + +env: + QMK_REPO: vial-kb/vial-qmk + QMK_BRANCH: vial + +jobs: + qmk-setup: + name: Setup QMK (vial) + runs-on: ubuntu-latest + container: qmkfm/qmk_cli + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Get Vial fork + run: | + git clone https://github.com/$QMK_REPO.git --depth 1 --branch $QMK_BRANCH ./qmk_firmware + - name: Setup QMK + run: | + qmk config user.qmk_home=./qmk_firmware + qmk setup -y + + get-changes: + name: Detect which configs changed + needs: qmk-setup + runs-on: ubuntu-latest + container: qmkfm/qmk_cli + permissions: + pull-requests: read + outputs: + keyboards: ${{steps.filter.outputs.changes}} + steps: + - uses: actions/checkout@v3 + - name: Detect which keyboard had changes + uses: dorny/paths-filter@v2 + id: filter + with: + filters: | + keyboards/planck/rev7/keymaps/soryn: + - 'keyboards/planck/rev7/keymaps/soryn/**' + keyboards/0xcb/splaytoraid/keymaps/soryn: + - 'keyboards/0xcb/splaytoraid/keymaps/soryn/**' + + build: + name: Build firmware for ${{matrix.keyboard}} + needs: [qmk-setup, get-changes] + if: ${{needs.changes.outputs.keyboards != '[]' && needs.changes.outputs.keyboards != ''}} + strategy: + matrix: + keyboard: ${{ fromJSON(needs.changes.outputs.keyboards) }} + permissions: + contents: write + pull-requests: write + runs-on: ubuntu-latest + container: qmkfm/qmk_cli + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} + - name: Clone config into QMK repo + run: | + cp -rup ./${{matrix.keyboard}}/* ./qmk_firmware/keyboards/ + - name: Split keyboard string for build + uses: xom9ikk/split@v1 + id: split + with: + string: ${{matrix.keyboard}} + separator: / + limit: -1 + - name: Compile firmware + run: | + echo ${{steps.split.outputs}} From e7c6de8fcb6bd2fe2eb78a67e10c712c0615f407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:23:47 +0200 Subject: [PATCH 02/36] fix: More work on pipeline and default splaytoraid config --- .github/workflows/build_firmware.yml | 2 + keyboards/splaytoraid/config.h | 54 +++ keyboards/splaytoraid/keyboard.json | 141 ++++++++ .../splaytoraid/keymaps/default/keymap.c | 58 ++++ keyboards/splaytoraid/keymaps/vial/config.h | 7 + keyboards/splaytoraid/keymaps/vial/keymap.c | 58 ++++ keyboards/splaytoraid/keymaps/vial/rules.mk | 3 + keyboards/splaytoraid/keymaps/vial/vial.json | 314 ++++++++++++++++++ keyboards/splaytoraid/readme.md | 23 ++ keyboards/splaytoraid/splaytoraid.c | 19 ++ 10 files changed, 679 insertions(+) create mode 100644 keyboards/splaytoraid/config.h create mode 100644 keyboards/splaytoraid/keyboard.json create mode 100644 keyboards/splaytoraid/keymaps/default/keymap.c create mode 100644 keyboards/splaytoraid/keymaps/vial/config.h create mode 100644 keyboards/splaytoraid/keymaps/vial/keymap.c create mode 100644 keyboards/splaytoraid/keymaps/vial/rules.mk create mode 100644 keyboards/splaytoraid/keymaps/vial/vial.json create mode 100644 keyboards/splaytoraid/readme.md create mode 100644 keyboards/splaytoraid/splaytoraid.c diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 538ac63..87351f6 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -35,6 +35,8 @@ jobs: keyboards: ${{steps.filter.outputs.changes}} steps: - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} - name: Detect which keyboard had changes uses: dorny/paths-filter@v2 id: filter diff --git a/keyboards/splaytoraid/config.h b/keyboards/splaytoraid/config.h new file mode 100644 index 0000000..7f0b46f --- /dev/null +++ b/keyboards/splaytoraid/config.h @@ -0,0 +1,54 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define RGB_ENABLE_PIN 21 +#define DRIVER_LED_TOTAL 36 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_BREATHING +#define RGB_MATRIX_STARTUP_HUE 152 +#define RGB_MATRIX_STARTUP_SAT 232 +#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGB_MATRIX_STARTUP_SPD 50 + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES + +#define ENABLE_RGB_MATRIX_SOLID_COLOR +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/splaytoraid/keyboard.json b/keyboards/splaytoraid/keyboard.json new file mode 100644 index 0000000..ef3bbf9 --- /dev/null +++ b/keyboards/splaytoraid/keyboard.json @@ -0,0 +1,141 @@ +{ + "manufacturer": "Freya", + "keyboard_name": "splaytoraid", + "maintainer": "freya-irl", + "url": "https://github.com/freya-irl/splaytoraid40", + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP23", "GP20", "GP22", "GP26", "GP27"], + "rows": ["GP0", "GP29", "GP1", "GP28", "GP7", "GP9"] + }, + "usb": { + "device_version": "4.0.0", + "pid": "0xCB00", + "vid": "0x2004" + }, + "features": { + "bootmagic": true, + "console": true, + "dip_switch": true, + "encoder_map": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "dip_switch": { + "enabled": true, + "pins": ["GP14"] + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "bootmagic": { + "matrix": [5, 0] + }, + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "GP12", "pin_b": "GP13", "resolution": 4} + ] + }, + "ws2812": { + "driver": "vendor", + "pin": "GP25" + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + { "flags": 2, "x":17, "y": 0 }, + { "flags": 2, "x": 0, "y": 8 }, + { "flags": 2, "x": 0, "y": 19 }, + { "flags": 2, "x": 9, "y": 23 }, + { "flags": 2, "x": 13, "y": 30 }, + { "flags": 2, "x": 22, "y": 30 }, + { "flags": 2, "x": 30, "y": 26 }, + { "flags": 2, "x": 39, "y": 26 }, + { "flags": 2, "x": 47, "y": 30 }, + { "flags": 2, "x": 47, "y": 38 }, + { "flags": 2, "x": 47, "y": 45 }, + { "flags": 2, "x": 56, "y": 49 }, + { "flags": 2, "x": 65, "y": 53 }, + { "flags": 2, "x": 69, "y": 53 }, + { "flags": 2, "x": 78, "y": 56 }, + { "flags": 2, "x": 86, "y": 64 }, + { "flags": 2, "x": 95, "y": 60 }, + { "flags": 2, "x": 99, "y": 53 }, + { "flags": 2, "x": 125, "y": 53 }, + { "flags": 2, "x": 129, "y": 60 }, + { "flags": 2, "x": 138, "y": 64 }, + { "flags": 2, "x": 146, "y": 56 }, + { "flags": 2, "x": 155, "y": 53 }, + { "flags": 2, "x": 159, "y": 53 }, + { "flags": 2, "x": 168, "y": 49 }, + { "flags": 2, "x": 177, "y": 45 }, + { "flags": 2, "x": 177, "y": 38 }, + { "flags": 2, "x": 177, "y": 30 }, + { "flags": 2, "x": 185, "y": 26 }, + { "flags": 2, "x": 194, "y": 26 }, + { "flags": 2, "x": 202, "y": 30 }, + { "flags": 2, "x": 211, "y": 30 }, + { "flags": 2, "x": 215, "y": 23 }, + { "flags": 2, "x": 224, "y": 19 }, + { "flags": 2, "x": 224, "y": 8 }, + { "flags": 2, "x": 207, "y": 0 } + ] + }, + "layouts": { + "LAYOUT_40": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 1, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 4, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 5, "y": 0}, + {"label": "K05", "matrix": [1, 5], "x": 6, "y": 0}, + {"label": "K06", "matrix": [1, 6], "x": 7, "y": 0}, + {"label": "K07", "matrix": [1, 7], "x": 8, "y": 0}, + {"label": "K08", "matrix": [1, 8], "x": 9, "y": 0}, + {"label": "K09", "matrix": [1, 9], "x": 10, "y": 0}, + + {"label": "K30", "matrix": [5, 0], "x": 0, "y": 1}, + {"label": "K10", "matrix": [2, 0], "x": 1, "y": 1}, + {"label": "K11", "matrix": [2, 1], "x": 2, "y": 1}, + {"label": "K12", "matrix": [2, 2], "x": 3, "y": 1}, + {"label": "K13", "matrix": [2, 3], "x": 4, "y": 1}, + {"label": "K14", "matrix": [2, 4], "x": 5, "y": 1}, + {"label": "K15", "matrix": [3, 5], "x": 6, "y": 1}, + {"label": "K16", "matrix": [3, 6], "x": 7, "y": 1}, + {"label": "K17", "matrix": [3, 7], "x": 8, "y": 1}, + {"label": "K18", "matrix": [3, 8], "x": 9, "y": 1}, + {"label": "K19", "matrix": [3, 9], "x": 11, "y": 1}, + {"label": "K39", "matrix": [5, 9], "x": 12, "y": 1}, + + {"label": "K31", "matrix": [5, 1], "x": 0, "y": 2}, + {"label": "K20", "matrix": [4, 0], "x": 1, "y": 2}, + {"label": "K21", "matrix": [4, 1], "x": 2, "y": 2}, + {"label": "K22", "matrix": [4, 2], "x": 3, "y": 2}, + {"label": "K23", "matrix": [4, 3], "x": 4, "y": 2}, + {"label": "K24", "matrix": [4, 4], "x": 5, "y": 2}, + {"label": "K25", "matrix": [4, 5], "x": 6, "y": 2}, + {"label": "K26", "matrix": [4, 6], "x": 7, "y": 2}, + {"label": "K27", "matrix": [4, 7], "x": 8, "y": 2}, + {"label": "K28", "matrix": [4, 8], "x": 9, "y": 2}, + {"label": "K29", "matrix": [4, 9], "x": 10, "y": 2}, + {"label": "K38", "matrix": [5, 8], "x": 11, "y": 2}, + + {"label": "K32", "matrix": [5, 2], "x": 3, "y": 3}, + {"label": "K33", "matrix": [5, 3], "x": 4, "y": 3}, + {"label": "K34", "matrix": [5, 4], "x": 5, "y": 3}, + {"label": "K35", "matrix": [5, 5], "x": 6, "y": 3}, + {"label": "K36", "matrix": [5, 6], "x": 7, "y": 3}, + {"label": "K37", "matrix": [5, 7], "x": 8, "y": 3} + ] + } + } +} diff --git a/keyboards/splaytoraid/keymaps/default/keymap.c b/keyboards/splaytoraid/keymaps/default/keymap.c new file mode 100644 index 0000000..b0a4dfe --- /dev/null +++ b/keyboards/splaytoraid/keymaps/default/keymap.c @@ -0,0 +1,58 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_40( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + 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_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSPC, + KC_LSFT, KC_ESC, KC_ENT, KC_SPC, KC_DEL, KC_RSFT + ), + + [_LOWER] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) } +}; + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if(active) { tap_code(KC_MPLY); } else { } + break; + } + return true; +} diff --git a/keyboards/splaytoraid/keymaps/vial/config.h b/keyboards/splaytoraid/keymaps/vial/config.h new file mode 100644 index 0000000..8619b47 --- /dev/null +++ b/keyboards/splaytoraid/keymaps/vial/config.h @@ -0,0 +1,7 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define VIAL_KEYBOARD_UID {0xCB, 0x00, 0x04, 0x00, 0x20, 0x04, 0xCA, 0xFE} +#define VIAL_UNLOCK_COMBO_ROWS { 5, 5 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 9 } diff --git a/keyboards/splaytoraid/keymaps/vial/keymap.c b/keyboards/splaytoraid/keymaps/vial/keymap.c new file mode 100644 index 0000000..b0a4dfe --- /dev/null +++ b/keyboards/splaytoraid/keymaps/vial/keymap.c @@ -0,0 +1,58 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_40( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + 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_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSPC, + KC_LSFT, KC_ESC, KC_ENT, KC_SPC, KC_DEL, KC_RSFT + ), + + [_LOWER] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) } +}; + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if(active) { tap_code(KC_MPLY); } else { } + break; + } + return true; +} diff --git a/keyboards/splaytoraid/keymaps/vial/rules.mk b/keyboards/splaytoraid/keymaps/vial/rules.mk new file mode 100644 index 0000000..bbcc42f --- /dev/null +++ b/keyboards/splaytoraid/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes diff --git a/keyboards/splaytoraid/keymaps/vial/vial.json b/keyboards/splaytoraid/keymaps/vial/vial.json new file mode 100644 index 0000000..bca0c96 --- /dev/null +++ b/keyboards/splaytoraid/keymaps/vial/vial.json @@ -0,0 +1,314 @@ +{ + "name":"splaytoraid", + "vendorId":"0xCB00", + "productId":"0x2004", + "lighting": "vialrgb", + "matrix":{ + "rows":6, + "cols":10 + }, + "layouts":{ + "keymap":[ + [ + { + "y":2.75, + "x":6.35 + }, + "0,0\n\n\n\n\n\n\n\n\ne", + "0,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "r":7, + "rx":4.55, + "y":0.8, + "x":-3 + }, + "0,0" + ], + [ + { + "y":-0.5, + "x":-4 + }, + "5,0" + ], + [ + { + "y":-0.4999999999999998, + "x":-3 + }, + "2,0" + ], + [ + { + "y":-0.5, + "x":-4 + }, + "5,1" + ], + [ + { + "y":-0.5, + "x":-3 + }, + "4,0" + ], + [ + { + "r":11, + "y":-3.55, + "x":-1.75 + }, + "0,1" + ], + [ + { + "x":-1.75 + }, + "2,1" + ], + [ + { + "x":-1.75 + }, + "4,1" + ], + [ + { + "r":15, + "y":-3.25, + "x":-0.5499999999999998 + }, + "0,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "0,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "0,4" + ], + [ + { + "y":-0.5, + "x":-0.5499999999999998 + }, + "2,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "2,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "2,4" + ], + [ + { + "y":-0.5, + "x":-0.5499999999999998 + }, + "4,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "4,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "4,4" + ], + [ + { + "r":18, + "y":-0.10000000000000009, + "x":0.35000000000000053 + }, + "5,2" + ], + [ + { + "r":27, + "y":-1.2500000000000004, + "x":2 + }, + "5,3" + ], + [ + { + "r":35, + "y":-1.9500000000000002, + "x":3.55, + "h":1.5 + }, + "5,4" + ], + [ + { + "r":-35, + "rx":10.3, + "y":2.15, + "x":-4.700000000000001, + "h":1.5 + }, + "5,5" + ], + [ + { + "r":-27, + "y":-0.04999999999999982, + "x":-3.1500000000000004 + }, + "5,6" + ], + [ + { + "r":-18, + "y":-0.6999999999999997, + "x":-1.5 + }, + "5,7" + ], + [ + { + "r":-15, + "y":-4.4, + "x":-0.6000000000000014 + }, + "1,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "1,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "1,5" + ], + [ + { + "y":-0.5, + "x":-0.6000000000000014 + }, + "3,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "3,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "3,5" + ], + [ + { + "y":-0.5, + "x":-0.6000000000000014 + }, + "4,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "4,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "4,5" + ], + [ + { + "r":-12, + "y":-3.25, + "x":0.5499999999999989 + }, + "1,8" + ], + [ + { + "x":0.5499999999999989 + }, + "3,8" + ], + [ + { + "x":0.5499999999999989 + }, + "4,8" + ], + [ + { + "r":-8, + "y":-2.45, + "x":1.799999999999999 + }, + "1,9" + ], + [ + { + "y":-0.4999999999999998, + "x":2.799999999999999 + }, + "5,9" + ], + [ + { + "y":-0.4999999999999998, + "x":1.799999999999999 + }, + "3,9" + ], + [ + { + "y":-0.5, + "x":2.799999999999999 + }, + "5,8" + ], + [ + { + "y":-0.5, + "x":1.799999999999999 + }, + "4,9" + ] + ] + } + } diff --git a/keyboards/splaytoraid/readme.md b/keyboards/splaytoraid/readme.md new file mode 100644 index 0000000..ed2daa7 --- /dev/null +++ b/keyboards/splaytoraid/readme.md @@ -0,0 +1,23 @@ +# splaytoraid + +A 40% ergonomic keyboard with a stacked case and aRGB underglow. + +* Keyboard Maintainer: [freya](https://github.com/freya-irl) +* Hardware Availability: [here](https://keeb.supply/products/splaytoraid-messenger-edition) + +Make example for this keyboard (after setting up your build environment): + + make 0xcb/splaytoraid:default + +Flashing example for this keyboard: + + make 0xcb/splaytoraid: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: + +* **Physical reset button**: Press the button on the controller (Helios) for more than 500ms diff --git a/keyboards/splaytoraid/splaytoraid.c b/keyboards/splaytoraid/splaytoraid.c new file mode 100644 index 0000000..9c2dd92 --- /dev/null +++ b/keyboards/splaytoraid/splaytoraid.c @@ -0,0 +1,19 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +uint32_t startup_time = 0; + +void keyboard_post_init_kb(void) { + // Enable RGB current limiter and wait for a bit before allowing RGB to continue + setPinOutput(RGB_ENABLE_PIN); + writePinHigh(RGB_ENABLE_PIN); + wait_ms(20); + + // Record the current time + startup_time = timer_read32(); + + // Offload to the user func + keyboard_post_init_user(); +} From 93b07ae86c089a6427d16b5e6c4acaedfd265120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:26:40 +0200 Subject: [PATCH 03/36] fix: Keymap location for splaytoraid --- .github/workflows/build_firmware.yml | 4 +- keyboards/splaytoraid/keymaps/soryn/config.h | 7 + keyboards/splaytoraid/keymaps/soryn/keymap.c | 58 ++++ keyboards/splaytoraid/keymaps/soryn/rules.mk | 3 + keyboards/splaytoraid/keymaps/soryn/vial.json | 314 ++++++++++++++++++ 5 files changed, 384 insertions(+), 2 deletions(-) create mode 100644 keyboards/splaytoraid/keymaps/soryn/config.h create mode 100644 keyboards/splaytoraid/keymaps/soryn/keymap.c create mode 100644 keyboards/splaytoraid/keymaps/soryn/rules.mk create mode 100644 keyboards/splaytoraid/keymaps/soryn/vial.json diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 87351f6..947db32 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -44,8 +44,8 @@ jobs: filters: | keyboards/planck/rev7/keymaps/soryn: - 'keyboards/planck/rev7/keymaps/soryn/**' - keyboards/0xcb/splaytoraid/keymaps/soryn: - - 'keyboards/0xcb/splaytoraid/keymaps/soryn/**' + keyboards/splaytoraid/keymaps/soryn: + - 'keyboards/splaytoraid/keymaps/soryn/**' build: name: Build firmware for ${{matrix.keyboard}} diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h new file mode 100644 index 0000000..8619b47 --- /dev/null +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -0,0 +1,7 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define VIAL_KEYBOARD_UID {0xCB, 0x00, 0x04, 0x00, 0x20, 0x04, 0xCA, 0xFE} +#define VIAL_UNLOCK_COMBO_ROWS { 5, 5 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 9 } diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c new file mode 100644 index 0000000..b0a4dfe --- /dev/null +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -0,0 +1,58 @@ +// Copyright 2024 Conor Burns (@Conor-Burns) +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_40( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + 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_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSPC, + KC_LSFT, KC_ESC, KC_ENT, KC_SPC, KC_DEL, KC_RSFT + ), + + [_LOWER] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_40( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) } +}; + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if(active) { tap_code(KC_MPLY); } else { } + break; + } + return true; +} diff --git a/keyboards/splaytoraid/keymaps/soryn/rules.mk b/keyboards/splaytoraid/keymaps/soryn/rules.mk new file mode 100644 index 0000000..bbcc42f --- /dev/null +++ b/keyboards/splaytoraid/keymaps/soryn/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes diff --git a/keyboards/splaytoraid/keymaps/soryn/vial.json b/keyboards/splaytoraid/keymaps/soryn/vial.json new file mode 100644 index 0000000..bca0c96 --- /dev/null +++ b/keyboards/splaytoraid/keymaps/soryn/vial.json @@ -0,0 +1,314 @@ +{ + "name":"splaytoraid", + "vendorId":"0xCB00", + "productId":"0x2004", + "lighting": "vialrgb", + "matrix":{ + "rows":6, + "cols":10 + }, + "layouts":{ + "keymap":[ + [ + { + "y":2.75, + "x":6.35 + }, + "0,0\n\n\n\n\n\n\n\n\ne", + "0,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "r":7, + "rx":4.55, + "y":0.8, + "x":-3 + }, + "0,0" + ], + [ + { + "y":-0.5, + "x":-4 + }, + "5,0" + ], + [ + { + "y":-0.4999999999999998, + "x":-3 + }, + "2,0" + ], + [ + { + "y":-0.5, + "x":-4 + }, + "5,1" + ], + [ + { + "y":-0.5, + "x":-3 + }, + "4,0" + ], + [ + { + "r":11, + "y":-3.55, + "x":-1.75 + }, + "0,1" + ], + [ + { + "x":-1.75 + }, + "2,1" + ], + [ + { + "x":-1.75 + }, + "4,1" + ], + [ + { + "r":15, + "y":-3.25, + "x":-0.5499999999999998 + }, + "0,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "0,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "0,4" + ], + [ + { + "y":-0.5, + "x":-0.5499999999999998 + }, + "2,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "2,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "2,4" + ], + [ + { + "y":-0.5, + "x":-0.5499999999999998 + }, + "4,2" + ], + [ + { + "y":-0.75, + "x":0.4500000000000002 + }, + "4,3" + ], + [ + { + "y":-0.75, + "x":1.4500000000000002 + }, + "4,4" + ], + [ + { + "r":18, + "y":-0.10000000000000009, + "x":0.35000000000000053 + }, + "5,2" + ], + [ + { + "r":27, + "y":-1.2500000000000004, + "x":2 + }, + "5,3" + ], + [ + { + "r":35, + "y":-1.9500000000000002, + "x":3.55, + "h":1.5 + }, + "5,4" + ], + [ + { + "r":-35, + "rx":10.3, + "y":2.15, + "x":-4.700000000000001, + "h":1.5 + }, + "5,5" + ], + [ + { + "r":-27, + "y":-0.04999999999999982, + "x":-3.1500000000000004 + }, + "5,6" + ], + [ + { + "r":-18, + "y":-0.6999999999999997, + "x":-1.5 + }, + "5,7" + ], + [ + { + "r":-15, + "y":-4.4, + "x":-0.6000000000000014 + }, + "1,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "1,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "1,5" + ], + [ + { + "y":-0.5, + "x":-0.6000000000000014 + }, + "3,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "3,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "3,5" + ], + [ + { + "y":-0.5, + "x":-0.6000000000000014 + }, + "4,7" + ], + [ + { + "y":-0.75, + "x":-1.6000000000000014 + }, + "4,6" + ], + [ + { + "y":-0.75, + "x":-2.6000000000000005 + }, + "4,5" + ], + [ + { + "r":-12, + "y":-3.25, + "x":0.5499999999999989 + }, + "1,8" + ], + [ + { + "x":0.5499999999999989 + }, + "3,8" + ], + [ + { + "x":0.5499999999999989 + }, + "4,8" + ], + [ + { + "r":-8, + "y":-2.45, + "x":1.799999999999999 + }, + "1,9" + ], + [ + { + "y":-0.4999999999999998, + "x":2.799999999999999 + }, + "5,9" + ], + [ + { + "y":-0.4999999999999998, + "x":1.799999999999999 + }, + "3,9" + ], + [ + { + "y":-0.5, + "x":2.799999999999999 + }, + "5,8" + ], + [ + { + "y":-0.5, + "x":1.799999999999999 + }, + "4,9" + ] + ] + } + } From 3d4dab99444919cba74edd0bbfddb2ccb88b13aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:29:51 +0200 Subject: [PATCH 04/36] fix: Build job --- .github/workflows/build_firmware.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 947db32..e77e3cc 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -50,10 +50,10 @@ jobs: build: name: Build firmware for ${{matrix.keyboard}} needs: [qmk-setup, get-changes] - if: ${{needs.changes.outputs.keyboards != '[]' && needs.changes.outputs.keyboards != ''}} + if: ${{needs.get-changes.outputs.keyboards != '[]' && needs.get-changes.outputs.keyboards != ''}} strategy: matrix: - keyboard: ${{ fromJSON(needs.changes.outputs.keyboards) }} + keyboard: ${{ fromJSON(needs.get-changes.outputs.keyboards) }} permissions: contents: write pull-requests: write From 8b3ec9d63c45218cccdd73d1acdfa32116cb9314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:33:18 +0200 Subject: [PATCH 05/36] fix: Merge steps into one --- .github/workflows/build_firmware.yml | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index e77e3cc..376289e 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -8,25 +8,8 @@ env: QMK_BRANCH: vial jobs: - qmk-setup: - name: Setup QMK (vial) - runs-on: ubuntu-latest - container: qmkfm/qmk_cli - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Get Vial fork - run: | - git clone https://github.com/$QMK_REPO.git --depth 1 --branch $QMK_BRANCH ./qmk_firmware - - name: Setup QMK - run: | - qmk config user.qmk_home=./qmk_firmware - qmk setup -y - get-changes: name: Detect which configs changed - needs: qmk-setup runs-on: ubuntu-latest container: qmkfm/qmk_cli permissions: @@ -49,7 +32,7 @@ jobs: build: name: Build firmware for ${{matrix.keyboard}} - needs: [qmk-setup, get-changes] + needs: get-changes if: ${{needs.get-changes.outputs.keyboards != '[]' && needs.get-changes.outputs.keyboards != ''}} strategy: matrix: @@ -63,6 +46,13 @@ jobs: - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.ref }} + - name: Get Vial fork + run: | + git clone https://github.com/$QMK_REPO.git --depth 1 --branch $QMK_BRANCH ./qmk_firmware + - name: Setup QMK + run: | + qmk config user.qmk_home=./qmk_firmware + qmk setup -y - name: Clone config into QMK repo run: | cp -rup ./${{matrix.keyboard}}/* ./qmk_firmware/keyboards/ From 0bd3ebc78d047ca0be221d6451522de2a82a130d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:38:12 +0200 Subject: [PATCH 06/36] feat: Add make firmware --- .github/workflows/build_firmware.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 376289e..7240b73 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -11,7 +11,6 @@ jobs: get-changes: name: Detect which configs changed runs-on: ubuntu-latest - container: qmkfm/qmk_cli permissions: pull-requests: read outputs: @@ -55,7 +54,7 @@ jobs: qmk setup -y - name: Clone config into QMK repo run: | - cp -rup ./${{matrix.keyboard}}/* ./qmk_firmware/keyboards/ + cp -rup ./keyboards/* ./qmk_firmware/keyboards/ - name: Split keyboard string for build uses: xom9ikk/split@v1 id: split @@ -65,4 +64,6 @@ jobs: limit: -1 - name: Compile firmware run: | - echo ${{steps.split.outputs}} + ls ./qmk_firmware/keyboards + cd ./qmk_firmware + make ${{steps.split.outputs._1}}:${{steps.split.outputs._3}} From 5f52d13734a95ed5f0a41d02f14b3ef5a3162cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:47:03 +0200 Subject: [PATCH 07/36] feat: Add upload and copy firmware step --- .github/workflows/build_firmware.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 7240b73..04e4a0b 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -64,6 +64,15 @@ jobs: limit: -1 - name: Compile firmware run: | - ls ./qmk_firmware/keyboards cd ./qmk_firmware make ${{steps.split.outputs._1}}:${{steps.split.outputs._3}} + - name: Move built firmware to folder + run: | + cp ./qmk_firmware/*.hex ./qmk_firmware/*.bin ./qmk_firmware/*.uf2 ./firmware + - name: Upload firmware to branch + uses: EndBug/add-and-commit@v9 + with: + add: "./firmware" + message: "chore(firmware): Upload newest firmware for ${{matrix.keyboard}}" + pathspec_error_handling: exitAtEnd + default_author: github_actions From b129f22e7e89e6d473338b004a7c46a7c62983ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:50:25 +0200 Subject: [PATCH 08/36] feat: Update built firmware location --- .github/workflows/build_firmware.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 04e4a0b..b66cef0 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -67,9 +67,10 @@ jobs: cd ./qmk_firmware make ${{steps.split.outputs._1}}:${{steps.split.outputs._3}} - name: Move built firmware to folder + continue-on-error: true run: | cp ./qmk_firmware/*.hex ./qmk_firmware/*.bin ./qmk_firmware/*.uf2 ./firmware - - name: Upload firmware to branch + - name: Upload firmware to PR uses: EndBug/add-and-commit@v9 with: add: "./firmware" From a2d806a3d5fbf6011de31f2355bd016aae2207bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 17:59:42 +0200 Subject: [PATCH 09/36] feat: Now using root user in container --- .github/workflows/build_firmware.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index b66cef0..c037d93 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -40,7 +40,9 @@ jobs: contents: write pull-requests: write runs-on: ubuntu-latest - container: qmkfm/qmk_cli + container: + image: qmkfm/qmk_cli + options: --user 1001 steps: - uses: actions/checkout@v3 with: From 87935f590e75a8dd60e41536999492828d29ed29 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:01:40 +0000 Subject: [PATCH 10/36] chore(firmware): Upload newest firmware for keyboards/splaytoraid/keymaps/soryn --- firmware/splaytoraid_soryn.uf2 | Bin 0 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 firmware/splaytoraid_soryn.uf2 diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..2f4e78d9b35860791d444a096af623441cc83399 GIT binary patch literal 140288 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 F|3B175Z?d* literal 0 HcmV?d00001 From cf6d5fd7a29aa5dea8ee4291ae0d428f8ebefeb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 18:02:24 +0200 Subject: [PATCH 11/36] feat: Update matrix for removing steps --- .github/workflows/build_firmware.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index c037d93..8437e74 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -24,9 +24,9 @@ jobs: id: filter with: filters: | - keyboards/planck/rev7/keymaps/soryn: + planck/rev7:soryn: - 'keyboards/planck/rev7/keymaps/soryn/**' - keyboards/splaytoraid/keymaps/soryn: + splaytoraid:soryn: - 'keyboards/splaytoraid/keymaps/soryn/**' build: @@ -57,17 +57,10 @@ jobs: - name: Clone config into QMK repo run: | cp -rup ./keyboards/* ./qmk_firmware/keyboards/ - - name: Split keyboard string for build - uses: xom9ikk/split@v1 - id: split - with: - string: ${{matrix.keyboard}} - separator: / - limit: -1 - name: Compile firmware run: | cd ./qmk_firmware - make ${{steps.split.outputs._1}}:${{steps.split.outputs._3}} + make ${{matrix.keyboard}} - name: Move built firmware to folder continue-on-error: true run: | From 0bbcf9ac283d7de31dc2c8e9acc93dc85950f21f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:04:04 +0000 Subject: [PATCH 12/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 2f4e78d9b35860791d444a096af623441cc83399..eddf302ecbbe5d4e6ade2a447bdedf8b3c4a77f0 100644 GIT binary patch delta 102 zcmZoT!O;LjTNqzum_=zYUSLoV*sH4W>-)wZ6&gP-23h?2zUIeN3umVY$4}1%wnizk z$T3`8YN!HK@%u-GB7+XY#pxGcFy5K`hf#1kZx*94f4d<_`tz%yuhF!uvb;#*Y}M-gf)I#6gK$vea(+(3umVY$4}1%wjNbv zkz=@MWvBvF@%x9cB7+XY#pxGcFy5K`hf#1kZx*94{~JS)_Afu8!IDe1>t``u+z9|t CNiF68 From 5f8a99c446b4553ab1895bb6d849b98708c26fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 18:07:04 +0200 Subject: [PATCH 13/36] feat: Remove old workflow + able to create 16 layers --- .github/workflows/firmware_build.yml | 61 -------------------- keyboards/splaytoraid/keymaps/soryn/config.h | 3 + 2 files changed, 3 insertions(+), 61 deletions(-) delete mode 100644 .github/workflows/firmware_build.yml diff --git a/.github/workflows/firmware_build.yml b/.github/workflows/firmware_build.yml deleted file mode 100644 index 9b737e5..0000000 --- a/.github/workflows/firmware_build.yml +++ /dev/null @@ -1,61 +0,0 @@ -on: - pull_request: - -name: Build firmware - -jobs: - changes: - name: Detect changes to keyboards - runs-on: ubuntu-20.04 - permissions: - pull-requests: read - outputs: - keyboards: ${{steps.filter.outputs.changes}} - steps: - - uses: actions/checkout@v3 - - name: Detect which keyboard had changes - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - keyboards/planck/rev7/keymaps/soryn: - - 'keyboards/planck/rev7/keymaps/soryn/**' - - build_firmware: - name: ${{matrix.keyboard}} - needs: changes - if: ${{needs.changes.outputs.keyboards != '[]' && needs.changes.outputs.keyboards != ''}} - strategy: - matrix: - keyboard: ${{ fromJSON(needs.changes.outputs.keyboards) }} - permissions: - contents: write - pull-requests: write - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.ref }} - - name: Split changes keyboard string - uses: xom9ikk/split@v1 - id: split - with: - string: ${{matrix.keyboard}} - separator: / - limit: -1 - - name: Build firmware - uses: Soryyyn/qmk-build@v1.2 - with: - keymap-path: "keyboards/planck/rev7/keymaps/soryn" - keyboard: "${{ steps.split.outputs._1 }}/${{ steps.split.outputs._2}}" - keymap: "${{ steps.split.outputs._4}}" - - name: Move firmware to folder - run: | - cp ./build/*.hex ./build/*.bin ./firmware - - name: Upload firmware to repo - uses: EndBug/add-and-commit@v9 - with: - add: "./firmware" - message: "chore(firmware): Upload newest firmware for ${{matrix.keyboard}}" - pathspec_error_handling: exitAtEnd - default_author: github_actions diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h index 8619b47..13f60e8 100644 --- a/keyboards/splaytoraid/keymaps/soryn/config.h +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -5,3 +5,6 @@ #define VIAL_KEYBOARD_UID {0xCB, 0x00, 0x04, 0x00, 0x20, 0x04, 0xCA, 0xFE} #define VIAL_UNLOCK_COMBO_ROWS { 5, 5 } #define VIAL_UNLOCK_COMBO_COLS { 0, 9 } + +// Able to create 16 layers. +#define DYNAMIC_KEYMAP_LAYER_COUNT 16 From 161f00c0f9fa6c18d6ab57803c3b3c85caacadb2 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:09:08 +0000 Subject: [PATCH 14/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index eddf302ecbbe5d4e6ade2a447bdedf8b3c4a77f0..f42faba6fb33fc99f51f0c1415d79d642b7c4da6 100644 GIT binary patch delta 22481 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 jULpB6Wr_usiZUoma787~cS8wc4?x#vU}@=-?E delta 22469 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 From 1bd2a015dc77a44302fee78d99b02e19e21cd554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 18:42:03 +0200 Subject: [PATCH 15/36] feat: Working on layers --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 49 +++++++++++++------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index b0a4dfe..a2e57f0 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -5,34 +5,51 @@ enum layer_names { _BASE, - _LOWER, - _RAISE, - _ADJUST + _SYMBOLS, + _NUMBERS, + _FUNCTIONS }; +// Homerow mods +// Left side +#define HRM_A MT(KC_LGUI, KC_A) +#define HRM_S MT(KC_LALT, KC_S) +#define HRM_D MT(KC_LCTL, KC_D) +#define HRM_F MT(KC_LSFT, KC_F) +// Right side +#define HRM_SC MT(KC_LGUI, KC_SCLN) +#define HRM_L MT(KC_LALT, KC_L) +#define HRM_K MT(KC_LCTL, KC_K) +#define HRM_J MT(KC_LSFT, KC_J) + +// Layer triggers +#define ENT_SYM LT(_SYMBOLS, KC_ENT) +#define BSP_NUM LT(_NUMBERS, KC_BSPC) +#define DEL_FUN LT(_FUNCTIONS, KC_DEL) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_40( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - 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_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSPC, - KC_LSFT, KC_ESC, KC_ENT, KC_SPC, KC_DEL, KC_RSFT + KC_ESC, HRM_A, HRM_S, HRM_D, HRM_F, KC_G, KC_H, HRM_J, HRM_K, HRM_L, HRM_SC, KC_BSLS, + KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN ), - [_LOWER] = LAYOUT_40( + [_SYMBOLS] = LAYOUT_40( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_RAISE] = LAYOUT_40( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ + [_NUMBERS] = LAYOUT_40( + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, + XXXXXXX, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_DOT, KC_0, KC_MINS, XXXXXXX, XXXXXXX, XXXXXXX ), - [_ADJUST] = LAYOUT_40( + [_FUNCTIONS] = LAYOUT_40( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -43,9 +60,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, - [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, - [_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) } + [_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_SYMBOLS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FUNCTIONS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } }; bool dip_switch_update_user(uint8_t index, bool active) { From 81bec36017e62b3f6bfb73705d0dccf4d7b4e8a4 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:43:58 +0000 Subject: [PATCH 16/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index f42faba6fb33fc99f51f0c1415d79d642b7c4da6..3cadb461e6cd6f70aaea7e02d4463ccc0bff7f34 100644 GIT binary patch delta 256 zcmZoT!O;LjTNuSMxmIW}USLoV*sH2AS&{Mf^xv6`n&zb%KQ8)P{Q5rU#~BM}rwGSS z&jq%wP-Kx~xEOAzqVVhc>mQ|x3_1)Ky9`xFKW+ zwK$Z;l-LzG6}f;Gh#GP;@G9~t@GBWB%Q8qaurWw7urdfT2r!s2m@`-~XfjwbJY&!X z8m{4}<>cdR!eF@l{wu~xMoxVO6$VuXH3kEqDe|1g42ld&49X08K%ThjLxu+oj~E^^ hm@>#Q$TKJ~7&4#&a|U$=-RazK88x@Rd&4MX4ghI`L_Poj delta 205 zcmZoT!O;LjTNuSMxz=hhUSLoV*sH2AS&{Mf^xv6`n&w+Ieq8Lg`1O6x4;~9=rwGSS z&jq%wRb-K4xEN%pqVVhc>mOSc8FUyfdKsz$c~5@ufO(&{M`tlIHgK_ y+6)gFG#NC2#``clWzb?U*?#{OV Date: Sat, 5 Apr 2025 18:52:14 +0200 Subject: [PATCH 17/36] fix: Homerow mods --- keyboards/splaytoraid/keymaps/soryn/config.h | 6 ++++++ keyboards/splaytoraid/keymaps/soryn/keymap.c | 18 +++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h index 13f60e8..0034843 100644 --- a/keyboards/splaytoraid/keymaps/soryn/config.h +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -8,3 +8,9 @@ // Able to create 16 layers. #define DYNAMIC_KEYMAP_LAYER_COUNT 16 + +// Homerow mod settings. +// Configure the global tapping term (default: 200ms) +#define TAPPING_TERM 200 +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define QUICK_TAP_TERM 0 diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index a2e57f0..afb4047 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -12,15 +12,15 @@ enum layer_names { // Homerow mods // Left side -#define HRM_A MT(KC_LGUI, KC_A) -#define HRM_S MT(KC_LALT, KC_S) -#define HRM_D MT(KC_LCTL, KC_D) -#define HRM_F MT(KC_LSFT, KC_F) +#define GUI_A LGUI_T(KC_A) +#define ALT_S LALT_T(KC_S) +#define CTL_D LCTL_T(KC_D) +#define SFT_F LSFT_T(KC_F) // Right side -#define HRM_SC MT(KC_LGUI, KC_SCLN) -#define HRM_L MT(KC_LALT, KC_L) -#define HRM_K MT(KC_LCTL, KC_K) -#define HRM_J MT(KC_LSFT, KC_J) +#define GUI_SCLN RGUI_T(KC_SCLN) +#define ALT_L LALT_T(KC_L) +#define CTL_K RCTL_T(KC_K) +#define SFT_J RSFT_T(KC_J) // Layer triggers #define ENT_SYM LT(_SYMBOLS, KC_ENT) @@ -30,7 +30,7 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_40( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_ESC, HRM_A, HRM_S, HRM_D, HRM_F, KC_G, KC_H, HRM_J, HRM_K, HRM_L, HRM_SC, KC_BSLS, + KC_ESC, GUI_A, ALT_S, CTL_D, SFT_F, KC_G, KC_H, SFT_J, CTL_K, ALT_L, GUI_SCLN, KC_BSLS, KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN ), From fa250683c3621ebd2d458fa7af872751304fbe77 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:54:06 +0000 Subject: [PATCH 18/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 3cadb461e6cd6f70aaea7e02d4463ccc0bff7f34..1339c3fadb6a43b1eedb002d39033202de8875db 100644 GIT binary patch delta 123 zcmZoT!O;LjTNuSMx!N@tFEA(w>{V5mtjKtK`tM9eP4lA~KQ7L<`1O6xkJ}c`P7#iu zo(pVkS7ec6xL9GRqVVhc>mNrI8FUyfS{bSWc~5@a2J=+5M`tmbHE?K%sjw?@DschL X6XoJ&;5FhimQ|x3_1)Ky9`x@G9~t@GBWBZ{P8X(Zdn|;Dao; From 0238c57f05b90bd0ce89406842c933150def28b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 19:01:25 +0200 Subject: [PATCH 19/36] feat: Add more config for better homerow mods --- keyboards/splaytoraid/keymaps/soryn/config.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h index 0034843..e3cf411 100644 --- a/keyboards/splaytoraid/keymaps/soryn/config.h +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -9,8 +9,16 @@ // Able to create 16 layers. #define DYNAMIC_KEYMAP_LAYER_COUNT 16 -// Homerow mod settings. // Configure the global tapping term (default: 200ms) -#define TAPPING_TERM 200 +#define TAPPING_TERM 180 + // Enable rapid switch from tap to hold, disables double tap hold auto-repeat. #define QUICK_TAP_TERM 0 + +// Turn of the backlight once the PC goes into sleep. +#define RGBLIGHT_SLEEP true + +// Set "permissive hold" mode on +#define PERMISSIVE_HOLD true + +#define RETRO_TAPPING From ddc626293eac55456bcc2a85a1b52409ba69cc5b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 17:35:23 +0000 Subject: [PATCH 20/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 1339c3fadb6a43b1eedb002d39033202de8875db..dec382c5c9d1fdfc17f1993aa23d06b9c65e45cd 100644 GIT binary patch delta 117 zcmZoT!O;LjTNw8VaW)yvY?Nv?GF-p?xDaEvHshAoSh;ZKRp-N+OEhV$8fR2P(|U__t!s;Dl+IWT(mM& T1@fN!xDDp1Y>&=jT)Gng0){cy From fdda5cce6f73d995db82b35372b2d03fe56ca0e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sat, 5 Apr 2025 20:07:36 +0200 Subject: [PATCH 21/36] fix: Trying to fix homerow mods feel --- keyboards/splaytoraid/keymaps/soryn/config.h | 9 ++++----- keyboards/splaytoraid/keymaps/soryn/rules.mk | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h index e3cf411..9427fe8 100644 --- a/keyboards/splaytoraid/keymaps/soryn/config.h +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -12,13 +12,12 @@ // Configure the global tapping term (default: 200ms) #define TAPPING_TERM 180 -// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. -#define QUICK_TAP_TERM 0 - // Turn of the backlight once the PC goes into sleep. -#define RGBLIGHT_SLEEP true +#define RGBLIGHT_SLEEP // Set "permissive hold" mode on -#define PERMISSIVE_HOLD true +#define PERMISSIVE_HOLD #define RETRO_TAPPING + +#define FORCE_NKRO diff --git a/keyboards/splaytoraid/keymaps/soryn/rules.mk b/keyboards/splaytoraid/keymaps/soryn/rules.mk index bbcc42f..a044f85 100644 --- a/keyboards/splaytoraid/keymaps/soryn/rules.mk +++ b/keyboards/splaytoraid/keymaps/soryn/rules.mk @@ -1,3 +1,6 @@ VIA_ENABLE = yes VIAL_ENABLE = yes VIALRGB_ENABLE = yes +NKRO_ENABLE = yes +FORCE_NKRO = yes +MOUSEKEY_ENABLE = yes From b50c66217a2ef5694f57c2c8128800e121a20989 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 18:11:54 +0000 Subject: [PATCH 22/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index dec382c5c9d1fdfc17f1993aa23d06b9c65e45cd..edf1c334833bda4833cfb943f35fbd3aa7aaedf2 100644 GIT binary patch delta 15397 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 L3d+I<4kZ5{42{B) delta 12777 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 Date: Sun, 6 Apr 2025 11:44:06 +0200 Subject: [PATCH 23/36] feat: Add function layer --- keyboards/splaytoraid/keymaps/soryn/config.h | 9 +++------ keyboards/splaytoraid/keymaps/soryn/keymap.c | 8 ++++---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/config.h b/keyboards/splaytoraid/keymaps/soryn/config.h index 9427fe8..faaae5d 100644 --- a/keyboards/splaytoraid/keymaps/soryn/config.h +++ b/keyboards/splaytoraid/keymaps/soryn/config.h @@ -13,11 +13,8 @@ #define TAPPING_TERM 180 // Turn of the backlight once the PC goes into sleep. -#define RGBLIGHT_SLEEP +#define RGBLIGHT_SLEEP true -// Set "permissive hold" mode on -#define PERMISSIVE_HOLD +#define RETRO_TAPPING true -#define RETRO_TAPPING - -#define FORCE_NKRO +#define FORCE_NKRO true diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index afb4047..67c9126 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -50,10 +50,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FUNCTIONS] = LAYOUT_40( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ + KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_F11, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, + XXXXXXX, KC_F10, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; From fd1c3a9ca8c7775f813d8af14dce6698580afe3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sun, 6 Apr 2025 11:51:36 +0200 Subject: [PATCH 24/36] feat: Add symbol layer --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 67c9126..9923311 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -29,17 +29,17 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_40( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_ESC, GUI_A, ALT_S, CTL_D, SFT_F, KC_G, KC_H, SFT_J, CTL_K, ALT_L, GUI_SCLN, KC_BSLS, - KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, - KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_ESC, GUI_A, ALT_S, CTL_D, SFT_F, KC_G, KC_H, SFT_J, CTL_K, ALT_L, GUI_SCLN, KC_BSLS, + KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN ), [_SYMBOLS] = LAYOUT_40( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ + S(KC_LBRC), S(KC_7), S(KC_8), S(KC_9), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, S(KC_SCLN), S(KC_4), S(KC_5), S(KC_6), S(KC_EQL), XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, + XXXXXXX, S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_BSLS), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + S(KC_DOT), S(KC_0), S(KC_MINS), XXXXXXX, XXXXXXX, XXXXXXX ), [_NUMBERS] = LAYOUT_40( From 3c1b7415c060cbbbf18802a46637d47367b3c1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Sun, 6 Apr 2025 12:02:39 +0200 Subject: [PATCH 25/36] feat: Working on nav layer --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 9923311..b8e1855 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -5,6 +5,7 @@ enum layer_names { _BASE, + _NAVIGATION, _SYMBOLS, _NUMBERS, _FUNCTIONS @@ -23,6 +24,7 @@ enum layer_names { #define SFT_J RSFT_T(KC_J) // Layer triggers +#define TAB_NAV LT(_NAVIGATION, KC_TAB) #define ENT_SYM LT(_SYMBOLS, KC_ENT) #define BSP_NUM LT(_NUMBERS, KC_BSPC) #define DEL_FUN LT(_FUNCTIONS, KC_DEL) @@ -35,6 +37,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN ), + [_NAVIGATION] = LAYOUT_40( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, KC_BSPC, KC_DEL + ), + [_SYMBOLS] = LAYOUT_40( S(KC_LBRC), S(KC_7), S(KC_8), S(KC_9), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_SCLN), S(KC_4), S(KC_5), S(KC_6), S(KC_EQL), XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, @@ -53,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_F10, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + KC_APP, KC_TAB, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX ) }; From 43e6c35da4eb0451dd545b35aa2c6c64960a3146 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Apr 2025 10:04:26 +0000 Subject: [PATCH 26/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140288 -> 140800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index edf1c334833bda4833cfb943f35fbd3aa7aaedf2..6b4a7dfd07200c19b88b4389a14c113dd7fb2fcf 100644 GIT binary patch delta 4147 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 d`%jsc7uTHZ%oQcF1D#e;z9 Date: Mon, 7 Apr 2025 13:17:59 +0200 Subject: [PATCH 27/36] feat: More work on nav layer --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index b8e1855..0b5ad56 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -38,9 +38,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_NAVIGATION] = LAYOUT_40( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDO, KC_PSTE, KC_COPY, KC_CUT, S(KC_UNDO), + XXXXXXX, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, KC_BSPC, KC_DEL ), @@ -68,10 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_SYMBOLS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FUNCTIONS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } }; bool dip_switch_update_user(uint8_t index, bool active) { From 7e041831df2369b22e536cee7b68d9724aa5769a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Mon, 7 Apr 2025 13:21:40 +0200 Subject: [PATCH 28/36] fix: Encoders --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 0b5ad56..2bfde52 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -68,7 +68,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAVIGATION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_SYMBOLS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FUNCTIONS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } }; bool dip_switch_update_user(uint8_t index, bool active) { From 80a50f9919ac149d4a565f2bf4b8cb652b0a2736 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:23:31 +0000 Subject: [PATCH 29/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140800 -> 140800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 6b4a7dfd07200c19b88b4389a14c113dd7fb2fcf..8de6aa0d8b4253417cd12806fd1c942a1baf3ff0 100644 GIT binary patch delta 162 zcmZoT!_fdlTNw4STu*B-USLoV*sH4W>-)kVw={lS++y+T`^c# BJy-w$ delta 137 zcmZoT!_fdlTNw4STpw#NUSLoV*sH4W>-)kVOd3Bfsu=wGKIg|Q3umVY$4}1%wmw#5 zkz=?hW2gdD@%jgoB7+XY#lMCi^-q4x0`pS07iTdtHZU_VFibCh#khF7fF#qS>3?1` ls&E5^7#=e`VtB~#V6q~k Date: Tue, 8 Apr 2025 10:20:34 +0200 Subject: [PATCH 30/36] feat: Add mod tap key for nav layer --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 2bfde52..0b96b9e 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -28,13 +28,14 @@ enum layer_names { #define ENT_SYM LT(_SYMBOLS, KC_ENT) #define BSP_NUM LT(_NUMBERS, KC_BSPC) #define DEL_FUN LT(_FUNCTIONS, KC_DEL) +#define TAB_NAV LT(_NAVIGATION, KC_TAB) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_40( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC, GUI_A, ALT_S, CTL_D, SFT_F, KC_G, KC_H, SFT_J, CTL_K, ALT_L, GUI_SCLN, KC_BSLS, KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, - KC_RALT, KC_TAB, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN + KC_RALT, TAB_NAV, KC_SPC, ENT_SYM, BSP_NUM, DEL_FUN ), [_NAVIGATION] = LAYOUT_40( From 7c5da37d539f82b8f8b122b250f5e9e890666db3 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 08:22:31 +0000 Subject: [PATCH 31/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140800 -> 140800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 8de6aa0d8b4253417cd12806fd1c942a1baf3ff0..84186c38bef506b987a3b2cd1ef15c4458a6cbd3 100644 GIT binary patch delta 95 zcmZoT!_fdlTNw4STun6?FEA(w>{V6x^?l(FW{n>gl?{GRM}kwJ&y;vYkh`X@imfq918i?bMO8Wh delta 95 zcmZoT!_fdlTNw4STu*B-USLoV*sH4W>-)kVw={lS++y+T` Date: Tue, 8 Apr 2025 12:45:26 +0200 Subject: [PATCH 32/36] fix: Move over arrow keys to vim mappings --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 0b96b9e..0ea5c67 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -40,8 +40,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVIGATION] = LAYOUT_40( XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDO, KC_PSTE, KC_COPY, KC_CUT, S(KC_UNDO), - XXXXXXX, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, + XXXXXXX, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, KC_BSPC, KC_DEL ), From 20f8c6b1880c42a476f7ce9706fdc98d78d72e35 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 10:47:18 +0000 Subject: [PATCH 33/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140800 -> 140800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 84186c38bef506b987a3b2cd1ef15c4458a6cbd3..cec9424427896026c74db52b783eeb209ad1587c 100644 GIT binary patch delta 98 zcmZoT!_fdlTNw4ST=!`(USLoV*sH4W>-)kVO&UKg##sFNKIezJg|kzHSYEkwJ&yVyz)a{gWT+VBU@G#aWE!8>hRxVN~0m@rH4RB><1JEM5Qr delta 98 zcmZoT!_fdlTNw4STun6?FEA(w>{V6x^?l(FW{n>gl?{GRM}kwJ&y;vYkh`X@imfq918i?bNdH%@nW!>F-6>kZ>HO8`>QE4lyx From 32d029f2ad69f6c1a2d152b75cf2d6940d7903e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Soryn=20B=C3=A4chli?= Date: Tue, 8 Apr 2025 13:02:38 +0200 Subject: [PATCH 34/36] fix: Parenthesis --- keyboards/splaytoraid/keymaps/soryn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 0ea5c67..81ee7cb 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { S(KC_LBRC), S(KC_7), S(KC_8), S(KC_9), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_SCLN), S(KC_4), S(KC_5), S(KC_6), S(KC_EQL), XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_BSLS), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - S(KC_DOT), S(KC_0), S(KC_MINS), XXXXXXX, XXXXXXX, XXXXXXX + KC_RPRN, KC_RPRN, S(KC_MINS), XXXXXXX, XXXXXXX, XXXXXXX ), [_NUMBERS] = LAYOUT_40( From 84cd0fdfa512452e83ddd7a329c4ad92b688abe7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 11:04:57 +0000 Subject: [PATCH 35/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140800 -> 140800 bytes keyboards/splaytoraid/keymaps/soryn/keymap.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index cec9424427896026c74db52b783eeb209ad1587c..864b39f0a5e21ef18b48e8f77d69439631e1128f 100644 GIT binary patch delta 95 zcmZoT!_fdlTNw4ST&p!0FEA(w>{V6x^?l(FYmFZlMJ;}PpYy}r!r3Xp@zZmGt<{Pw uats$+3{`+CUjMLGWYA%_c*GE-{>cw_FmK29;w;9@CPww`ci%87TLJ*i?kR!* delta 95 zcmZoT!_fdlTNw4ST=!`(USLoV*sH4W>-)kVO&UKg##sFNKIezJg|kzHSYEkwJ&yVyz)a{gWT+VBU@G#aWD*O^oK-@4jJFwgdnLY$`(l diff --git a/keyboards/splaytoraid/keymaps/soryn/keymap.c b/keyboards/splaytoraid/keymaps/soryn/keymap.c index 81ee7cb..d0e21b5 100644 --- a/keyboards/splaytoraid/keymaps/soryn/keymap.c +++ b/keyboards/splaytoraid/keymaps/soryn/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { S(KC_LBRC), S(KC_7), S(KC_8), S(KC_9), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_SCLN), S(KC_4), S(KC_5), S(KC_6), S(KC_EQL), XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_BSLS), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_RPRN, KC_RPRN, S(KC_MINS), XXXXXXX, XXXXXXX, XXXXXXX + KC_LPRN, KC_RPRN, S(KC_MINS), XXXXXXX, XXXXXXX, XXXXXXX ), [_NUMBERS] = LAYOUT_40( From 2b435b03d0fc3113372f99bd235e485cb7967eff Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:09:49 +0000 Subject: [PATCH 36/36] chore(firmware): Upload newest firmware for splaytoraid:soryn --- firmware/splaytoraid_soryn.uf2 | Bin 140800 -> 140800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/firmware/splaytoraid_soryn.uf2 b/firmware/splaytoraid_soryn.uf2 index 864b39f0a5e21ef18b48e8f77d69439631e1128f..1c038c019e1adf265e58547c7c4327800c0a5542 100644 GIT binary patch delta 95 zcmZoT!_fdlTNw4STsLblUSLoV*sH4W>-)kV&Kf^1%3A#TKIg|X3umVY$4}1%wr*Br ukz=^%W2gdD@%o3eB7+XY#XW`~^-q301M?)e7iTeMHZiJgzx#$!*%AN`Eh=aL delta 95 zcmZoT!_fdlTNw4ST&p!0FEA(w>{V6x^?l(FYmFZlMJ;}PpYy}r!r3Xp@zZmGt<{Pw uats$+3{`+CUjMLGWYA%_c*GE-{>cw_FmK29;w;9@CPww`ci%87TLJ*i?kR!*