Skip to content

Latest commit

 

History

History
199 lines (137 loc) · 11.4 KB

File metadata and controls

199 lines (137 loc) · 11.4 KB

KnobMixer

Build Windows exe License: MIT Python Platform

KnobMixer logo

KnobMixer — небольшое Windows-приложение, которое перенаправляет клавиши громкости, Fn-комбинации, медиакнопки и USB-регуляторы на выбранное приложение, а не на общую громкость Windows.

Приложение не привязано к конкретной клавиатуре, бренду или модели. KnobMixer рассчитан на любые клавиатуры, ноутбуки, макропады, мультимедийные панели и USB-регуляторы, которые отправляют стандартные события громкости Windows или HID Consumer Control.

English README

Текущая версия

0.1.1

В этой версии упор сделан на стабильную кнопку Play / Pause, меньше шума от уведомлений, автообновление из приложения и новый читаемый логотип.

Что делает приложение

Обычно Volume Up, Volume Down и Mute меняют общую громкость Windows. KnobMixer перехватывает эти события и применяет их к выбранному аудиопроцессу:

Выбрано: Spotify.exe

Volume Up          -> увеличить только Spotify
Volume Down        -> уменьшить только Spotify
Mute / кнопка регулятора -> Play / Pause по умолчанию

Громкость отдельных приложений меняется через Windows Core Audio API, pycaw и comtypes. Если у процесса несколько аудиосессий, KnobMixer управляет всеми подходящими сессиями сразу.

Совместимость с клавиатурами и регуляторами

KnobMixer не создавался под одну конкретную клавиатуру. Он работает не с названием устройства, а с тем, какие события устройство отправляет в Windows.

Подходят устройства, которые используют стандартные команды громкости:

Volume Up
Volume Down
Mute
Play / Pause
HID Consumer Control

Это могут быть:

  • обычные клавиатуры с клавишами громкости;
  • ноутбуки с Fn-комбинациями громкости;
  • механические клавиатуры с ручкой громкости;
  • мультимедийные клавиатуры;
  • макропады;
  • USB-регуляторы громкости;
  • HID Consumer Control устройства.

Если устройство в Windows работает как обычные кнопки громкости, KnobMixer с большой вероятностью сможет его перехватить.

Возможности

  • Показывает активные аудиосессии Windows.
  • Управляет Spotify, Discord, браузерами, играми и другими приложениями со звуком.
  • Поддерживает VK_VOLUME_UP, VK_VOLUME_DOWN и VK_VOLUME_MUTE.
  • Поддерживает стандартные события громкости Windows.
  • Поддерживает Raw Input / HID Consumer Control для совместимых мультимедийных клавиатур, макропадов и USB-регуляторов.
  • Работает с разными клавиатурами и контроллерами без привязки к конкретной модели.
  • Держит перехват громкости включённым всё время, пока приложение запущено.
  • Позволяет выбрать действие кнопки регулятора: Play / Pause, mute выбранного приложения или игнор.
  • Поддерживает режим выбранного приложения, активного приложения со звуком и приоритета приложений.
  • Показывает текущий процент громкости в иконке трея и tooltip.
  • При закрытии окна уходит в трей; полностью закрывается только через пункт Выход.
  • Использует внутренние уведомления внутри окна, а не Windows-уведомления.
  • По умолчанию уведомления выключены, чтобы не было спама и лагов.
  • Проверяет обновления через GitHub Releases и умеет скачать/установить новую сборку из приложения.
  • Имеет тёмный адаптивный интерфейс на PyQt6.
  • Поддерживает русский и английский язык; язык автоматически выбирается по языку Windows, если не задан вручную.

Требования

  • Windows 10 или Windows 11.
  • Python 3.11 или 3.12 для запуска из исходников.
  • Клавиатура, ноутбук, макропад или USB-регулятор, который отправляет стандартные события громкости Windows или HID Consumer Control.
  • Запуск от администратора может понадобиться, если целевое приложение запущено с повышенными правами или Windows блокирует ввод устройства.

Запуск из исходников

git clone https://github.com/vtaeely/KnobMixer.git
cd KnobMixer
py -3.12 -m venv venv
venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python main.py

Python 3.11 тоже подходит:

py -3.11 -m venv venv

Сборка EXE

build.bat

Готовый файл появится здесь:

dist\KnobMixer.exe

PyInstaller собирает приложение в оконном режиме, поэтому при обычном запуске не должно открываться окно консоли. Обновлятор тоже использует тихий helper для перезапуска без видимого cmd.

Обновления

KnobMixer проверяет последний релиз здесь:

https://github.com/vtaeely/KnobMixer/releases

Чтобы обновление в один клик работало, прикрепи к GitHub Release Windows-сборку. Рекомендуемые имена ассетов:

KnobMixer-windows-x64.zip
KnobMixer.exe

Если используется .zip, внутри должен лежать KnobMixer.exe.

Режимы перехвата

  • Auto: запускает keyboard hook и Raw Input listener, где это возможно.
  • Keyboard Hook: ловит обычные события клавиш громкости Windows и чаще всего может подавить изменение master volume.
  • Raw Input / HID: слушает HID Consumer Control устройства, которые могут не приходить как обычные клавиши.

KnobMixer не зависит от конкретной модели клавиатуры. Главное, чтобы устройство отправляло в Windows стандартные события громкости или HID Consumer Control команды.

Windows иногда успевает обработать HID-событие громкости раньше пользовательского приложения. Тогда KnobMixer всё равно может менять громкость выбранного приложения, но master volume Windows тоже может сдвинуться.

Настройки и логи

Настройки хранятся в JSON.

Запуск из исходников:

settings.json
logs\app.log

Собранный .exe:

%APPDATA%\KnobMixer\settings.json
%APPDATA%\KnobMixer\logs\app.log

Автозапуск записывается в реестр текущего пользователя:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

Если что-то не работает

Если громкость выбранного приложения меняется, но общая громкость Windows тоже двигается:

  1. Попробуй режим Keyboard Hook.
  2. Перезапусти KnobMixer от имени администратора.
  3. Попробуй режим Raw Input / HID.
  4. Если у устройства есть фирменная программа, переназначь ручку или медиакнопки на обычные клавиши громкости Windows.

Если приложение не реагирует на клавиатуру или регулятор:

  1. Проверь, меняет ли это устройство обычную громкость Windows без KnobMixer.
  2. Проверь, отправляет ли устройство стандартные события Volume Up, Volume Down или Mute.
  3. Попробуй другой режим перехвата.
  4. Если устройство работает только через фирменный софт и не отправляет стандартные события Windows, KnobMixer может его не увидеть напрямую.

Если приложения нет в списке, включи в нём звук и обнови список. Windows показывает только процессы, у которых есть активная аудиосессия.

Важно

Некоторые антивирусы могут ругаться на .exe, собранный через PyInstaller, потому что приложение использует keyboard hook и Raw Input. Исходный код открыт, поэтому сборку можно проверить или пересобрать вручную.

KnobMixer не является драйвером устройства и не прошивает клавиатуру. Он работает поверх стандартных событий Windows, поэтому совместимость зависит не от бренда клавиатуры, а от того, какие команды устройство отправляет в систему.

Лицензия

MIT License. Смотри LICENSE.