Добрый день, надеюсь кто-нибудь мне поможет с моей проблемой. В Microsoft Windows Device Kit есть пример драйверов клавиатуры и мыши (kbdclass и mouclass), но я никак не могу разобраться как и где мне внести изменения, чтобы, например, backspace считывался как escape.
Насколько я понял чтение происходит в методе KeyboardClassReadCopyData и скорее всего в
RtlMoveMemory(
destination,
(PCHAR) DeviceExtension->DataOut,
moveSize
);
Верно ли это, и если верно, то каким образом мне нужно работать с этими буферами?
Желательно, пожалуйста, с рабочим примером.
P.S. изменять необходимо именно в драйвере, т.к. переопределения клавиш должны работать исключительно в одной из двух подключенных клавиатур.
P.S.2. еще есть доп. вопрос каким образом можно сделать в драйвере же возможность обработки комбинации нажатий (например, двойной Esc в течение секунду — это Home).
Re: Драйвер клавиатуры (kbdclass из MS WDK), Необходимо пере
XT>В Microsoft Windows Device Kit есть пример драйверов клавиатуры и мыши (kbdclass и mouclass)...
Это не драйвера клавиатур, драйвера клавиатур это i8042prt.sys и kbdhid.sys, а это классовые драйвера для клавитур и мышей, соответственно.
XT>Желательно, пожалуйста, с рабочим примером.
То, что тебе нужно, вполне решается классовым драйвером-фильтром клавиатуры.
XT>P.S. изменять необходимо именно в драйвере, т.к. переопределения клавиш должны работать исключительно в одной из двух подключенных клавиатур.
Ну да, пиши драйвер типа WDM-фильтр для класса Keyboard, и делай уже в обработчиках, что тебе нужно.