Как в иксовой программе следить за мышью? (непрерывно.)

Модератор: Модераторы разделов

MiK13
Сообщения: 1306
ОС: Linux Debian

Как в иксовой программе следить за мышью?

Сообщение MiK13 »

Есть иксовая программа. В ней, в частности, такой кусок обработки событий:

Код: Выделить всё

  while(1) {
    XNextEvent(display,&report);                                        // Взять очередное событие из очереди
    printf(" Event type = %d\n",report.type);
    switch(report.type) {
     ...

Дальше идут различные case, в том числе и "case MotionNotify:"
printf, идущий сразу после XNextEvent должен выводить код пришедшего события. И он выводит. Причём, события самые разные. Но вот событие MotionNotify появляется только ОДИН раз в секунду. И то, если не нажата кнопка мыши. А если нажата, то только в начале её перемещения.
В чём может быть дело?
Была мысль, что оно появляется после какого-то обращения к X-серверу (раз в секунду у меня выводится время на экран), но потом вспомнил, что у меня непрерывно (больше 10 раз в секунду) выводится на экран довольно большое поле.
Если я, например, нажму Alt и начну тащить окно, то вижу в консоли непрерывный потом строк
Event type = 22
Но вот строка
Event type = 6
появляется только в начале движения мыши по окну. Ну или после каких-то действий с кнопками мыши (если она двигается)
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5498
ОС: Gentoo

Re: Как в иксовой программе следить за мышью?

Сообщение /dev/random »

В xev так же? Если да, то проблему нужно искать в иксах. Если нет, то в вашей программе.
Спасибо сказали:
MiK13
Сообщения: 1306
ОС: Linux Debian

Re: Как в иксовой программе следить за мышью?

Сообщение MiK13 »

/dev/random писал(а):
05.03.2012 17:34
В xev так же? Если да, то проблему нужно искать в иксах. Если нет, то в вашей программе.
В xev всё нормально. И я с самого начала предполагал, что проблема в моей программе. Только вот как её найти...
А за xev спасибо. Нашёл её исходник. Транслируется без ошибок, правда, с непонятным предупреждением:
warning: implicit declaration of function 'isascii'
в случае наличия опции -std=c99. Без неё с -Wall транслируется чисто.
Надеюсь, по этому исходнику разберусь, в чём дело
Спасибо сказали: