Возникла проблема с регистрацией всех событий мышки и клавиатуры от клиента.
В начале попытался сделать это с помощью XGrabPointer & XGrabKeyboard & XSendEvent, но потом узнал, что некоторые программы отвергают сообщения, присланные от XSendEvent.
Также пытался с помощью Грабов с последующей генерацией ивентов через XTest, при этом приходится отключать граб на время посылки ивента, но в этом случае теряется каждый 2й ивент (ButtonPress ловится, а ButtonRelease пропускается и идет прямо к своей программе, минуя мою).
int count=0;
while (count<20)
{
Window root, window;
int rootX,rootY,X,Y;
unsigned int mask;
XQueryPointer(tmp_pDisplay,RootWindow(tmp_pDisplay,0),&root,&window,
&rootX,&rootY,&X,&Y,&mask);
Здравствуйте, Learner, Вы писали:
L>Всем привет. L>Возникла проблема с регистрацией всех событий мышки и клавиатуры от клиента.
Есть ещё вариант пойти совсем другим путем: отслеживать сообщения Х-ов, передаваемые по Х протоколу и выбирать клавиатурные и мышиные эвенты из них.
Если достаточно логировать одно или несколько конкретных приложений — это реализовано например здесь.
Никогда не делайте ничего правильно с первого раза, иначе никто потом не оценит, как это было сложно.
Re[2]: Регистрация событий мышки и клавиатуры
От:
Аноним
Дата:
15.11.03 10:57
Оценка:
Здравствуйте, White Eagle, Вы писали:
WE>Здравствуйте, Learner, Вы писали:
L>>Всем привет. L>>Возникла проблема с регистрацией всех событий мышки и клавиатуры от клиента.
WE>Есть ещё вариант пойти совсем другим путем: отслеживать сообщения Х-ов, передаваемые по Х протоколу и выбирать клавиатурные и мышиные эвенты из них. WE>Если достаточно логировать одно или несколько конкретных приложений — это реализовано например здесь.
Спасибо за подсказку, White Eagle, обящательно попробую так сделать.
Всего наилучшего.