Код: Выделить всё
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
появляется только в начале движения мыши по окну. Ну или после каких-то действий с кнопками мыши (если она двигается)