# 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-твик».
