我正在尝试检测何时按下 USB 相机的快照按钮。
以下是我收集的有关相机的信息cat /proc/bus/input/devices
:
I: Bus=0003 Vendor=0c45 Product=6353 Version=0150
N: Name="USB Microscope"
P: Phys=usb-3f980000.usb-1.3/button
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/input/input14
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0 0 0 0
像往常一样,没有关于我的特定型号的文档或标识:)
我尝试使用 监听 /dev/input/event0 cat /dev/input/event0
,但是,与鼠标或键盘不同,我没有看到任何结果。我还尝试用 python 模块 evdev 监听这个处理程序,但没有成功......
有人对这个案子有线索吗?
答案1
如果明确说明input14
(在特定启动后的配置中,编号可以更改),那么当然看event0
不会显示任何内容。
1)evtest
以root身份运行,看看你是否可以通过查看描述找出它是哪个设备,并听它(我的USB网络摄像头产生KEY_CAMERA
)。
2) 运行xev
,将光标移到窗口中,查看事件是否出现(我的 USB 网络摄像头出现XF86WebCam
)。
3) 您可能需要使用或类似的程序激活您的相机luvcview
以使其产生事件。
4) 如果您决定使用输入层接口,请查看/dev/input/by-id
,如果没有条目,请/dev/input/by-path
查看指向event*
设备的符号链接,这些符号链接保证在整个启动过程中保持不变。
答案2
运行 vlc (或类似的)并从网络摄像头视频设备开始视频捕获。如果没有它,我从按钮上看不到 evtest 和 xev 的事件。