【问题标题】:Tracing Input/Event Flow from Driver to APP跟踪从驱动程序到 APP 的输入/事件流
【发布时间】:2010-12-02 23:18:39
【问题描述】:

我正在为一个自定义输入硬件创建一个驱动程序,该驱动程序将尝试将数据作为输入传递给内核,然后内核将通过操作系统向上传递并通过 MotionEvent 暴露给应用程序级别。查看其他一些设备驱动程序,看起来通过 Android 2.2 内核(2.6.32)的 input.h 中公开的一些函数设置输入事件可能会奏效,但我很想确认这一点。在开始这条道路之前,我试图更好地了解现有输入(无论是来自屏幕、轨迹球等)是如何通过操作系统传递的。最终目标是确保我们可以将数据从设备传递到应用程序级别,然后再花费太多时间走这条路。

linux kernel 2.6.32的输入头

http://lxr.free-electrons.com/source/include/linux/input.h?v=2.6.32

我浏览了 Android 类的源代码,但不确定在哪里可以看到操作系统如何实例化 MotionEvent 类,该类可以通过 View 类的 onTouchEvent() 方法访问。谁能指出我在操作系统如何填充 MotionEvent 以及操作系统如何从内核获取数据方面的正确方向?

谢谢,

保罗

【问题讨论】:

    标签: android input driver motion


    【解决方案1】:

    我首先会在 frameworks/base/libs/ui/EventHub.cpp 中查看,它将通过 /dev/input 查找您平台上的不同输入设备以及这些输入的“种类” .

    更多...

    下一步是在 frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp 和 frameworks/base/services/java/com/android/server/KeyInputQueue.java 中。

    如果您所做的只是为新硬件实现输入接口,我认为您不需要做任何进一步的事情......

    【讨论】:

    • 是的,谢谢,这是一个很好的开始!现在我正在尝试在 EventHub.cpp 和 Java MotionEvent 之间建立连接......花了几个小时挖掘代码,我看到一个名为 RawInputEvent 的类,它声明了一堆似乎与 EventHub.cpp 共享的静态值,但是我无法确定 MotionEvent(相对于 View 类)如何传递到 View.onTouchEvent()
    猜你喜欢
    • 2010-12-22
    • 2017-08-26
    • 1970-01-01
    • 2012-06-12
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多