Skip to content

1.3.1

Choose a tag to compare

@zerodice0 zerodice0 released this 30 Nov 09:02

Release Notes - November 30, 2025

Summary

This release focuses on Split Keyboard Communication Stability and RGB Synchronization Fix. The update resolves issues where the slave keyboard stops responding during LED effect switching on Iris CE, and RGB effects become out of sync after watchdog recovery. Key fixes include power consumption limits, split watchdog for automatic recovery, SPLIT_TRANSPORT_MIRROR for matrix state synchronization, and removal of framebuffer effects (TYPING_HEATMAP, DIGITAL_RAIN). Reactive effects are restored and work with SPLIT_TRANSPORT_MIRROR. Important: Both halves must be flashed with identical firmware.


Key Changes

1. Split Keyboard Communication Stability πŸ”§

Problem Solved: When switching LED effects on Iris CE split keyboard, the slave (right) half would stop responding entirely. After watchdog recovery, RGB effects were out of sync between halves.

Root Cause Analysis:

  1. Power Overconsumption: RGB Matrix brightness at 120 (default) draws excessive current during effect transitions
  2. Communication Overload: Three duplicate RM_NEXT keys in _BOTH_UNDER layer triggered simultaneous effect changes
  3. No Recovery Mechanism: Split watchdog was disabled, preventing automatic recovery from communication failures
  4. Framebuffer Effects Not Synced: TYPING_HEATMAP and DIGITAL_RAIN use g_rgb_frame_buffer which is NOT synchronized between split halves
  5. Reactive Effects Require Keypress Position: SOLID_REACTIVE_*, SPLASH effects need keypress position info from both halves

Solution Implemented:

config.h Changes:

// Split Keyboard Stability Settings
#define SPLIT_TRANSPORT_MIRROR              // Mirror master's matrix state to slave
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100   // Reduced from 120 to limit power consumption
#define SPLIT_WATCHDOG_TIMEOUT 3000         // Auto-recovery after 3 seconds of communication loss

// Removed framebuffer effects (g_rgb_frame_buffer not synced):
// - TYPING_HEATMAP, DIGITAL_RAIN

// Reactive effects restored (work with SPLIT_TRANSPORT_MIRROR):
// - SOLID_REACTIVE_SIMPLE, SOLID_REACTIVE, SOLID_REACTIVE_WIDE
// - SOLID_REACTIVE_CROSS, SOLID_REACTIVE_NEXUS, SPLASH, SOLID_SPLASH

rules.mk Changes:

SPLIT_WATCHDOG_ENABLE = yes  # Enable automatic recovery from communication failures

keymap.c Changes:

  • Removed duplicate RM_NEXT keys from _BOTH_UNDER layer (3 β†’ 1)
  • Kept single RM_NEXT at top-left position (ESC key location)

Technical Details:

Setting Before After Impact
RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 100 ~17% power reduction
SPLIT_WATCHDOG_ENABLE no yes Auto-recovery enabled
SPLIT_WATCHDOG_TIMEOUT N/A 3000ms 3-second recovery window
SPLIT_TRANSPORT_MIRROR no yes Matrix state synchronization
RM_NEXT keys in _BOTH_UNDER 3 1 Reduced communication load
RGB Matrix effects 30 28 Framebuffer effects removed, Reactive restored

2. Firmware Size Optimization πŸ“¦

Current Build Statistics:

  • Firmware Size: 27,076 / 28,672 bytes (94%)
  • Free Space: 1,596 bytes
  • Improvement: From 98% to 94% utilization

Optimizations Applied:

Optimization Impact
CONSOLE_ENABLE = no ~1,000-1,500 bytes saved
const β†’ #define conversion Minor savings
RGB Matrix effects: 45 β†’ 28 Significant savings
SPLIT_WATCHDOG_ENABLE = yes Minimal overhead added
SPLIT_TRANSPORT_MIRROR +86 bytes for matrix sync

RGB Matrix Effects (28 Enabled):

  • Basic (5): Solid Color, Alpha Mods, Gradient Up/Down, Gradient Left/Right, Breathing
  • Cycle (8): All, Left/Right, Up/Down, Out/In, Out/In Dual, Pinwheel, Spiral, Rainbow Moving Chevron
  • Hue (3): Breathing, Pendulum, Wave
  • Special (5): Raindrops, Jellybean Raindrops, Pixel Rain, Pixel Flow, Pixel Fractal
  • Reactive (7): Solid Reactive (Simple, Standard, Wide, Cross, Nexus), Splash, Solid Splash

Removed Effects (Split Sync Issues):

  • TYPING_HEATMAP, DIGITAL_RAIN (g_rgb_frame_buffer not synced between halves)

3. Layer 3 (_BOTH_UNDER) Layout Update 🎹

Before (3 RM_NEXT keys):

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚RM_NEXT β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚KC_LPRN β”‚KC_RPRN β”‚ KC_EQL β”‚ KC_GT  β”‚KC_LCBR β”‚KC_RCBR β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ _______β”‚ _______β”‚KC_MINS β”‚ KC_GT  β”‚ _______β”‚ _______β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚RM_NEXT β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚QK_BOOT β”‚  ← Was RM_NEXT
        β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
        β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚RM_NEXT β”‚ _______β”‚  ← Was RM_NEXT
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

After (1 RM_NEXT key):

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚RM_NEXT β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚  ← Single RM_NEXT
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚KC_LPRN β”‚KC_RPRN β”‚ KC_EQL β”‚ KC_GT  β”‚KC_LCBR β”‚KC_RCBR β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ _______β”‚ _______β”‚KC_MINS β”‚ KC_GT  β”‚ _______β”‚ _______β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚QK_BOOT β”‚  ← Now _______
        β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
        β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
        β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚ _______β”‚  ← Now _______
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technical Specifications

Platform Support

  • βœ… Iris Rev7 (ATmega32u4): HEX file output
  • βœ… Iris CE Rev1 (RP2040): UF2 file output

Build Specifications

  • Firmware Size: 27,004 / 28,672 bytes (94%)
  • Free Space: 1,668 bytes
  • QMK Version: Compatible with QMK 0.24.0+

Configuration Changes Summary

config.h:

#pragma once

// Split Keyboard Stability Settings
#define SPLIT_TRANSPORT_MIRROR              // Matrix state sync
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100
#define SPLIT_WATCHDOG_TIMEOUT 3000

// RGB Matrix Effects (21 total)
// Basic (5), Cycle (8), Hue (3), Special (5)
// Removed: Framebuffer effects, Reactive effects

rules.mk:

SPLIT_WATCHDOG_ENABLE = yes  # Auto-recovery from communication failures

Build Commands

# Iris Rev7 (ATmega32u4 - HEX file)
qmk compile -kb keebio/iris/rev7 -km zerodice0

# Iris CE Rev1 (RP2040 - UF2 file)
qmk compile -kb keebio/iris_ce/rev1 -km zerodice0

Flash Firmware

# Rev7
qmk flash -kb keebio/iris/rev7 -km zerodice0

# CE Rev1 - Copy UF2 to RPI-RP2 drive

Testing Guide

Split Keyboard Stability Test

  1. Flash firmware to both keyboard halves
  2. Connect keyboard via USB
  3. Rapidly switch LED effects using RM_NEXT key (FN1 + FN2 + ESC)
  4. Verify slave keyboard remains responsive
  5. If communication drops, wait 3 seconds for auto-recovery

Verification Checklist

  • LED effects switch smoothly on both halves
  • Slave keyboard responds to keypresses after effect changes
  • No cable reconnection required during normal use
  • Auto-recovery works after intentional cable disconnect/reconnect

Migration Guide

From Previous Version

No Breaking Changes: All existing functionality preserved.

New Behavior:

  • RGB brightness reduced from 120 to 100 (slightly dimmer, more stable)
  • Split watchdog enables automatic recovery from communication failures
  • Single RM_NEXT key in _BOTH_UNDER layer (top-left position)

Testing Recommendations:

  1. Test LED effect switching extensively
  2. Verify both halves respond during effect transitions
  3. Test communication recovery by briefly disconnecting/reconnecting cable

Known Issues & Limitations

Resolved Issues

  • βœ… Slave keyboard unresponsive during LED effect switching: Fixed with brightness limit + watchdog + RM_NEXT deduplication
  • βœ… RGB sync broken after watchdog recovery: Fixed with SPLIT_TRANSPORT_MIRROR + removal of sync-problematic effects

Current Limitations

  • ℹ️ Brightness reduced: RGB effects are ~17% dimmer for stability
  • ℹ️ Single RM_NEXT key: Effect switching now only from left-hand side (FN1 + FN2 + ESC)
  • ℹ️ Reduced effect count: 21 effects (Framebuffer/Reactive effects removed)
    • Removed: TYPING_HEATMAP, DIGITAL_RAIN, all SOLID_REACTIVE_*, SPLASH, SOLID_SPLASH

μš”μ•½

이 λ¦΄λ¦¬μ¦ˆλŠ” Split ν‚€λ³΄λ“œ 톡신 μ•ˆμ •μ„± κ°œμ„ κ³Ό RGB 동기화 문제 해결에 쀑점을 λ‘‘λ‹ˆλ‹€. Iris CEμ—μ„œ LED 효과 μ „ν™˜ μ‹œ slave ν‚€λ³΄λ“œκ°€ μ‘λ‹΅ν•˜μ§€ μ•Šκ³ , watchdog 볡ꡬ ν›„ RGB 싱크가 λ§žμ§€ μ•ŠλŠ” 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. μ „λ ₯ μ†ŒλΉ„ μ œν•œ, split watchdog, SPLIT_TRANSPORT_MIRROR ν™œμ„±ν™”, 그리고 framebuffer 효과(TYPING_HEATMAP, DIGITAL_RAIN)λ₯Ό μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€. λ°˜μ‘ν˜• νš¨κ³ΌλŠ” SPLIT_TRANSPORT_MIRROR둜 λ™μž‘ν•©λ‹ˆλ‹€. μ€‘μš”: μ–‘μͺ½ ν‚€λ³΄λ“œ λͺ¨λ‘ λ™μΌν•œ νŽŒμ›¨μ–΄ ν”Œλž˜μ‹œ ν•„μˆ˜.


μ£Όμš” 변경사항

1. Split ν‚€λ³΄λ“œ 톡신 μ•ˆμ •μ„± πŸ”§

ν•΄κ²°λœ 문제: Iris CE split ν‚€λ³΄λ“œμ—μ„œ LED 효과λ₯Ό μ „ν™˜ν•  λ•Œ slave(였λ₯Έμͺ½) 절반이 μ™„μ „νžˆ μ‘λ‹΅ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ν‚€λ³΄λ“œ 케이블을 물리적으둜 μž¬μ—°κ²°ν•˜κΈ° μ „κΉŒμ§€ λ¬Έμ œκ°€ μ§€μ†λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

κ·Όλ³Έ 원인 뢄석:

  1. μ „λ ₯ κ³Όλ‹€ μ†ŒλΉ„: RGB Matrix 밝기 120(κΈ°λ³Έκ°’)이 효과 μ „ν™˜ 쀑 κ³Όλ„ν•œ μ „λ₯˜ μ†ŒλΉ„
  2. 톡신 κ³ΌλΆ€ν•˜: _BOTH_UNDER λ ˆμ΄μ–΄μ˜ 3개 쀑볡 RM_NEXT ν‚€κ°€ λ™μ‹œ 효과 λ³€κ²½ 트리거
  3. 볡ꡬ λ©”μ»€λ‹ˆμ¦˜ μ—†μŒ: Split watchdog이 λΉ„ν™œμ„±ν™”λ˜μ–΄ 톡신 μ‹€νŒ¨ μ‹œ μžλ™ 볡ꡬ λΆˆκ°€

κ΅¬ν˜„λœ ν•΄κ²°μ±…:

μ„€μ • 이전 이후 영ν–₯
RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 100 ~17% μ „λ ₯ κ°μ†Œ
SPLIT_WATCHDOG_ENABLE no yes μžλ™ 볡ꡬ ν™œμ„±ν™”
SPLIT_WATCHDOG_TIMEOUT N/A 3000ms 3초 볡ꡬ 창
SPLIT_TRANSPORT_MIRROR no yes 맀트릭슀 μƒνƒœ 동기화
_BOTH_UNDER의 RM_NEXT ν‚€ 3개 1개 톡신 λΆ€ν•˜ κ°μ†Œ
RGB Matrix 효과 30개 28개 Framebuffer 제거, Reactive 볡원

2. νŽŒμ›¨μ–΄ μš©λŸ‰ μ΅œμ ν™” πŸ“¦

ν˜„μž¬ λΉŒλ“œ 톡계:

  • νŽŒμ›¨μ–΄ 크기: 27,076 / 28,672 bytes (94%)
  • μ—¬μœ  곡간: 1,596 bytes
  • κ°œμ„ : 98%μ—μ„œ 94% μ‚¬μš©λ₯ λ‘œ κ°μ†Œ

적용된 μ΅œμ ν™”:

μ΅œμ ν™” 효과
CONSOLE_ENABLE = no ~1,000-1,500 bytes 절감
const β†’ #define λ³€ν™˜ μ†Œν­ 절감
RGB Matrix 효과: 45 β†’ 28 μƒλ‹Ήν•œ 절감
SPLIT_WATCHDOG_ENABLE = yes μ΅œμ†Œ μ˜€λ²„ν—€λ“œ μΆ”κ°€
SPLIT_TRANSPORT_MIRROR +86 bytes (맀트릭슀 동기화)

3. λ ˆμ΄μ–΄ 3 (_BOTH_UNDER) λ ˆμ΄μ•„μ›ƒ μ—…λ°μ΄νŠΈ 🎹

  • RM_NEXT ν‚€ 3κ°œμ—μ„œ 1개둜 κ°μ†Œ
  • 단일 RM_NEXT ν‚€λŠ” μ™Όμͺ½ 상단 μœ„μΉ˜ (ESC ν‚€ μœ„μΉ˜)에 μœ μ§€

ν…ŒμŠ€νŠΈ κ°€μ΄λ“œ

Split ν‚€λ³΄λ“œ μ•ˆμ •μ„± ν…ŒμŠ€νŠΈ

  1. μ–‘μͺ½ ν‚€λ³΄λ“œ μ ˆλ°˜μ— νŽŒμ›¨μ–΄ ν”Œλž˜μ‹œ
  2. USB둜 ν‚€λ³΄λ“œ μ—°κ²°
  3. RM_NEXT ν‚€ (FN1 + FN2 + ESC)둜 LED 효과 λΉ λ₯΄κ²Œ μ „ν™˜
  4. slave ν‚€λ³΄λ“œκ°€ 응닡을 μœ μ§€ν•˜λŠ”μ§€ 확인
  5. 톡신이 λŠμ–΄μ§€λ©΄ μžλ™ 볡ꡬλ₯Ό μœ„ν•΄ 3초 λŒ€κΈ°

확인 체크리슀트

  • LED νš¨κ³Όκ°€ μ–‘μͺ½μ—μ„œ λΆ€λ“œλŸ½κ²Œ μ „ν™˜λ¨
  • 효과 λ³€κ²½ ν›„ slave ν‚€λ³΄λ“œκ°€ ν‚€ μž…λ ₯에 응닡함
  • 정상 μ‚¬μš© 쀑 케이블 μž¬μ—°κ²°μ΄ ν•„μš” μ—†μŒ
  • μ˜λ„μ μΈ 케이블 뢄리/μž¬μ—°κ²° ν›„ μžλ™ 볡ꡬ μž‘λ™

μ•Œλ €μ§„ 문제 및 μ œν•œμ‚¬ν•­

ν•΄κ²°λœ 문제

  • βœ… LED 효과 μ „ν™˜ 쀑 slave ν‚€λ³΄λ“œ 무응닡: 밝기 μ œν•œ + watchdog + RM_NEXT 쀑볡 제거둜 ν•΄κ²°
  • βœ… watchdog 볡ꡬ ν›„ RGB 싱크 깨짐: SPLIT_TRANSPORT_MIRROR μΆ”κ°€ + 동기화 문제 효과 제거

ν˜„μž¬ μ œν•œμ‚¬ν•­

  • ℹ️ 밝기 κ°μ†Œ: RGB νš¨κ³Όκ°€ μ•ˆμ •μ„±μ„ μœ„ν•΄ ~17% μ–΄λ‘μ›Œμ§
  • ℹ️ 단일 RM_NEXT ν‚€: 효과 μ „ν™˜μ€ 이제 왼손 μͺ½μ—μ„œλ§Œ κ°€λŠ₯ (FN1 + FN2 + ESC)
  • ℹ️ 효과 수 κ°μ†Œ: 21개 효과 (Framebuffer/Reactive 효과 제거)
    • 제거됨: TYPING_HEATMAP, DIGITAL_RAIN, λͺ¨λ“  SOLID_REACTIVE_*, SPLASH, SOLID_SPLASH