Repository navigation
Releases: russellmilliner/duckydeck-studio
Release list
DuckyDeck Studio v0.1.6 — New Profile Wizard & Shortcut Drag-and-Drop
What's New in v0.1.6
- New Profile Wizard Window: A 4-step wizard walking you step-by-step through profile creation (Basics, Target App & Auto-Switch, Appearance/Orientation, and Shortcuts Layout).
- Online & Local Shortcut Discovery: Pick any window on your desktop to automatically search shortcuts. With explicit user permission, queries Google search for application shortcut cheatsheets, supplemented by local KDE Plasma 6 shortcuts and curated offline catalogs.
- Drag-and-Drop Key Assignment: Visual 4×5 Key Matrix drop targets allow dragging shortcut cards straight onto any keycap. Dropping sets smart OLED labels and compiles standard DuckyScript 3 instantly.
- Key Editor Shortcuts Library: Added a dedicated Shortcuts Library tab to the Key Editor sidebar with live window picker, search filter, draggable cards, and an instant 'Apply to Key' button.
- Hardware Canvas Integration: All keycaps on the main hardware canvas now support drag-and-drop from the shortcuts library.
DuckyDeck Studio v0.1.5 & DDS Firmware v1.1.0
DuckyDeck Studio v0.1.5 & Custom Firmware v1.1.0 (DDS)
Highlights
• Firmware Renamed to DDS:
• Firmware filename prefix is now DDS_FW_ (DDS_FW_1.1.0_b3291568.bin), cleanly distinguishing custom DuckyDeck Studio builds from official dekuNukem (DPP_FW_) releases.
• Older releases have been renamed to DDS_FW_1.0.0_ad2acc81.bin and DDS_FW_1.0.1_bf177326.bin.
• Firmware v1.1.0 Enhancements:
• 12 Native Home Automation OLED Icons: Crisp 1-bit pixel-art icons for lights, switches, locks, sensors, climate, fans, garage, blinds, and cameras.
• SSD1306 SPI DMA Dirty Page Tracking: Differential frame buffer updates eliminate redundant SPI transfers.
• Hardware Smooth RGB LED Fade (SWC_FADE_TO): VM opcode 89 interpolates smooth transitions at 60 FPS in bytecode (.dsb).
• Sub-Millisecond USB HID SOF Spin-Wait: Tight microsecond retry eliminates 1–10 ms FreeRTOS scheduler tick delay.
• Wear-Leveled NVS Profile Cache: Eliminates SD card write blocking during rapid window auto-switching.
• Host Application (v0.1.5):
• Sub-Windows Always-on-Top: Dialogs, builders, and drawers dynamically stay on top whenever the main app is visible.
• Home Automation Icon Picker Tab: Added dedicated category tab with full icon previews and search.
• OLED Input Box Scaling: Dynamic FontMetrics padding and scaling prevent text clipping at high DPI / zoom levels.
• Desktop OLED Widget Enhancements: Fixed-top expansion, distinct pause indicator with matching app color palette, and duckydeck-studio branding icon.
• Key FX Audit & Color Picker: Whole-pad reactive bursts (starlight, pulse, wave_h, wave_v, scanner, ripple, spectrum), custom named palette colors with right-click menu, and standard color name picker.
DuckyDeck Studio Firmware v1.1.0 (DDS_FW_1.1.0_b3291568.bin)
🔧 DuckyDeck Studio Firmware v1.1.0 (DDS_FW_1.1.0_b3291568.bin)
Major custom firmware release for duckyPad Pro (2024) based on upstream duckyPad-Pro 3.3.5 / DSVM v2. To avoid confusion with official dekuNukem firmware, all custom builds are now distinguished by the DDS_FW_ prefix.
✨ Highlights & Enhancements in v1.1.0
- Distinct
DDS_FW_Firmware Prefix:
Firmware binaries are now cleanly identified withDDS_FW_, separating DuckyDeck Studio releases from upstream officialDPP_FW_builds while retaining dual-bootloader compatibility for flashing back to official firmware at any time. - 12 Native Home Automation OLED Icons:
Added pixel-art 1-bit monochrome icons for Light Bulb, Light Group, Power Plug/Switch, Lock, Motion Sensor, Security Shield, Thermometer, Thermostat, Fan, Garage Door, Window Blinds, and Surveillance Camera. Embedded in the hardware icon table with ASCII fallback for standard firmware. - SSD1306 SPI DMA Dirty Page Tracking:
Differential screen updating transmits only modified 128×8 byte display pages over SPI DMA via shadow buffer comparison, eliminating redundant traffic when updating clock digits, single key labels, or status icons. - Hardware Smooth RGB LED Fade (
SWC_FADE_TO):
Implemented VM opcode89(OP_SWC_FADE) with 60 FPS linear interpolation acrossduration_ms(SWC_FADE_TO <key> <r> <g> <b> <ms>). Runs 100% standalone in bytecode (.dsb) without requiring PC host software. - Sub-Millisecond USB HID SOF Dispatch Spin-Wait:
Tight microsecond spin retry (esp_rom_delay_us(50)) before task yields dispatches packets on the immediate next 1 ms USB SOF boundary without incurring 1–10 ms FreeRTOS scheduler tick delays. - Instantaneous Active Profile Switching (NVS Cache):
Active profile selection is cached in internal wear-leveled flash NVS (dpp_cfg), eliminating blocking FAT32 file writes on profile changes. Rapid window auto-switching switches profiles with zero SD card write latency or wear.
📦 Binary & Checksums
- Filename:
DDS_FW_1.1.0_b3291568.bin(877,280 bytes) - IEEE CRC32 (in filename):
b3291568 - SHA-256:
8a861c944f363fbd06104927c3fbd8aaa4ed0cc57dfacdfd290c39165098e68f
DuckyDeck Studio v0.1.4 & Custom Firmware v1.0.1
DuckyDeck Studio v0.1.4 & Custom Firmware v1.0.1
Highlights
- Custom Firmware v1.0.1 (
DPP_FW_1.0.1_bf177326.bin):- Fixed USB HID endpoint contention and stuck modifier/key states by waiting for
tud_hid_ready()before sending custom HID reports. - Automatically calls
keyboard_release_all()before switching profiles via HID and when a duckyScript execution aborts or enters sleep.
- Fixed USB HID endpoint contention and stuck modifier/key states by waiting for
- Host USB HID & CPU Optimization (
v0.1.4):- Eliminated
HidApi::new()global USB bus enumeration and interface resets on every background poll by discovering and caching the duckyPad/dev/hidraw*node via sysfs and opening withHidApi::new_without_enumerate(), reducing steady-state background CPU usage from ~45% to 0.0%. - Added report-ID filtering (
read_hid_report4) and pre-command input draining so keyboard/consumer HID reports on the shared hidraw interface never collide with vendor command ACKs. - Added evdev key-activity cooldown tracking so background HID polling yields immediately while keys on the duckyPad are pressed or held.
- Skipped background
_GV31HTTP trigger polling when the active profile has no Web API / Webhook slots.
- Eliminated
- Flatpak Runtime Update:
- Upgraded Flatpak runtime from EOL
org.kde.Platform//6.8(24.08) toorg.kde.Platform//6.11(25.08).
- Upgraded Flatpak runtime from EOL
DuckyDeck Studio v0.1.3
DuckyDeck Studio v0.1.3
Highlights
- Regex Window Title Matching: Added opt-in regular expression matching (
.* Regexcheckbox) with live syntax validation andregex: /.../rule badges in the Auto-Switcher Rules window. - Persistent Collapsible Sections: Added twist minimize/expand controls to the Auto-Switcher enable/timings and rule editor sections, automatically expanding when double-clicking a rule and remembering/restoring section states across restarts.
- First-Run Hardware & Legacy Config Migration: Added first-run onboarding modal when a duckyPad is detected to import profiles/rules from the deck microSD, dekuNukem configurator backups, or legacy auto-switcher, with conflict detection and one-click shutdown of concurrently running legacy tools.
- Flatpak & Wayland Enhancements: Fixed KWin auto-switcher D-Bus bridge script paths in Flatpak, added full Flatpak UI test suite (
scripts/test-flatpak-ui.sh), and eliminated duplicate window hide DPR warnings on close.
DuckyDeck Studio v0.1.2 — Keycap Layout, Fallback Profile Sync & Desktop Widget Rotation
DuckyDeck Studio v0.1.2
Official release of DuckyDeck Studio (v0.1.2), the native Linux / KDE Plasma 6 (Kirigami) configurator, DSVM v2 bytecode compiler, HTTP REST API server, and KWin Wayland Auto-Switcher for the duckyPad Pro (0x0483:0xd11d) and duckyPad (2020) (0x0483:0xd11c).
- 🌐 Official Website & User Manual: https://duckydeckstudio.com
- 🏗️ System Architecture Reference: https://duckydeckstudio.com/architecture.html (
docs/ARCHITECTURE.md) - 🔌 HTTP REST API Reference: https://duckydeckstudio.com/REST_API.md (
docs/REST_API.md)
What's New in v0.1.2
- 📦 Native KDE Plasma 6.8 Flatpak Package (
io.github.duckydeck.Studio):- Single-file Flatpak bundle (
duckydeck-studio-v0.1.2-x86_64.flatpak) with full USB HIDraw, UDisks2 USB Mass Storage microSD mounting, KWin Wayland D-Bus scripting (org.kde.KWin), host command execution (org.freedesktop.Flatpak), and embedded DuckyDeck Studio firmware (DPP_FW_1.0.0_ad2acc81.bin). - Automatic synchronization of
kwin_rules.jsonacross host (~/.config/duckydeck-studio/), Flatpak (~/.var/app/io.github.duckydeck.Studio/config/duckydeck-studio/), and microSD (duckydeck_rules.json) so all custom Auto-Switcher rules are preserved seamlessly.
- Single-file Flatpak bundle (
- 🚀 First-Run Deck Setup, Legacy Import & Conflicting Software Guard (
SdSyncDialog.qml,device_controller.rs):- Automatically detects connected duckyPad hardware on first run and prompts to import existing profiles from the deck microSD or dekuNukem configurator backups (
~/duckypad_config/profile_backups) as well as dekuNukem's standard auto-switcher rules (config.txt/config.json). - Detects if
duckypad_configorduckypad_autoprofileis running concurrently and offers a one-click option to shut them down cleanly so USB HID and auto-switching do not conflict.
- Automatically detects connected duckyPad hardware on first run and prompts to import existing profiles from the deck microSD or dekuNukem configurator backups (
- 🪟 Auto-Switcher Rules Window Enhancements (
AutoSwitchDrawer.qml):- Added
▾/▸twist minimize toggles to the Enable Automatic Profile Switching section and the Add New Window Rule section to maximize vertical space for the configured rules list. - Double-clicking any rule in Configured Rules (or clicking Edit Rule, 🎯 Pick Window, or Use Current) automatically expands the Add / Edit Window Rule section.
- Added
- 🎹 Header-Footer Split Keycap Layout (
HardwareCanvas.qml):- Redesigned mechanical keycaps with a compact top header bar (key number
1..20on the left + pill-shaped RGB LED color bar on the right), centered 2-line OLED label preview with automatic icon scaling, and a dedicated bottom footer strip (APP/APIhost badges and↻/⏹repeat/abort indicators) with zero overlap up to115%+UI zoom.
- Redesigned mechanical keycaps with a compact top header bar (key number
- 🛡️ Protected Fallback Profile & Auto-Switcher Rule Synchronization (
device_controller.rs,auto_switcher.rs):- Creating or resetting a profile group always ensures a Default Fallback Profile (
★ FALLBACK) exists and protects it from deletion. - Reordering or deleting profiles automatically updates all KWin Wayland Auto-Switcher rule bindings (
remap_rules_on_profile_reorder,remap_rules_on_profile_delete).
- Creating or resetting a profile group always ensures a Default Fallback Profile (
- 🖥️ Desktop OLED Widget & KDE Plasma Applet 4-Way Rotated Key Labels (
OledDesktopWidget.qml,plasmoid/io.github.duckydeck.oled):- Per-profile Desktop Widget orientation (
Follow OLED,0°,90°,180°,270°) applies immediately and rotates both the 4×5 key grid coordinates and the text labels inside each key cell.
- Per-profile Desktop Widget orientation (
- ✨ UI, System Tray & Documentation Enhancements:
- Added "About DuckyDeck Studio" to the system tray context menu (
src/cpp/app_helper.h). - Updated all 12 screenshots (
1920×1080,16:9square-pixel aspect ratio) and the showcase video (docs/duckydeck-studio-demo.mp4).
- Added "About DuckyDeck Studio" to the system tray context menu (
DuckyDeck Studio v0.1.0 — Source Code Release
DuckyDeck Studio v0.1.0
Official source code release of DuckyDeck Studio, the native KDE Plasma 6 (Kirigami) configurator, DSVM v2 bytecode compiler, HTTP REST API server, and KWin Wayland Auto-Switcher for the duckyPad Pro and duckyPad (2020).
Highlights
- Website & Online Documentation: https://duckydeckstudio.com
- UI & Accessibility Enhancements:
- Enforced minimum
10ptfont across all application views and dialogs. - Added standard
Ctrl++,Ctrl+=,Ctrl+-, andCtrl+0zoom shortcuts with automatic disk persistence across restarts. - Added vertical & horizontal high-contrast scrollbars to the DuckyScript 3 editor.
- Made all 24 popup windows, dialogs, drawers, and the OLED Desktop Widget closable via
Esc.
- Enforced minimum
- Automated Test Suite: Full Rust + QML scene-graph and behavioral verification suite (
cargo test).
DuckyDeck Studio Firmware v1.0.0 (DDS_FW_1.0.0_ad2acc81.bin)
🔧 DuckyDeck Studio Firmware v1.0.0 (DPP_FW_1.0.0_ad2acc81.bin)
Custom, 100% backwards-compatible firmware build for duckyPad Pro (2024) based on official upstream firmware 3.3.5 (dsvm_version = 2). All existing .dsb bytecode scripts, profiles, RGB settings, and standard duckyPad Pro features work identically to the official firmware while adding hardware support for 1-bit monochrome OLED key icons, UTF-8 glyph-aware key labels, full 4-way physical OLED screen rotation (0°, 90°, 180°, 270°), and USB HID capability auto-detection.
✨ What This Firmware Adds Over Standard Firmware (3.3.5)
| Feature / Capability | Standard Firmware (3.3.5) |
DuckyDeck Studio Firmware (1.0.0) |
|---|---|---|
1-Bit Monochrome OLED Key Icons (oled_icons.c / ui_task.c) |
❌ ASCII text only (0x20..0x7E); Unicode/emoji symbols are stripped or ignored on hardware. |
✅ 3-Tier Crisp Pixel-Art Icon Rendering (35+ built-in icons across Media, Dev, Arrows, System, Browser & Editing):• Full-Cell 16×16 Icon: Centered in the key box (32×23 normal or 25×28 rotated) when Line 1 is a single icon and Line 2 is empty.• Top-Line 10×10 Icon + Caption: Centered 10×10 icon on Line 1 above a 7×10 (≤4 chars) or 6×8 (5 chars) text label on Line 2.• Inline 7×10 / 6×8 Glyphs: Mixed inline with ASCII text labels. |
UTF-8 Key Label Decoding & Buffer Size (profiles.h / profiles.c) |
❌ KEYNAME_SIZE = 8 bytes with raw byte truncation (str[5] = 0), which slices multi-byte UTF-8 characters. |
✅ Expanded KEYNAME_SIZE = 24 bytes with glyph-aware UTF-8 truncation (oled_utf8_truncate_glyphs — 5 glyphs in 0°/180°, 4 glyphs in 90°/270°). Reads ui_z<N> / ui_x<N> directives for icons while keeping z<N> / x<N> ASCII fallbacks for backwards compatibility. |
Physical OLED Screen Orientations (ssd1306.c / ui_task.c) |
0° Standard Portrait (IS_LANDSCAPE 0) and 90° Clockwise (IS_LANDSCAPE 1). |
✅ Full 4-Way Hardware Rotation (0°, 90°, 180°, 270°):• Adds 180° Inverted Portrait (IS_LANDSCAPE 2 / OLED_ROTATION 180 via SSD1306_ROTATE_180).• Adds 270° Counter-Clockwise Landscape (IS_LANDSCAPE 3 / OLED_ROTATION 270 via SSD1306_ROTATE_CCW90 & draw_profile_rotated_ccw with sw_idx = (4 - col) * 4 + row key grid remapping). |
USB HID Capability Signature (hid_task.c) |
Standard GET_INFO (0x00) response (fw 3.3.5). |
✅ Reports fw 1.0.0 (dsvm 2) + 'D','D','S' capability signature at HID bytes 19..21 so DuckyDeck Studio automatically badges the status bar and enables 180°/270° & hardware icon sync. |
📦 Binary & Checksums
- Filename:
DPP_FW_1.0.0_ad2acc81.bin(874,768bytes) - IEEE CRC32 (in filename):
ad2acc81 - SHA-256:
d558e6b20d6add543822837acec73e2900a1823f7522b13c03ee44c9de7647dd - Direct Website Mirror:
https://duckydeckstudio.com/firmware/DPP_FW_1.0.0_ad2acc81.bin
🚀 How to Install
- Via DuckyDeck Studio (Recommended): Open 🔧 Firmware in the top toolbar and click ⚡ Install DuckyDeck Studio Firmware (
1.0.0). - Manual microSD Card Install: Copy
DPP_FW_1.0.0_ad2acc81.binto the root directory of your duckyPad Pro's FAT32 microSD card, safely eject it, insert it into the duckyPad Pro, and power-cycle the device (or reboot via USB HID). The bootloader verifies thead2acc81CRC32 checksum, flashes the firmware, and deletes the.binfile automatically.