书签 分享 收藏 举报 版权申诉 / 8

一种整合WINE与ANDROID鼠标输入的方法.pdf

  • 上传人:t****
  • 文档编号:1037847
  • 上传时间:2018-03-27
  • 格式:PDF
  • 页数:8
  • 大小:421.85KB
  • 摘要
    申请专利号:

    CN201110173748.8

    申请日:

    2011.06.24

    公开号:

    CN102364434A

    公开日:

    2012.02.29

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20110624|||公开

    IPC分类号:

    G06F9/44

    主分类号:

    G06F9/44

    申请人:

    浙大网新科技股份有限公司

    发明人:

    毛德操; 王承志; 徐鼎鼎; 陈天洲; 邵景程

    地址:

    310030 浙江省杭州市三墩西园八路1号浙大网新软件园A楼15层

    优先权:

    专利代理机构:

    杭州宇信知识产权代理事务所(普通合伙) 33231

    代理人:

    张宇娟

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种整合Wine与Android鼠标输入的方法,主要针对在Android系统中执行普通的Linux应用程序时发生的鼠标输入事件进行处理,其处理过程包括以下步骤:创建一个代理进程WineProxy接收所述鼠标输入事件;在TinyX中切断从内核获取鼠标输入的途径;在TinyX和WineProxy之间建立通信连接;发生鼠标输入事件,WineProxy通过所述通信连接向TinyX发出事件通知;TinyX将接收所述事件通知后,将其封装成TinyX格式的消息后发送至应用程序进程进行处理。

    权利要求书

    1: 一种整合 Wine 与 Android 鼠标输入的方法, 主要针对在 Android 系统中执行普通的 Linux 应用程序时发生的鼠标输入事件进行处理, 其特征在于, 其处理过程包括以下步骤 : 步骤 1, 创建一个代理进程 WineProxy 接收所述鼠标输入事件 ; 步骤 2, 在 TinyX 中切断从内核获取鼠标输入的途径 ; 步骤 3, 在 TinyX 和 WineProxy 之间建立通信连接 ; 步骤 4, 发生鼠标输入事件, WineProxy 通过所述通信连接向 TinyX 发出事件通知 ; 步骤 5, TinyX 将接收所述事件通知后, 将其封装成 TinyX 格式的消息后发送至应用程 序进程进行处理。

    说明书


    一种整合 Wine 与 Android 鼠标输入的方法

        【技术领域】
         本发明涉及智能移动终端领域, 更具体的说, 涉及一种整合 Wine 与 Android 鼠标 输入的方法。背景技术
         以手机为代表的智能化移动终端是计算机技术一个重要发展方向, 因此市场竞争 非常激烈。谷歌公司和开放手机联盟推出 Android 操作系统和基于此系统的手机以来, 基 于 Android 系统的手机市场份额不断增多, 因此越来越多的用户体验问题被关注。
         所谓 Android 操作系统, 实际上是对 Linux 操作系统的一种改编和扩充, 它的内 核是经过修改的 Linux 的内核, 但是在用户空间却专门针对例如手机的移动终端设备的应 用特点作了大幅的改进和增强, 这些改动大都与编程模式和图形界面, 即图形化用户界面 (GUI) 有关。
         在带图形界面的 Linux 操作系统中, 有关图形界面的功能由 X 视窗系统提供, 而鼠 标输入也是图形界面功能的一部分。运行着应用软件的进程都不直接读取鼠标输入, 而是 通过进程间通信从 X 服务进程 (Xserver) 获取输入。人机交互的输入先由本系统中唯一的 Xserver 读取, 由 Xserver 统一加以前期处理, 然后根据屏幕上光标的当前位置以及当前处 于 “聚焦” 状态的视窗配送给合适的进程 / 线程。此处所说的前期处理可简可繁, 简单的处 理由 X 视窗本身加以实施, 复杂的处理则要由外挂的程序模块加以处理, 而鼠标输入处理 就属于这样的外挂程序模块。所以, 用于 Linux 应用的鼠标输入处理实际上是为 X 视窗的 鼠标输入处理。
         X 视窗属于另一个开源软件项目, 早在 Unix 时代即已存在。由于 Linux 系统大多 离不开图形界面, X 视窗实际上已经成了 Linux 操作系统的一部分。为适应移动终端和其 它嵌入式系统的需要, 技术人员将 X 视窗加以裁剪、 缩编、 简化, 成为一个小型化的版本, 称 为 TinyX。因此 TinyX 是专门与嵌入式 Linux 配对使用的 X 视窗系统, 所以也将手机上的 Linux 应用而开发的鼠标输入处理程序称为 TinyX 鼠标出入处理程序。
         可是, 在 Android 系统中, 却甩开 TinyX, 包括鼠标输入处理在内的所有图形界面 功能全都由 Android 自己提供。同样, Android 也有自己类似于 TinyX 那样的集中处理和 配送输入信息的机制。使得如果需要在 Android 手机上运行普通的 Linux 应用, 鼠标输入 的处理就成为一个问题。这是因为, Linux 应用必须与 TinyX 配套运行, 而用了 TinyX, 就只 能使用与其配套的 TinyX 鼠标输入处理程序, 可是所有的 Android 应用却只能继续使用由 Android 提供的鼠标输入处理程序。这样, 就会形成 TinyX 和 Android 同时共存的局面, 此 时来自触摸式屏幕和其它输入设备的物理状态信息不再由唯一的实体加以统一处理和配 可能会有争抢输入信息的情况发生 ; 其次, 即使不发生 送, 会造成以下两方面的问题。 首先, 争抢输入信息的情况, 使用者也可能只好在与 Android 应用交互时采用一种鼠标输入处理 程序, 而在与 Linux 应用交互时采用另一种鼠标输入处理程序, 由于两者在功能和性能上 的差异, 会给用户体验带来不便。把 Wine 移植到 Linux 平台后, 基于 Windows 操作系统的 WinCE/WM 应用软件可在 Linux 平台运行, 因此同样存在 TinyX 与 Android 争抢 Wine 应用程序鼠标输入的问题。发明内容
         有鉴于此, 本发明的目的在于提供一种整合 Wine 与 Android 鼠标输入的方法, 使 得 Android 成为统一接收、 处理、 配送鼠标输入信息的唯一实体, 向在 Android 手机上运行 的 Linux 应用提供鼠标输入信息, 让使用者不需要在同一台手机上因为要与不同的应用交 互而使用不同的鼠标输入处理程序。
         依据本发明一实施例的一种整合 Wine 与 Android 鼠标输入的方法, 主要针对在 Android 系统中执行普通的 Linux 应用程序时发生的鼠标输入事件进行处理, 其处理过程 包括以下步骤 :
         步骤 1, 创建一个代理进程 WineProxy 接收所述鼠标输入事件 ;
         步骤 2, 在 TinyX 中切断从内核获取鼠标输入的途径 ;
         步骤 3, 在 TinyX 和 WineProxy 之间建立通信连接 ;
         步骤 4, 发生鼠标输入事件, WineProxy 通过所述通信连接向 TinyX 发出事件通 知; 步骤 5, TinyX 将接收所述事件通知后, 将其封装成 TinyX 格式的消息后发送至应 用程序进程进行处理。
         依照以上技术方案实现的整合 Wine 与 Android 鼠标输入的方法, 鼠标输入就会 统一流经由 Android 提供的鼠标处理程序和配送机制, 先由代理进程加以接收, 再转发给 TinyX, 最后到达运行着的 Linux 应用进程, 整个过程中只有一套鼠标输入信息的处理和配 送机制, 从而实现 Wine 与 Android 鼠标输入整合。
         附图说明
         图 1 所示为整合 Wine 与 Android 鼠标输入系统基本结构示意图 ;
         图 2 所示为整合 Wine 与 Android 鼠标输入的软件结构示意图 ;
         图 3 所示为整合 Wine 与 Android 鼠标输入处理流程图。 具体实施方式
         以下结合附图对本发明的优选实施例进行详细描述, 但本发明并不仅仅限于这些 实施例。本发明涵盖任何在本发明的精髓和范围上做的替代、 修改、 等效方法以及方案。为 了使公众对本发明有彻底的了解, 在以下本发明优选实施例中详细说明了具体的细节, 而 对本领域技术人员来说没有这些细节的描述也可以完全理解本发明。
         参考图 1, 所示为整合 Wine 与 Android 鼠标输入系统基本结构示意图, 图中水平虚 线表示用户空间与系统空间的分界, 虚线以上为用户空间, 虚线以下为系统空间, 即 Linux 内核 140。WinCE/WM 应用进程 120 包括 WinCE/WM 的 EXE 映像 121 和 Wine 动态链接库 122。 除运行 WinCE/WM 应用进程 120 之外, 系统中至少还有两个进程, 一个是 Wineserver110, 即 Wine 服务器进程 ; 另一个是 Xserver130, 即 TinyX 服务器进程。WinCE/WM 应用进程 120 之 所以能在 Linux 内核上运行, 是因为有 Wineserver110 和 Wine 动态链接库 122 的支持。而WinCE/WM 应用进程 120 之所以能获取鼠标器输入, 之所以能在屏幕上显示图形, 是因为有 Xserver130 的存在。 在常规的 Linux 系统中, 来自鼠标器的输入全部为 Xserver 所截获, 再 由 Xserver 分发给当前受到聚焦的进程。
         参考图 2, 所示为整合 Wine 与 Android 鼠标输入的软件结构示意图。整合 Wine 与 Android 鼠标输入对原有 Android 系统的修改主要涉及以下三部分。其中在用于管理应用 程序的子系统中修改 comctl32.dll 和 winex11.drv.dll 的相应源代码, 增加下述功能, 在 comctl32.dll 中添加可以判断是否需要弹出辅助输入框的功能, 使其可以根据鼠标点击的 位置判断该点击是否需要在屏幕上弹出辅助输入框作为响应, 在 winex11.drv.dll 中添加 一个 api 函数, 使 Wine 可以向 Xserver 发出弹出辅助输入框的请求。
         本实例系统采用 TinyX 作为系统中的 Xserver。对 TinyX 的修改主要集中在切断 从内核获取鼠标输入的途径。具体的说, 将原先 TinyX 中从系统内核获取鼠标点击输入的 代码修改为通过 socket 从 WineProxy 处获取相应的鼠标输入行为。
         WineProxy 为本发明在 Android 系统中新建立的一个任务。WineProxy 需要实现 的功能包括监控屏幕上的鼠标点击操作, 记录鼠标点击操作的类型和具体的位置信息, 并 将其封装成 X11 系统标准的信息格式。此外系统中还需要实现用于应用程序与 TinyX 和 WineProxy 之间通讯的 Socket, 及其相应的通讯协议。
         WineProxy 模块从屏幕读取鼠标的操作, 并将其信息存储在缓冲区中, 再将缓冲区 中的鼠标操作信息通过 Socket 发送给 TinyX 进行处理 ; TinyX 负责鼠标输入的具体处理, 将从 WineProxy 获取的鼠标操作的信息封装成符合 X 标准规范的信息格式, 并将此信息通 过 Socket 发送到 Winex11.drv.dll 进行处理, Winex11.drv.dll 模块负责将 TinyX 发出的 鼠标输入请求转换为可以被 comctl32.dll 识别的格式, 并将 comctl32.dll 的请求转换为 标准的 TinyX 命令格式。
         参考图 3, 所示为整合 Wine 与 Android 鼠标输入处理流程图。
         以下以 Android 系统中的软键盘输入过程作为实例, 具体说明本发明的方法如何 实际应用于 Android 系统中的鼠标输入过程中, 实现对鼠标输入的整合功能。
         步骤 301, 等待屏幕上的点击, 进入步骤 302 ;
         由于软键盘输入在 Android 系统中的多个任务中都会采用, 而且运行的时间并不 固定, 因此系统需要随时监控用户在屏幕上的点击行为 ;
         步骤 302, WineProxy 将此事件通过 Socket 发送给 TinyX, 进入步骤 303 ;
         当用户点击屏幕后, WineProxy 中的 onTouchEvent() 方法得到调用。该方法将用 户的点击封装为系统内的一个事件, 并记录下点击的具体类型和位置的信息, 用于以后的 操作 ;
         步骤 303, TinyX 将此事件转换为 X11 协议格式, 将其转发给应用进程, 进入步骤 304 ;
         WineProxy 将封装好的事件通过 socket 发送给 Xserver, 在本实例系统中, 即 TinyX, 此时发送的信息并不符合 X11 协议所定义的格式 TinyX 将此事件通知转换成 X11 协 议所规定的格式, 并将其转发给应用进程, 这个事件与 TinyX 获知鼠标状态发生变化时的 事件等价, 包括点击类型, 点击的具体位置等信息 ; TinyX 将转化后的点击事件通过 socket 发送给应用进程的 winex11.drv.dll ;步骤 304, Winex11.drv.dll 接收到来自 TinyX 的事件后, 将其转发给 comctl32. dll, 进入步骤 305 ;
         应用进程中的 Winex11.drv.dll 接收到来自 TinyX 的事件后, 判断出其为鼠标点 击事件, 随后将其上交给上层的 comctl32.dll 处理 ;
         步骤 305, 判断点击是够落在可编程控件中, 如果是, 进入步骤 306, 如果否, 返回 步骤 301,
         上层的 comctl32.dll 通过封装转换后的 X11 事件判断此时的光标是否落在某个 可编辑的控件中, 如果是点击的位置属于不可编辑的区域, 就忽略这次的鼠标点击操作, 系 统状态跳回到步骤 301, 继续等待用户在屏幕上的鼠标点击操作 ;
         步骤 306, 调用 Winex11.drv.dll 的 API 函数, 要求弹出输入框, 进入步骤 307 ;
         如 果 comctl32.dll 判 断 鼠 标 点 击 的 位 置 属 于 某 个 可 编 辑 的 控 件 中, 就调用 Winex11.drv.dll 提供的相应 API 函数, 发出弹出软键盘的请求 ;
         步骤 307, 等待输入框上的点击输入, 进入步骤 308 ;
         步骤 308, 判断是否点击不可编辑区域, 如果是, 进入步骤 309, 如果否, 进入步骤 310 ; 步骤 309, 关闭输入框, 并返回步骤 301 ;
         步 骤 310, WineProxy 从 PosView 的 缓 冲 区 中 获 取 点 击 的 位 置, 将其发送给 XServer, 进入步骤 311 ;
         步骤 311, XServer 收到点击的位置, 将其转发给应用进程的 Winex11.drv.dll, 进 入步骤 312 ;
         步骤 312, Winex11.drv.dll 向应用进程发送 WM_POS 消息, 进入步骤 313 ;
         步骤 313, 应用程序接收 WM_POS 消息, 返回至步骤 307。
         值得注意的是, 上述过程还可以优化, 将来可以将 TinyX 从这个过程中排除出去, 让应用进程通过 Winex11.drv.dll 直接与 WineProxy 通信, 降低系统相应鼠标操作的通讯 延时, 改善系统的用户体验。
         本说明书选取并具体描述这些实施例, 是为了最好地解释本发明的原理和实际应 用, 从而使所属技术领域技术人员能最好地利用这个发明。修改的实施例同样也适用于预 期的特定应用。本发明的范围为权利要求书全部范围以及其等效物。
        

    关 键  词:
    一种 整合 WINE ANDROID 鼠标 输入 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种整合WINE与ANDROID鼠标输入的方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1037847.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1