My QMK firmware configurations for the Lily58 Pro split keyboard.
Firmware Size: 26,568/28,672 bytes (92%, 2,104 bytes free)
Last Updated: 2026-01-05
- OS Detection: Automatically detects and displays connected OS (Windows/Mac/Linux icon)
- Layer Status: Shows current layer (0-3)
- NKRO Status: Displays NKRO on/off state
- WPM Counter: Real-time words per minute
- Luna Cat Animation:
- Sits when idle
- Walks at 10+ WPM
- Runs at 40+ WPM
- Jumps when pressing Space
- Sneaks when holding Ctrl
- Barks when Caps Lock is on
- Stops animating 30s before timeout
- Ocean Dream Animation: Animated ocean scene
- Twinkling stars
- Shooting stars (increases with WPM)
- Animated waves (rougher with higher WPM)
- Island with palm tree
- Moon with phases
- Responds to typing speed
- Stops animating 30s before timeout
- Mouse Keys: Layer 1 (mouse buttons BTN1-5), Layer 3 (mouse cursor + wheel scroll)
- NKRO Toggle: Hold LOWER+RAISE, toggle via Adjust layer encoder key
- Rotary Encoder: Volume control (right side)
- Arrow Keys: Layer 2, positioned under I/J/K/L (LEFT/DOWN/UP/RIGHT)
- VIA Support: Enabled for real-time keymap editing
- Auto OLED Timeout: 30 seconds with fade out effect
- Layer 0 (Base): QWERTY layout
- Layer 1 (Lower): Function keys, symbols, mouse buttons, media controls
- Layer 2 (Raise): Numbers, F-keys, arrow keys, brackets, operators
- Layer 3 (Adjust): Mouse cursor movement, wheel scroll, NKRO toggle
lily58pro/
├── README.md # This file
├── ocean_dream/lily58_rev1_ocean_dream.hex # Compiled firmware
├── ocean_dream/ # Current active config
│ ├── config.h # Hardware settings
│ ├── keymap.c # Key mappings
│ ├── rules.mk # Build configuration
│ └── lib/
│ ├── lily58_oled.c/h # Custom OLED handler
│ ├── luna.c/h # Luna cat animation
│ └── ocean_dream.c/h # Ocean Dream animation
└── bongocat/ # Previous config (backup)
├── config.h
├── keymap.c
├── rules.mk
├── lily58.layout.json # VIA layout
└── lib/
└── bongocat.c/h # Old BongoCat animation
cd ~/qmk_firmware
qmk compile -kb lily58/rev1 -km my_config_with_bongoCat
qmk flash -kb lily58/rev1 -km my_config_with_bongoCatThen press the reset button on your keyboard.
Flash ocean_dream/lily58_rev1_ocean_dream.hex using QMK Toolbox or:
qmk flash ocean_dream/lily58_rev1_ocean_dream.hex- Timeout: Disabled (manual toggle via OLED_TOG key)
- Rotation: 270° (vertical orientation on both sides)
- Split OLED: Enabled for independent left/right displays
- Manual Control: Use LOWER+RAISE+B to toggle screens on/off
- LTO: Enabled (reduces firmware size)
- NKRO: Enabled (N-Key Rollover for gaming/fast typing)
- Mouse Keys: Enabled
- Encoders: Enabled (right side only)
- WPM Tracking: Enabled with split support
- VIA: Enabled for GUI keymap editing
- OS Detection: Enabled (Windows/Mac/Linux/iOS)
- OLED Fade Out: Enabled with 5-step interval
- Bootmagic: Disabled
- RGB/LED: Disabled (no RGB hardware)
- Audio: Disabled
- Console/Command: Disabled
- NKRO Toggle: LOWER + RAISE + Right Encoder
- Adjust Layer: Hold LOWER + RAISE simultaneously
- Ocean Dream Calm Mode: Hold Ctrl (makes waves calm)
- Luna Cat Animation: QMK Community
- QMK Firmware: qmk/qmk_firmware
- Updated keycode syntax for QMK compatibility
- Changed mouse button keycodes from KC_BTN to MS_BTN format
- Changed mouse cursor keycodes from KC_MS to MS format
- Changed mouse wheel keycodes from KC_WH to MS_WHL format
- Adjusted LOWER layer symbol positions to match VIA config
- Repositioned arrow keys in RAISE layer
- Fixed mouse cursor layout in ADJUST layer for better ergonomics
- Added OS detection with icon display (Windows/Mac/Linux/iOS)
- Fixed OLED timeout flickering issue with guard clause
- Implemented automatic OLED timeout (30s) with fade out effect
- Animation stops 30s before timeout to allow proper screen shutdown
- Removed manual OLED toggle (now fully automatic)
- Fixed ADJUST layer keymap comment formatting
- Optimized OLED display layout (OS icon + Layer + NKRO + WPM)
- Replaced BongoCat with Ocean Dream (right OLED)
- Added Luna cat animation (left OLED)
- Reorganized OLED layout: Layer/NKRO/WPM/Luna
- Added mouse keys to Layer 1 and Layer 3
- Repositioned arrow keys to match VIA layout
- Added NKRO toggle key
- Fixed OLED timeout flickering issues
- Added Luna jump (Space) and sneak (Ctrl) triggers
- Optimized firmware size: 26,568 bytes (2,104 bytes free)
- Removed unused keylog code (saved ~1,266 bytes)
- Enabled moon animation (uses 182 bytes)