Написание драйвера устройства клавиатуры - PullRequest
19 голосов
/ 20 августа 2010

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

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

1 Ответ

12 голосов
/ 06 октября 2011

Вот что вам нужно, чтобы написать драйвер устройства для 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 и должен в значительной степени устранить требование «второго ПК». Вы можете запустить свой драйвер на ВМ и подключить к нему отладчик ядра.

...