KeSp split keyboard configurator — Slint UI port
Find a file
Mae PUGIN 3e54361d0d refactor: Modularize main.rs (2478 → 58 lines), flat architecture
Split monolithic main.rs into domain modules:
- context.rs: AppContext shared state, BgMsg enum, serial_spawn helper
- models.rs: UI model builders, keycap labels, key entries, layout preview
- config.rs: keyboard config export/import via binary protocol
- dispatch.rs: BgMsg handler + WPM/layout timers
- keymap.rs: key selection, layer switch/rename, heatmap toggle
- key_selector.rs: dispatch_keycode router, apply_keycode, hex/MT/LT
- macros.rs: macro CRUD, shortcut presets, step builder
- advanced.rs: combos, KO, leaders, tap dance, BT, tama, autoshift
- settings.rs: OTA flash, config backup, keyboard layout
- flasher.rs: ESP32 bootloader flash
- layout.rs: layout JSON preview, load/export
- connection.rs: serial connect/disconnect, tab auto-refresh
- stats.rs: stats refresh

Rename logic/ → protocol/ with cleaner file names.
Remove unused original-src/ directory.
Fix DarkLineEdit double styling, add rename popup, macro shortcuts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 12:02:22 +02:00
.github/workflows fix: Remove macOS Intel target, fix CI 2026-04-07 16:39:52 +02:00
src refactor: Modularize main.rs (2478 → 58 lines), flat architecture 2026-04-08 12:02:22 +02:00
ui refactor: Modularize main.rs (2478 → 58 lines), flat architecture 2026-04-08 12:02:22 +02:00
.gitignore docs: Add README, LICENSE (GPL-3.0), prepare for public release 2026-04-07 16:50:39 +02:00
build.rs feat: Complete KeSp Controller — Slint UI port 2026-04-06 20:40:34 +02:00
Cargo.lock release: v1.0.0 — KeSp Controller multi-platform 2026-04-07 16:23:12 +02:00
Cargo.toml docs: Add README, LICENSE (GPL-3.0), prepare for public release 2026-04-07 16:50:39 +02:00
default.json feat: Binary protocol v2, config import/export, Tools tab, new layout format 2026-04-07 21:30:04 +02:00
LICENSE docs: Add README, LICENSE (GPL-3.0), prepare for public release 2026-04-07 16:50:39 +02:00
README.md docs: Add README, LICENSE (GPL-3.0), prepare for public release 2026-04-07 16:50:39 +02:00

KeSp Controller

Cross-platform configurator for the KeSp split ergonomic keyboard.

Built with Rust and Slint UI framework.

License: GPL-3.0

Features

  • Keymap editor with visual keyboard layout (loaded from firmware)
  • Key selector with categorized grid, Mod-Tap/Layer-Tap builders, hex input
  • Heatmap overlay showing key press frequency (blue to red gradient)
  • Layer management with switch, rename, and active indicator
  • Tap Dance editing (4 actions per slot)
  • Combos creation with visual key picker
  • Key Overrides with modifier checkboxes (Ctrl/Shift/Alt)
  • Leader Keys with sequence builder
  • Macros with visual step builder (key presses + delays)
  • Statistics (hand balance, finger load, row usage, top keys, bigrams)
  • OTA firmware update via USB (no programming cable needed)
  • ESP32 flasher (esptool-like, via programming port)
  • Settings with keyboard layout selector (QWERTY, AZERTY, DVORAK, etc.)
  • Dracula theme throughout

Download

Pre-built binaries for Linux, Windows, and macOS are available on the Releases page.

Build from source

Requirements

  • Rust toolchain (1.75+)
  • Linux: libudev-dev libfontconfig1-dev

Build

cargo build --release

Binary will be at target/release/KeSp_controller.

Usage

  1. Plug in your KeSp keyboard via USB
  2. Launch KeSp Controller
  3. The app auto-connects to the keyboard
  4. Use the tabs to configure: Keymap, Advanced, Macros, Stats, Settings, Flash

Keyboard compatibility

Designed for the KeSp/KaSe split keyboard with:

  • USB CDC serial (VID: 0xCAFE, PID: 0x4001)
  • Binary protocol v2
  • ESP32-S3 MCU

License

GPL-3.0 - See LICENSE

Made with Slint