Подскажите пожалуйсто:
Как отследить события мыши и клавиатуры НЕ в окне своей программы, а вообще в графической оболочке?
То-есть узнать, например, сколько времени уже никто не нажимает на клавиши, и не двигает мышью?
Уже устал биться над этой проблемой. Помогите пожалуйсто если кто занет.
для отслеживания координат курсора мыши воспользуйся функцией XQueryPointer. С определённой периодичностью смотреть не изменились ли координаты.
А по клавиатуре навскидку не скажу, попробуй посмотреть проект xneur, там постоянно отслеживают события клавиатуры.
>для отслеживания координат курсора мыши воспользуйся функцией XQueryPointer. С определённой периодичностью смотреть
>не изменились ли координаты.
>А по клавиатуре навскидку не скажу, попробуй посмотреть проект xneur, там постоянно
>отслеживают события клавиатуры.Спасибо за ответ.
Скажите пожалуйсто, в какой библиотеке находится функция XQueryPointer?
Если не сильно затруднит, можете так-же написать пример ее использования?----
События клавиатуры пока получается отслеживать через файл /dev/input/eventX (X - номер соответствующего файла, который определяется методом "тыка"). Мышь так же можно отслеживать с помощью соответствующего файла /dev/input/eventX (можно проверить в оболочке 'cat /dev/input/eventX')- это работает во многих дистрибутивах (думаю, что почти во всех). Но в Fedora9, не смотря на то, что клавиатуру по-прежнему можно отследить вышеописанным методом, мышь не выводит никаких данных.
---
Заранее спасибо за любую дополнительную информацию по этому вопросу.
Если тебе нужно определять неактивность пользователя используй расширение XScreenSaver.
man 3 Xss.
>Если тебе нужно определять неактивность пользователя используй расширение XScreenSaver.
>man 3 Xss.Вам так-же спасибо.
Вообщем-то все началось с того, что нужно было отследить неактивность пользователя...
В начале, я просто хотел, чтобы скринсайвер в линукс проигрывал флеш (*.swf) видео (*.mpg и *.avi) и скринсайверы из винды (*.scr и/или *.exe - что по сути одно и то-же). Хотя если бы хоть что-то из этого удалось, то все остальное можно было бы перекодировать в соответствующий формат и пользоваться.
Мне не удалось добиться этого.
В основном, я экспериментировал с xscreensaver'ом, на его странице вот в этом разделе FAQ: http://www.jwz.org/xscreensaver/faq.html#mpeg, написано что это возможно и как именно это сделать, но эти способы не работают:
1. mpeg2dec_onroot - воспроизводит изображение серого экрана вместо ролика
2. gflashplayer - отсутствует по ссылке которая там приведена - ссылка позволяет скачатть программу flashplayer (НЕ "g"flashplayer) с сайта adobe. Программа flashplayer невоспринимает аргументы командной строки вообще, хотя flash ролики воспроизводит.
3. Я попробовал видеоплейер xine, который прекрасно проигрываетна корневом экране видеоролики (xine -R 'video.avi'), при запуске из консоли (кстати таким образом можно легко поставить на рабочий стол любые видео обои, например любимый фильм или клип), но при запуске той же комманды в xscreensaver'е - xine включается и тут же выключается, или проигрывает черный экран.
Вообщем я решил создать приложение которое моглобы осуществить это - и надо было отследить активность пользователя - я это сделал через файлы /dev/input/eventX, но когда обнаружил, что в новой версии Fedora - Fedora9 мышь таким образом не отслеживается - пришлось искать более совершенный метод - вдруг потом и клавиатура перестанет отслеживаться.
Я попробовал отследить события с помощью функций GTK, но надо указать указатель на widget в котором отслеживаются события - а что написать чтобы события отслеживались глобально а не в конкретном виджете неизвестно.
----
Мысли такие:
- Компьютер бесполезен, если не взаимодействеут с пользователем.
- Взаимодействие осуществляется через устройства ввода/вывода (с выводом проблем нет)
- Чтобы успешно писать программы надо знать как отследить события устройтсв ввода в системе в целом.
Более селкая проблема: как заставить линук проигрывать видео ролики во время бездейстивя пользователя.Я занимаюсь этим в свободное от работы время уже более 2-х месяцев. Если у кого есть какие-то мысли пожалуйсто помогите мне.
---
Спасибо всем кто об этом хотябы раз задумается.
Можешь посмотреть браузерный плагин для проигрывания флеша и Netscape Plugin Specification. Мне почему-то кажется, что плагин можно заставить отрисовываться в любое окно.http://www.mozilla.org/projects/plugins/
http://developer.mozilla.org/en/docs/Plugins
>Можешь посмотреть браузерный плагин для проигрывания флеша и Netscape Plugin Specification.
>Мне почему-то кажется, что плагин можно заставить отрисовываться в любое окно.
>
>
>http://www.mozilla.org/projects/plugins/
>http://developer.mozilla.org/en/docs/PluginsСпасибо за совет.
Посмотрел плагины по вашему совету. Насколько смог понять - они работают в браузерах, а документация посвящена, в основном, тому как задействовать плагины в своих браузерах с помощью различных API. Это не поможет - браузеры не распознают опцию --root (я пробовал до этого, но попробовал еще раз firefox и konqueror).
Но на данный момент меня гораздо больше интересует вопрос: Как отследить события устройтсв ввода (мышь и клвиатура) в системе? Например, как узнать факт что на рабочем столе (или, более широко, в определенном окне) была нажата правая кнопка мыши, время когда она была нажата последний раз и координаты в которых находился указатель (ну или хоть что-то из этого)? Тогда можно решеть гораздо больше вопросов, чем просто создание скринсейвура с поддержкой мультимедиа.
Если можете чем-то помочь, очень прошу напишите в эту тему.