Browse Source

Migrate `helix` common configuration (#25433)

* Initial tidying up of top level helix/ directory

Align readme.md with template & provide more detailed PCB information
Remove unused rules.mk
Add common config.h file
Update glcdfont.c with formatting and license header

* Further migrations after PRs merged

Move shared configuration to top level info.json and config.h
More descriptive hardware compatibility

* Add changelog

* Align configuration between PCBs

- Migrate beta & pico to use RGB Matrix
- Move previously RGB Matrix-dependent OLED code in rev3/rev3.c to top level
- Remove reundant OLED code in beta/beta.c
- Remove RGBLight references

* Update changelog with RGB Matrix configuration
Jack Sangdahl 11 months ago
parent
commit
00ca362826

+ 37 - 0
docs/ChangeLog/20250831/HelixRefactor.md

@@ -0,0 +1,37 @@
+# Refactor of `keyboards/helix`
+
+This series of PRs aims to align this keyboard's configuration with current standards, and also remove unnecessary contents.
+
+### Refactor `helix/pico` [#25428](https://github.com/qmk/qmk_firmware/pull/25428)
+    - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions
+    - Migrates legacy defines and configuration to JSON
+    - Migrates `default` keymap to JSON
+    - Fixes RGB configuration to illuminate 25 LEDs per half
+    - Enables standard features like Bootmagic, extrakey, etc.
+    - Updates keyboard aliases accordingly
+
+### Refactor `helix/rev2` [#25429](https://github.com/qmk/qmk_firmware/pull/25429)
+    - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions
+    - Renames `rev2` to `beta`, as the only PCB sources in the official Helix GitHub repository are named "[beta](https://github.com/MakotoKurauchi/helix/tree/master/PCB/beta)", this keyboard's name in QMK Firmware was already "beta", and this PCB is sold under the name "[beta](https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969)" on the Yushakobo store
+    - Migrates legacy defines and configuration to JSON
+    - Migrates `default` keymap to JSON
+    - Fixes RGB configuration to illuminate 32 LEDs per half
+    - Enables standard features like Bootmagic, extrakey, etc.
+    - Updates keyboard aliases accordingly
+    - Tidy's up OLED code
+    - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row
+
+### Refactor `helix/rev3_{4,5}rows` [#25430](https://github.com/qmk/qmk_firmware/pull/25430)
+    - The `rev3_4rows` and `rev3_5rows` firmwares are identical, except for the extra row users can snap off. The 4 row PCB is not sold anywhere as an individual product, only the [5 row PCB](https://shop.yushakobo.jp/products/2143). Thus, this PR removes the aforementioned two build targets and adds a single `rev3` revision
+    - Migrates legacy defines and configuration to JSON
+    - Migrates `default` keymap to JSON
+    - Removes RGB Light configuration
+    - Updates keyboard aliases accordingly
+    - Tidy's up OLED code
+    - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row
+
+### Migrate helix common configuration [#25433](https://github.com/qmk/qmk_firmware/pull/25433)
+    - Migrates common configuration shared between revisions to the top-level keyboard directory
+    - Improves `readme.md` to provide more detail regarding PCB revisions
+    - Removes unnecessary top-level `rules.mk` file and other general tidying
+    - Migrates `beta` and `pico` revisions to use RGB Matrix, which is more appropriate as these PCBs are fit with per-key RGB LEDs

+ 0 - 77
keyboards/helix/beta/beta.c

@@ -1,77 +0,0 @@
-// Copyright 2020 Yushakobo
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "quantum.h"
-
-#ifdef OLED_ENABLE
-void render_status(void) {
-    static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
-    if (!keymap_config.swap_lalt_lgui) {
-        oled_write_P(os_logo[0][0], false);
-        oled_write_P(PSTR("\n"), false);
-        oled_write_P(os_logo[0][1], false);
-    } else {
-        oled_write_P(os_logo[1][0], false);
-        oled_write_P(PSTR("\n"), false);
-        oled_write_P(os_logo[1][1], false);
-    }
-
-    oled_write_P(PSTR(" Layer: "), false);
-    switch (get_highest_layer(layer_state)) {
-        case 0:
-            oled_write_ln_P(PSTR("Default"), false);
-            break;
-        case 1:
-            oled_write_ln_P(PSTR("Lower"), false);
-            break;
-        case 2:
-            oled_write_ln_P(PSTR("Raise"), false);
-            break;
-        case 3:
-            oled_write_ln_P(PSTR("Adjust"), false);
-            break;
-        default:
-            oled_write_ln_P(PSTR("Undefined"), false);
-    }
-    oled_write_P(PSTR("\n"), false);
-
-    led_t led_state = host_keyboard_led_state();
-    oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
-    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
-    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
-}
-
-static void render_logo(void) {
-    static const char PROGMEM qmk_logo[] = {
-        // clang-format off
-        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
-        0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
-        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
-        // clang-format on
-    };
-    oled_write_P(qmk_logo, false);
-}
-
-static void render_rgblight_status(void) {
-    oled_write_P(PSTR(" LED"), false);
-    oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
-    oled_write_char(':', false);
-    oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false);
-    oled_write_char(',', false);
-    oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false);
-    oled_write_char(',', false);
-    oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false);
-}
-
-bool oled_task_kb(void) {
-    if (!oled_task_user()) {
-        return false;
-    }
-    if (is_keyboard_master()) {
-        render_status();
-    } else {
-        render_logo();
-        render_rgblight_status();
-    }
-    return false;
-}
-#endif

+ 68 - 34
keyboards/helix/beta/keyboard.json

@@ -1,48 +1,82 @@
 {
-    "manufacturer": "Yushakobo",
     "keyboard_name": "Helix Beta",
-    "maintainer": "MakotoKurauchi",
-    "development_board": "promicro",
-    "diode_direction": "COL2ROW",
-    "features": {
-        "bootmagic": true,
-        "extrakey": true,
-        "mousekey": true,
-        "oled": true,
-        "rgblight": true
-    },
     "matrix_pins": {
         "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
         "rows": ["D4", "C6", "D7", "E6", "B4"]
     },
-    "rgblight": {
-        "animations": {
-            "breathing": true,
-            "christmas": true,
-            "knight": true,
-            "rainbow_mood": true,
-            "rainbow_swirl": true,
-            "snake": true,
-            "static_gradient": true
-        },
-        "led_count": 64,
-        "max_brightness": 45,
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "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": [2, 5], "x": 80, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "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": [4, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4},
+            {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4},
+            {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4},
+            {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4},
+            {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4},
+            {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4},
+            {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [6, 0], "x": 224, "y": 16, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 16, "flags": 4},
+            {"matrix": [6, 2], "x": 192, "y": 16, "flags": 4},
+            {"matrix": [6, 3], "x": 176, "y": 16, "flags": 4},
+            {"matrix": [6, 4], "x": 160, "y": 16, "flags": 4},
+            {"matrix": [6, 5], "x": 144, "y": 16, "flags": 4},
+            {"matrix": [7, 5], "x": 144, "y": 32, "flags": 4},
+            {"matrix": [7, 4], "x": 160, "y": 32, "flags": 4},
+            {"matrix": [7, 3], "x": 176, "y": 32, "flags": 4},
+            {"matrix": [7, 2], "x": 192, "y": 32, "flags": 4},
+            {"matrix": [7, 1], "x": 208, "y": 32, "flags": 4},
+            {"matrix": [7, 0], "x": 224, "y": 32, "flags": 4},
+            {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4},
+            {"matrix": [8, 2], "x": 192, "y": 48, "flags": 4},
+            {"matrix": [8, 3], "x": 176, "y": 48, "flags": 4},
+            {"matrix": [8, 4], "x": 160, "y": 48, "flags": 4},
+            {"matrix": [8, 5], "x": 144, "y": 48, "flags": 4},
+            {"matrix": [8, 6], "x": 128, "y": 48, "flags": 4},
+            {"matrix": [9, 6], "x": 128, "y": 64, "flags": 4},
+            {"matrix": [9, 5], "x": 144, "y": 64, "flags": 4},
+            {"matrix": [9, 4], "x": 160, "y": 64, "flags": 4},
+            {"matrix": [9, 3], "x": 176, "y": 64, "flags": 4},
+            {"matrix": [9, 2], "x": 192, "y": 64, "flags": 4},
+            {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
+        ],
         "split_count": [32, 32]
     },
-    "split": {
-        "enabled": true,
-        "serial": {
-            "pin": "D2"
-        }
-    },
     "url": "https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969",
     "usb": {
         "device_version": "0.0.1",
-        "pid": "0x0000",
-        "vid": "0x3265"
-    },
-    "ws2812": {
-        "pin": "D3"
+        "pid": "0x0000"
     },
     "layouts": {
         "LAYOUT_4row": {

+ 0 - 233
keyboards/helix/common/glcdfont.c

@@ -1,233 +0,0 @@
-// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
-// See gfxfont.h for newer custom bitmap font info.
-
-#include "progmem.h"
-
-// Standard ASCII 5x7 font
-
-static const unsigned char font[] PROGMEM = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
-  0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
-  0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
-  0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
-  0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
-  0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
-  0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
-  0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
-  0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
-  0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
-  0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
-  0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
-  0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
-  0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
-  0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
-  0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
-  0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
-  0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
-  0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
-  0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
-  0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
-  0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
-  0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
-  0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
-  0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
-  0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
-  0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
-  0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
-  0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
-  0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
-  0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
-  0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
-  0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
-  0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
-  0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
-  0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
-  0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
-  0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
-  0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
-  0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
-  0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
-  0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
-  0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
-  0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
-  0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
-  0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
-  0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
-  0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
-  0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
-  0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
-  0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
-  0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
-  0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
-  0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
-  0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
-  0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
-  0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
-  0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
-  0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
-  0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
-  0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
-  0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
-  0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
-  0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
-  0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
-  0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
-  0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
-  0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
-  0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
-  0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
-  0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
-  0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
-  0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
-  0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
-  0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
-  0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
-  0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
-  0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
-  0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
-  0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
-  0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
-  0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
-  0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
-  0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
-  0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
-  0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
-  0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
-  0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
-  0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
-  0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
-  0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
-  0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
-  0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
-  0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
-  0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
-  0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
-  0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
-  0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
-  0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
-  0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
-  0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
-  0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
-  0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
-  0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
-  0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
-  0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
-  0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
-  0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
-  0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
-  0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
-  0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
-  0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
-  0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
-  0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
-  0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
-  0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
-  0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
-  0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
-  0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
-  0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
-  0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
-  0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
-  0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
-  0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
-  0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
-  0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF,
-  0xFE, 0xF8, 0xF0, 0xC0, 0x20, 0xF8,
-  0xFE, 0xFF, 0xFE, 0x79, 0x27, 0x1F,
-  0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0,
-  0xC0, 0x20, 0xF8, 0xFE, 0xFF, 0xFF,
-  0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFE,
-  0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00,
-  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0xFF, 0x7F, 0x7F, 0x7F,
-  0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xE0,
-  0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0,
-  0xF8, 0x78, 0x78, 0x7C, 0x3C, 0x3C,
-  0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
-  0xBF, 0xBF, 0xDF, 0xDF, 0xEF, 0xEF,
-  0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF,
-  0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0,
-  0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF,
-  0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00,
-  0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
-  0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
-  0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
-  0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
-  0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
-  0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
-  0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
-  0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0xC1, 0xF3,
-  0xCF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFC,
-  0xFB, 0xE7, 0x81, 0x00, 0x00, 0x00,
-  0x00, 0x80, 0xE3, 0xCF, 0x3F, 0xFF,
-  0xFF, 0xFF, 0xFC, 0xFB, 0xE7, 0x81,
-  0x00, 0x00, 0x00, 0x00, 0x81, 0xE7,
-  0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00,
-  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E,
-  0x7E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF7, 0xF7, 0xF7, 0xFB,
-  0xFB, 0x7D, 0x7D, 0x7D, 0xBE, 0xBE,
-  0xBE, 0xDF, 0xDF, 0xE0, 0xE0, 0x00,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0x00, 0xFC, 0xFC, 0x7C, 0x7E, 0x7E,
-  0x3E, 0x3E, 0x1F, 0x1F, 0x1F, 0x0F,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
-  0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x81,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
-  0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
-  0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
-  0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
-  0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
-  0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
-  0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
-  0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x60, 0x70, 0x7C, 0x7F, 0x7F, 0x7F,
-  0x7F, 0x1F, 0x06, 0x01, 0x03, 0x0F,
-  0x3F, 0x7F, 0x7F, 0x7E, 0x7C, 0x7C,
-  0x7E, 0x7F, 0x7F, 0x7F, 0x1F, 0x06,
-  0x01, 0x07, 0x0F, 0x3F, 0x7F, 0x7F,
-  0x7E, 0x7C, 0x7C, 0x7E, 0x7F, 0x7F,
-  0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00,
-  0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
-  0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
-  0x7F, 0x7F, 0x7D, 0x7D, 0x3D, 0x3E,
-  0x1E, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F,
-  0x07, 0x07, 0x07, 0x03, 0x03, 0x00,
-  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
-  0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
-  0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
-  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
-  0x00, 0x40, 0x70, 0x78, 0x7E, 0x7F,
-  0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x01,
-  0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x7F,
-  0x7E, 0x78, 0x70, 0x40, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};

+ 1 - 1
keyboards/helix/beta/config.h → keyboards/helix/config.h

@@ -2,4 +2,4 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 #pragma once
 
-#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"
+#define OLED_FONT_H "keyboards/helix/glcdfont.c"

+ 232 - 0
keyboards/helix/glcdfont.c

@@ -0,0 +1,232 @@
+// Copyright 2025 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "progmem.h"
+
+static const unsigned char font[] PROGMEM = {
+    // clang-format off
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+    0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+    0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+    0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+    0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+    0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+    0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+    0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+    0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+    0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+    0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+    0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+    0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+    0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+    0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+    0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+    0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+    0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+    0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+    0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+    0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+    0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+    0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+    0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+    0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+    0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+    0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+    0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+    0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+    0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+    0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+    0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+    0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+    0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+    0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+    0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+    0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+    0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+    0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+    0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+    0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+    0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+    0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+    0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+    0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+    0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+    0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+    0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+    0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+    0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+    0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+    0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+    0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+    0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+    0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+    0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+    0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+    0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+    0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+    0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+    0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+    0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+    0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+    0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+    0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+    0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+    0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+    0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+    0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+    0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+    0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+    0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+    0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+    0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+    0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+    0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+    0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+    0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+    0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+    0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+    0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+    0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+    0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+    0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+    0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+    0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+    0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+    0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+    0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+    0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+    0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+    0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+    0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+    0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+    0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+    0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+    0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+    0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+    0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+    0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+    0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+    0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+    0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+    0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+    0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+    0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+    0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+    0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+    0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
+    0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
+    0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+    0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+    0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+    0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+    0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+    0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+    0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+    0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+    0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+    0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+    0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+    0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+    0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+    0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+    0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF,
+    0xFE, 0xF8, 0xF0, 0xC0, 0x20, 0xF8,
+    0xFE, 0xFF, 0xFE, 0x79, 0x27, 0x1F,
+    0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0,
+    0xC0, 0x20, 0xF8, 0xFE, 0xFF, 0xFF,
+    0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFE,
+    0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00,
+    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xFF, 0x7F, 0x7F, 0x7F,
+    0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xE0,
+    0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0,
+    0xF8, 0x78, 0x78, 0x7C, 0x3C, 0x3C,
+    0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
+    0xBF, 0xBF, 0xDF, 0xDF, 0xEF, 0xEF,
+    0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF,
+    0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0,
+    0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF,
+    0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00,
+    0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+    0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+    0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+    0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+    0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+    0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+    0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+    0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xC1, 0xF3,
+    0xCF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFC,
+    0xFB, 0xE7, 0x81, 0x00, 0x00, 0x00,
+    0x00, 0x80, 0xE3, 0xCF, 0x3F, 0xFF,
+    0xFF, 0xFF, 0xFC, 0xFB, 0xE7, 0x81,
+    0x00, 0x00, 0x00, 0x00, 0x81, 0xE7,
+    0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00,
+    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E,
+    0x7E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xF7, 0xF7, 0xF7, 0xFB,
+    0xFB, 0x7D, 0x7D, 0x7D, 0xBE, 0xBE,
+    0xBE, 0xDF, 0xDF, 0xE0, 0xE0, 0x00,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0x00, 0xFC, 0xFC, 0x7C, 0x7E, 0x7E,
+    0x3E, 0x3E, 0x1F, 0x1F, 0x1F, 0x0F,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
+    0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+    0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x81,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+    0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+    0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+    0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+    0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+    0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+    0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+    0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x60, 0x70, 0x7C, 0x7F, 0x7F, 0x7F,
+    0x7F, 0x1F, 0x06, 0x01, 0x03, 0x0F,
+    0x3F, 0x7F, 0x7F, 0x7E, 0x7C, 0x7C,
+    0x7E, 0x7F, 0x7F, 0x7F, 0x1F, 0x06,
+    0x01, 0x07, 0x0F, 0x3F, 0x7F, 0x7F,
+    0x7E, 0x7C, 0x7C, 0x7E, 0x7F, 0x7F,
+    0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00,
+    0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
+    0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+    0x7F, 0x7F, 0x7D, 0x7D, 0x3D, 0x3E,
+    0x1E, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F,
+    0x07, 0x07, 0x07, 0x03, 0x03, 0x00,
+    0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
+    0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
+    0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
+    0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
+    0x00, 0x40, 0x70, 0x78, 0x7E, 0x7F,
+    0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x01,
+    0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x7F,
+    0x7E, 0x78, 0x70, 0x40, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+    // clang-format on
+};

+ 0 - 0
keyboards/helix/rev3/rev3.c → keyboards/helix/helix.c


+ 40 - 0
keyboards/helix/info.json

@@ -0,0 +1,40 @@
+{
+    "manufacturer": "Yushakobo",
+    "maintainer": "MakotoKurauchi",
+    "build": {
+        "lto": true
+    },
+    "development_board": "promicro",
+    "diode_direction": "COL2ROW",
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "oled": true,
+        "rgb_matrix": true
+    },
+    "rgb_matrix": {
+        "animations": {
+            "breathing": true,
+            "cycle_left_right": true,
+            "cycle_pinwheel": true,
+            "multisplash": true,
+            "solid_splash": true
+        },
+        "driver": "ws2812",
+        "max_brightness": 150,
+        "sleep": true
+    },
+    "split": {
+        "enabled": true,
+        "serial": {
+            "pin": "D2"
+        }
+    },
+    "usb": {
+        "vid": "0x3265"
+    },
+    "ws2812": {
+        "pin": "D3"
+    }
+}

+ 55 - 32
keyboards/helix/pico/keyboard.json

@@ -1,48 +1,71 @@
 {
-    "manufacturer": "Yushakobo",
     "keyboard_name": "Helix Pico",
-    "maintainer": "MakotoKurauchi",
-    "development_board": "promicro",
-    "diode_direction": "COL2ROW",
     "features": {
-        "audio": false,
-        "bootmagic": true,
-        "extrakey": true,
-        "mousekey": true,
-        "rgblight": true
+        "audio": false
     },
     "matrix_pins": {
         "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
         "rows": ["D4", "C6", "D7", "E6"]
     },
-    "rgblight": {
-        "animations": {
-            "breathing": true,
-            "christmas": true,
-            "knight": true,
-            "rainbow_mood": true,
-            "rainbow_swirl": true,
-            "snake": true,
-            "static_gradient": true
-        },
-        "led_count": 50,
-        "max_brightness": 45,
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 21, "flags": 4},
+            {"matrix": [1, 2], "x": 32, "y": 21, "flags": 4},
+            {"matrix": [1, 3], "x": 48, "y": 21, "flags": 4},
+            {"matrix": [1, 4], "x": 64, "y": 21, "flags": 4},
+            {"matrix": [1, 5], "x": 80, "y": 21, "flags": 4},
+            {"matrix": [2, 5], "x": 80, "y": 42, "flags": 4},
+            {"matrix": [2, 4], "x": 64, "y": 42, "flags": 4},
+            {"matrix": [2, 3], "x": 48, "y": 42, "flags": 4},
+            {"matrix": [2, 2], "x": 32, "y": 42, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4},
+            {"matrix": [3, 0], "x": 0, "y": 64, "flags": 4},
+            {"matrix": [3, 1], "x": 16, "y": 64, "flags": 4},
+            {"matrix": [3, 2], "x": 32, "y": 64, "flags": 4},
+            {"matrix": [3, 3], "x": 48, "y": 64, "flags": 4},
+            {"matrix": [3, 4], "x": 64, "y": 64, "flags": 4},
+            {"matrix": [3, 5], "x": 80, "y": 64, "flags": 4},
+            {"matrix": [3, 6], "x": 96, "y": 64, "flags": 4},
+            {"matrix": [4, 5], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [4, 4], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [4, 3], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [4, 2], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [4, 1], "x": 208, "y": 0, "flags": 4},
+            {"matrix": [4, 0], "x": 224, "y": 0, "flags": 4},
+            {"matrix": [5, 0], "x": 224, "y": 21, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 21, "flags": 4},
+            {"matrix": [5, 2], "x": 192, "y": 21, "flags": 4},
+            {"matrix": [5, 3], "x": 176, "y": 21, "flags": 4},
+            {"matrix": [5, 4], "x": 160, "y": 21, "flags": 4},
+            {"matrix": [5, 5], "x": 144, "y": 21, "flags": 4},
+            {"matrix": [6, 5], "x": 144, "y": 42, "flags": 4},
+            {"matrix": [6, 4], "x": 160, "y": 42, "flags": 4},
+            {"matrix": [6, 3], "x": 176, "y": 42, "flags": 4},
+            {"matrix": [6, 2], "x": 192, "y": 42, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
+            {"matrix": [6, 0], "x": 224, "y": 42, "flags": 4},
+            {"matrix": [7, 0], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [7, 1], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [7, 2], "x": 192, "y": 64, "flags": 4},
+            {"matrix": [7, 3], "x": 176, "y": 64, "flags": 4},
+            {"matrix": [7, 4], "x": 160, "y": 64, "flags": 4},
+            {"matrix": [7, 5], "x": 144, "y": 64, "flags": 4},
+            {"matrix": [7, 6], "x": 128, "y": 64, "flags": 4}
+        ],
         "split_count": [25, 25]
     },
-    "split": {
-        "enabled": true,
-        "serial": {
-            "pin": "D2"
-        }
-    },
     "url": "https://shop.yushakobo.jp/products/helixpico-pcb",
     "usb": {
         "device_version": "0.0.2",
-        "pid": "0x0001",
-        "vid": "0x3265"
-    },
-    "ws2812": {
-        "pin": "D3"
+        "pid": "0x0001"
     },
     "layouts": {
         "LAYOUT": {

+ 40 - 11
keyboards/helix/readme.md

@@ -1,16 +1,45 @@
-Helix
-===
+# Helix
 
-![Helix](https://i.imgur.com/XBAmynN.jpg)
+![image](https://i.imgur.com/11o4MRV.jpeg)
 
-A compact split ortholinear keyboard.
+* Keyboard Maintainer: [MakotoKurauchi](https://github.com/MakotoKurauchi)
+* Hardware Supported: Helix Pico, Beta, rev3 PCBs w/ Pro Micro compatible development board
+* Hardware Availability: [Yushakobo](https://shop.yushakobo.jp), [GitHub](https://github.com/MakotoKurauchi/helix)
 
-Keyboard Maintainer: [Makoto Kurauchi](https://github.com/MakotoKurauchi/) [@pluis9](https://twitter.com/pluis9) [yushakobo](https://github.com/yushakobo)
-Hardware Supported: Helix PCB Alpha, Beta, Rev3, Pro Micro  
-Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix), [Yushakobo Shop](https://yushakobo.jp/shop/), [Little Keyboards](https://littlekeyboards.com/collections/helix)
+## Revisions
+- [Pico](https://shop.yushakobo.jp/products/helixpico-pcb)
+    - 4 row PCB
+    - per-key RGB
+    - support for a 128x32 OLED display
+    - footprint for speaker
+- [Beta](https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969)
+    - 4 or 5 row PCB with snappable bottom row
+    - per-key RGB
+    - support for a 128x32 OLED display
+- [rev3](https://shop.yushakobo.jp/products/2143)
+    - 4 or 5 row PCB with snappable bottom row
+    - per-key RGB
+    - support for a 128x32 OLED display
+    - rotary encoders
 
-## How to build
- * [Helix how to Customize and Compile](rev2/keymaps/default/readme.md#customize)
- * [HelixPico how to Customize and Compile](pico/keymaps/default/readme.md#customize)
+Make example for this keyboard (after setting up your build environment):
 
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+    make helix/pico:default
+    make helix/beta:default
+    make helix/rev3:default
+
+Flashing example for this keyboard:
+
+    make helix/pico:default:flash
+    make helix/beta:default:flash
+    make helix/rev3: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 and plug in the keyboard
+* **Physical reset button**: Briefly tap or double-tap the button near the TRRS jack
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`

+ 0 - 5
keyboards/helix/rev3/config.h

@@ -1,5 +0,0 @@
-// Copyright 2025 QMK
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"

+ 2 - 25
keyboards/helix/rev3/keyboard.json

@@ -1,12 +1,5 @@
 {
-    "manufacturer": "Yushakobo",
     "keyboard_name": "Helix rev3",
-    "maintainer": "MakotoKurauchi",
-    "build": {
-        "lto": true
-    },
-    "development_board": "promicro",
-    "diode_direction": "COL2ROW",
     "dip_switch": {
         "matrix_grid": [
             [0, 6],
@@ -21,20 +14,14 @@
         ]
     },
     "features": {
-        "bootmagic": true,
         "dip_switch": false,
-        "encoder": true,
-        "extrakey": true,
-        "mousekey": true,
-        "oled": true,
-        "rgb_matrix": true
+        "encoder": true
     },
     "matrix_pins": {
         "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"],
         "rows": ["D4", "C6", "D7", "E6", "B4"]
     },
     "rgb_matrix": {
-        "driver": "ws2812",
         "layout": [
             {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
             {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
@@ -101,27 +88,17 @@
             {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4},
             {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
         ],
-        "max_brightness": 150,
-        "sleep": true,
         "split_count": [32, 32]
     },
     "split": {
-        "enabled": true,
         "handedness": {
             "matrix_grid": ["D7", "B2"]
-        },
-        "serial": {
-            "pin": "D2"
         }
     },
     "url": "https://shop.yushakobo.jp/products/2143",
     "usb": {
         "device_version": "0.0.1",
-        "pid": "0x0003",
-        "vid": "0x3265"
-    },
-    "ws2812": {
-        "pin": "D3"
+        "pid": "0x0003"
     },
     "layouts": {
         "LAYOUT_4row": {

+ 0 - 1
keyboards/helix/rules.mk

@@ -1 +0,0 @@
-HELIX_TOP_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))