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