Releases: zerodice0/iris56_keymap
1.3.3: macOS-only shortcuts profile
Release Notes - February 13, 2026
Summary
This release changes the keymap profile to macOS-only behavior by removing OS auto-detection.
OS auto-detection-based branching was removed after confirming that it did not work reliably across some Iris keyboard variants.
Key Changes
- Removed automatic OS detection path.
- Screenshot, language switching, and mouse wheel mappings now follow fixed macOS shortcuts.
LANG_SWnow uses a configurable macro that defaults toKC_F19.- Added release note and README updates to clarify macOS-only behavior and setup requirements.
Behavior changes
Screenshot keys
SC_FULL / SC_AREA / SC_MENU / SC_CLIP_FULL / SC_CLIP_AREA now map only to macOS shortcuts:
Cmd + Shift + 3Cmd + Shift + 4Cmd + Shift + 5Cmd + Ctrl + Shift + 3Cmd + Ctrl + Shift + 4
Language switching
LANG_SW now sends F19 only (macOS profile). Configure macOS input source shortcut to F19 so the key works.
Mouse wheel direction
MW_* mappings are now fixed to macOS natural scrolling (MS_WHLR, MS_WHLU, MS_WHLD, MS_WHLL).
Upgrade notes
- Flash both halves after building this keymap.
- On macOS, configure input source shortcut to
F19for language switching. - OS-specific behavior for Windows/Linux is intentionally removed in this version.
릴리즈 노트 - 2026년 2월 13일
요약
이번 릴리즈는 OS 자동 감지 기능을 제거하고 macOS 고정 프로필로 변경했습니다.
OS 자동 감지 분기는 Iris 키보드 일부 환경에서 안정적으로 동작하지 않는 문제가 확인되어 제거했습니다.
주요 변경 사항
- 자동 OS 감지를 삭제했습니다.
- 스크린샷, 언어 전환, 마우스 휠 동작을 macOS 고정 동작으로 변경했습니다.
LANG_SW는 기본값KC_F19를 사용하는 방식으로 정리했습니다.README문서에 macOS 고정 동작 및 F19 설정 안내를 반영했습니다.
동작 변경
스크린샷
SC_FULL / SC_AREA / SC_MENU / SC_CLIP_FULL / SC_CLIP_AREA는 macOS 단축키로만 동작합니다.
Cmd + Shift + 3Cmd + Shift + 4Cmd + Shift + 5Cmd + Ctrl + Shift + 3Cmd + Ctrl + Shift + 4
언어 전환
LANG_SW는 macOS에서 F19만 전송합니다. macOS 입력 소스 단축키를 F19로 지정해야 동작합니다.
마우스 휠
MW_* 동작은 macOS 자연 스크롤(MS_WHLR, MS_WHLU, MS_WHLD, MS_WHLL)으로 고정됩니다.
업그레이드 안내
- 빌드 후 좌우 하프를 모두 플래시합니다.
- macOS에서
입력 소스단축키를F19로 설정합니다. - Windows/Linux 자동 분기 동작은 의도적으로 제거했습니다.
1.3.2: macOS 한영키를 F19로 변경
Release Notes - December 1, 2025
Summary
This release changes the macOS language switching key from Ctrl+Space to F19. This change requires manual configuration in macOS System Settings to assign F19 as the input source switching shortcut. The change was made to avoid conflicts with common application shortcuts that use Ctrl+Space (e.g., IDE code completion).
Key Changes
1. macOS Language Switching Key Change ⌨️
What Changed: The language switching key (LANG_SW) on macOS now sends F19 instead of Ctrl+Space.
Why This Change:
- Ctrl+Space conflicts: Many applications use Ctrl+Space for other functions (e.g., code completion in IDEs, Spotlight suggestions)
- F19 is dedicated: F19 is a "non-standard" function key that macOS treats as available for user customization
- No system conflicts: Unlike Ctrl+Space, F19 has no default system or application bindings
Since F19 is not a standard macOS shortcut, you must manually configure it:
- Open System Settings → Keyboard → Keyboard Shortcuts
- Select Input Sources from the left sidebar
- Click on "Select the previous input source" shortcut
- Press F19 on your keyboard to set it as the new shortcut
Without this configuration, the language switch key will not work on macOS.
2. Code Change Details 🔧
keymap.c (line 274):
// Before
case OS_MACOS:
return LCTL(KC_SPC); // Ctrl+Space
// After
case OS_MACOS:
return KC_F19; // F19 for custom language switchingOS Compatibility
| OS | Language Switch Key | Notes |
|---|---|---|
| macOS | F19 | |
| iOS | Caps Lock | Works automatically |
| Windows | Right Alt | Works automatically |
| Linux | Shift+Space | Works automatically (IBus/Fcitx) |
Documentation Updates
- README.md: Added macOS F19 setup instructions with step-by-step guide
- README-KR.md: Added Korean translation of F19 setup instructions
- Updated OS compatibility tables in both documents
Build Information
- Firmware Size: 27,076 / 28,672 bytes (94%, 1,596 bytes free)
- Supported Boards: Iris Rev7 (HEX), Iris CE Rev1 (UF2)
- Build Date: 2025-12-01
Upgrade Notes
- Flash both halves of your split keyboard with the new firmware
- macOS users: Configure F19 as language switch shortcut in System Settings
- Other OS users: No additional configuration needed
릴리즈 노트 - 2025년 12월 1일
요약
이번 릴리즈는 macOS 언어 전환 키를 Ctrl+Space에서 F19로 변경합니다. 이 변경 사항을 적용하려면 macOS 시스템 설정에서 F19를 입력 소스 전환 단축키로 수동 설정해야 합니다. Ctrl+Space를 사용하는 다른 앱(예: IDE 코드 자동완성)과의 충돌을 피하기 위해 변경되었습니다.
주요 변경 사항
1. macOS 언어 전환 키 변경 ⌨️
변경 내용: macOS에서 언어 전환 키(LANG_SW)가 Ctrl+Space 대신 F19를 전송합니다.
변경 이유:
- Ctrl+Space 충돌: 많은 앱에서 Ctrl+Space를 다른 기능으로 사용 (예: IDE 코드 자동완성, Spotlight 제안)
- F19는 전용 키: F19는 macOS에서 사용자 정의용으로 취급하는 "비표준" 기능키
- 시스템 충돌 없음: Ctrl+Space와 달리 F19는 기본 시스템 또는 앱 바인딩이 없음
F19는 표준 macOS 단축키가 아니므로 반드시 수동으로 설정해야 합니다:
- 시스템 설정 → 키보드 → 키보드 단축키 열기
- 왼쪽 사이드바에서 입력 소스 선택
- "이전 입력 소스 선택" 단축키 클릭
- 키보드에서 F19 키를 눌러 새 단축키로 설정
이 설정을 하지 않으면 macOS에서 언어 전환 키가 작동하지 않습니다.
2. 코드 변경 상세 🔧
keymap.c (274번째 줄):
// 변경 전
case OS_MACOS:
return LCTL(KC_SPC); // Ctrl+Space
// 변경 후
case OS_MACOS:
return KC_F19; // 사용자 정의 언어 전환용 F19OS 호환성
| OS | 언어 전환 키 | 비고 |
|---|---|---|
| macOS | F19 | |
| iOS | Caps Lock | 자동 작동 |
| Windows | Right Alt | 자동 작동 |
| Linux | Shift+Space | 자동 작동 (IBus/Fcitx) |
문서 업데이트
- README.md: macOS F19 설정 안내 및 단계별 가이드 추가
- README-KR.md: F19 설정 안내 한글 번역 추가
- 두 문서의 OS 호환성 테이블 업데이트
빌드 정보
- 펌웨어 용량: 27,076 / 28,672 bytes (94%, 1,596 bytes 여유)
- 지원 보드: Iris Rev7 (HEX), Iris CE Rev1 (UF2)
- 빌드 날짜: 2025-12-01
업그레이드 안내
- 스플릿 키보드 양쪽 모두 새 펌웨어로 플래시
- macOS 사용자: 시스템 설정에서 F19를 언어 전환 단축키로 설정
- 다른 OS 사용자: 추가 설정 불필요
1.3.1
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:
- Power Overconsumption: RGB Matrix brightness at 120 (default) draws excessive current during effect transitions
- Communication Overload: Three duplicate RM_NEXT keys in
_BOTH_UNDERlayer triggered simultaneous effect changes - No Recovery Mechanism: Split watchdog was disabled, preventing automatic recovery from communication failures
- Framebuffer Effects Not Synced: TYPING_HEATMAP and DIGITAL_RAIN use
g_rgb_frame_bufferwhich is NOT synchronized between split halves - 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_SPLASHrules.mk Changes:
SPLIT_WATCHDOG_ENABLE = yes # Enable automatic recovery from communication failureskeymap.c Changes:
- Removed duplicate RM_NEXT keys from
_BOTH_UNDERlayer (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 effectsrules.mk:
SPLIT_WATCHDOG_ENABLE = yes # Auto-recovery from communication failuresBuild 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 zerodice0Flash Firmware
# Rev7
qmk flash -kb keebio/iris/rev7 -km zerodice0
# CE Rev1 - Copy UF2 to RPI-RP2 driveTesting Guide
Split Keyboard Stability Test
- Flash firmware to both keyboard halves
- Connect keyboard via USB
- Rapidly switch LED effects using RM_NEXT key (FN1 + FN2 + ESC)
- Verify slave keyboard remains responsive
- 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_UNDERlayer (top-left position)
Testing Recommendations:
- Test LED effect switching extensively
- Verify both halves respond during effect transitions
- 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 싱크가 맞지 않는 문제를 해결했...
1.3.0
Release Notes - November 30, 2025
Summary
This release focuses on Split Keyboard Communication Stability improvements and Firmware Size Optimization. The update resolves an issue where the slave keyboard stops responding during LED effect switching on Iris CE, implements power consumption limits, enables split watchdog for automatic recovery, and reduces duplicate RGB effect switching keys.
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. The issue persisted until the keyboard cable was physically reconnected.
Root Cause Analysis:
- Power Overconsumption: RGB Matrix brightness at 120 (default) draws excessive current during effect transitions
- Communication Overload: Three duplicate RM_NEXT keys in
_BOTH_UNDERlayer triggered simultaneous effect changes - No Recovery Mechanism: Split watchdog was disabled, preventing automatic recovery from communication failures
Solution Implemented:
config.h Changes:
// Split Keyboard Stability Settings
#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 lossrules.mk Changes:
SPLIT_WATCHDOG_ENABLE = yes # Enable automatic recovery from communication failureskeymap.c Changes:
- Removed duplicate RM_NEXT keys from
_BOTH_UNDERlayer (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 |
RM_NEXT keys in _BOTH_UNDER |
3 | 1 | Reduced communication load |
2. Firmware Size Optimization 📦
Current Build Statistics:
- Firmware Size: 26,918 / 28,672 bytes (93%)
- Free Space: 1,754 bytes
- Improvement: From 98% to 93% utilization
Optimizations Applied:
| Optimization | Impact |
|---|---|
CONSOLE_ENABLE = no |
~1,000-1,500 bytes saved |
const → #define conversion |
Minor savings |
| RGB Matrix effects: 45 → 30 | Significant savings |
SPLIT_WATCHDOG_ENABLE = yes |
Minimal overhead added |
RGB Matrix Effects (30 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 (7): Raindrops, Jellybean Raindrops, Pixel Rain, Pixel Flow, Pixel Fractal, Typing Heatmap, Digital Rain
- Reactive (7): Simple, Standard, Wide, Cross, Nexus, Splash, Solid Splash
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: 26,918 / 28,672 bytes (93%)
- Free Space: 1,754 bytes
- QMK Version: Compatible with QMK 0.24.0+
Configuration Changes Summary
config.h:
#pragma once
// Split Keyboard Stability Settings
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100
#define SPLIT_WATCHDOG_TIMEOUT 3000
// RGB Matrix Effects (30 total)
// Basic (5), Cycle (8), Hue (3), Special (7), Reactive (7)rules.mk:
SPLIT_WATCHDOG_ENABLE = yes # Auto-recovery from communication failuresBuild 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 zerodice0Flash Firmware
# Rev7
qmk flash -kb keebio/iris/rev7 -km zerodice0
# CE Rev1 - Copy UF2 to RPI-RP2 driveTesting Guide
Split Keyboard Stability Test
- Flash firmware to both keyboard halves
- Connect keyboard via USB
- Rapidly switch LED effects using RM_NEXT key (FN1 + FN2 + ESC)
- Verify slave keyboard remains responsive
- 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_UNDERlayer (top-left position)
Testing Recommendations:
- Test LED effect switching extensively
- Verify both halves respond during effect transitions
- 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
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)
요약
이 릴리즈는 Split 키보드 통신 안정성 개선과 펌웨어 용량 최적화에 중점을 둡니다. Iris CE에서 LED 효과 전환 시 slave 키보드가 응답하지 않는 문제를 해결하고, 전력 소비 제한을 구현하며, 자동 복구를 위한 split watchdog을 활성화하고, 중복된 RGB 효과 전환 키를 줄였습니다.
주요 변경사항
1. Split 키보드 통신 안정성 🔧
해결된 문제: Iris CE split 키보드에서 LED 효과를 전환할 때 slave(오른쪽) 절반이 완전히 응답하지 않았습니다. 키보드 케이블을 물리적으로 재연결하기 전까지 문제가 지속되었습니다.
근본 원인 분석:
- 전력 과다 소비: RGB Matrix 밝기 120(기본값)이 효과 전환 중 과도한 전류 소비
- 통신 과부하:
_BOTH_UNDER레이어의 3개 중복 RM_NEXT 키가 동시 효과 변경 트리거 - 복구 메커니즘 없음: Split watchdog이 비활성화되어 통신 실패 시 자동 복구 불가
구현된 해결책:
| 설정 | 이전 | 이후 | 영향 |
|---|---|---|---|
RGB_MATRIX_MAXIMUM_BRIGHTNESS |
120 | 100 | ~17% 전력 감소 |
SPLIT_WATCHDOG_ENABLE |
no | yes | 자동 복구 활성화 |
SPLIT_WATCHDOG_TIMEOUT |
N/A | 3000ms | 3초 복구 창 |
_BOTH_UNDER의 RM_NEXT 키 |
3개 | 1개 | 통신 부하 감소 |
2. 펌웨어 용량 최적화 📦
현재 빌드 통계:
- 펌웨어 크기: 26,918 / 28,672 bytes (93%)
- 여유 공간: 1,754 bytes
- 개선: 98%에서 93% 사용률로 감소
적용된 최적화:
| 최적화 | 효과 |
|---|---|
CONSOLE_ENABLE = no |
~1,000-1,500 bytes 절감 |
const → #define 변환 |
소폭 절감 |
| RGB Matrix 효과: 45 → 30 | 상당한 절감 |
SPLIT_WATCHDOG_ENABLE = yes |
최소 오버헤드 추가 |
3. 레이어 3 (_BOTH_UNDER) 레이아웃 업데이트 🎹
- RM_NEXT 키 3개에서 1개로 감소
- 단일 RM_NEXT 키는 왼쪽 상단 위치 (ESC 키 위치)에 유지
테스트 가이드
Split 키보드 안정성 테스트
- 양쪽 키보드 절반에 펌웨어 플래시
- USB로 키보드 연결
- RM_NEXT 키 (FN1 + FN2 + ESC)로 LED 효과 빠르게 전환
- slave 키보드가 응답을 유지하는지 확인
- 통신이 끊어지면 자동 복구를 위해 3초 대기
확인 체크리스트
- LED 효과가 양쪽에서 부드럽게 전환됨
- 효과 변경 후 slave 키보드가 키 입력에 응답함
- 정상 사용 중 케이블 재연결이 필요 없음
- 의도적인 케이블 분리/재연결 후 자동 복구 작동
알려진 문제 및 제한사항
해결된 문제
- ✅ LED 효과 전환 중 slave 키보드 무응답: 밝기 제한 + watchdog +...
1.2.0: docs: 멀티 OS 호환성 문서화 및 저장소 구조 명확화
Release Notes - November 4, 2025
Summary
This release implements a comprehensive OS-agnostic keyboard shortcuts system using static keycode mapping with helper functions. The update replaces runtime OS detection with compile-time keycode adaptation, introduces SC_* screenshot shortcuts, LANG_SW language switching, and MW_* mouse wheel keycodes that automatically adjust to the detected operating system. All custom keycodes now support continuous key press for improved usability.
Key Changes
1. OS-Agnostic Keyboard Shortcuts System 🆕
Problem Solved: Different operating systems use different keyboard shortcuts for common tasks (screenshots, language switching, mouse wheel direction). Previous implementation required manual configuration or complex runtime detection.
Solution: Implemented static keycode mapping system using process_record_user() with OS-specific helper functions that return appropriate keycodes based on detected OS.
Technical Implementation:
Custom Keycodes:
enum custom_keycodes {
BASIC = SAFE_RANGE,
LEFT_UNDER,
RIGHT_UNDER,
BOTH_UNDER,
LEFT_UP,
// OS-agnostic screenshot keycodes
SC_FULL, // Screenshot: Full screen capture
SC_AREA, // Screenshot: Area selection
SC_MENU, // Screenshot: Menu/Options (macOS only)
SC_CLIP_FULL, // Screenshot to clipboard: Full screen
SC_CLIP_AREA, // Screenshot to clipboard: Area selection
// OS-agnostic language switching
LANG_SW, // Language/Input source switching
// OS-agnostic mouse wheel keycodes
MW_RIGHT, // Mouse wheel right
MW_UP, // Mouse wheel up
MW_DOWN, // Mouse wheel down
MW_LEFT, // Mouse wheel left
};Helper Functions (Static Keycode Mapping):
/**
* get_screenshot_full - Returns OS-specific keycode for full screen capture
* macOS: LSG(KC_3) (Cmd+Shift+3)
* Windows: G(S(KC_S)) (Win+Shift+S - Snipping Tool)
* Linux: KC_PSCR (PrtScn)
*/
uint16_t get_screenshot_full(void) {
if (!os_detected) {
return LSG(KC_3); // Default to macOS
}
switch (current_os) {
case OS_MACOS:
case OS_IOS:
return LSG(KC_3);
case OS_WINDOWS:
return G(S(KC_S));
case OS_LINUX:
return KC_PSCR;
default:
return LSG(KC_3);
}
}
// Similar functions for SC_AREA, SC_MENU, SC_CLIP_FULL, SC_CLIP_AREA, LANG_SW, MW_*Process Record User (Keycode Handler):
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SC_FULL:
if (record->event.pressed) {
register_code16(get_screenshot_full());
} else {
unregister_code16(get_screenshot_full());
}
return false;
// ... similar cases for all custom keycodes
}
return true;
}Benefits:
- Cross-Platform Consistency: Natural shortcuts on macOS, Windows, and Linux
- Zero Configuration: Automatic OS detection and adaptation
- Continuous Key Press: register/unregister pattern supports holding keys
- Backward Compatibility: Old macOS shortcuts (KC_SG3-5) still work via #define aliases
- Clear Documentation: 66-line header comment explaining all keycodes
2. Screenshot Shortcuts (SC_ Keycodes)* 🆕
Keycode Migration Table:
| Old Keycode | New Keycode | Function | Layer 4 Position |
|---|---|---|---|
KC_SG3 |
SC_FULL |
Full screen capture | Right row 1, col 3 |
KC_SG4 |
SC_AREA |
Area selection | Right row 1, col 1 |
KC_SG5 |
SC_MENU |
Screenshot menu | Right row 1, col 5 |
KC_SGC3 |
SC_CLIP_FULL |
Full screen to clipboard | Right row 1, col 2 |
KC_SGC4 |
SC_CLIP_AREA |
Area to clipboard | Right row 1, col 4 |
Platform-Specific Behavior:
| Keycode | macOS/iOS | Windows | Linux |
|---|---|---|---|
| SC_FULL | Cmd+Shift+3 | Win+Shift+S | PrtScn |
| SC_AREA | Cmd+Shift+4 | Win+Shift+S | Shift+PrtScn |
| SC_MENU | Cmd+Shift+5 | Win+Shift+S | PrtScn |
| SC_CLIP_FULL | Cmd+Ctrl+Shift+3 | Win+Shift+S | Ctrl+PrtScn |
| SC_CLIP_AREA | Cmd+Ctrl+Shift+4 | Win+Shift+S | Ctrl+Shift+PrtScn |
Layer 4 Layout (Screenshot Row):
┌────────────┬────────────┬────────────┬────────────┬────────────┬────────┐
│SC_CLIP_AREA│SC_CLIP_FULL│SC_MENU │SC_AREA │SC_FULL │ _______│
└────────────┴────────────┴────────────┴────────────┴────────────┴────────┘
3. Language Switching (LANG_SW) 🆕
OS-Specific Implementation:
| Operating System | Shortcut | Description |
|---|---|---|
| macOS | Ctrl+Space | Input Source switching |
| iOS | Caps Lock | Keyboard language toggle |
| Windows | Right Alt | Language bar |
| Linux | Shift+Space | IBus/Fcitx default |
Implementation:
uint16_t get_language_switch(void) {
if (!os_detected) {
return LGUI(KC_SPC); // Default
}
switch (current_os) {
case OS_MACOS:
return LCTL(KC_SPC); // Ctrl+Space
case OS_IOS:
return KC_CAPS; // Caps Lock
case OS_WINDOWS:
return KC_RALT; // Right Alt
case OS_LINUX:
return LSFT(KC_SPC); // Shift+Space
default:
return LCTL(KC_SPC);
}
}Location: Layer 1 (_LEFT_UNDER), bottom-right position
4. Mouse Wheel Direction (MW_ Keycodes)* 🆕
Problem Solved: macOS uses "natural scrolling" (wheel up = scroll up), while Windows/Linux use traditional direction (wheel up = scroll down). Previous runtime inversion approach added complexity and overhead.
Solution: Static keycode mapping that returns reversed keycodes for Windows/Linux.
Implementation:
uint16_t get_mouse_wheel(uint16_t direction) {
bool is_mac = (current_os == OS_MACOS || current_os == OS_IOS);
switch (direction) {
case MW_RIGHT:
return is_mac ? MS_WHLR : MS_WHLL; // Reversed for non-Mac
case MW_UP:
return is_mac ? MS_WHLU : MS_WHLD; // Reversed for non-Mac
case MW_DOWN:
return is_mac ? MS_WHLD : MS_WHLU; // Reversed for non-Mac
case MW_LEFT:
return is_mac ? MS_WHLL : MS_WHLR; // Reversed for non-Mac
default:
return KC_NO;
}
}Custom Keycodes:
MW_RIGHT- Wheel right (macOS: MS_WHLR, Windows/Linux: MS_WHLL)MW_UP- Wheel up (macOS: MS_WHLU, Windows/Linux: MS_WHLD)MW_DOWN- Wheel down (macOS: MS_WHLD, Windows/Linux: MS_WHLU)MW_LEFT- Wheel left (macOS: MS_WHLL, Windows/Linux: MS_WHLR)
Layer 4 Layout (Mouse Wheel Row):
┌────────┬────────┬────────┬────────┬────────┬────────┐
│MW_RIGHT│MW_UP │MW_DOWN │MW_LEFT │ _______│ _______│
└────────┴────────┴────────┴────────┴────────┴────────┘
5. Continuous Key Press Support 🆕
Problem Solved: Previous tap_code16() implementation only triggered a single keypress event, even when holding down a key. This prevented continuous scrolling with mouse wheel keys.
Solution: Replaced tap_code16() with register_code16()/unregister_code16() pattern.
Code Changes:
// OLD (single tap only):
case MW_RIGHT:
if (record->event.pressed) {
tap_code16(get_mouse_wheel(keycode)); // ❌ Only one scroll event
}
return false;
// NEW (continuous press support):
case MW_RIGHT:
case MW_UP:
case MW_DOWN:
case MW_LEFT:
if (record->event.pressed) {
register_code16(get_mouse_wheel(keycode)); // ✅ Press and hold
} else {
unregister_code16(get_mouse_wheel(keycode)); // ✅ Release when key released
}
return false;Benefits:
- Continuous Scrolling: Holding MW_* keys produces repeated scroll events with acceleration
- Language Toggle Repeat: Holding LANG_SW repeats the action (OS-dependent)
- Natural Behavior: Matches QMK's built-in mouse wheel keycode behavior
- Screenshot Keys: Also updated for consistency (though typically tapped once)
Affected Keycodes: SC_FULL, SC_AREA, SC_MENU, SC_CLIP_FULL, SC_CLIP_AREA, LANG_SW, MW_RIGHT, MW_UP, MW_DOWN, MW_LEFT
7. Documentation Improvements
Added 66-Line Header Comment (keymap.c lines 11-84):
- Complete list of all custom keycodes with descriptions
- OS-specific behavior for each keycode
- Usage notes and integration instructions
- Migration guide from old keycodes (KC_SG* → SC_*)
- Backward compatibility information
Example Documentation Excerpt:
/**
* SC_FULL - Screenshot: Full screen
* macOS: Cmd+Shift+3
* Windows: Win+Shift+S (Snipping Tool)
* Linux: PrtScn
*
* MW_RIGHT - Mouse wheel right
* macOS/iOS: Wheel right
* Windows/Linux: Wheel left (reversed)
*
* USAGE NOTES:
* - OS detection happens automatically after USB connection
* - If OS not detected, defaults to macOS shortcuts
* - All shortcuts support continuous key press
*/Layer Overview (Updated)
Layer 4: _LEFT_UP (Primary Changes)
Screenshot Shortcuts (Row 1, Right Side):
[SC_CLIP_AREA][SC_CLIP_FULL][SC_MENU][SC_AREA][SC_FULL][_______]
Mouse Wheel Direction (Row 4, Right Side):
[MW_RIGHT][MW_UP][MW_DOWN][MW_LEFT][_______][_______]
Language Switching (Layer 1, Bottom-Right):
... [LANG_SW]
Complete Layer 4 Layout:
Row 1: [_______][_______][_______][_______][RM_TOGG][RM_NEXT] [SC_CLIP_AREA][SC_CLIP_FULL][SC_MENU][SC_AREA][SC_FULL][_______]
Row 2: [_______][_______][_______][_______][RM_PRE...
# Release Notes - October 16, 2025
Summary
This release updates the zerodice0 keymap to comply with QMK's modern standards and introduces RGB Matrix support. The update modernizes keycode definitions, enables advanced RGB lighting control, and adds new layer-specific functionality while maintaining full compatibility with both Iris Rev7 and Iris CE Rev1 hardware.
Key Changes
1. Keycode Modernization
Mouse Keycodes
Updated deprecated mouse keycode naming conventions to QMK's current standard across layers 4 and 5:
-
Button Keycodes (Layer 4, Row 2):
KC_BTN1→MS_BTN1(Mouse Button 1)KC_BTN2→MS_BTN2(Mouse Button 2)KC_BTN3→MS_BTN3(Mouse Button 3)KC_BTN4→MS_BTN4(Mouse Button 4)
-
Mouse Movement Keycodes (Layer 4, Row 3):
KC_MS_L→MS_LEFT(Mouse Left)KC_MS_D→MS_DOWN(Mouse Down)KC_MS_U→MS_UP(Mouse Up)KC_MS_R→MS_RGHT(Mouse Right)
-
Mouse Wheel Keycodes (Layer 4, Row 4):
KC_WH_R→MS_WHLD(Mouse Wheel Left)KC_WH_U→MS_WHLU(Mouse Wheel Up)KC_WH_D→MS_WHLD(Mouse Wheel Down)KC_WH_L→MS_WHLR(Mouse Wheel Right)
RGB Keycodes
Standardized RGB lighting keycodes to align with RGB_MATRIX_ENABLE configuration:
-
RGB Mode Keycodes (Layers 3 and 4):
RGB_M_P→RM_NEXT(RGB Pattern Next)RGB_M_B→RM_VALD(RGB Brightness Down, alternative pattern control)RGB_M_R→RM_SPDU(RGB Speed Up)RGB_M_SW→RM_SPDD(RGB Speed Down)RGB_MOD→RM_NEXT(RGB Pattern Next)
-
RGB Control Keycodes (Layer 3, Rows 2-3):
RGB_HUI→RM_HUI(RGB Hue Increase)RGB_HUD→RM_HUD(RGB Hue Decrease)RGB_SAI→RM_SATU(RGB Saturation Increase)RGB_SAD→RM_SATD(RGB Saturation Decrease)RGB_VAI→RM_VALU(RGB Value/Brightness Increase)RGB_VAD→RM_VALD(RGB Value/Brightness Decrease)
2. Build Configuration Updates
rules.mk - RGB Matrix Configuration:
# Previous: RGBLIGHT_ENABLE (underglow only)
# Updated: RGB_MATRIX_ENABLE = yesRationale:
- Enables per-key RGB matrix support for the Iris CE Rev1 and compatible keyboards
- Aligns with QMK's modern RGB lighting architecture
- Provides more granular RGB control options
3. Layer 3 (_RIGHT_UNDER) Enhancements
Added RGB color and brightness control keys on the right-side modifier layer:
-
Row 2 (Color Control):
KC_HOMEposition:RGB_HUI(Hue ↑)KC_UParea:RGB_SAI(Saturation ↑)- Right side:
RGB_VAI(Brightness ↑)
-
Row 3 (Brightness & Saturation):
KC_ENDposition:RGB_HUD(Hue ↓)KC_DOWNarea:RGB_SAD(Saturation ↓)- Right side:
RGB_VAD(Brightness ↓)
Visual Layout (Layer 3, Right Side):
┌────────┬────────┬────────┬────────┐
│ RGB_HUI│ RGB_SAI│ RGB_VAI│ KC_BSLS│ Row 2
├────────┼────────┼────────┼────────┤
│ RGB_HUD│ RGB_SAD│ RGB_VAD│ _______│ Row 3
└────────┴────────┴────────┴────────┘
4. Layer 4 (_LEFT_UP) Updates
New Addition: Cmd+` (Tab Switch) Keycode
- Row 1, leftmost position on modifier row: Added
TAP_P(Cmd+` Backtick) - Enables quick window switching within applications (macOS standard)
- Located at position where
RGB_M_Pwas previously
Layer Overview
Layer 0: _BASIC (Default)
- Standard QWERTY layout
- Left thumb:
KC_LGUI(Cmd),LEFT_UNDER(layer switch),KC_ENT(Enter) - Right thumb:
KC_SPC(Space),RIGHT_UNDER(layer switch),KC_RALT(Right Alt) - Modifier key:
MO(4)(temporarily activate Layer 4)
Layer 1: _LEFT_UNDER
- Number pad simulation (Left side)
- Symbols and special characters
- Triggered by holding left thumb key
Layer 2: _RIGHT_UNDER
- Function keys (F1-F12)
- Media controls (Prev, Next, Volume Up/Down)
- RGB Controls (Newly updated):
- Hue/Saturation/Brightness adjustment
- Supports advanced RGB matrix animation control
Layer 3: _BOTH_UNDER (Tri-Layer)
- System commands and shortcuts
- Auto-activated when both thumb keys are held simultaneously
- RGB mode controls using updated RM_* keycodes
Layer 4: _LEFT_UP
- Mouse control (Movement, buttons, wheel)
- macOS screenshot shortcuts (Cmd+Shift+3/4/5 variants)
- Browser navigation (Back, Forward)
- Finder navigation (Up, Down)
- New: Cmd+` window switcher
Technical Specifications
Hardware Support
- Keyboards: Keebio Iris Rev7, Iris CE Rev1
- MCU: Compatible with QMK-supported MCUs
- RGB Matrix: Per-key RGB (if hardware present)
- Features Enabled:
- Split keyboard support
- Mouse key support
- RGB Matrix control
- EXTRAKEY (media keys)
- Link-Time Optimization (LTO)
Build Configuration
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes # Required for mouse layer
EXTRAKEY_ENABLE = yes # Media keys (Vol, Play, etc.)
CONSOLE_ENABLE = yes # Debug output
COMMAND_ENABLE = no
NKRO_ENABLE = no
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
AUDIO_ENABLE = no
SPLIT_KEYBOARD = yes # Split keyboard configuration
ENCODER_ENABLE = no
RGB_MATRIX_ENABLE = yes # Per-key RGB matrix (NEW)
LTO_ENABLE = yes # Link-time optimization
Compatibility & Platform Notes
Windows/Linux
⚠️ Partial compatibility- Cmd key codes may not behave as expected (mapped to Super/Windows key)
- macOS-specific shortcuts will not work as intended
- Mouse controls and RGB matrix fully functional
- Basic layer functionality unaffected
QMK Version Compatibility
- Minimum: QMK Firmware 0.24.0+
- Tested: QMK Firmware 0.24.x series
- Recommended: Latest QMK development branch
Migration Guide (From Previous Versions)
If you're updating from the previous zerodice0 keymap version:
-
Backup your existing keymap
cp keymap.c keymap.c.backup
-
Update QMK CLI
qmk update
-
Compile and flash using the commands above
-
Verify functionality:
- Test mouse layer operations
- Verify RGB matrix controls on Layer 2 and 3
- Confirm Layer 4 window switcher (Cmd+`)
Behavioral Changes
- Mouse wheel scrolling: Direction follows macOS conventions (reversed if coming from Windows)
- RGB control: Now uses modern RGB_MATRIX keycodes instead of RGBLIGHT
- Layer 4: New Cmd+` keycode added to Tab position
요약
이 릴리즈는 zerodice0 키맵을 QMK의 최신 표준에 맞게 업데이트하고 RGB 매트릭스 지원을 도입합니다. 이 업데이트는 키코드 정의를 현대화하고, 고급 RGB 조명 제어를 활성화하며, 새로운 레이어별 기능을 추가하면서 Iris Rev7과 Iris CE Rev1 하드웨어 모두와의 완전한 호환성을 유지합니다.
주요 변경사항
1. 키코드 현대화
마우스 키코드
레이어 4와 5에서 사용 중단된 마우스 키코드 명명 규칙을 QMK의 현재 표준으로 업데이트했습니다:
-
버튼 키코드 (레이어 4, 2행):
KC_BTN1→MS_BTN1(마우스 버튼 1)KC_BTN2→MS_BTN2(마우스 버튼 2)KC_BTN3→MS_BTN3(마우스 버튼 3)KC_BTN4→MS_BTN4(마우스 버튼 4)
-
마우스 이동 키코드 (레이어 4, 3행):
KC_MS_L→MS_LEFT(마우스 왼쪽)KC_MS_D→MS_DOWN(마우스 아래)KC_MS_U→MS_UP(마우스 위)KC_MS_R→MS_RGHT(마우스 오른쪽)
-
마우스 휠 키코드 (레이어 4, 4행):
KC_WH_R→MS_WHLD(마우스 휠 왼쪽)KC_WH_U→MS_WHLU(마우스 휠 위)KC_WH_D→MS_WHLD(마우스 휠 아래)KC_WH_L→MS_WHLR(마우스 휠 오른쪽)
RGB 키코드
RGB 조명 키코드를 RGB_MATRIX_ENABLE 설정에 맞게 표준화했습니다:
-
RGB 모드 키코드 (레이어 3 및 4):
RGB_M_P→RM_NEXT(RGB 패턴 다음)RGB_M_B→RM_VALD(RGB 밝기 감소, 대체 패턴 제어)RGB_M_R→RM_SPDU(RGB 속도 증가)RGB_M_SW→RM_SPDD(RGB 속도 감소)RGB_MOD→RM_NEXT(RGB 패턴 다음)
-
RGB 제어 키코드 (레이어 3, 2행-3행):
RGB_HUI→RM_HUI(RGB 색상 증가)RGB_HUD→RM_HUD(RGB 색상 감소)RGB_SAI→RM_SATU(RGB 채도 증가)RGB_SAD→RM_SATD(RGB 채도 감소)RGB_VAI→RM_VALU(RGB 밝기 증가)RGB_VAD→RM_VALD(RGB 밝기 감소)
2. 빌드 설정 업데이트
rules.mk - RGB 매트릭스 설정:
# 이전: RGBLIGHT_ENABLE (언더글로우만)
# 업데이트됨: RGB_MATRIX_ENABLE = yes이유:
- Iris CE Rev1 및 호환 키보드에 대한 키별 RGB 매트릭스 지원 활성화
- QMK의 최신 RGB 조명 아키텍처와 일치
- 보다 세밀한 RGB 제어 옵션 제공
3. 레이어 3 (_RIGHT_UNDER) 개선사항
오른쪽 수정자 레이어에 RGB 색상 및 밝기 제어 키를 추가했습니다:
-
2행 (색상 제어):
KC_HOME위치:RGB_HUI(색상 ↑)KC_UP영역:RGB_SAI(채도 ↑)- 오른쪽:
RGB_VAI(밝기 ↑)
-
3행 (밝기 및 채도):
KC_END위치:RGB_HUD(색상 ↓)KC_DOWN영역:RGB_SAD(채도 ↓)- 오른쪽:
RGB_VAD(밝기 ↓)
시각적 레이아웃 (레이어 3, 오른쪽):
┌────────┬────────┬────────┬────────┐
│ RGB_HUI│ RGB_SAI│ RGB_VAI│ KC_BSLS│ 2행
├────────┼────────┼────────┼────────┤
│ RGB_HUD│ RGB_SAD│ RGB_VAD│ _______│ 3행
└────────┴────────┴────────┴────────┘
4. 레이어 4 (_LEFT_UP) 업데이트
새로운 추가 기능: Cmd+` (탭 전환) 키코드
- 1행, 수정자 행의 맨 왼쪽 위치:
TAP_P(Cmd+` 백틱) 추가 - 애플리케이션 내 빠른 창 전환 활성화 (macOS 표준)
- 이전에
RGB_M_P가 있던 위치에 배치
레이어 개요
레이어 0: _BASIC (기본값)
- 표준 QWERTY 레이아웃
- 왼쪽 엄지:
KC_LGUI(Cmd),LEFT_UNDER(레이어 전환),KC_ENT(Enter) - 오른쪽 엄지:
KC_SPC(스페이스),RIGHT_UNDER(레이어 전환),KC_RALT(오른쪽 Alt) - 수정자 키:
MO(4)(임시로 레이어 4 활성화)
레이어 1: _LEFT_UNDER
- 숫자판 시뮬레이션 (왼쪽)
- 기호 및 특수 문자
- 왼쪽 엄지 키를 누르면 트리거됨
레이어 2: _RIGHT_UNDER
- 기능 키 (F1-F12)
- 미디어 제어 (이전, 다음, 볼륨 증가/감소)
- RGB 제어 (새로 업데이트됨):
- 색상/채도/밝기 조정
- 고급 RGB 매트릭스 애니메이션 제어 지원
레이어 3: _BOTH_UNDER (트라이-레이어)
- 시스템 명령 및 단축키
- 두 엄지 키를 동시에 누르면 자동 활성화
- 업데이트된 RM_* 키코드를 사용한 RGB 모드 제어
레이어 4: _LEFT_UP
- 마우스 제어 (이동, 버튼, 휠)
- macOS 스크린샷 단축키 (Cmd+Shift+3/4/5 변형)
- 브라우저 탐색 (뒤로, 앞으로)
- 파인더 탐색 (위, 아래)
- 새로운 기능: Cmd+` 창 전환기
기술 사양
하드웨어 지원
- 키보드: Keebio Iris Rev7, Iris CE Rev1
- MCU: QMK 지원 MCU와 호환
- RGB 매트릭스: 키별 RGB (하드웨어가 있는 경우)
- 활성화된 기능:
- 분할 키보드 지원
- 마우스 키 지원
- RGB 매트릭스 제어
- EXTRAKEY (미디어 키)
- 링크 타임 최적화 (LTO)
빌드 설정
BOOTMAGIC_ENABLE = no
MOUSEKEY_ENABLE = yes ...
v.1.0.0
MAC에서 사용하기 위한 IRIS Rev.7 / CE용 펌웨어입니다.
- Finder에서 상위 경로/하위 경로를 탐색하기 위한
CMD+⬆️/CMD+⬇️를 쉽게 입력하기 위해,FN3+;/FN3+'에 할당했습니다. - Chrome에서 이전 페이지/다음 페이지로 이동하기 위한
CMD+[/CMD+]를 쉽게 입력하기 위해,FN3+P0/FN3+DEL에 할당했습니다.
This is the IRIS Rev.7 / CE firmware designed for use on Mac.
- To make it easier to input CMD+⬆️ / CMD+⬇️ for navigating up and down folders in Finder, they are assigned to FN3+; and FN3+', respectively.
- To simplify moving to the previous/next page (CMD+[ / CMD+]) in Chrome, they are assigned to FN3+P and FN3+DEL, respectively.
- 개략적인 키맵은 아래 페이지에 iris_20230621.json 파일을 업로드하여 확인 가능합니다.
- You can check the general keymap by uploading the iris_20230621.json file to the page linked below.