#!/usr/bin/env bash # Курсор JA3 в CrossOver (Retina / HiDPI). # Профили (JA3_MOUSE_PROFILE): # legacy — RetinaMode=n (полный ход по Y; возможен сдвиг клика) — default # retina-lite — RetinaMode=y без LogPixels (если legacy смещает, но нет клипа) # retina — RetinaMode=y + LogPixels=192 (клип на середине экрана — не default) set -euo pipefail GOG_DIR="$(cd "$(dirname "$0")" && pwd)" CX="/Applications/CrossOver.app/Contents/SharedSupport/CrossOver" CX_BOTTLE="JA3-GOG" CX_DIR="${HOME}/Library/Application Support/CrossOver/Bottles/${CX_BOTTLE}" [[ -d "${CX}" ]] || { echo "❌ CrossOver не установлен" exit 1 } PROFILE="${JA3_MOUSE_PROFILE:-legacy}" WREG() { "${CX}/bin/wine" --bottle "${CX_BOTTLE}" "$@"; } case "${PROFILE}" in retina) RETINA="y" SET_DPI=1 DPI="${JA3_LOG_PIXELS:-192}" SET_WIN8=1 ;; retina-lite) RETINA="y" SET_DPI=0 SET_WIN8=0 ;; legacy|*) RETINA="n" SET_DPI=0 SET_WIN8=0 PROFILE="legacy" ;; esac WREG reg add 'HKCU\Software\Wine\Mac Driver' /v RetinaMode /t REG_SZ /d "${RETINA}" /f >/dev/null if [[ "${SET_DPI}" == "1" ]]; then WREG reg add 'HKCU\Control Panel\Desktop' /v LogPixels /t REG_DWORD /d "${DPI}" /f >/dev/null else WREG reg delete 'HKCU\Control Panel\Desktop' /v LogPixels /f >/dev/null 2>&1 || true fi if [[ "${SET_WIN8}" == "1" ]]; then WREG reg add 'HKCU\Control Panel\Desktop' /v Win8DpiScaling /t REG_DWORD /d 1 /f >/dev/null else WREG reg delete 'HKCU\Control Panel\Desktop' /v Win8DpiScaling /f >/dev/null 2>&1 || true fi CONF="${CX_DIR}/cxbottle.conf" if [[ -f "${CONF}" ]] && ! grep -q 'SDL_VIDEO_MAC_FULLSCREEN_SPACES' "${CONF}"; then sed -i '' '/^\[EnvironmentVariables\]/a\ "SDL_VIDEO_MAC_FULLSCREEN_SPACES" = "0" ' "${CONF}" 2>/dev/null || true fi echo "OK: profile=${PROFILE} RetinaMode=${RETINA} → ${CX_BOTTLE}" echo " Перезапуск: bash ${GOG_DIR}/reset-ja3-crossover.sh && bash ${GOG_DIR}/run-ja3-crossover.sh" case "${PROFILE}" in legacy) echo " Если клик смещён: JA3_MOUSE_PROFILE=retina-lite bash ${GOG_DIR}/fix-ja3-crossover-mouse.sh" echo " Без перезапуска: верхний левый угол окна = угол экрана." ;; retina-lite) echo " Если смещение осталось: JA3_MOUSE_PROFILE=legacy …" echo " Если клип на середине: JA3_MOUSE_PROFILE=legacy …" ;; retina) echo " ⚠️ retina+LogPixels=192 часто режет курсор на середине экрана." echo " Если так: JA3_MOUSE_PROFILE=legacy bash ${GOG_DIR}/fix-ja3-crossover-mouse.sh" ;; esac