Написание драйвера клавиатуры

Мне было интересно, есть ли у кого-нибудь опыт работы с драйверами клавиатурных устройств. Я знаю основы того, как работают клавиатурные прерывания, но не знаю подробностей всего. Это сложно? Слишком сложно для одного человека?

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

Ответы

Ответ 1

Вот что вам нужно будет написать драйверу устройства для Windows:

  • Понимание структуры драйвера wdf (KMDF) и его API (я не рекомендую WDM)
  • Второй компьютер (или Hyper-V), который можно использовать для отладки ядра. Загрузите WinDbg, а затем удалите отладочную версию второй машины. Не пытайтесь написать драйвер устройства без возможности его отладки.
  • Полная спецификация программного обеспечения для клавиатуры и аппаратного интерфейса. Может быть, эксперт может каким-то образом вывести интерфейс экспериментально, но это может занять много времени. Я думаю, вам удастся переделать драйвер на другой платформе.

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

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

Нашел нить о программных клавиатурных драйверах: http://www.osronline.com/showthread.cfm?link=119885

Возможно, это полезно: http://www.osronline.com/ddkx/intinput/i8042ref_9eb6.htm

Обновление: Hyper-V доступен для всех пользователей Windows 8 и должен в значительной степени устранить требование "второго ПК". Вы можете запустить драйвер на виртуальной машине и подключить к нему отладчик ядра.