【问题标题】:What are the commands needed to write events in /dev/input/eventX?在 /dev/input/eventX 中写入事件需要哪些命令?
【发布时间】:2016-07-22 05:08:17
【问题描述】:

我正在开发一个需要向 /dev/input/eventX 发送触摸事件的 android 应用。我知道C做这样的事情的代码结构如下:

struct input_event {
    struct timeval time;
    unsigned short type;
    unsigned short code;
    unsigned int value;
};

要使用这样的代码,我需要设置NDK。相反,我想在 android 中使用 Runtime.getRunTime.exec () 运行等效的 linux 命令,而无需使用 NDK。有没有办法做到这一点?

如果不是,发送事件所需的C 代码的其余部分是什么?例如,如何将 x=200 和 y=300 的触摸事件发送到 event0?我搜索并没有找到明确的解决方案。

谢谢。

【问题讨论】:

  • 除非您在有根设备或您自己的自定义 ROM 上运行,否则您的应用无法生成虚假输入数据。
  • @CommonsWare 谢谢,我的设备已经root了,我该怎么办?
  • 当你使用搜索引擎搜索android rooted device fake user input时,你学到了什么?
  • @CommonsWare 我已经搜索和测试了超过 3 周。我找到了仪器并尝试过,但它在应用程序的上下文之外失败了。我试过 /system/bin/input tab x y,但它什么也没做。我试过 sendevent /dev/input/eventX 也没有做任何事情。然后,我发现写入/dev/input/eventX需要c代码,但是我不想用NDK,我想在我的应用程序中使用linux命令,我没有找到这样的命令。请帮帮我,该怎么做?

标签: android linux linux-kernel android-ndk


【解决方案1】:

我不清楚为什么需要直接将事件发送到/dev/input/eventX。但是如果它可以通过adb发送,你可以向设备注入许多类型的事件。

在你的电脑上试试这个:

adb shell input tap 200 300

或者在你的安卓设备外壳上:

input tap 200 300

但由于外部注入,延迟较高。

有关input 命令的更多信息请参见此处。

Usage: input [<source>] <command> [<arg>...]

The sources are: 
      mouse
      keyboard
      joystick
      touchnavigation
      touchpad
      trackball
      stylus
      dpad
      touchscreen
      gamepad

The commands and default sources are:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2015-01-30
    • 2020-10-02
    • 2020-06-26
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多