在Ubuntu 22.04系统的HP Spectre x360上无法找到内置笔记本键盘ID,如何禁用内置键盘?
在Ubuntu 22.04系统的HP Spectre x360上无法找到内置笔记本键盘ID,如何禁用内置键盘?
你碰到的问题其实是因为Ubuntu 22.04默认用的是Wayland显示服务器,而xinput是为Xorg设计的工具——在Xwayland环境下它没法区分内置和外接键盘,两者会被合并成同一个xwayland-keyboard:18设备,所以看不到传统的AT Translated Set 2键盘条目。下面给你几个可行的解决办法:
方法一:用Wayland原生工具libinput区分并禁用内置键盘
这是最适配当前Wayland环境的方案:
- 先列出所有输入设备,定位内置键盘的具体信息:
你会看到每个设备的详细描述,内置键盘通常会带有笔记本型号相关的名称(比如"HP Spectre x360 Integrated Keyboard"),或者标注"internal",同时会显示对应的libinput list-devicesKernel: /dev/input/eventX路径(X是数字)。 - 创建udev规则实现持久化禁用:
- 先确认设备的唯一属性,比如用udevadm查看刚才找到的event设备:
找到sudo udevadm info -a /dev/input/eventXATTRS{name}(设备名称)或者ATTRS{idVendor}、ATTRS{idProduct}(厂商和产品ID),这些是用来精准定位设备的标识。 - 在
/etc/udev/rules.d/目录下新建一个规则文件,比如90-disable-internal-keyboard.rules:
写入对应规则,比如用名称匹配:sudo nano /etc/udev/rules.d/90-disable-internal-keyboard.rules
或者用厂商和产品ID匹配(更稳定,不会因名称变化失效):SUBSYSTEM=="input", ATTRS{name}=="你的内置键盘准确名称", RUN+="/bin/sh -c 'echo 1 > /sys$devpath/disable'"SUBSYSTEM=="input", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", RUN+="/bin/sh -c 'echo 1 > /sys$devpath/disable'" - 保存文件后,重新加载udev规则让设置生效:
这样内置键盘就会被禁用,而且重启后依然有效。sudo udevadm control --reload-rules && sudo udevadm trigger
- 先确认设备的唯一属性,比如用udevadm查看刚才找到的event设备:
方法二:切换到Xorg环境使用xinput操作
如果你更习惯用xinput,可以切换到Xorg显示服务器:
- 登录系统前,点击用户名旁边的齿轮图标,选择"Ubuntu on Xorg"选项再登录。
- 登录后再次运行
xinput --list,这时候应该能看到单独的内置键盘设备(比如AT Translated Set 2 keyboard),记下它的ID。 - 临时禁用可以直接运行:
如果想开机自动禁用,可以把这条命令添加到启动应用里,或者写入xinput disable <设备ID>~/.xprofile文件中。
小提醒
- 操作前一定要确认好目标设备,别误禁用了外接键盘!用
libinput list-devices的时候仔细看设备描述,内置键盘一般会明确标注是笔记本自带的。 - udev规则的方法是持久化的,而xinput临时禁用的方式重启后会恢复,根据你的需求选择就行。
备注:内容来源于stack exchange,提问作者Artem Lebedev
相关产品推荐
相关产品推荐

