Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

Х без мыши, или mouse jail, или?.. подробности

#linux #x

                    
Этот вопрос гугленьем я не решил однозначно, поэтому прошу совета. Именно совета,
а не прямого решения.

Есть Хvesa без оконного менеджера, в ней висит dosbox.
Х почему-то всегда запускается с мышью, даже когда я намеренно убираю мышиные параметры
из строки запуска в .xsession . И это мешает, потому что в Xvesa по умолчанию (без
менеджера, очевидно) та забавная система фокусировки, когда регион получает фокус только
когда курсор мыши находится в нем. Стоит отвести мышь в сторону от окна - и любое управление
с клавиатуры замораживается. Можно ли заставить Xvesa использовать другой алгоритм
фокусировки без использования менеджера, я тоже не нашел в гугле. Вдобавок y мыши два
курсора: один снаружи "коробки", другой внутри. Когда один подходит к границе, то застывает
рядом с ней, а второй "оживает" и продолжает движение. Залочить курсор внутри dosbox
не получается, возможно, потому что это должен делать менеджер окон.

Вот и вопрос. Что лучше:


Использовать чей-то самописный скрипт или бинарник, реализующий принцип mouse jail,
ограничивающий движение мыши в заданном регионе.
Использовать более "официальный" xdotool.
Запустить Xvesa без мыши, чтобы она инициализировалась только в dosbox. Если да, то как?


Второму варианту я не доверяю, т.к. в голове почему-то отложилось, что xdotool делает
вещи неоптимально и может давать слишком большую нагрузку для маленькой задачи. Не
то, чтобы у меня может чего-то не хватить, но я потому и пытаюсь все сделать так, как
делаю, чтобы ради собственного удовольствия обойтись наименьшими ресурсами. Сейчас
система жрет 40 Мб ОЗУ, куда уж больше. xdotool, скорее, будет процессор нагружать,
но это тоже нежелательно.
Первому варианту по этим же причинам стоит не доверять еще больше, т.к. мало ли кто
там как это писал. Может, там вообще утечка памяти будет. :)
Ну а с третьим попросту не понятно, так как его-то я уже пробовал: удалил параметры
-2button -mouse из аргументов Xvesa. А он все равно запускается с мышью.
    


Ответы

Ответ 1



справедливо для «полноценного» xserver-а. как будет себя вести xvesa — не знаю. проще всего проверить. 1. мышь можно «обездвижить» (и отключить кнопки), например, с помощью xinput. показываю на примере. список устройств-pointer-ов (тут не мышь, а trackpad, что несущественно): $ xinput --list | grep pointer | Virtual core pointer id=2 [master pointer (3)] | ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] | ↳ Cypress APA Trackpad (cyapa) id=12 [slave pointer (2)] id у нужного устройства — 12 (но надёжнее обращаться по имени Cypress APA Trackpad (cyapa): id может меняться). отключаем и включаем, по номеру и по имени: $ xinput --disable 12 $ xinput --enable 'Cypress APA Trackpad (cyapa)' 2. а курсор мыши можно скрыть, например, с помощью xsetroot.

Ответ 2



dosbox не сможет использовать мышь, если вы ее отключите совсем в Хvesa. Просто потому что dosbox не напрямую работает с мышью, а получает "мышиные" события от X сервера. Не обманывайтесь тем, что там якобы есть вторая мышь - это лишь второй рисунок той же самой мыши. Так что ваш третий вариант отпадает. Я правильно понимаю, что у вас кроме dosbox ничего оконного не запущено? Почему бы тогда не использовать полноэкранный режим dosbox?

Комментариев нет:

Отправить комментарий