# HoMM Olden Era: курсор двигается, клики не работают (Whisky / Wine на macOS) ## Корневая причина (не «битая мышь») Современный Unity (в т.ч. ветки с Unity 6 input stack) вызывает Windows API **`EnableMouseInPointer`** и дальше ждёт сообщения **`WM_POINTER`**. В типичном Wine из Whisky эта функция сейчас **заглушка** → в `Player.log` появляется строка: ```text EnableMouseInPointer failed with the following error: Call not implemented. ``` Пока это так, **никакие** танцы с `WineBus` / SDL / виртуальным desktop / оконным fullscreen **не обязаны** починить ЛКМ: курсор может двигаться, а нажатия и hover в UI игнорируются. Проверка одной командой (после хотя бы одного запуска игры): ```bash bash ~/code/local_machine/scripts/games/diagnose-homm-mouse.sh ``` --- ## Что реально работает сегодня ### Вариант A — CrossOver (рекомендуется для Unity с этим симптомом) 1. Установить **CrossOver** для macOS (CodeWeavers). 2. При необходимости применить готовый патч слоя Wine под `EnableMouseInPointer` (см. репозиторий с инструкцией и бинарниками под конкретную версию CrossOver): [dabielf/crossover-unity-mouse-fix](https://github.com/dabielf/crossover-unity-mouse-fix) 3. Запускать игру **из CrossOver**, а не из «голого» WhiskyWine, если патч ставился в CrossOver. Важно: патч из репозитория рассчитан на **пути внутри `CrossOver.app`**, а не на `~/Library/Application Support/com.isaacmarovitz.Whisky/Libraries/`. Копирование DLL из CrossOver в Whisky **вручную** — высокий риск несовместимости ABI (краши Wine). ### Вариант B — ждать/переезжать на Wine с upstream-фиксом Следить за [Wine Bug #53847](https://bugs.winehq.org/show_bug.cgi?id=53847) и обновлениями **WhiskyWine**, когда туда попадёт полноценная реализация (или использовать сборку Wine, где она уже есть), и только потом снова тестировать в Whisky. --- ## Связь с нашими скриптами - `start.sh input` / `fix-homm-wine-input.sh` — про **HID/SDL и геймпады**, не про `EnableMouseInPointer`. - `start.sh game` + DXVK-macOS — про **графику (D3D11)**, не про pointer stack Unity. --- ## Быстрый чеклист 1. `bash ~/code/local_machine/scripts/games/diagnose-homm-mouse.sh` 2. Если exit code **2** и есть строка про `EnableMouseInPointer` → идём в CrossOver/другой Wine, а не в «ещё один SDL-твик».