Перехват ввода от ОС - PullRequest
       20

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

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

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

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

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

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

Ответы [ 2 ]

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

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

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

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

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

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

EDIT:

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

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

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

Например см. для Windows

...