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