编写 Linux 键盘驱动程序
Writing a Linux Keyboard Driver
我 运行 Ubuntu,最近购买了 HP 无线 800 键盘和鼠标。
默认情况下,它们与 Linux 不兼容。
幸运的是,一些传说编写了 this 实用程序,允许键盘(大部分)与 Linux 一起工作。我现在的问题是,当我开始在键盘上打字时,它会挂起我的电脑几秒钟,而我的笔记本电脑的键盘却不会这样做。
我想做的是尝试改进实用程序以消除延迟。我的问题是我不知道从哪里开始。我可以编写 C 代码,但我以前从未做过键盘驱动程序。有人可以让我从正确的方向开始吗,比如在哪里可以了解键盘如何与 Linux 内核交互?
虽然这不是您想听到的,但说真的,去买一个像样的、支持标准 USB HID 协议的键盘。您链接的驱动程序是一个巨大的 hack,它通过草率编写的用户空间驱动程序来回路由事件,并且可能具有您无法真正消除的固有延迟,除了代码中的错误。
如果你真的想为此做一个好的驱动程序,这将是一个重大的研究项目,涉及从上述代码中找出协议并可能进行进一步的实验,并涉及找出合适的 Linux 驱动程序为此层并为其编写代码。这并不是说它是不可撤销的,但您可以做更多有趣的事情。
我 运行 Ubuntu,最近购买了 HP 无线 800 键盘和鼠标。 默认情况下,它们与 Linux 不兼容。 幸运的是,一些传说编写了 this 实用程序,允许键盘(大部分)与 Linux 一起工作。我现在的问题是,当我开始在键盘上打字时,它会挂起我的电脑几秒钟,而我的笔记本电脑的键盘却不会这样做。
我想做的是尝试改进实用程序以消除延迟。我的问题是我不知道从哪里开始。我可以编写 C 代码,但我以前从未做过键盘驱动程序。有人可以让我从正确的方向开始吗,比如在哪里可以了解键盘如何与 Linux 内核交互?
虽然这不是您想听到的,但说真的,去买一个像样的、支持标准 USB HID 协议的键盘。您链接的驱动程序是一个巨大的 hack,它通过草率编写的用户空间驱动程序来回路由事件,并且可能具有您无法真正消除的固有延迟,除了代码中的错误。
如果你真的想为此做一个好的驱动程序,这将是一个重大的研究项目,涉及从上述代码中找出协议并可能进行进一步的实验,并涉及找出合适的 Linux 驱动程序为此层并为其编写代码。这并不是说它是不可撤销的,但您可以做更多有趣的事情。