Overview
Showkeys solves a common problem in terminal screencasts: viewers can’t see what keys you’re pressing. Without visual feedback, audiences miss important keyboard shortcuts and get confused about how you’re navigating. The showkeys overlay captures and displays:- Individual keystrokes
- Modifier combinations (Ctrl, Shift, Alt, Cmd)
- Action names (when a key triggers a TUIOS action)
- Key repeat counts
- Timing information
Enabling Showkeys
At Startup
Enable showkeys when launching TUIOS:Toggle During Runtime
While TUIOS is running, toggle showkeys:Throughout this guide,
Ctrl+B refers to the default leader key. This is configurable via the leader_key option in your config file.--show-keys flag.
In Web Terminal
Pass the flag to tuios-web:What Gets Displayed
Basic Keys
Single keystrokes appear with their character:Modifier Combinations
Modifier keys combine with the base key:Action Names
When a key triggers a TUIOS action, the action name appears:Key Repeats
Holding a key shows a repeat count:Special Keys
Common special keys display with readable names:Display Format
Overlay Position
The showkeys overlay appears at the bottom-center of the screen, above the status bar but below any windows.Ring Buffer
TUIOS shows the last 5 keystrokes by default. Older keys slide out as new ones arrive:Visual Styling
Keys appear in rounded boxes with theming that matches your current TUIOS theme:Transparency
The overlay uses semi-transparent backgrounds to avoid completely obscuring terminal content underneath.Use Cases
Screencasting and Tutorials
Perfect for creating terminal tutorials where viewers need to see exactly what you’re typing:Live Presentations
During conference talks or live coding sessions, showkeys lets audience members see your shortcuts:Teaching and Onboarding
When teaching new developers how to use TUIOS or terminal workflows:Recording Demos for Documentation
Capture animated demos for README files or documentation:Debugging Keybinding Issues
When troubleshooting keybinding conflicts or testing custom configurations:Examples
Example 1: Recording a Tutorial
Example 2: Live Presentation Setup
Example 3: Teaching Workflow
Example 4: Debugging Custom Keybindings
Configuration
History Size
The default ring buffer shows 5 keys. This is currently hardcoded in the OS struct (KeyHistoryMaxSize).
Future versions may expose this as a configuration option.
Disable Specific Keys
There’s no filter to hide specific keys (e.g., passwords). If you’re typing sensitive information, toggle showkeys off temporarily:Theme Integration
Showkeys automatically adapts to your current theme. The overlay colors derive from your terminal’s ANSI palette:Technical Details
Key Capture
Showkeys hooks into the input handling pipeline atinternal/input/keyboard.go. Every key event passes through the showkeys recorder before normal processing.
Data Structure
Recent keys are stored in a ring buffer:Performance Impact
Showkeys has minimal overhead:- Memory: ~1KB for key history
- CPU: < 0.1% additional processing per keystroke
- Rendering: No performance impact (overlay is lightweight)
Troubleshooting
Overlay Not Appearing
Check if enabled:Keys Not Showing
Modifier key issues:Some terminals don’t send all modifier combinations. For example,
Ctrl+Shift+letter might arrive as just Ctrl+letter.
Solution: Use a terminal with proper keyboard protocol support (kitty, wezterm, alacritty).
Key captured but no action name:Not all keys map to TUIOS actions. Only keybindings configured in your config file show action names.
Overlay Position Issues
Terminal size too small:Showkeys needs at least 3 rows of vertical space. On very small terminals (< 20 rows), the overlay might be cut off. Solution: Resize your terminal to at least 24 rows. Overlapping with content:
The overlay intentionally uses transparency. If it’s hard to read over busy terminal output, toggle it off temporarily or use a theme with higher contrast.
Performance Issues
If you experience slowdown with showkeys enabled: Check debug logging:With 10+ windows, rendering overhead increases. Showkeys is rarely the issue, but combined overhead can accumulate.
See Also
- Keybindings Reference - See what actions your keys trigger
- Configuration Guide - Customize keybindings to change action names
- Tape Recording - Record demos with visible keystrokes
- CLI Reference - Command-line flag reference