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


15

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

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

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

Answers:


6

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

lsusb -v | grep -e idProduct -e idVendor

仅对于ID:

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

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


太棒了,我现在可以看到我的USB设备,但实际上我需要查找蓝牙信息。此信息正是我在寻找的信息,仅适用于我的蓝牙设备。我可以在蓝牙设备上找到十六进制的供应商ID,但是似乎找不到实际的供应商或产品名称。
Naftuli Kay 2012年

-1,因为这不适用于非USB设备。而且它甚至不适用于所有USB设备,因为lsusb通常不会显示产品名称。ManuelSchneid3r的答案对我来说效果最好,即:xinput list
erik 2015年

17

设备产品名称(型号)

使用获取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触摸屏”。

设备路径(节点)

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

在前面的示例中id=10,可以找到触摸屏的“设备节点”值(表示为),如下所示:

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

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

现在,我们可以通过查看具有以上路径名的设备返回的属性值来获得xinput设备的Vendor Name(或Manufacturer):VENDORudevadm info

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

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

XOrg配置

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

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

感谢@斯特凡@Daniel@ ManuelSchneid3r


1
xinput list在一行中显示供应商名称和产品名称,仅用空格字符分隔。在我的情况下,它是TrulyErgonomic.com Truly Ergonomic电脑键盘,而不是Truly Ergonomic电脑键盘。但是MatchProduct似乎可以同时使用以下字符串:供应商和产品名称(如所列出xinput list)或仅产品名称(如所列出udevadm)。
erik 2015年

1

MatchProduct "Product Name"与Stephane建议的输出不兼容lsusb -v | grep -e idProduct -e idVendor。我刚刚测试过。

xinput list 输出适用于的正确字符串 MatchProduct


是否同时xinput list列出供应商和产品?您知道如何算出哪个吗?
Sparhawk

2
@Sparhawk xinput list显示产品名称,但不显示供应商名称。udevadm info显示供应商名称,但不显示产品名称。
Christopher

@Christopher我实际上不记得我为什么需要此信息,但是感谢您的答复,希望它能对其他人有所帮助。
Sparhawk

@Christopher:不,请xinput list在一行中同时显示供应商名称和产品名称,并用空格分隔。我需要使用@DanielK的答案来仅查找产品名称。但是udevadm显示_而不是空格。较容易使用的可能是使用或找到的MatchUSBIDlsusblsusb -v
erik 2015年

好吧,我只是测试它:它的工作原理都与整个字符串xinput list,这是供应商和产品名称(至少在我的情况),并且只有产品名称(这是我从拿到udevadm更换_用空格字符。
埃里克

1

我发现以下命令对于查找与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

但这会用_而不是空格列出产品名称。在我的情况下,它是Truly_Ergonomic_Computer_Keyboard而不是Truly Ergonomic计算机键盘xinput list正确显示它,但是供应商和产品名称一起显示在一行中。
erik 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.