zmk studio - alliecatowo/zmk-sofle GitHub Wiki
ZMK Studio provides real-time keymap editing capabilities for your AllieCat Sofle keyboard. This revolutionary feature allows you to modify your keymap, adjust RGB settings, and configure behaviors without rebuilding or reflashing firmware.
ZMK Studio is a visual keymap editor that connects directly to your keyboard, allowing:
- Real-time keymap editing without firmware rebuilds
- Live preview of changes as you make them
- Visual layer management with intuitive interface
- RGB lighting control with instant feedback
- Behavior configuration for complex key functions
- Cross-platform support (Windows, macOS, Linux)
Access ZMK Studio directly in your browser:
- URL: https://zmk.studio/
- No installation required
- Always up-to-date
- Works on all platforms
Download the desktop application for offline use:
- Download:
ZMK.Studio_0.3.1_x64-setup.exe
(fromInstructions_ORIGINAL_CHINESE/zmk studioε and new firmware/
) - Run installer and follow setup wizard
- Launch from Start Menu
- Download:
ZMK.Studio_0.3.1_universal.dmg
- Mount DMG and drag to Applications folder
- Launch from Applications folder
# Download AppImage from releases
wget https://github.com/zmkfirmware/zmk-studio/releases/download/v0.3.1/ZMK.Studio-0.3.1.AppImage
# Make executable
chmod +x ZMK.Studio-0.3.1.AppImage
# Run
./ZMK.Studio-0.3.1.AppImage
Your keyboard needs special firmware with Studio support enabled. This repository provides pre-built Studio firmware:
Location: Instructions_ORIGINAL_CHINESE/zmk studioε and new firmware/sofle-studio-firmware/
- Only left half needs Studio firmware - right half uses standard firmware
- Studio firmware is USB-only for the connection interface
- Real-time changes are synchronized to both halves
- Standard functionality remains available when Studio is disconnected
-
Download Studio Firmware
- Navigate to
Instructions_ORIGINAL_CHINESE/zmk studioε and new firmware/sofle-studio-firmware/
- Find the latest
.uf2
file for left half
- Navigate to
-
Flash Left Half Only
- Put left half in bootloader mode (double-tap reset)
- Copy
.uf2
file to the USB drive that appears - Wait for restart - left half is now Studio-ready
-
Keep Standard Firmware on Right Half
- Right half continues to use standard firmware
- No changes needed to right half
-
Connect USB Cable
- Connect left half to computer via USB-C
- Ensure both halves are powered on
-
Open ZMK Studio
- Launch web version or desktop application
- Click "Connect Device" button
-
Device Detection
- ZMK Studio should automatically detect your keyboard
- Look for "AllieCat Sofle" in device list
- Click "Connect" to establish connection
-
Interface Loads
- Keyboard layout should appear in Studio
- Current keymap configuration displayed
- All layers visible in sidebar
-
Test Live Changes
- Click on any key to modify
- Changes apply immediately
- Test modified keys to confirm functionality
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β File Edit View Tools Help β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Layers] β [Main Editor] β
β ββββ Layer 0 β β
β β Layer 1 β βββ¬ββ¬ββ¬ββ¬ββ¬ββ β
β β Layer 2 β βQβWβEβRβTβYβ β
β β Layer 3 β βββΌββΌββΌββΌββΌββ€ β
β ββββ Add Layer β βAβSβDβFβGβHβ β
β β βββ΄ββ΄ββ΄ββ΄ββ΄ββ β
β [Properties] β β
β ββ Key Properties β [Keycodes] β
β β Keycode: Q β ββββββββββββββββββββββββββββ
β β Behavior: kp β β Letters Numbers Symbols ββ
β β Layer: 0 β β Functions Media Bluetoothβ
β ββ Apply β ββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
-
Select Key
- Click on any key in the visual layout
- Key properties appear in sidebar
-
Change Keycode
- Browse keycode categories
- Click desired keycode to assign
- Change applies immediately
-
Test Change
- Type on physical keyboard
- Modified key should produce new output
- No restart or reflash required
-
Add Layer
- Click "Add Layer" in layers panel
- New layer created with transparent keys
- Set layer name and description
-
Configure Layer Access
- Add layer access keys (MO, LT, TG, etc.)
- Set up layer switching behavior
- Test layer transitions
- Base Layer (0): Default active layer
- Momentary Layers: Active while key held
- Toggle Layers: Switch on/off with key press
- Tap-Dance Layers: Multi-tap activation
Create keys that act as modifiers when held, regular keys when tapped:
- Select Target Key
-
Choose Behavior:
mt
(mod-tap) -
Configure Properties:
- Hold: Modifier (Ctrl, Alt, Shift, etc.)
- Tap: Regular keycode
- Timing: Tap threshold (default 200ms)
Keys that access layers when held, produce keycodes when tapped:
-
Behavior:
lt
(layer-tap) -
Properties:
- Hold: Target layer number
- Tap: Keycode to produce
- Timing: Tap threshold
Multi-tap behaviors for single keys:
-
Behavior:
td
(tap-dance) -
Sequence Configuration:
- Single tap: First action
- Double tap: Second action
- Triple tap: Third action (optional)
- Hold: Hold action (optional)
-
Access RGB Panel
- Click "RGB" tab in Studio
- Live preview of current settings
-
Color Selection
- HSV color picker
- Live preview on keyboard
- Save favorite colors
-
Effect Selection
- Choose from available effects
- Adjust speed and intensity
- Preview effects in real-time
RGB Configuration Panel:
βββββββββββββββββββββββββββ
β On/Off: [β] β
β Effect: [Solid βΌ] β
β Hue: [ββββββββββ] 160Β° β
β Saturation: [ββββββ] 80% β
β Brightness: [ββββββ] 60% β
β Speed: [ββββββββ] 30% β
β β
β Auto-off on idle: [β] β
β Auto-off on USB: [β] β
β Start on boot: [ ] β
βββββββββββββββββββββββββββ
-
Encoder Properties
- Clockwise: Volume up, scroll up, etc.
- Counter-clockwise: Volume down, scroll down
- Press: Mute, play/pause, etc.
-
Layer-Specific Behavior
- Different encoder functions per layer
- Context-sensitive controls
- Gaming vs productivity modes
// Example: Layer-dependent encoder
encoder_behavior: encoder_behavior {
compatible = "zmk,behavior-sensor-rotate-var";
#sensor-binding-cells = <2>;
bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>,
<&scroll_encoder>,
<&inc_dec_kp PG_UP PG_DN>;
};
-
Enable Mouse Support
- Toggle pointing device in Studio
- Configure mouse sensitivity
- Set scroll behavior
-
Custom Mouse Layers
- Dedicated mouse layer
- Mouse movement keys
- Click and scroll functions
-
Profile Slots
- 5 available Bluetooth profiles
- Name and manage each profile
- Quick switching between devices
-
Connection Behavior
- Auto-connect preferences
- Connection timeout settings
- Profile memory management
Category | Examples | Studio Code |
---|---|---|
Letters | A-Z |
KC_A - KC_Z
|
Numbers | 0-9 |
KC_0 - KC_9
|
Modifiers | Ctrl, Alt, Shift |
KC_LCTRL , KC_LALT , KC_LSFT
|
Function | F1-F12 |
KC_F1 - KC_F12
|
Function | Code | Description |
---|---|---|
Momentary | MO(n) |
Hold for layer n |
Layer Tap | LT(n,kc) |
Tap for kc, hold for layer n |
Toggle | TG(n) |
Toggle layer n on/off |
One Shot | OSL(n) |
Activate layer n for next key |
Function | Code | Description |
---|---|---|
Toggle | RGB_TOG |
RGB on/off |
Effect | RGB_EFF |
Next effect |
Hue | RGB_HUI/HUD |
Hue increase/decrease |
Saturation | RGB_SAI/SAD |
Saturation increase/decrease |
Brightness | RGB_BRI/BRD |
Brightness increase/decrease |
Function | Code | Description |
---|---|---|
Select Profile | BT_SEL 0-4 |
Select BT profile 0-4 |
Clear Profile | BT_CLR |
Clear current profile |
Clear All | BT_CLR_ALL |
Clear all profiles |
Next Profile | BT_NXT |
Switch to next profile |
-
Export Current Layout
- File β Export Configuration
- Choose format (JSON recommended)
- Save configuration file
-
Include All Settings
- Keymap configuration
- RGB settings
- Encoder behaviors
- Layer definitions
-
Import Saved Layout
- File β Import Configuration
- Select configuration file
- Review changes before applying
-
Sharing Configurations
- Export configurations to share
- Import community layouts
- Version control for keymaps
-
Check USB Connection
- Try different USB ports
- Use high-quality USB-C cable
- Ensure stable connection
-
Verify Studio Firmware
- Confirm Studio firmware flashed to left half
- Check firmware version compatibility
- Re-flash if necessary
-
Browser/Application Issues
- Clear browser cache (web version)
- Restart desktop application
- Check for updates
-
Connection Status
- Verify green connection indicator
- Reconnect if connection lost
- Check USB cable integrity
-
Firmware Compatibility
- Ensure latest Studio firmware
- Check for firmware conflicts
- Verify configuration validity
-
Latency Problems
- Use USB connection for Studio
- Bluetooth connection for regular use
- Check for interference
-
Memory Issues
- Too many complex behaviors
- Simplify configuration
- Reset to defaults if needed
- Cause: Standard firmware instead of Studio firmware
- Solution: Flash Studio firmware to left half
- Cause: Too many layers or complex behaviors
- Solution: Simplify configuration or use fewer layers
- Cause: USB connection interrupted
- Solution: Reconnect USB cable and refresh Studio
-
Connection Stability
- Use high-quality USB-C cable
- Avoid USB hubs when possible
- Keep cable length reasonable
-
Battery Management
- USB connection charges left half
- Monitor right half battery level
- Consider power-saving settings
-
Configuration Efficiency
- Start with simple layouts
- Add complexity gradually
- Test each change thoroughly
-
Regular Backups
- Export configurations regularly
- Version control for complex layouts
- Keep backup configurations handy
-
Incremental Changes
- Make one change at a time
- Test thoroughly before proceeding
- Document custom configurations
-
Community Resources
- Share successful configurations
- Learn from community layouts
- Contribute improvements back
-
Check for Updates
- Monitor repository for new releases
- Download latest Studio firmware
- Read changelog for improvements
-
Update Process
- Flash new Studio firmware to left half
- Keep right half firmware unchanged
- Test Studio connection after update
-
Compatibility
- Ensure Studio application compatibility
- Update Studio app if needed
- Verify all features work correctly
Need help with Studio? Check the Studio Documentation or join the ZMK Discord for community support.