Обнаружение, если компьютер бездействует, основанный на взаимодействиях мыши и клавиатуры - PullRequest
3 голосов
/ 22 декабря 2010

Я пишу часть программного обеспечения на C ++, которая управляет подсветкой клавиатуры на моем MacBook Pro, который работает под управлением Arch Linux в качестве основной ОС и Debian для забавных приложений. Программа работает как демон и в настоящее время может включать подсветку клавиатуры. Следующий шаг - заставить его следить, когда компьютер находится в режиме ожидания (на основе взаимодействий с мышью и клавиатурой) и когда он простоял в течение некоторого времени, отключить подсветку, и как только будет зарегистрировано взаимодействие с клавиатурой или мышью снова включите подсветку.

Я гуглил, но я не нашел ничего, что мог бы заставить работать, чтобы проверить, когда было зарегистрировано последнее взаимодействие мыши и / или клавиатуры.

Есть идеи, как мне этого добиться? Я полагаю, что такие возможности уже существуют в какой-то части любой ОС Linux (может быть, X?), Поэтому использовать это было бы предпочтительнее, чем писать с нуля.

С уважением, ...

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Расширение XScreensaver на X-сервере отслеживает время простоя клавиатуры и мыши. Если вы загрузите исходный код в Psi , их исходное дерево будет иметь файл idle_x11.cpp, содержащий логику для запроса времени простоя. Используйте это в качестве примера.

Основная идея заключается в использовании XScreenSaverQueryInfo для считывания информации о состоянии экранной заставки.

1 голос
/ 22 декабря 2010

Для решения, независимого от X-сервера, вы можете наблюдать за узлами устройств для любых мышей и клавиатур на наличие событий и использовать таймер.

Узлы /dev/input/event* предоставляют общий интерфейс - вам придется наблюдать за любым из них, который соответствует мыши или клавиатуре. Вам нужен модуль ядра evdev, чтобы он был доступен.

Узел /dev/input/mice предоставляет интерфейс, который объединяет все события мыши. Если вы напишите код для узлов /dev/input/event*, вы можете использовать его и для мышей.

Имейте в виду, что некоторые драйверы X-сервера будут захватывать узел своего устройства и блокировать получение событий другими приложениями, поэтому вам, возможно, придется либо изменить их параметры, либо использовать интерфейс на основе X.

EDIT:

Если вы хотите использовать узлы устройства /dev/input/event*, заголовочный файл /usr/include/linux/input.h содержит большую часть того, что вам нужно знать об интерфейсе программирования. По моему опыту, это довольно просто и просто в использовании. В вашем случае это было бы еще более важно, поскольку на самом деле вас не волнует какая клавиша была нажата - только эта была.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...