Итак, я хочу создать модуль ядра (я полагаю), который будет вставлять небольшую задержку после нажатия клавиши клавиатуры (скажем, 500 мс). Мне удалось сделать это в Windows с помощью хуков, но, похоже, в Linux все по-другому. Обратите внимание, что я не хочу использовать методы x11, так как я хочу, чтобы они также работали из консоли Linux (даже если X-сервер не запущен). Насколько я понял, потребуется собрать модуль ядра и динамически вставить его в ядро с помощью insmod. Мне удалось построить кейлоггер, который бы сбрасывал каждую нажатую клавишу в журнал ядра, но вставка задержки потребовала бы отправки потока, обрабатывающего обработчик прерывания клавиатуры, в сон, что является очень плохой идеей, а также перезаписи всего USB_KBD драйвер, потому что текущий скрипт вызывает функцию request_irq с установленным флагом IRQF_SHARED, поэтому я предполагаю, что исходный драйвер все еще выполняет свою работу до выполнения моей функции.
В настоящее время я запрашиваю обработчик прерываний, подобный этому
request_irq (1, (irq_handler_t) irq_handler, IRQF_SHARED, "keyboard_stats_irq", (void *)(irq_handler));
Любые предложения о том, как справиться с этим (любым другим способом)?