Вопрос или проблема
Некоторые 3D-игры очень трудно заставить нормально работать с захватом мыши.
Иногда даже при установленном флажке force grab в winecfg на полном экране и ключе regedit MouseWarpOverride, установленном на force, это может все равно не работать должным образом.
Так что можно сделать, чтобы действительно заставить курсор мыши быть захваченным или повторно захваченным?
Сначала вам нужно принудительно освободить мышь с помощью:
setxkbmap -option grab:break_actions;xdotool key XF86Ungrab
Я привязал это с помощью xbindkeys (но прочитайте это о безопасности https://unix.stackexchange.com/a/62255/235896)
Теперь щелкните на заголовке окна игры, и это должно правильно заставить повторно захватить.
Если это не сработает, попробуйте переключить приложение между полноэкранным и оконным режимом, а затем снова освободить захват и щелкнуть на заголовке. Заголовок может быть как Linux, так и Windows (в случае, если вы эмулируете рабочий стол Windows), попробуйте оба варианта.
Я пока не смог определить правильные шаги, которые всегда срабатывают с первого раза, когда я их найду, я снова отредактирую здесь.
Это (может потребовать нескольких попыток), но работает на Ubuntu 18.04 с Wine 5.8 по крайней мере.
Ответ или решение
Как заставить Wine правильно захватывать/перезахватывать мышь
Вопрос захвата мыши в Wine, особенно при использовании 3D-игр, является распространенной проблемой. Даже если вы настроили параметры в winecfg и изменили реестр для захвата мыши, проблема может оставаться нерешённой. В этой статье мы рассмотрим несколько шагов и рекомендаций, которые помогут вам заставить Wine эффективно управлять захватом мыши.
1. Сброс захвата мыши
Первый шаг — принудительно сбросить текущий захват мыши. Это можно сделать с помощью следующих команд:
setxkbmap -option grab:break_actions; xdotool key XF86Ungrab
Эти команды разрывают текущий захват мыши и позволяют вам повторно захватить её, когда это необходимо. Можно автоматизировать этот процесс с помощью xbindkeys
, однако перед этим рекомендую ознакомиться с информацией о безопасности, чтобы избежать потенциальных рисков.
2. Переключение режимов
Попробуйте переключить приложение между полноэкранным и оконным режимами. Это иногда помогает стабилизировать захват мыши. Для этого вам нужно:
- Запустить игру и активировать её.
- Использовать сочетания клавиш (часто
Alt + Enter
) для переключения между полноэкранным и оконным режимами. - После переключения снова выполните команду сброса захвата мыши и щёлкните на заголовок окна игры.
3. Выбор правильного заголовка окна
Обратите внимание, что при захвате мыши вы можете щёлкнуть на заголовке как «линуксового», так и «виндового» окна, если вы эмулируете Windows-десктоп. Пробуйте оба варианта, пока не сработает один из них.
4. Тестирование с различными версиями Wine
Помните, что разные версии Wine могут проявлять различные характеристики в работе с захватом мыши. Рекомендуется тестировать ваши игры с разными версиями Wine, начиная с наиболее стабильных и заканчивая последними сборками, которые могут предложить свежие исправления.
5. Дополнительные настройки Wine
Некоторые дополнительные параметры могут также помочь:
- Откройте настройку конфигурации Wine (
winecfg
). - В разделе «Графика» убедитесь, что опция «Работать в полноэкранном режиме» включена.
- Попробуйте изменить режимы эмуляции для вашей игры, если это применимо.
Заключение
Проблемы с захватом мыши в Wine могут быть достаточно сложными для решения. Иногда потребуется несколько попыток, чтобы найти оптимальный способ, подходящий именно для вашей игры и системы. Ситуация может варьироваться в зависимости от версии Wine и конфигурации вашего железа. Надеюсь, эти рекомендации помогут вам добиться желаемого результата и провести приятный игровой сеанс. Если у вас есть свои советы или опыт, делитесь ими в комментариях!