Как различать ввод с разных клавиатур
От: brain-ripper  
Дата: 27.01.10 09:14
Оценка:
Здравствуйте.

Задача такая: различить с какой из клавиатур пришло событие нажатия кнопки и блокировать его для одной из них.
Пример: ноутбук со встроенной клавиатурой и подключенная внешняя USB клавиатура. Встроенная работает как обычно, ввод с внешней блокируется (одновременно с блокировкой производятся некоторые действия, в зависимости от нажатой кнопки; получается эдакий USB-контроллер).

Проштудировав SetWindowsHookEx понял, что различить с какой именно клавиатуры пришло событие нажатие невозможно, других способов в юзер-може не знаю (если кто знает, подскажите, это сильно облегчит задачу).

Вариант на котором остановился — самописный фильтр-драйвер, на основе kbfiltr: ловит нажатия, очищает очередь, тем самым блокируя ввод с точки зрения системы. Проблема только в том, что для работы этого драйвера нужно стандартный драйвер определенной клавиатуры заменить на этот. Если нужно несколько клавиатур-контроллеров, то драйвер каждой клавы нужно заменить.

Вопрос такой, можно ли сделать такой драйвер, который не привязывался бы к конкретной железке-клавиатуре, а устанавливался бы однократно в системе и ловил ввод от всех клавиатур? По параметру KEYBOARD_INPUT_DATA::UnitId как я понимаю можно определить от какой клавиатуры пришло событие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.