【问题标题】:Android phone as computer mouseAndroid手机作为电脑鼠标
【发布时间】:2011-04-20 18:07:43
【问题描述】:

我创建了一个 Android 应用程序,它将触摸屏传感器数据提供给在 Debian Lenny 机器上侦听的 Java 客户端。

客户端将此数据映射到屏幕上的位置,就像 wacom pad 一样。我想将 x_loc 和 y_loc 放到一个文件中,并将该文件识别为一个设备。(我相信这是它应该的工作方式)

我有使用 Linux 的经验,但以前没有创建过设备。我如何告诉 Linux 这个文件是一个鼠标。我必须创建驱动程序吗?

【问题讨论】:

    标签: android io debian


    【解决方案1】:

    有很多方法可以做到这一点,包括编写实际的设备驱动程序、重写 X 客户端以生成 X 事件(例如使用 XTest 扩展),以及使用内核接口注入输入子系统事件。

    我会选择最后一个并使用uinput 子系统。这是几乎所有最新内核的一部分并提供/dev/uinput,您可以定期打开它并执行各种ioctls 以从常规用户空间创建输入设备。

    另请注意,一些机制已经存在。在 Linux 上运行良好的蓝牙人机接口设备就是一个例子。 rinputd,一个监听 rinput 客户端并根据它们发送的数据生成 uinput 事件的守护进程。是另一个。您可能需要考虑将您的 Android 应用程序用作 rinput 客户端。

    【讨论】:

      【解决方案2】:

      您可以编写一个 linux 设备驱动程序来将您的数据解释为真正的鼠标,或者您可以说服 X 服务器(或其他任何东西)接受来自其他东西的输入,例如命名管道。

      实际的设备文件不是包含任何内容的文件——它们只是对用于与内核中的驱动程序通信的主要和次要编号的引用,该驱动程序可以在某些设备上执行类似文件的模糊选项。您可以使用 mknod 创建设备文件,但在得到具有匹配编号的内核驱动程序支持之前,它们将无法工作。相信现在有一些存根机制,因此大部分实际驱动程序可以在用户空间中运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-09
        • 2012-12-08
        • 2014-05-05
        • 1970-01-01
        • 2021-07-21
        • 2012-04-07
        相关资源
        最近更新 更多