Какие инструменты командной строки существуют для просмотра и управления захватами X-сервера? (Это захват, как при захвате клавиш и указателей, т. Е. Ограничение использования определенной клавиши или кнопки мыши определенным приложением или ограничение указателя мыши, чтобы оно оставалось в определенной области экрана.) Я ищу гипотетическую xgrab
утилиту, которая бы показать такие вещи, как
Key 0x00f00ba5 0x123 0
Button 0x00f00ba5 2
Pointer 0x00abcdef
это означает , что имеет место вызова XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)
и так далее с XGrabButton
, XGrabPointer
, XGrabKeyboard
, XGrabServer
(если это возможно). Формат отображения не имеет значения, мне нужен какой-то способ узнать, кто что захватывает, и, возможно, какой-то способ отозвать эти захваты (если это возможно, я не уверен, позволяет ли это API X11).
источник
xdotool key XF86LogGrabInfo
вызывает только две записи в журнале X: «Печать всех текущих активных захватов устройств:», сразу после которых следует «Завершить список активных захватов устройств». Тем не менее, мой оконный менеджер захватывает кучу ключей. Вы видели эту работу для захваченных ключей?sleep 2; xdotool key "XF86LogGrabInfo"
и сразу же начните нажимать клавишу (например, клавишу "Win") очень быстро, тогда вы увидите некоторые результаты в Xorg.log. Или используйтеxdotool
нажимать клавиши +XF86LogGrabInfo
в то же время, как здесьXF86LogGrabInfo
печатает только информацию о клавише, которая нажата в данный момент? Это ограничивает его полезность. Я хочу перечислить все захваты - все пассивные захваты, если я правильно понимаю терминологию.xfsettingsd
украл мой ярлыкWin
+L
.Я не знаю ничего от руки для пассивных захватов 1 единственной клавиши или кнопки, которая может присутствовать, но есть несколько способов составить список активных захватов всего устройства клавиатуры или мыши.
/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client
, как описано в разделе «Получение информации с X-сервера» . Здесь также есть один для серверных захватов, которые горячие клавиши Xorg 1.11 в настоящее время не охватывают.1 См. Http://tronche.com/gui/x/xlib/input/pointer-grabbing.html для определения активных и пассивных захватов.
источник
Это дополнение к ответу Механической улитки -
Записи в журнале Xorg могут быть довольно непонятными. Я написал программу, которая анализирует их и представляет их в удобной для человека форме:
https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e
Чтобы использовать, сначала запустите
xdotool key XF86LogGrabInfo
, как описано в ответе Механической улитки. Затем запустите программу, указанную выше. Если ваш файл журнала Xorg не находится по адресу/var/log/Xorg.0.log
, вы можете указать его местоположение, используя--xorg-log
опцию. Смотрите--help
подробности.источник
gdc
(компилятор GNU D), аlibx11-dev
затем запуститьgdc -o xorg-show-grabs xorg-show-grabs.d -lX11
.