Показывает на экране нажатия клавиш, кнопки мыши и прокрутку колесика — для стримов, демонстраций и записи туториалов. Бесплатно (MIT), лёгкое, с кириллицей из коробки.
Содержание: Возможности · Быстрый старт · Горячие клавиши · Настройки · Кастомные кейкапы · Оверлей над Пуском · Для разработчиков · Ограничения · Альтернативы · Как это устроено · Лицензия
- Комбо собираются в «Ctrl + C»: одиночный модификатор показывается сам, автоповтор не спамит, до 10 строк истории
- Кириллица: на русской раскладке виджет показывает «Ф» вместо «A»
- Мышь и колесо в том же виджете: SVG-иконка с подсветкой нажатой кнопки, корректные смешанные комбо «Ctrl + ЛКМ», «Ctrl + Колесо ↓»
- Режим кейкапов: клавиши рисуются как [Ctrl] + [Alt] + [C] — вид сверху; можно назначить любую картинку-кейкап (общую и по-клавишные) и настроить позицию текста
- Эффекты у курсора: круг / кольцо / квадрат на клик + индикатор прокрутки
- Иконка в трее: статус, пауза/показ, настройки, выход — одним кликом
- Всё настраивается на лету: панель настроек и
keypress.tomlприменяются без перезапуска
- Скачай
keypress-windows.zipиз последнего релиза. - Распакуй и запусти
keypress.exe(Windows 10/11, 64-бит). Windows может показать SmartScreen — бинарник не подписан: «Подробнее → Выполнить в любом случае». - Откроются панель настроек и оверлей — печатай и щёлкай, виджет появится внизу экрана. Тонкая настройка — в панели, применяется сразу.
Повторный запуск exe второй оверлей не создаст — просто покажет панель. В панели есть кнопки «Запустить оверлей» / «Остановить оверлей» и статус.
Архивы по платформам собирает CI после каждого изменения; Linux/macOS-сборки — заглушки (GUI работает только под Windows, см. Для разработчиков).
| Действие | Кнопка |
|---|---|
| Пауза / показ виджета | Ctrl+Alt+K или ЛКМ по иконке в трее |
| Выход (закрывает и панель, и оверлей) | Ctrl+Alt+Q или ПКМ по иконке → «Выход» |
| Открыть настройки | двойной клик по иконке в трее |
| Меню трея | ПКМ по иконке: пауза (с галочкой), настройки, выход |
Хранятся в keypress.toml, применяются на лету (перезачитываются по mtime).
Порядок выбора места файла: переменная KEYPRESS_CONFIG → папка exe
(портативно) → %APPDATA%\keypress\keypress.toml (если папка exe не доступна
на запись, например UIAccess-установка в Program Files).
| Ключ | По умолчанию | Описание |
|---|---|---|
scale |
1.0 |
общий масштаб виджета и эффектов (0.5–3.0) |
pos_x / pos_y |
0.5 / 0.92 |
позиция виджета, доли экрана (0–1) |
show_keys |
true |
показывать клавиши |
show_clicks |
true |
показывать клики |
show_scroll |
true |
показывать прокрутку |
show_cyrillic |
true |
символы кириллической раскладки |
keycap_style |
false |
режим кейкапов «вид сверху» |
mouse_icons |
true |
мышь/колесо SVG-иконкой (иначе текстом) |
mouse_body |
[0.08, 0.08, 0.10, 0.85] |
цвет корпуса мыши, RGBA 0–1 |
mouse_outline |
[1.0, 1.0, 1.0, 1.0] |
цвет контура мыши |
keycap_height |
1.0 |
высота кейкапов (0.5–2.5) |
keycap_image |
"" |
общая картинка-кейкап, путь к файлу |
keycap_images |
{} |
по-клавишные картинки: "A" = "caps/a.png" |
keycap_text_dx / keycap_text_dy |
0.0 |
сдвиг подписи на кейкапе, точки |
keycap_text_scale |
1.0 |
масштаб подписи (0.3–3.0) |
max_keys |
4 |
строк в виджете (1–10) |
tray_icon |
true |
иконка в системном трее |
key_duration |
1.2 |
время показа комбо, сек (0.5–5.0) |
key_radius |
10.0 |
скругление клавиш (0–40) |
click_shape |
"Ring" |
форма индикатора клика: Circle/Ring/Square |
key_bg |
[0.08, 0.08, 0.10, 0.85] |
фон клавиш, RGBA 0–1 |
key_text |
[1.0, 1.0, 1.0, 1.0] |
текст клавиш |
click_color |
[1.0, 0.45, 0.20, 0.90] |
цвет кликов и подсветки кнопок |
scroll_color |
[0.30, 0.70, 1.00, 0.90] |
цвет прокрутки |
Удобнее всего менять через панель настроек — она пишет тот же файл.
В панели настроек группа «Кейкапы»: путь к общей картинке-кейкапу и
по-клавишные картинки («Клавиша» = «Файл», регистр имени не важен).
Порядок разрешения для клавиши: точное имя в по-клавишных → то же без
учёта регистра → общая картинка → стандартный SVG-кейкап. Относительный
путь считается от папки с keypress.toml; картинка растягивается на
размер кейкапа (высота — слайдером «Высота кейкапа»), подпись рисуется
поверх картинки — размер и сдвиг настраиваются слайдерами «Текст на
кейкапе» (X вправо, Y вниз, в точках).
Пример блока в keypress.toml:
keycap_height = 1.2
keycap_image = "caps/base.png" # общая для всех клавиш
keycap_text_dx = 0.0
keycap_text_dy = 2.0
keycap_text_scale = 0.9
[keycap_images] # перекрывают общую
"A" = "caps/a.png"
"Пробел" = "caps/space.png"Поддерживаются PNG/JPG/GIF/BMP/ICO/SVG; замену файла на диске подхватывает без перезапуска.
Меню Пуск на Windows 11 живёт в защищённой shell-полосе z-порядка ВЫШЕ
обычных topmost-окон, поэтому обычная сборка под Пуском не видна. Процесс
с uiAccess="true" в манифесте получает собственную полосу выше полосы
оболочки (так работает osk.exe). Сборка такой версии — скрипт из папки
проекта в PowerShell от имени администратора:
.\make-uiaccess.ps1Он: собирает exe с манифестом (KEYPRESS_UIACCESS=1 cargo build --release,
вшивку манифеста делает build.rs через winresource), создаёт самодписанный
сертификат подписи кода и доверяет ему локально, подписывает exe и кладёт в
C:\Program Files\keypress\ (требование Windows: uiAccess-exe должен быть
подписан и лежать в защищённой папке — иначе не запустится вовсе).
Обычная сборка манифест не вшивает и ведёт себя как раньше.
Сборка из исходников (Windows: тулчейн MSVC + «Desktop development with C++» из Visual Studio Build Tools):
cargo run --release :: оверлей + панель настроек
cargo run --release -- --settings :: только панель настроек
cargo build --release :: один exe -> target\release\keypress.exe
cargo test :: 99 unit-тестов, Windows не нуженПодробности реализации и грабли Win32 — в ARCHITECTURE.md.
CI (.github/workflows/build.yml): каждый пуш
в main и PR проверяется тестами и собирается на трёх платформах — архивы
в артефактах запуска Actions (keypress-windows.zip, keypress-linux.tar.gz,
keypress-macos.tar.gz); пуш тега v* создаёт GitHub Release с ними.
Багрепорты и PR — welcome.
- Только основной монитор: события за его пределами не отрисовываются.
- Поверх exclusive-fullscreen игр виджет не виден (borderless / оконный — ок).
- Ввод в приложениях, запущенных от администратора, виден только если сама программа тоже запущена от администратора (UIPI).
- При выключенной настройке «Кириллица» имена клавиш всегда английские.
- Боковые кнопки мыши (X1/X2) в виджете не показываются.
- Позиция виджета задаётся процентами экрана, а не перетаскиванием мышью.
| Проект | Лицензия | Примечание |
|---|---|---|
| keypress | MIT | кириллица из коробки, кастомные кейкапы, трей, toml-конфиг |
| keyviz | GPL-3.0 | зрелый кроссплатформенный визуализатор |
| Carnac | MS-PL | классика, давно не развивается |
| KeyCastr | BSD-3-Clause | ветеран под macOS |
| Keystro | проприетарная | коммерческий (freemium), источник идеи |
Выбирай под задачу: если нужен именно лёгкий MIT-инструмент под Windows с кириллицей и без лишнего — это он.
Кратко: низкоуровневые хуки клавиатуры/мыши (ввод никогда не глотается),
прозрачное клик-тру окно на egui поверх всего, конфиг на toml с перечитыванием
на лету, иконка трея на голом Shell_NotifyIconW. Внутри было несколько
неочевидных ловушек Win32 (клик-тру без LAYERED, невидимые слоёные окна,
Пуск в защищённой полосе, премультиплицированная альфа пикера) — все разобраны
в ARCHITECTURE.md.
Идея и референсы: Keystro, keyviz, Carnac. SVG-иконки мыши — по мотивам freesvg.org. Иконка трея и кейкапы рисуются кодом.
MIT — используй, меняй и встраивай свободно.
