A floating overlay that displays your keyboard input during screen recordings, tutorials, and live demos. Under 50MB. Multi-monitor. Fully themeable.
KeyKey sits in the corner of your screen and shows viewers what you're typing. No Electron. No Java. Just a native overlay that stays out of your way.
Text stream shows stacked key labels that fade out. Visual keyboard highlights keys on a rendered layout. Switch with a hotkey or from the tray menu.
Filters incidental Shift taps during typing but catches intentional holds. Per-modifier overrides: always show, never show, combo only, or smart mode.
Follow the active window, follow the mouse, or pin to a corner. Re-queries monitor geometry on every focus change. DPI-aware positioning.
5 built-in presets. Every visual property is a CSS variable: fonts, colors, opacity, borders, shadows. Import and export themes as JSON.
Under 15MB installed. Under 50MB memory. Uses native WebView2 instead of bundling Chromium. Less than 1% CPU when idle, under 3% during continuous typing.
Launches to tray, starts capturing immediately. Optional global hotkeys with no hardcoded defaults, so nothing conflicts with your workflow.
Four stages from physical keypress to rendered overlay. The Rust backend handles capture and processing; the Svelte frontend handles display.
rdev installs a global keyboard hook. Every press and release is captured regardless of which window has focus.
Win32 hookSmart mode logic: modifier hold timing, combo detection (Ctrl+Shift+S), repeat compression (A x3).
RustProcessed events sent to the frontend via Tauri IPC. Two channels: raw for visual keyboard, processed for text stream.
Tauri v2SvelteKit overlay renders keystrokes. Transparent, frameless, always-on-top, click-through window.
Svelte 5Existing tools either bundle Electron or are stuck on legacy .NET frameworks. KeyKey uses Tauri for native performance with a modern frontend.