# Карта кодов клавиатуры — Xiaomi Book Pro 14 (TM2424) Снято `map-keys.ps1` / `find-mibutton.ps1`, нажимая по одной клавише. Событие: `EventDetail[1]`=code, `[2]`=value. **Все клавиши оживлены** (v0.3–v0.5.3). | code | value | Клавиша | Было в системе | Что делает XiControl | |------|-------|---------|----------------|----------------------| | `0x21` | `0`=лампа горит (mute), `1`=лампа выкл | **Микрофон** (аппаратный тумблер с лампой) | ❌ ничего | ✅ системный mute (Core Audio) + OSD | | `0x01` | `0` (обычное нажатие) | **Проекция экрана** | ❌ ничего | ✅ настраиваемое действие (`ProjKeyAction`, дефолт `"projection"` — запускает `DisplaySwitch.exe`, Win+P только фолбэк). `value=2` = «слабый зарядник» из карты MIControl — на TM2424 **не приходит**; определение слабого/не-PD блока сделано иначе — через ADPW (MIFS `0x10/06`), см. [09](09-power-monitoring.md) | | `0x1B` | `0` | **Настройки** | ❌ ничего | ✅ настраиваемое действие (`SettingsKeyAction`, дефолт «порог ↔ 100%» + OSD; при открытой панели — всегда заряд). Одиночное событие — удержание не ловится | | `0x05` | `0`/`5`/`10`/`0x80` | **Подсветка клавиатуры** (off/50%/100%/Auto) | ✅ работает (EC) | ✅ OSD с уровнем, 4 тематические иконки | | `0x23`+`0x24` | `1` (пара нажатие/отпускание) | **Нейропомощник (AI)** | ❌ ничего | ✅ настраиваемое действие (`AiKeyAction`, дефолт Copilot Win+C) | | `0x25`+`0x26` | `1` (пара) | **Mi-кнопка** (2 тумблера) | ❌ ничего | ✅ клик/двойной — настраиваемые действия (`MiClickAction`/`MiDoubleAction`, дефолт цикл режимов / «порог ↔ 100%»), удержание = панель (всегда) | | `0x07` | `0`/`1` = новое состояние | **Fn-Lock** (Fn+Esc) | ✅ EC переключает сам, без индикации | ✅ OSD с замком. `1` = классические F1–F12 (мультимедиа выкл), `0` = мультимедийный ряд | ## Действия, которые можно назначить на слот Настройки → Клавиши. Значения — как в `config.json` (поля `*Action`); список в коде — `KeysTab.KeyActionValues`, обработка — `KeyRouter`: | Значение | Действие | |----------|----------| | `modes` | Цикл режимов производительности | | `charge` | Порог «беречь батарею» ↔ 100% | | `panel` | Быстрая панель | | `owl` | «Режим совы» (не спать) | | `monitor` | Окно «Монитор» | | `travel` | «В дорогу» (разовый заряд до 100%) | | `touchpad` | Тачпад вкл/выкл | | `touchscreen` | Сенсорный экран вкл/выкл | | `projection` | Проекция (`DisplaySwitch.exe`, фолбэк Win+P) | | `settings` | Параметры Windows | | `copilot` | Copilot (Win+C) | | `play` | Воспроизведение / пауза (`VK_MEDIA_PLAY_PAUSE`) | | `next` | Следующий трек (`VK_MEDIA_NEXT_TRACK`) | | `prev` | Предыдущий трек (`VK_MEDIA_PREV_TRACK`) | | `stop` | Остановить воспроизведение (`VK_MEDIA_STOP`) | | `calc` | Калькулятор (`VK_LAUNCH_APP2`) | | `launch` | Запустить свою программу (путь/URL в парном поле `*Command`) | | `none` | Ничего (слот отключён) | Слоты: `MiClickAction`, `MiDoubleAction`, `MiHoldAction`, `SettingsKeyAction`, `AiKeyAction`, `ProjKeyAction`. Все три жеста Mi-кнопки настраиваются одинаково; у слотов удержания и двойного клика значение `none` **гасит сам жест**: двойной — одиночный клик срабатывает мгновенно, без окна ожидания; удержание — порог не взводится вовсе, и долгое нажатие отрабатывает обычным кликом (иначе оно «съело» бы и себя, и клик). Мультимедиа и калькулятор — обычные виртуальные клавиши через `keybd_event`: их получает шелл, а не конкретное окно, поэтому работают с любым плеером (владельцем медиа-сессии Windows). Калькулятор намеренно не через `Process.Start`: в Win11 это UWP-приложение, а мы запущены elevated — запуск UWP из-под админа ненадёжен, тогда как VK уходит в шелл и открывает его от имени пользователя. ## Заметки - **Микрофон инвертирован** относительно карты MIControl: лампа горит (замьючено) → `0`, лампа не горит → `1`. - **Подсветка** работает на уровне EC; событие даёт уровень. Цикл значений: `0`(выкл) → `5` → `10`(`0x0A`) → `0x80`(Авто) → `0`. - **Яркость экрана** — событий НЕ шлёт, Windows обрабатывает сама. Не трогаем. - **Fn** отдельного кода не имеет → комбинации с Fn неразличимы (поэтому у Mi — жесты по времени). - Клавиш скриншота/тачпада/частоты экрана из карты MIControl на этой клавиатуре нет, камера/приватность (`0xA0`) — событие не наблюдалось.