Select language / Выберите язык: 🌐 English | 🇷🇺 Русский
A high-performance, full-screen ASCII keyboard visualizer written in pure Go for Linux terminals.
Unlike other visualizers, nvrkey has zero external dependencies, features an unbuffered lightning-fast TUI render engine, and automatically detects your input devices without any hardcoded paths.
- Full-Screen Responsive Layout: Automatically calculates your terminal window geometry and stretches keys perfectly to fill 100% of the width.
- Dynamic Resize Support: Listens to window change events (
SIGWINCH) and snaps boundaries instantly when you tile or scale your window. - Zero Input Lag: Utilizes
bytes.Bufferand custom flush techniques to display simultaneous multi-key presses synchronously. - Isolated TUI Window: Runs in an alternative screen buffer, keeping your Bash history pristine and completely preventing character leaks.
- Custom Color Themes: Personalize your backlight on the fly.
You can customize the key backlight by passing the -color flag:
| Preview Code | Theme Color |
|---|---|
nvrkey -color=blue |
🟦 Vibrant Blue |
nvrkey -color=purple |
🟪 Royal Purple |
nvrkey -color=cyan |
🟩 Electric Cyan |
nvrkey -color=red |
🟥 Deep Red |
nvrkey -color=yellow |
🟨 Bright Yellow |
nvrkey (default) |
🟩 Classic Matrix Green |
Make sure you have Go installed on your system:
# Arch Linux / EndeavourOS
sudo pacman -S go
# Ubuntu / Debian
sudo apt update && sudo apt install golang-go
# Fedora
sudo dnf install golanggit clone https://github.com/neverloseagain1/nvrkey
cd nvrkey
go get golang.org/x/sys/unix
go build -o visualizer main.goTo run nvrkey from anywhere in your system without typing sudo every time, move it to /usr/local/bin and grant persistent evdev access permissions:
sudo cp ./visualizer /usr/local/bin/nvrkey
sudo setcap cap_dac_read_search=ep /usr/local/bin/nvrkeyNow you can launch it from any directory using:
nvrkey -color=bluePress Ctrl+C inside the app to safely exit and instantly restore your terminal state.
- Parallel Device Probing: On startup, the program spawns concurrent background threads (goroutines) to scan input descriptors from
/dev/input/event0to31. - Native Linux Evdev Interface: It safely opens existing streams and hooks into
EV_KEY(Type 1) event patterns. - Low-Level Raw Mode: Bypasses default Bash echo-mechanisms via low-level
ioctltermios calls, rendering input capture fully multi-byte and Cyrillic-proof.
This project is open-source and free to use.