Найти владельца захвата указателя X.org

17

У меня есть приложение, которое, кажется, захватило мышь (я могу переместить ее, но нигде не могу щелкнуть), есть ли способ узнать, какому приложению принадлежит захват мыши X.org?

Ярлык, приведенный здесь, чтобы отпустить мышь, похоже, не сработал, поэтому мне интересно кое-что, что может дать мне больше информации.

Tobu
источник
Вы уверены, что это проблема? Это было бы несколько странно для приложения, которое вы не используете для этого (в противном случае я бы прекратил использовать это приложение), поэтому есть вероятность - если это действительно причина - это то, что вы только что использовали.
Златовласка
Я нашел это методом проб и ошибок, убив несколько вещей, пока что-то (приложение для вина) не выпустило захват.
Тобу
1
Связанный: unix.stackexchange.com/questions/23164/… , unix.stackexchange.com/questions/40458/…
Механическая улитка

Ответы:

16

Вы можете сделать это, нажав XF86LogGrabInfoклавишу, введенную в этом коммите .

По умолчанию этот ключ не привязан ни к какому физическому ключу или комбинации клавиш. Но вы все равно можете активировать его, используя xdotool:

xdotool key "XF86LogGrabInfo"

После выполнения этой команды список активных захватов будет записан в журнал X. На Ubuntu по крайней мере это /var/log/Xorg.0.log. Это будет где-то ближе к концу файла журнала, но под ним может быть несколько не относящихся к делу сообщений журнала. Если нет захватов, он пишет:

[1199271.146] (II) Printing all currently active device grabs:
[1199271.146] (II) End list of active device grabs

Если есть захваты (здесь я открыл меню в Firefox), он регистрирует что-то вроде:

[1199428.782] (II) Printing all currently active device grabs:
[1199428.782] Active grab 0x4c00000 (core) on device 'Virtual core pointer' (2):
[1199428.782]       client pid 15620 /usr/lib/firefox/firefox 
[1199428.782]       at 1199423728 (from active grab) (device thawed, state 1)
[1199428.782]         core event mask 0x7c
[1199428.782]       owner-events true, kb 1 ptr 1, confine 0, cursor 0x0
[1199428.782] (II) End list of active device grabs
Механическая улитка
источник
2

У меня только что была похожая проблема, и я сузил ее до ошибки, которая каким-то образом заставляет X11 думать, что средняя кнопка нажата и не отпущена. Физическое отключение мыши не помогает, пока не произойдет событие mouseup.

Проблема может быть воспроизведена с помощью xdotool mousedown 2- невозможно переключить фокус между окнами,

xdotool key XF86LogGrabInfo показывает текущее сфокусированное окно процесса, но когда один убивает его, другое окно получает фокус, и тот же сценарий продолжается.

Обходной путь: проблема xdotool mouseup 2.

Обновление: средняя кнопка, нажимаемая и не отпускаемая, является просто наименее заметной, потому что большинство приложений не реагируют на нее, и у некоторых мышей нет этой кнопки, чтобы попытаться нажать и посмотреть, исчезнет ли проблема.

ArticIceJuice
источник
0

Записи в журнале Xorg могут быть довольно непонятными. Я написал программу, которая анализирует их и представляет их в удобной для человека форме:

https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e

Чтобы использовать, сначала запустите xdotool key XF86LogGrabInfo, как описано в ответе Механической улитки. Затем запустите программу, указанную выше. Если ваш файл журнала Xorg не находится по адресу /var/log/Xorg.0.log, вы можете указать его местоположение, используя --xorg-logопцию. Смотрите --helpподробности.

Владимир Пантелеев
источник