Перехват ввода от ОС

Я хотел бы изучить пример до следующего семестра и попробовать что-то, что работает вместе с ОС.

Как программа C может перехватывать ввод из ОС. Единственный пример, который я могу вспомнить, это кейлоггер.

Как можно запрограммировать программу на C, чтобы копаться в операционной системе?

Имеет ли это смысл?

2 ответа

Решение

В Linux вы можете наблюдать за узлами устройства для всех клавиатур и записывать полученные события.

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

/usr/include/linux/input.h Заголовочный файл содержит большую часть того, что вам нужно знать об интерфейсе программирования. По моему опыту, это довольно просто и просто в использовании.

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

Я думаю, что это все, что вы можете получить в Linux без написания модуля ядра.

РЕДАКТИРОВАТЬ:

Вы должны понимать, что каждая ОС имеет свой собственный интерфейс для подсистемы ввода. Нет кроссплатформенного способа сделать это. Что именно вы хотите сделать?

В основном, в зависимости от ОС, вам нужно "подключиться" к механизму событий ОС. В ОС происходят различные события, и нажатие клавиши - это событие, похожее на щелчок мышью. Можно подключиться к этим событиям и предоставить функцию, которую ОС вызывает каждый раз, когда происходит событие.

Например, смотрите для Windows

Другие вопросы по тегам