Skip to content

feat(keys): мультимедиа, калькулятор и настраиваемое удержание Mi (XIC-27, XIC-28) - #25

Merged
Oksion merged 1 commit into
mainfrom
feat/keys-media-and-hold
Aug 3, 2026
Merged

feat(keys): мультимедиа, калькулятор и настраиваемое удержание Mi (XIC-27, XIC-28)#25
Oksion merged 1 commit into
mainfrom
feat/keys-media-and-hold

Conversation

@Oksion

@Oksion Oksion commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Две связанные задачи из вехи v0.11.0 одним заходом — они правят одни и те же файлы (KeysTab, TrayApp, все три перевода).

XIC-27 — медиа-клавиши и калькулятор

Пять новых действий, доступных любому слоту (Mi-кнопка, AI, «Настройки», «Проекция»):

Действие VK
Воспроизведение / пауза VK_MEDIA_PLAY_PAUSE 0xB3
Следующий трек VK_MEDIA_NEXT_TRACK 0xB0
Предыдущий трек VK_MEDIA_PREV_TRACK 0xB1
Стоп VK_MEDIA_STOP 0xB2
Калькулятор VK_LAUNCH_APP2 0xB7

Громкость намеренно не добавлена — для неё на клавиатуре есть отдельные физические кнопки.

Калькулятор — через VK, а не Process.Start. В Win11 это UWP-приложение, а мы запущены с requireAdministrator; запуск UWP из-под админа ненадёжен. VK уходит в шелл, и калькулятор открывается от имени пользователя — как и должен.

XIC-28 — настраиваемое удержание Mi-кнопки

Удержание было единственным жестом, зашитым в код (Hold = () => _panel.Toggle()). Теперь это обычный слот MiHoldAction/MiHoldCommand с тем же списком действий, что клик и двойной клик.

Обратная совместимость бесплатная: panel — уже валидное действие роутера с тем же исполнителем, поэтому миграция null → "panel" даёт существующим конфигам прежнее поведение байт в байт.

Отдельно — HoldEnabled по образцу существующего DoubleEnabled: при "none" порог удержания не взводится вовсе. Без этого долгое нажатие «съело» бы и себя, и клик — при срабатывании порога ставится _handled, и Up перестаёт считаться кликом, то есть кнопка выглядела бы сломанной.

Проверка

  • dotnet build — 0 ошибок / 0 предупреждений
  • dotnet test257 зелёных (было 249): маршрутизация пяти действий, выключенный жест удержания уходит в клик, миграция удержания (дефолт и явное значение)
  • Вживую на TM2424: медиа-клавиши доходят из elevated-процесса, калькулятор открывается, переназначение жестов работает

Документация

В том же коммите: docs/07-keymap.md (таблица действий 13 → 18, описано поведение none для обоих жестов), CHANGELOG.md, оба README.

…C-27, XIC-28)

Пять новых действий для любого слота клавиш: воспроизведение/пауза, следующий и
предыдущий трек, остановка (медиа-VK) и калькулятор. Громкость намеренно не берём —
для неё есть отдельные физические кнопки.

Калькулятор — через VK_LAUNCH_APP2, а не Process.Start: в Win11 это UWP, а мы
запущены elevated, и запуск UWP из-под админа ненадёжен; VK уходит в шелл и
открывает калькулятор от имени пользователя.

Удержание Mi-кнопки перестало быть зашитым на панель и стало обычным слотом
(MiHoldAction/MiHoldCommand). Обратная совместимость бесплатная: "panel" — уже
валидное действие роутера с тем же исполнителем, поэтому миграция null -> "panel"
даёт старым конфигам прежнее поведение байт в байт.

Отдельно — HoldEnabled по образцу DoubleEnabled: при "none" порог удержания не
взводится вовсе. Иначе долгое нажатие «съело» бы и себя, и клик (ставится _handled,
и Up перестаёт считаться кликом) — кнопка выглядела бы сломанной.

Тесты 249 -> 257: маршрутизация пяти новых действий, выключенный жест удержания
уходит в клик, миграция удержания (дефолт и явное значение).

Проверено вживую на TM2424: медиа-клавиши доходят из elevated-процесса, калькулятор
открывается, переназначение жестов работает.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Oksion
Oksion merged commit 3cb3fb1 into main Aug 3, 2026
5 checks passed
@Oksion
Oksion deleted the feat/keys-media-and-hold branch August 3, 2026 07:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant