日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android sendevent/getevent 用法

發布時間:2025/3/15 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android sendevent/getevent 用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

源文;https://blog.csdn.net/kickxxx/article/details/7482392

getevent/sendevent源碼

這兩個命令的源碼在system/core/toolbox/下,sendevent.c getevent.c

getevent

使用getevent獲得/dev/input/eventX設備匯報的事件,這個命令還會輸出所有event設備的基本信息,如下:

add device 1: /dev/input/event1
? name:???? "mxc_ts"
add device 2: /dev/input/event0
? name:???? "mxckpd"

表明系統有兩個event設備,分別對應著input設備touchscreen,keyboard

?

Android可以使用sendevent來模擬觸屏,鍵盤以及其他類型的event事件,

sendevent /dev/input/eventX type code value

/dev/input/eventX 對應一個event設備,可以通過getevent獲得可用的event設備

type, code, value的定義可參看kernel/include/linux/input.h

?

type如下定義

?

  • /*
  • * Event types
  • */
  • #define EV_SYN 0x00
  • #define EV_KEY 0x01
  • #define EV_REL 0x02
  • #define EV_ABS 0x03
  • #define EV_MSC 0x04
  • #define EV_SW 0x05
  • #define EV_LED 0x11
  • #define EV_SND 0x12
  • #define EV_REP 0x14
  • #define EV_FF 0x15
  • #define EV_PWR 0x16
  • #define EV_FF_STATUS 0x17
  • #define EV_MAX 0x1f
  • #define EV_CNT (EV_MAX+1)

  • 一般來說,常用的是EV_KEY, EV_REL, EV_ABS, EV_SYN

    ?

    分別對應keyboard, 相對坐標, 絕對坐標, 同步事件

    ?

    EV_SYN則表示一組完整事件已經完成,需要處理,EV_SYN的code定義事件分發的類型

    EV_SYN對應的code如下

    ?

  • /*
  • * Synchronization events.
  • */
  • #define SYN_REPORT 0
  • #define SYN_CONFIG 1
  • #define SYN_MT_REPORT 2

  • EV_KEY的code比較多,這里就不列出來了,可參照input.h

    ?

    ?

    EV_REL對應的code

  • /*
  • * Relative axes
  • */
  • #define REL_X 0x00
  • #define REL_Y 0x01
  • #define REL_Z 0x02
  • #define REL_RX 0x03
  • #define REL_RY 0x04
  • #define REL_RZ 0x05
  • #define REL_HWHEEL 0x06
  • #define REL_DIAL 0x07
  • #define REL_WHEEL 0x08
  • #define REL_MISC 0x09
  • #define REL_MAX 0x0f
  • #define REL_CNT (REL_MAX+1)

  • EV_ABS對應的code

    ?

    ?

  • /*
  • * Absolute axes
  • */
  • #define ABS_X 0x00
  • #define ABS_Y 0x01
  • #define ABS_Z 0x02
  • #define ABS_RX 0x03
  • #define ABS_RY 0x04
  • #define ABS_RZ 0x05
  • #define ABS_THROTTLE 0x06
  • #define ABS_RUDDER 0x07
  • #define ABS_WHEEL 0x08
  • #define ABS_GAS 0x09
  • #define ABS_BRAKE 0x0a
  • #define ABS_HAT0X 0x10
  • #define ABS_HAT0Y 0x11
  • #define ABS_HAT1X 0x12
  • #define ABS_HAT1Y 0x13
  • #define ABS_HAT2X 0x14
  • #define ABS_HAT2Y 0x15
  • #define ABS_HAT3X 0x16
  • #define ABS_HAT3Y 0x17
  • #define ABS_PRESSURE 0x18
  • #define ABS_DISTANCE 0x19
  • #define ABS_TILT_X 0x1a
  • #define ABS_TILT_Y 0x1b
  • #define ABS_TOOL_WIDTH 0x1c
  • #define ABS_VOLUME 0x20
  • #define ABS_MISC 0x28
  • #define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
  • #define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
  • #define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
  • #define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
  • #define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
  • #define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
  • #define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
  • #define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
  • #define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
  • #define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
  • #define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
  • #define ABS_MAX 0x3f
  • #define ABS_CNT (ABS_MAX+1)


  • input keyevent

    ?

    如果想模擬按鍵,send event用起來比較繁瑣,可以用input keyevent代替

    下面是input keyevent幾個比較常用的用法:

    ?

    input keyevent 3??? // Home

    input keyevent 4??? // Back

    input keyevent 19? //Up

    input keyevent 20? //Down

    input keyevent 21? //Left

    input keyevent 22? //Right

    input keyevent 23? //Select/Ok

    input keyevent 24? //Volume+

    input keyevent 25? // Volume-

    input keyevent 82? // Menu 菜單

    ?

    用senevent 模擬觸屏事件

    sendevent /dev/input/event1 0003 0000 0000015e??? // ABS x 坐標

    sendevent /dev/input/event1: 0003 0001 000000df??? // ABS y 坐標

    sendevent /dev/input/event1: 0001 014a 00000001 ? // BTN touch事件 值為1

    sendevent /dev/input/event1: 0003 0018 00000000?? // ABS pressure事件

    sendevent /dev/input/event1: 0001 014a 00000000?? // BTN touch事件 值為0

    sendevent /dev/input/event1: 0000 0000 00000000?? // sync事件

    轉載于:https://www.cnblogs.com/senior-engineer/p/9267311.html

    總結

    以上是生活随笔為你收集整理的Android sendevent/getevent 用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。