美文网首页Inside Appium
输入事件录制与回放

输入事件录制与回放

作者: 走在成长的道路上 | 来源:发表于2017-06-28 11:16 被阅读0次

    <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>

    相关文章

      网友评论

        本文标题:输入事件录制与回放

        本文链接:https://www.haomeiwen.com/subject/mdxucxtx.html