Linux 设备唤醒后键盘无法使用

📅 2026/7/13 22:14:17 👁️ 阅读次数 📝 编程学习
Linux 设备唤醒后键盘无法使用

一些设备从 S3 睡眠中唤醒后,无法正确接收 USB 键盘击键事件,而物理重新插拔一次可以解决。

为了避免手动插拔,可以利用 systemd-sleep hook 来处理此问题。

首先使用 lsusb 定位到需要被重置的设备的 VENDOR ID 和 PRODUCT ID:

$ lsusb | grep -i keyboard
Bus 002 Device 009: ID 3151:5006  2.4G Wireless Keyboard

这里笔者的键盘是 3151:5006

如果你没有 lsusb ,那么你应该安装 usbutils
在 Arch 上: sudo pacman -Sy usbutils

随后创建一个 hook 脚本:

sudo vim /usr/lib/systemd/system-sleep/reset-keyboard.sh

插入以下内容(注意将 ID 替换为你的 USB 设备的):

#!/bin/bash
# 只在唤醒后执行
if [ "$1" != "post" ]; thenexit 0
fiVENDOR="3151"
PRODUCT="5006"sleep 2# 检查键盘是否已连接
if lsusb -d ${VENDOR}:${PRODUCT} > /dev/null 2>&1; thenlogger "Wake from sleep: Resetting keyboard (id ${VENDOR}:${PRODUCT})"usbreset ${VENDOR}:${PRODUCT}
elselogger "Reset-keyboard: Device not present, skipping."
fi

授予可执行权限:

sudo chmod +x /usr/lib/systemd/system-sleep/reset-keyboard.sh

之后再用 systemctl sleep 主动进入睡眠,测试一下效果。