我正在尝试从内置键盘获取输入,但是它没有显示内置键盘和 ID。(我正在使用 Ubuntu 21.04)
我得到以下信息:
WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ xwayland-pointer:17 id=6 [slave pointer (2)]
⎜ ↳ xwayland-relative-pointer:17 id=7 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ xwayland-keyboard:17 id=8 [slave keyboard (3)]
有人可以帮忙解决这个问题吗?并告知为什么xinput -list
不显示所有详细信息。
答案1
该工具本身会为您指明正确的方向:
警告:正在
xinput
针对 Xwayland 服务器运行。xinput
有关详细信息,请参阅手册页。
手册页中的相关详细信息(man xinput
(重点是我的):
Xwayland 是一个使用 Wayland Compositor 作为后端的 X 服务器。Xwayland 充当 X 协议和 Wayland 协议之间的转换层,但不能直接访问硬件。Xwayland 创建的 X 输入扩展设备(
xwayland-pointer
、xwayland-keyboard
等)映射到 Wayland 协议设备,而不是物理设备。这些 X 输入扩展设备仅对连接到同一 Xwayland 进程的其他 X 客户端可见。更改 Xwayland 设备上的属性只会影响这些客户端的行为。例如,禁用 Xwayland 设备不会
xinput
在 Wayland 原生应用程序中禁用该设备。其他更改可能根本没有任何效果。在大多数情况下,使用
xinput
Xwayland 设备表明 shell 脚本中存在错误并xinput
会打印警告。改用 Wayland Compositor 的本机设备配置方法。
我对 Wayland 不熟悉,也不太了解“Wayland Compositor 的本机设备配置方法”,但我发现了这一点:Wayland 的对应内容是什么xinput list
?
我相信你仍然可以使用老旧的 X 来代替 Wayland(事实上我现在正在 Kubuntu 21.04 中使用它)。在 X 中xinput list
应该可以按预期工作。
答案2
对于使用 xwayland 的用户,首先找到事件 id。
$ libinput list-devices
如果需要,请安装 libinput(sudo apt install libinput-tools)。这将列出所有输入设备及其事件 ID。滚动找到正确的部分(类似“AT Translated Set 2 keyboard”)并找到行 Kernel: /dev/input/event#。使用事件# 执行下一个命令:
$ udevadm info -a -p /sys/class/input/event#
找到最有可能独特/不同的属性。例如 ATTRS{name}=="AT Translated Set 2 keyboard",然后创建规则文件
sudo nano /etc/udev/rules.d/99-disable_touchscreen.rules
遵循以下规则
KERNEL=="event*", ATTRS{name}=="AT Translated Set 2 keyboard", ENV{LIBINPUT_IGNORE_DEVICE}="1"
然后通过以下命令检查它是否有效:
$ udevadm test /sys/class/input/event#
并搜索
LIBINPUT_IGNORE_DEVICE=1
最有可能是在最后 3 行内。然后重新启动,您的内部键盘应该被禁用。
礼貌:https://wiki.archlinux.org/title/Dell_XPS_13_(9343)#Disable_the_touchscreen