解决有问题的键盘/破解输入流?

解决有问题的键盘/破解输入流?

当我快速键入按键序列时,键盘会发出oun按键序列。oun<F12>

(更新:实际上,您必须按住序列中的每个键才能触发问题。如果在按“u”之前释放“o”,则不会触发问题)。

我第一次注意到这个问题是在使用谷歌浏览器输入网站时,并注意到开发者控制台会在输入时随机弹出。直到我在 vim 中输入并突然<F12>出现在我的文本中时,我才弄清楚具体细节。

几分钟的实验得出以下结果:

  • 每次都是 100% 可重复的
  • 它由按键序列“oun”专门触发
  • 当您按下第三个键时,第一个键必须仍处于按下状态。在按下下一个键之前释放每个键不会触发该问题(这就是为什么您仅在快速打字时遇到该问题的原因)。

作为开发人员,这似乎是一个需要解决的简单问题(如果您按顺序看到这四个输入,请删除第四个)。然而,我不知道从哪里开始:Linux 上有哪些低级输入流过滤可用,或者如何破解设备驱动程序等。

我的问题是,我应该在哪里实施这样的更改?在内核中?是否有接受过滤器的键盘输入处理机制?

额外细节:

这是在 HP ProBook 4530s(2011 年推出的商务笔记本电脑)上。我在 Windows 7 主机上的 VirtualBox VM 中运行 Debian 8。我还没有启动到 Knoppix 来验证问题在 100% 纯 Linux 环境中是否仍然存在,但我非常有信心这个问题发生在操作系统级别以下。

早在 2012 年,就有人用全新的 4530 报告了完全相同的问题(相同的按键顺序):http://www.tomsguide.com/forum/75276-35-keys-activate-typing-help

更新:

我使用 Knoppix 启动 4530,并运行 xev 来确认这是一个硬件问题。以下是输出的摘录,您可以在其中看到序列oun<F12>https://gist.github.com/cellularmitosis/018d822e5ccc5c1a64e6

更新2:

好吧,我很幸运,BIOS 更新足以解决这个问题。看http://h20564.www2.hp.com/hpsc/swd/public/detail?sp4ts.oid=5060881&swItemId=ob_146941_1&swEnvOid=4059

我接受 Dmitry 的回答,因为如果 BIOS 更新没有解决问题,我接下来会尝试这样做。

答案1

GitHub上有一个项目叫输入它实现了您想要实现的目标 - 它从真实的 HID 设备读取 evdev 事件并创建 uinput 设备来模拟虚拟 HID 硬件。例如,这是一个qml脚本添加一个虚拟键盘,在真实键盘上按键x后输出额外的按键。f

您应该能够用它来实现您的算法,或者F12如果您可以没有它,就放弃密钥。

相关内容