我有一台联想 Ideapad 700,配有 Antergos。似乎每秒都会有持续的输入,这使我无法在终端中滚动或使用 tty。这是使用
$ xev
KeyPress event, serial 38, synthetic NO, window 0x5400001,
root 0x153, subw 0x0, time 7416716, (262,3), root:(1124,458),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
我已经尝试禁用 BIOS 中的 Fn 锁,但没有帮助。有谁知道如何修复这个问题或进一步了解这个输入来自哪里?
答案1
Linux 内核 4.13 引入了peaq_wmi驱动程序,它处理 PEAQ 平板电脑上的热键(特别是 PEAQ PMM C1010 上的“杜比”按钮)。
该驱动程序针对系统固件(在 ACPI 表中)中找到的特定 WMI 对象 GUID 进行加载。不幸的是,PEAQ 固件开发人员没有生成唯一的 GUID - 他们只是从 Microsoft 的样本WMI 驱动程序。
不幸的是,他们并不是唯一一家这样做的制造商——在联想固件中可以找到相同的 WMI GUID,当然它具有完全不同的含义。当驱动程序在不兼容的系统上加载时,它会收到垃圾结果并认为按钮始终处于按下状态。
还不幸的是,实际的 PEAQ 固件不会在按下按钮时通知操作系统;相反,操作系统必须反复轮询其状态。因此,驱动程序每秒都会得到相同的垃圾结果。
司机最近固定的还要检查系统制造商名称,修复应该很快就会到达稳定内核(4.14.x、4.13.x)。同时,您可以使用以下方法删除模块:
modprobe -r peaq_wmi
和/或通过/etc/modprobe.d
或使用内核参数将其列入黑名单:
modprobe.blacklist=peaq_wmi
将来,要调试此类问题,请使用报告单个输入设备的工具;例如,evemu-record
或libinput debug-events
。(该xinput
工具也可以在 X11 内部执行此操作。)这样可以将其缩小到特定的驱动程序。
(或者你可以浏览从 4.12 到 4.13 的所有 Git 提交,直到找到一个让你觉得“这个新模块看起来很有趣,我想知道当你卸载它时会发生什么”)