Глобальная привязка мыши к событиям щелчка в X11

Я прочитал много информации о графической системе X11 и нашел много вопросов по этому вопросу без ответа. Итак, позвольте мне спросить больше времени.

Мне нужна классическая реализация механизма ловушек (например, SetWindowsHookEx) или любой другой подход в UNIX-подобных операционных системах с ТОЛЬКО ОДИН СОСТОЯНИЕ : умение слушать события без блокировки исходного события (как XGrabButton и XUngrabButton).

Постскриптум Бен, это Данила. Мне нужна помощь! ®

0

Решение

Я закончил тем, что взял исходный код из Xnee — это позволяет записывать все входные события, включая клавиатуру и мышь с неблокирующей логикой. Единственное ограничение заключается в том, что я должен спросить, есть ли какие-либо события в цикле с интервалом 100 мс, но это нормально для меня — загрузка процессора вообще отсутствует.

1

Другие решения

Это невозможно сделать глобально (все события / все окна), если вы не читаете низкоуровневую связь (используя pcap или заменяете реальный xserver на прокси, который предоставляет вам все данные)

Чтобы получить уведомление для определенного окна, вы меняете маску события этого окна. Сервер хранит отдельную копию маски событий для окна для каждого клиента и уведомляет каждого клиента, заинтересованного в событиях, соответствующих маске. Например, если вы добавите PointerMotion Битовая маска для корневого окна события из вашего соединения вы получите события указателя, когда мышь перемещается над корневым окном (если оно видно)

0

По вопросам рекламы [email protected]