c - 编写 Linux 键盘驱动程序
问题描述
我运行 Ubuntu,最近购买了 HP Wireless 800 键盘和鼠标。默认情况下,它们与 Linux 不兼容。幸运的是,一些传奇人物编写了这个实用程序,它允许键盘(大部分)与 Linux 一起工作。我现在的问题是,当我开始在键盘上打字时,它会挂起我的电脑几秒钟,而我的笔记本电脑的键盘却没有这样做。
我想做的是尝试改进实用程序以消除滞后。我的问题是我不知道从哪里开始。我可以编写 C 代码,但我以前从未编写过键盘驱动程序。有人可以让我从正确的方向开始,比如在哪里了解键盘如何与 Linux 内核交互?
解决方案
虽然这不是您想听到的,但说真的,去买一个像标准 USB HID 协议的像样的键盘。您链接的驱动程序是一个巨大的黑客,它通过一个草率编写的用户空间驱动程序来回路由事件,除了代码中的错误之外,它可能具有您无法真正摆脱的固有延迟。
如果你真的想为此做一个好的驱动程序,这将是一个重大的研究项目,涉及从上述代码中找出协议并可能进行进一步的实验,并涉及为此找出合适的 Linux 驱动程序层并为其编写代码。这并不是说它是不可撤销的,但是您可以做更多有趣的事情。
推荐阅读
- matlab - 在python中复制matlab interp3,插入到不均匀间隔的矩阵
- alignment - 我想用 ESPRIPT 很好地比对蛋白质序列,但它不起作用
- php - 在 WooCommerce 中的特定订单 ID 之后计算 *ordered* 的订单数
- flutter - 使用 ThemeData 更改 TextFormField 的颜色
- php - 如何从多个网站重定向特定用户?
- firebase - Firestore:如何在 forEach() 循环中运行批量写入语句?
- vb.net - 如何动态获取对象类型并转换为它?
- sql - Postgresql 和 jsonb - 将键/值插入多级数组
- hibernate - 如何使用 Spring Data / JPQL 从子类实体属性中进行选择?
- css - 弹性盒?个人博客网站仅在桌面上使用左半屏,而在移动设备上使用全屏