输入事件录制与回放

简介: 厂商的不同,输入事件的设备节点不一样等,都可能会导致 sendevent 能否正常使用的原因。 首先通过如下命令查看设备中含有的所有输入设备信息:shell@PD1613:/proc $ cat /proc/bus/input/devicesca...

<b>厂商的不同,输入事件的设备节点不一样等,都可能会导致 sendevent 能否正常使用的原因。 </b>

首先通过如下命令查看设备中含有的所有输入设备信息:

shell@PD1613:/proc $ cat /proc/bus/input/devices
cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="qpnp_pon"
P: Phys=qpnp_pon/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=bbk_drivers_log event0
B: PROP=40
B: EV=3
B: KEY=140000 0 0 0

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="gpio-keys"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/soc/soc:gpio_keys/input/input1
U: Uniq=
H: Handlers=bbk_drivers_log event1
B: PROP=0
B: EV=3
B: KEY=40000000 0 0 0 0 0 0 10000 0 0 0 0 0 0 0 0 0 0 0 0 80000 0 0 0

I: Bus=0018 Vendor=dead Product=beef Version=28bb
N: Name="goodix-ts"
P: Phys=l??
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=sysrq mdss_fb kgsl event2
B: PROP=2
B: EV=b
B: KEY=16000000 0 0 8000 680 0 44002 41060000
B: ABS=2658000 0

其中, 字段含義如下:

I line:这行包含身份信息,显示了 bus type 是 3 (usb), vendor, product, version等信息。
N line:这行包含了名字信息。
P line:这行包含了物理设备信息。
H line: 这行包含了与设备关联的 handler drivers。
B line: 这些行包含了显示设备能力的一些位域 (bitfield)。

常見proc信息獲取方式:

$ cat /proc/cpuinfo                    // 查看CPU信息
$ cat /proc/meminfo                  // 查看内存信息
$ cat /proc/bus/usb/devices      // 查看USB设备  (lsusb)
$ cat /proc/bus/input/devices    // 查看键盘和鼠标等輸入設備 
$ cat /proc/interrupts                 // 查看中断信息

通過如下命令可以獲取當前設備的輸入事件日志

$ getevent -l

通过上述命令可以获得当前屏幕,按键的事件,同时android也提供将这些事件回放给设备的方式即 sendevent 命令,格式如下:

# sendevent [/dev/input/event2] <事件类型> <事件名称> <参数>
比如
$ sendevent /dev/input/event2  3  114 1    // KEY_VOLUMEDOWN  KEY_DOWN
$ sendevent /dev/input/event2  0  0  0      // EV_SYN   SYN_REPORT

如上述样例,每条 sendevent 都需要通过 EV_SYN 事件将 KEY 事件提交给系统。

<b>如文章开始提到的,sendevent 命令需要注意 设备节点是否是当前设备的输入节点等,否则都会导致执行无效。
不同厂商的不同产品都可能不一样,其适配量比较大</b>

目录
相关文章
|
搜索推荐 Python
将微信聊天做成滚动视频,聊天记录滚动播放
Python实现滚动聊天记录视频制作教程
|
语音技术
FreeSwitch中音乐功能保持和静音回铃声怎样设置
FreeSwitch中音乐功能保持和静音回铃声怎样设置
|
4月前
|
测试技术 人机交互
鼠标录制程序
【7月更文挑战第28天】
35 3
|
6月前
|
JavaScript
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
214 0
|
小程序 C++
Easyx趣味编程7,鼠标消息读取及音频播放
Easyx趣味编程7,鼠标消息读取及音频播放
134 0
|
存储 运维 Windows
SmartAuditor 录像灵异事件的解决
SmartAuditor 录像灵异事件的解决
113 0
|
Android开发
logcat信息一闪而过,或者不停多闪烁的主要原因
logcat信息一闪而过,或者不停多闪烁的主要原因
|
存储 缓存 小程序
如何实现游戏中的在线计时器和离线计时器
本文包含了游戏中两种计时器的实现原理和实现方法,皆在帮助你彻底的搞懂游戏开发中的计时器。 如果你没有任何的游戏开发经验,欢迎观看我的“人人都能做游戏”系列视频教程,它会手把手的教你做出自己的第一个小游戏。 在游戏中经常会有需要倒计时的需求,例如倒计时 10 分钟可以获得 1 点体力,倒计时 1 小时后可以开启一个宝箱,或者是根据游戏的计时获得奖励等等。
304 0
|
Web App开发 存储 前端开发
Canvas实时回显和录制
Canvas实时回显和录制
456 0
Canvas实时回显和录制