aboutsummaryrefslogtreecommitdiff
path: root/keyboards/splitkb/halcyon/kyria/rev4
diff options
context:
space:
mode:
authorVeyPatch <[email protected]>2024-12-02 22:26:10 +0100
committerGitHub <[email protected]>2024-12-02 14:26:10 -0700
commitc8fe565ee6528942cfc71187e32237b39ab7320a (patch)
treecdf9ab01c96102a605e0e65e2d93904474d62ca3 /keyboards/splitkb/halcyon/kyria/rev4
parent50966934b2d7fd30514068cf262caf2213630159 (diff)
downloadqmk_firmware-c8fe565ee6528942cfc71187e32237b39ab7320a.tar.gz
qmk_firmware-c8fe565ee6528942cfc71187e32237b39ab7320a.zip
[Keyboard] Add splitkb.com's Halcyon Kyria rev4 (#24512)
* Add Halcyon Kyria Rev4 * Remove bootmagic and unused features * Fix encoderindex * Update readme.md * Remove rgblight * Implement requested changes * Add encoder update user * Remove rules.mk and add VIK configuration * Move options to config.h * Update RGB keycodes (qmk#24484) * implement changes --------- Co-authored-by: harvey-splitkb <[email protected]>
Diffstat (limited to 'keyboards/splitkb/halcyon/kyria/rev4')
-rwxr-xr-xkeyboards/splitkb/halcyon/kyria/rev4/config.h32
-rw-r--r--keyboards/splitkb/halcyon/kyria/rev4/halconf.h14
-rwxr-xr-xkeyboards/splitkb/halcyon/kyria/rev4/keyboard.json168
-rw-r--r--keyboards/splitkb/halcyon/kyria/rev4/mcuconf.h14
-rw-r--r--keyboards/splitkb/halcyon/kyria/rev4/rev4.c28
5 files changed, 256 insertions, 0 deletions
diff --git a/keyboards/splitkb/halcyon/kyria/rev4/config.h b/keyboards/splitkb/halcyon/kyria/rev4/config.h
new file mode 100755
index 0000000000..c09744f923
--- /dev/null
+++ b/keyboards/splitkb/halcyon/kyria/rev4/config.h
@@ -0,0 +1,32 @@
+// Copyright 2024 splitkb.com ([email protected])
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Make it easier to enter the bootloader
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+// UART1, communication between the two halves
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+#define SERIAL_USART_TX_PIN GP28 // USART TX pin
+#define SERIAL_USART_RX_PIN GP29 // USART RX pin
+#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
+
+// VBUS detection
+#define USB_VBUS_PIN GP1
+
+//// VIK
+
+// GPIO1 = GP27
+// GPIO2 = GP26
+// CS = GP13
+
+#define I2C_DRIVER I2C0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN GP14
+#define SPI_MOSI_PIN GP15
+#define SPI_MISO_PIN GP12 \ No newline at end of file
diff --git a/keyboards/splitkb/halcyon/kyria/rev4/halconf.h b/keyboards/splitkb/halcyon/kyria/rev4/halconf.h
new file mode 100644
index 0000000000..1050ebf313
--- /dev/null
+++ b/keyboards/splitkb/halcyon/kyria/rev4/halconf.h
@@ -0,0 +1,14 @@
+// Copyright 2024 splitkb.com ([email protected])
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+//// VIK
+
+#define HAL_USE_I2C TRUE
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/splitkb/halcyon/kyria/rev4/keyboard.json b/keyboards/splitkb/halcyon/kyria/rev4/keyboard.json
new file mode 100755
index 0000000000..c9e891964b
--- /dev/null
+++ b/keyboards/splitkb/halcyon/kyria/rev4/keyboard.json
@@ -0,0 +1,168 @@
+{
+ "keyboard_name": "Halcyon Kyria rev4",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "GP23", "pin_b": "GP22", "resolution": 2}
+ ]
+ },
+ "features": {
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["GP19", "GP20", "GP25", "GP4", "GP9", "GP10", "GP5"],
+ "rows": ["GP8", "GP11", "GP7", "GP6"]
+ },
+ "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_color": 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": "cycle_left_right"
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"x": 75, "y": 2, "flags": 2},
+ {"x": 50, "y": 1, "flags": 2},
+ {"x": 14, "y": 4, "flags": 2},
+ {"x": 25, "y": 45, "flags": 2},
+ {"x": 58, "y": 49, "flags": 2},
+ {"x": 94, "y": 53, "flags": 2},
+ {"matrix": [3, 0], "x": 94, "y": 64, "flags": 4},
+ {"matrix": [3, 5], "x": 79, "y": 60, "flags": 4},
+ {"matrix": [3, 1], "x": 65, "y": 53, "flags": 4},
+ {"matrix": [3, 2], "x": 51, "y": 49, "flags": 4},
+ {"matrix": [3, 4], "x": 36, "y": 49, "flags": 4},
+ {"matrix": [2, 0], "x": 101, "y": 49, "flags": 4},
+ {"matrix": [3, 3], "x": 87, "y": 45, "flags": 4},
+ {"matrix": [2, 1], "x": 72, "y": 38, "flags": 4},
+ {"matrix": [2, 2], "x": 58, "y": 34, "flags": 4},
+ {"matrix": [2, 3], "x": 43, "y": 30, "flags": 4},
+ {"matrix": [2, 4], "x": 29, "y": 34, "flags": 4},
+ {"matrix": [2, 5], "x": 14, "y": 41, "flags": 4},
+ {"matrix": [2, 6], "x": 0, "y": 41, "flags": 4},
+ {"matrix": [1, 1], "x": 72, "y": 23, "flags": 4},
+ {"matrix": [1, 2], "x": 58, "y": 19, "flags": 4},
+ {"matrix": [1, 3], "x": 43, "y": 15, "flags": 4},
+ {"matrix": [1, 4], "x": 29, "y": 19, "flags": 4},
+ {"matrix": [1, 5], "x": 14, "y": 26, "flags": 4},
+ {"matrix": [1, 6], "x": 0, "y": 26, "flags": 4},
+ {"matrix": [0, 1], "x": 72, "y": 8, "flags": 4},
+ {"matrix": [0, 2], "x": 58, "y": 4, "flags": 4},
+ {"matrix": [0, 3], "x": 43, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 29, "y": 4, "flags": 4},
+ {"matrix": [0, 5], "x": 14, "y": 11, "flags": 4},
+ {"matrix": [0, 6], "x": 0, "y": 11, "flags": 4},
+ {"x": 149, "y": 2, "flags": 2},
+ {"x": 174, "y": 1, "flags": 2},
+ {"x": 210, "y": 4, "flags": 2},
+ {"x": 199, "y": 45, "flags": 2},
+ {"x": 166, "y": 49, "flags": 2},
+ {"x": 130, "y": 53, "flags": 2},
+ {"matrix": [7, 0], "x": 130, "y": 64, "flags": 4},
+ {"matrix": [7, 5], "x": 145, "y": 60, "flags": 4},
+ {"matrix": [7, 1], "x": 159, "y": 53, "flags": 4},
+ {"matrix": [7, 2], "x": 173, "y": 49, "flags": 4},
+ {"matrix": [7, 4], "x": 188, "y": 49, "flags": 4},
+ {"matrix": [6, 0], "x": 123, "y": 49, "flags": 4},
+ {"matrix": [7, 3], "x": 137, "y": 45, "flags": 4},
+ {"matrix": [6, 1], "x": 152, "y": 38, "flags": 4},
+ {"matrix": [6, 2], "x": 166, "y": 34, "flags": 4},
+ {"matrix": [6, 3], "x": 181, "y": 30, "flags": 4},
+ {"matrix": [6, 4], "x": 195, "y": 34, "flags": 4},
+ {"matrix": [6, 5], "x": 210, "y": 41, "flags": 4},
+ {"matrix": [6, 6], "x": 224, "y": 41, "flags": 4},
+ {"matrix": [5, 1], "x": 152, "y": 23, "flags": 4},
+ {"matrix": [5, 2], "x": 166, "y": 19, "flags": 4},
+ {"matrix": [5, 3], "x": 181, "y": 15, "flags": 4},
+ {"matrix": [5, 4], "x": 195, "y": 19, "flags": 4},
+ {"matrix": [5, 5], "x": 210, "y": 26, "flags": 4},
+ {"matrix": [5, 6], "x": 224, "y": 26, "flags": 4},
+ {"matrix": [4, 1], "x": 152, "y": 8, "flags": 4},
+ {"matrix": [4, 2], "x": 166, "y": 4, "flags": 4},
+ {"matrix": [4, 3], "x": 181, "y": 0, "flags": 4},
+ {"matrix": [4, 4], "x": 195, "y": 4, "flags": 4},
+ {"matrix": [4, 5], "x": 210, "y": 11, "flags": 4},
+ {"matrix": [4, 6], "x": 224, "y": 11, "flags": 4}
+ ],
+ "max_brightness": 128,
+ "sleep": true,
+ "split_count": [31, 31]
+ },
+ "split": {
+ "enabled": true,
+ "handedness": {
+ "pin": "GP24"
+ },
+ "matrix_pins": {
+ "right": {
+ "cols": ["GP5", "GP10", "GP9", "GP4", "GP25", "GP20", "GP19"],
+ "rows": ["GP8", "GP11", "GP7", "GP6"]
+ }
+ },
+ "serial": {
+ "driver": "vendor"
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
+ "usb": {
+ "pid": "0x7FCE"
+ },
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP3"
+ }
+}
diff --git a/keyboards/splitkb/halcyon/kyria/rev4/mcuconf.h b/keyboards/splitkb/halcyon/kyria/rev4/mcuconf.h
new file mode 100644
index 0000000000..6792b923f1
--- /dev/null
+++ b/keyboards/splitkb/halcyon/kyria/rev4/mcuconf.h
@@ -0,0 +1,14 @@
+// Copyright 2024 splitkb.com ([email protected])
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+//// VIK
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_SPI_USE_SPI1
+#define RP_SPI_USE_SPI1 TRUE \ No newline at end of file
diff --git a/keyboards/splitkb/halcyon/kyria/rev4/rev4.c b/keyboards/splitkb/halcyon/kyria/rev4/rev4.c
new file mode 100644
index 0000000000..27671b9d7c
--- /dev/null
+++ b/keyboards/splitkb/halcyon/kyria/rev4/rev4.c
@@ -0,0 +1,28 @@
+// Copyright 2024 splitkb.com ([email protected])
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (index == 0) {
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ // Page up/Page down
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
+#endif