在/ dev / input / eventX中编写事件需要什么命令?

时间:2016-04-02 11:12:01

标签: android linux linux-kernel android-ndk

我正在开发一个需要将触摸事件发送到/ dev / input / eventX的 android 应用。我知道执行此类操作的C代码结构如下:

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

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

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

在您的计算机上试试这个:

adb shell input tap 200 300

或者在Android设备shell上:

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)