我的笔记本电脑的键盘不再工作了。因此,我编写了一个脚本来禁用板载键盘xinput float ID
。在新版本的 Ubuntu (17.10) 上,由于对 Wayland 的更新,这不再有效。
当我使用 列出我的设备时sudo libinput list-devices
,我得到:
[...]
Device: Rapoo E6100
Kernel: /dev/input/event13
Group: 6
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a
[...]
Device: AT Translated Set 2 keyboard
Kernel: /dev/input/event4
Group: 9
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a
[...]
Rapoo E6100是工作键盘,AT Translated Set 2 键盘是损坏的板载键盘。
我读到,为了忽略设备,可以从中删除功能(https://wayland.freedesktop.org/libinput/doc/latest/udev_config.html#udev_device_type)。如何使用 libinput 实现这一点?
还是有可能简单地忽略第 9 组?
禁用键盘的一种快速而肮脏的方法可能是使用
evtest
抓取它。然后事件被传递给测试程序,不再传递给图形服务器。你必须让这个程序一直运行。
禁用设备的更困难的方法是为其添加设置
ID_INPUT
为空的 udev 规则,以便 libinput 忽略它。我没有尝试过以下方法,因此将其用作探索的指南,而不是确定的解决方案。首先,列出作为键盘的事件设备的 udev 信息,例如:
您现在必须找到能够唯一识别您的设备的东西。通常这是一个 USB 供应商和产品 ID(如上
ID_SERIAL
所示)。前缀意味着这个E:
变量是在 udev 环境中设置的,所以在 udev 规则中你应该说你想要匹配ENV{ID_SERIAL}=="05f3_0007"
。但是,对于您的笔记本电脑,您可能需要找到其他匹配的东西。您可以在设备树的上方搜索以找到具有更易于匹配的属性的父级:
因此,您可以改为在 ID_SERIAL 上匹配 udev 规则
ATTRS{name}=="HID 05f3:0007"
。在你的情况下,我希望像ATTRS{name}=="AT Translated Set 2 keyboard"
.找到合适的匹配项后,
/etc/udev/rules.d/99-my.rules
使用覆盖规则创建自己的文件(以 99 开头以使您的规则最后)以将ID_INPUT
值重置为空。请严格遵守此文件的格式。请注意,所有条件都是如何与==
除了最后一个条件进行比较的,后者是与单个=
.或者更可能为您:
通常情况下,udev 应该会自动注意到对文件的更改,但如果没有的话
sudo udevadm control --reload
。然后,您可以尝试触发设备的更改:我不确定这对于固定设备是如何工作的,就像通常对于 USB 设备一样,您只需将其拔下并重新插入,因此您可能需要重新启动。
您可以监控 udev 正在做什么
udevadm monitor
。