05.07.2015 22:57
OlegON
 
Ситуация достаточно проста тем, что на USB больше ничего нет.
Соответственно, достаточно просто следить за изменением цифр в
Код:
cat /proc/interrupts | grep xhci_hcd
06.07.2015 06:41
Mtirt
 
А если на USB еще что-нибудь есть? Флэшка? Клавиатура? Монитор (простите за извращение) ?
06.07.2015 08:26
OlegON
 
Вариантов достаточно много, во-первых, разобраться, собственно, на каком она прерывании сидит в том же списке, во-вторых, запоминать координаты мыши (вряд ли кто-то будет нажимать кнопку или крутить колесо без изменения позиции курсора), в-третьих, можно ориентироваться на выключение экрана по бездействию (если выключен, значит мышь не шевелили)... Я достаточно неясно выразился, у меня ситуация проста, т.е. мне больше никого на USB не надо ловить... Поэтому и пример простой.
Вот, кстати, исходник для определения позиции курсора в Х
Код:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	Display *display;
	int screen_number;
	unsigned int modbut;
	//Window win;
	int new_x, new_y,temp;
	if ( ( display = XOpenDisplay ( NULL ) ) == NULL ) {
		puts ("Can not connect to the X server!\n");
		exit ( 1 );
	}
	screen_number = DefaultScreen ( display );
	Window w = XRootWindow( display, screen_number );
	Window w1;
	XQueryPointer(display, w, &w1, &w1, &new_x, &new_y, &temp, &temp, &modbut);
	printf("Mouse button pressed at %i, %i\n", new_x, new_y);
	return 0;
}
06.07.2015 11:34
OlegON
 
Что-то все равно по этому прерыванию прилетает. Возможно, что идет опрос батарейки или еще что... :( Сравнивать надо значительное изменение количества прерываний. 2-3 в минуту для абсолютного бездействия пользователя - нормально.
Часовой пояс GMT +3, время: 09:49.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.