确定 xinput 设备制造商和型号?

Naf*_*Kay 17 xorg xinput

我正在尝试查找键盘和触摸板的设备制造商和型号,以便我可以通过以下方式编写针对它的 XOrg 配置文件:

Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Driver "synaptics"
    MatchProduct "Product Name"
    MatchVendor "Vendor Name"
EndSection
Run Code Online (Sandbox Code Playgroud)

如何使用 CLI 工具发现设备的产品和供应商名称?我想确定我的蓝牙触摸板和键盘,以便能够定制 Xorg 配置。

小智 20

设备产品名称(型号)

使用 获取 xinput 设备产品名称(或型号xinput list。示例输出可能如下所示:

# xinput list
? Virtual core pointer                      id=2  [master pointer  (3)]
?   ? Virtual core XTEST pointer                id=4  [slave  pointer  (2)]
?   ? ELAN Touchscreen                          id=10 [slave  pointer  (2)]
?   ? SynPS/2 Synaptics TouchPad                id=13 [slave  pointer  (2)]
?   ? Logitech Unifying Device. Wireless        id=16 [slave  pointer  (2)]
? Virtual core keyboard                     id=3  [master keyboard (2)]
    ? Virtual core XTEST keyboard               id=5  [slave  keyboard (3)]
    ? Power Button                              id=6  [slave  keyboard (3)]
    ? Video Bus                                 id=7  [slave  keyboard (3)]
    ? AT Translated Set 2 keyboard              id=12 [slave  keyboard (3)]
Run Code Online (Sandbox Code Playgroud)

在上面的输出中,触摸屏设备的型号或产品名称是“ELAN Touchscreen”。

设备路径(节点)

要得到xinput设备Vendor Name(或制造商),我们需要知道要查询的设备Path(也叫Device Node),然后询问udevadm info。您可以通过列出设备的 xinput 属性并找到“设备节点”值来获取路径。

在我们之前的示例中,触摸屏的设备节点值,表示它具有id=10,可以这样找到:

# xinput list-props 10 | grep 'Device Node'
    Device Node (253):    "/dev/input/event9"
Run Code Online (Sandbox Code Playgroud)

设备供应商名称(制造商)

现在,我们可以通过查看具有上面找到的路径名的设备返回的属性值来获取 xinput 设备供应商名称(或制造商):VENDORudevadm info

# udevadm info --query=property --name=/dev/input/event9 | grep 'VENDOR='
ID_VENDOR=ELAN
Run Code Online (Sandbox Code Playgroud)

在上面的输出中,触摸屏的制造商或供应商名称将是“ELAN”。

XOrg 配置

综上所述,我们可以创建一个新的XOrg 配置InputClass部分来匹配特定的设备供应商、产品或路径。使用我们之前的示例,本节匹配 ELAN 供应商制造的任何触摸屏产品:

Section "InputClass"
    Identifier "elan touchscreen catchall"
    MatchDevicePath "/dev/input/event*"
    MatchProduct "Touchscreen"
    MatchVendor "ELAN"
EndSection
Run Code Online (Sandbox Code Playgroud)

感谢@斯特凡@Daniel@ ManuelSchneid3r


Sté*_*las 7

对于 Linux 上的 USB 设备,您可以使用:

lsusb -v | grep -e idProduct -e idVendor
Run Code Online (Sandbox Code Playgroud)

仅适用于 ID:

grep . /sys/bus/usb/devices/*/id*
Run Code Online (Sandbox Code Playgroud)

lsusb用于/var/lib/usbutils/usb.idsids转换为names,我不知道 Xorg 是否会使用相同的来源。