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

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

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

Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Driver "synaptics"
    MatchProduct "Product Name"
    MatchVendor "Vendor Name"
EndSection

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

答案1

设备产品名称(型号)

获取 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)]

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

设备路径(节点)

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

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

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

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

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

# udevadm info --query=property --name=/dev/input/event9 | grep 'VENDOR='
ID_VENDOR=ELAN

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

X组织配置

把它们放在一起,我们可以创建一个新的XOrg 配置InputClass部分匹配特定的设备供应商、产品或路径。使用我们之前的示例,此部分与 ELAN 供应商制造的任何触摸屏产品相匹配:

Section "InputClass"
    Identifier "elan touchscreen catchall"
    MatchDevicePath "/dev/input/event*"
    MatchProduct "Touchscreen"
    MatchVendor "ELAN"
EndSection

谢谢@斯特凡,@丹尼尔@ManuelSchneid3r

答案2

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

lsusb -v | grep -e idProduct -e idVendor

仅针对 ID:

grep . /sys/bus/usb/devices/*/id*

lsusb用于/var/lib/usbutils/usb.ids翻译id名字,我不知道Xorg是否会使用相同的源。

答案3

MatchProduct "Product Name"不适用于 Stephane's suggest 的输出lsusb -v | grep -e idProduct -e idVendor。我刚刚测试过。

xinput list输出正确的字符串MatchProduct

答案4

我发现以下命令对于查找与 xorg.conf 配置一起使用的模型/供应商非常有用。

https://bbs.archlinux.org/viewtopic.php?pid=753773: (其中 /dev/sdx 替换为目标设备的设备路径,即 /dev/input/mouse1)

udevadm info --query=all --path=$(udevadm info --query=path --name=/dev/sdx)

根据http://fedoraproject.org/wiki/Input_device_configuration:

udevadm info --export-db | grep ID_MODEL

相关内容