linux键盘驱动程序源代码

linux键盘驱动程序源代码,linux,linux-kernel,linux-device-driver,kernel-module,Linux,Linux Kernel,Linux Device Driver,Kernel Module,我一直在为linux制作自己的键盘驱动程序。所以我通过这两个链接:和 现在我是 我不知道这些代码中的哪一个是目前驱动我键盘的实际代码。正如我在KBD.c中看到的那样,它是相当血腥的,并且有一个转换 从扫描码到键码的转换。所以应该是代码,尽管我不确定 如果代码是atkbd.c,那么其他代码是什么?这很容易检查。让我们以usbkbd.c为例 相应的Kconfig()表示: 只有当你绝对确定你不想使用 USB键盘的通用HID驱动程序,更喜欢使用 键盘处于有限的启动协议模式 这几乎肯定不是你想要的。这对

我一直在为linux制作自己的键盘驱动程序。所以我通过这两个链接:和

现在我是 我不知道这些代码中的哪一个是目前驱动我键盘的实际代码。正如我在KBD.c中看到的那样,它是相当血腥的,并且有一个转换 从扫描码到键码的转换。所以应该是代码,尽管我不确定


如果代码是atkbd.c,那么其他代码是什么?

这很容易检查。让我们以usbkbd.c为例

相应的Kconfig()表示:

只有当你绝对确定你不想使用 USB键盘的通用HID驱动程序,更喜欢使用 键盘处于有限的启动协议模式

这几乎肯定不是你想要的。这对其他人来说非常有用 嵌入式应用程序或简单键盘

因此,它看起来不太可能是我们正在寻找的键盘驱动程序。还要检查当前内核配置中的
USB\u KBD
。可以在
/boot
目录下或通过运行
zcat/proc/config.gz
找到配置。如果
USB\u-KBD
不存在,则表示您没有使用它。如果将usbkbd.c构建为模块,那么就值得检查它是否实际加载。Makefile()将目标设置为
usbkbd
。我们可以通过在lsmod的输出中对其进行灰显来检查它是否已加载

相比之下,atkbd.c的Kconfig()似乎更有可能:

如果您想使用标准AT或PS/2键盘,请在此处输入Y。通常 你需要这个,除非你有一个不同类型的键盘(USB,ADB) 或其他)。这也适用于通过网络连接的AT和PS/2键盘 PS/2到串行转换器。如果不确定,说Y


还要检查
键盘的内核配置。如果它是Y,您知道它正在被使用。如果是M,请检查
lsmod
的输出,查看
atkbd

谢谢您的回答。。。所以我注意到usb_kbd是“M”,而atkbd是“Y”。很明显,我现在的司机是atkbd。但你没有回答我的第二个问题。请详细说明这一部分。正如上面所说,它用于引导协议。它以最小的初始化连接键盘,即没有usb接口,所以我自己挖掘了一下,结果发现,当我使用usb电缆插入外部键盘时,usbkbd模块已加载。我禁用了usbhid模块,外部键盘不再工作。但笔记本电脑的键盘仍然在工作。因此,usbkbd驱动外部键盘,atkbd驱动笔记本电脑键盘。请根据您的喜好重新措辞,并将其添加到您的答案中。那我就接受你的回答。干得好。usbkdb被加载,因为它是一个依赖项。Kconfig的内容非常清楚,“只有当您绝对确定不想在USB键盘上使用通用HID驱动程序时,才在这里说Y”。外部键盘使用USB HID与操作系统通信,这就是卸载usbhid阻止键盘工作的原因。有必要找出usbkbd的依赖关系-
/lib/modules/{kernel version}/modules.dep
将对此有更多的说明。