Перехват ввода от ОС
Я хотел бы изучить пример до следующего семестра и попробовать что-то, что работает вместе с ОС.
Как программа C может перехватывать ввод из ОС. Единственный пример, который я могу вспомнить, это кейлоггер.
Как можно запрограммировать программу на C, чтобы копаться в операционной системе?
Имеет ли это смысл?
2 ответа
В Linux вы можете наблюдать за узлами устройства для всех клавиатур и записывать полученные события.
/dev/input/event*
узлы предоставляют общий интерфейс - вам придется наблюдать за любым из них, которые соответствуют мыши или клавиатуре. Вам нужно evdev
Модуль ядра для этого должен быть доступен.
/usr/include/linux/input.h
Заголовочный файл содержит большую часть того, что вам нужно знать об интерфейсе программирования. По моему опыту, это довольно просто и просто в использовании.
Имейте в виду, что некоторые драйверы X-сервера будут захватывать узел своего устройства и блокировать получение событий другими приложениями, поэтому вам, возможно, придется либо изменить их параметры, либо использовать интерфейс на основе X.
Я думаю, что это все, что вы можете получить в Linux без написания модуля ядра.
РЕДАКТИРОВАТЬ:
Вы должны понимать, что каждая ОС имеет свой собственный интерфейс для подсистемы ввода. Нет кроссплатформенного способа сделать это. Что именно вы хотите сделать?
В основном, в зависимости от ОС, вам нужно "подключиться" к механизму событий ОС. В ОС происходят различные события, и нажатие клавиши - это событие, похожее на щелчок мышью. Можно подключиться к этим событиям и предоставить функцию, которую ОС вызывает каждый раз, когда происходит событие.
Например, смотрите для Windows