在 udev 中处理鼠标和键盘 USB 设备

在 udev 中处理鼠标和键盘 USB 设备

我正在尝试在我们的瘦客户端上设置 usbip 以将(几乎所有)USB 设备转发到服务器。我不想转发的是所有输入设备和所有集线器/虚拟设备。

所以我想排除供应商 ID 为 1d6b (Linux Foundation) 的所有内容以及输入设备。

我的第一次尝试是

ATTRS{idVendor}=="1d6b", GOTO="do_nothing"
ENV{ID_INPUT_MOUSE}=="?*", GOTO="do_nothing"
ENV{ID_INPUT_KEYBOARD}=="?*", GOTO="do_nothing"
KERNEL=="?-?"", ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/sbin/add_usbip.sh $kernel"
LABEL="do_nothing"

然而,由于我不明白的原因,第一个GOTO总是被触发,导致根本没有任何行为。

然后我尝试了

KERNEL=="?-?", ACTION=="add", SUBSYSTEM=="usb", ENV{ID_INPUT_MOUSE}!="?*", ENV{ID_INPUT_KEYBOARD}!="?*", RUN+="/usr/local/sbin/add_usbip.sh $kernel"

和类似地

KERNEL=="?-?"", ACTION=="add", SUBSYSTEM=="usb", ENV{ID_INPUT}!="?*", RUN+="/usr/local/sbin/add_usbip.sh $kernel"

根据我发现的稀缺文档,我认为这是正确的,但它们也只会针对输入设备运行,导致键盘无法使用,因为它被导出到服务器。

请注意,它不能帮助我添加特定的序列号或供应商和产品 ID,因为键盘、鼠标和其他输入设备可能因客户端而异。

相关内容