Files
local_machine/docs/games/UNITY_POINTER_MOUSE_FIX.md
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

3.1 KiB
Raw Blame History

HoMM Olden Era: курсор двигается, клики не работают (Whisky / Wine на macOS)

Корневая причина (не «битая мышь»)

Современный Unity (в т.ч. ветки с Unity 6 input stack) вызывает Windows API EnableMouseInPointer и дальше ждёт сообщения WM_POINTER. В типичном Wine из Whisky эта функция сейчас заглушка → в Player.log появляется строка:

EnableMouseInPointer failed with the following error: Call not implemented.

Пока это так, никакие танцы с WineBus / SDL / виртуальным desktop / оконным fullscreen не обязаны починить ЛКМ: курсор может двигаться, а нажатия и hover в UI игнорируются.

Проверка одной командой (после хотя бы одного запуска игры):

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
  3. Запускать игру из CrossOver, а не из «голого» WhiskyWine, если патч ставился в CrossOver.

Важно: патч из репозитория рассчитан на пути внутри CrossOver.app, а не на ~/Library/Application Support/com.isaacmarovitz.Whisky/Libraries/. Копирование DLL из CrossOver в Whisky вручную — высокий риск несовместимости ABI (краши Wine).

Вариант B — ждать/переезжать на Wine с upstream-фиксом

Следить за Wine Bug #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-твик».