问题描述
这是我的另外一台惠普的战99电脑 这台电脑安装了双系统 一个是win11 一个是ubuntu26.04 , 现在的环境是ubuntu26.04 一开始两个系统都存在按键连键的问题(按一次1 有时出现一个1 有时候出现两个1) 在win11系统更新了惠普官网的驱动后 连键问题消失了 但是在当前的ubuntu26.04依然存在连键问题 我应该怎么解决
这是典型的**键盘连键/抖动(key chatter)**问题。你的机器是 HP ZBook Power 15.6 inch G10 A ,内置键盘走的是 i8042 PS/2 接口 (AT Translated Set 2 keyboard),和 Windows 上 HP 驱动走的是不同路径,所以 Win11 修好了,Ubuntu 仍可能有问题。
原因分析
| 现象 | 说明 |
|---|---|
| Win11 更新 HP 驱动后好了 | HP 驱动可能做了软件防抖 ,或更新了 EC/BIOS 固件 |
| Ubuntu 仍连键 | Linux 用内核 i8042 驱动读键盘,没有 HP 那层防抖逻辑 |
| 按一次有时 1 个有时 2 个 | 是硬件抖动,不是普通的"长按连发"设置问题 |
解决步骤(按推荐顺序试)
1. 先更新系统固件(BIOS)
你这台机子当前 BIOS 是 1.11 ,fwupd 里已有 1.12.1.0 更新,changelog 里有 general bug fixes,值得先试:
bash
# 接电源后再执行
sudo fwupdmgr refresh
sudo fwupdmgr get-updates
sudo fwupdmgr update
# 更新完成后重启
这步和 Windows 里更新 HP 驱动类似,有时能一并修键盘/EC 相关问题。
2. 调整内核 i8042 参数(HP 笔记本上最常见)
HP 笔记本在 Linux 上经常出现 i8042 通信问题,导致重复按键。编辑 GRUB:
bash
sudo nano /etc/default/grub
在 GRUB_CMDLINE_LINUX_DEFAULT 的引号里追加 (保留原有的 quiet splash 等):
text
i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1
保存后更新 GRUB 并重启:
bash
sudo update-grub
sudo reboot
逐个试,不要一次全加:
| 参数 | 作用 |
|---|---|
i8042.nopnp=1 |
禁用 PnP 探测,很多 HP 机型有效 |
i8042.dumbkbd=1 |
简化键盘初始化,减少异常信号 |
i8042.direct=1 |
绕过部分键盘控制器逻辑 |
i8042.noloop=1 |
关闭控制器自检循环(少数机型有用) |
建议顺序:i8042.nopnp=1 → 不行再加 i8042.dumbkbd=1 → 再试 i8042.direct=1。
若仍无效,可试 pnpacpi=off(可能影响睡眠/电源管理,作最后手段)。
3. 用 keyd 做软件防抖(内核参数无效时)
keyd 可以在用户态过滤重复按键,对连键很有效:
bash
sudo apt update
sudo apt install keyd
创建配置:
bash
sudo nano /etc/keyd/default.conf
示例(50ms 内同一键只认一次):
ini
[main]
debounce = 50
[ids]
*
启用并重启:
bash
sudo systemctl enable --now keyd
sudo reboot
若 50ms 仍连键,可调到 80 或 100;若感觉延迟明显,再往下调。
4. 排除"长按连发"误判
你描述更像抖动,但可以确认一下系统连发设置:
bash
# 查看当前设置
xset q | grep repeat
gsettings get org.gnome.desktop.peripherals.keyboard repeat-interval
gsettings get org.gnome.desktop.peripherals.keyboard delay
正常一般是 delay=500、repeat-interval=30 左右。若 delay 特别小(如 200 以下),可在 设置 → 键盘 里把"按键重复延迟"调长一点。
5. 在 Windows 侧确认是否写了固件
回到 Win11 检查 HP 驱动更新里是否包含 BIOS / Embedded Controller / System Firmware 更新:
- 若只是 Hotkey / Synaptics 等驱动,防抖多半只在 Windows 生效 → Linux 要靠上面 2、3 步
- 若是 BIOS/EC 固件 ,理论上双系统共用,但 Linux 仍可能需要更新到同版本 BIOS(第 1 步
fwupd)
快速自测
重启进 Ubuntu 后,在终端跑:
bash
sudo evtest
选 AT Translated Set 2 keyboard,然后只按一次 1,看是否出现两次 KEY_1 事件。
- 一次 press + 一次 release → 正常
- 两次 press/release → 确认是硬件/驱动抖动,优先试 GRUB 参数和 keyd
建议操作顺序
fwupdmgr update更新 BIOS- 加重启,测试是否已好
- 仍连键 → 加
i8042.nopnp=1,再测 - 仍不行 → 加
i8042.dumbkbd=1 - 还不行 → 装 keyd 做防抖
如果你愿意,我可以根据你当前的 /etc/default/grub 内容,帮你写一份可直接粘贴的配置;或者你试完某一步后告诉我结果,我们再往下排查。