面向大幅面交互式桌面的多用户窗口系统的制作方法

文档序号:6423955阅读:181来源:国知局
专利名称:面向大幅面交互式桌面的多用户窗口系统的制作方法
技术领域
本发明属于计算机系统领域,涉及人机交互技术,特别涉及大幅面交互式桌面上 的多用户窗口系统。
背景技术
近年来,交互式桌面技术得到越来越广泛的关注,它允许一个或者多个用户在水 平显示的表面上直接使用多点触摸进行输入,大幅面的交互桌面更是为多用户模式下的便 捷人机交互提供了应用平台。窗口系统位于用户和计算机系统之间,向用户提供了统一的桌面环境。在窗口系 统下,应用程序的界面以窗口的形式展现给用户,多个窗口可以同时显示与隐藏。这一特性 使得用户可以方便的调动系统下的各种资源,处理不同的任务。目前,几乎所有台式计算机 上都配备窗口系统,如PC上的Microsoft Windows,Mac上的Mac OS X。可以说,正是窗口 系统的出现,才使得计算机真正走入了每个人的生活。针对交互式桌面这一新型设备,拥有 一个合适的窗口系统,将是交互桌面能够流畅工作的前提。针对面向交互式桌面的窗口系统,现有的实现方法包括对已有窗口系统进行增强 以及开发全新窗口系统这两类。其中第一类主要基于开源的XWindow系统进行开发,典型 的工作包括MPX和Mettise;第二类是目前主流的研究方向,它能够突破传统窗口系统的限 制,具有更强的灵活性,属于该类的工作包括基于C#的SurfaceSDK,基于Python的PyMT 等,本发明提出的技术在窗口系统的实现中属于第二类。MPX是一个基于X Window开发的新型窗口系统,它允许多个用户与传统的窗口程 序以及新型的可接受多点输入的窗口程序进行并发交互。从实现上,MPX修改了 X Server 的输入子系统,将不同输入设备的输入事件发送到其焦点所在的窗口中。输入事件同时包 含了 X Window原有的核心事件,以及带有输入设备ID的扩展输入事件。基于MPX开发的窗 口程序可以选择接受扩展输入事件,进而对并发的输入作出反应。然而他的局限是仍然过 于依赖台式计算机的运行环境——垂直的显示屏幕和基于鼠标的非直接输入。这使得MPX 无法很好的运行在交互式桌面上。Mettise也是一个基于X Window开发的新型窗口系统。它使用了图像融合的技术 来帮助研究人员探索窗口的各种变换效果。特别的,它允许窗口自由的旋转,从而能解决交 互式桌面水平显示所带来的观察角度不一的问题。此外,Mettise还探索了面向交互式桌 面的窗口管理技术,它将整个显示表面切分为上下两块,当窗口位于上半部分时,将自动旋 转180度,而当窗口位于上下区域的分割线上时,将根据分割的位置调整窗口至适当角度。 这种窗口自动旋转的方式使多人可以围绕桌子四周开展工作,而不受视角的影响。然而,与 MPX类似,Mettise的输入方式仍然是基于鼠标的,因而不能支持多用户并发的直接交互。SurfaceSDK是一款直接面向Microsoft Surface的应用程序开发工具包。基于 该工具包开发人员可以开发支持多点输入的图形化应用程序。同时SurfaceSDK还提供了 一个软件环境供用户在这些应用程序间切换。用户可以在一个浏览界面打开新的程序,而当进入了应用程序后,其四周拥有四个可以使用户返回到浏览界面的按钮。这样的软件系 统为交互式桌面的连贯使用提供了便利,然而用户无法同时在桌面上启动两个已有应用程 序,并进行并发交互,这极大的限制了它在幅面较大的桌面环境中的使用。PyMT是基于Python和OpenGL的应用程序开发工具包,它提供了一个类似于窗口 系统的软件环境,供用户启动应用程序。每个启动的应用程序会被置于一个矩形的窗口中, 该窗口可以被旋转、缩放、关闭和最大化。同时,PyMT允许多个应用程序并行的显示和交互, 这为桌面的可用性带来了极大的提升。然而与一个成熟的窗口系统相比,PyMT的软件环境 还有许多明显的不足1)从应用程序开发的角度,开发人员所面向的仍然是一个全屏的矩 形区域,它无法与程序运行时周围的应用程序通讯,更无法以子窗口的形式容纳其他的应 用程序。2) PyMT仅提供了最基本的窗口布局功能,用户无法对窗口进行分组管理等操作,也 无法创建工作区。3)PyMT的窗口的外形过于简单,为了能在精度较低的多点触摸输入下工 作,其边框不得不设计的很宽,这一方面影响了外观,在实际的操作中也显得不够灵活。

发明内容
为了克服上述现有技术的不足,本发明的目的在于提供大幅面交互式桌面上的多 用户窗口系统,支持多用户的并发响应,解决了多用户同地协作时产生权限和冲突问题,使 得传统面向台式计算机的窗口系统可以运用在交互式桌面上,用户无需根据自己的位置调 整窗口的朝向,同时具有输入精度高的特点。为了实现上述目的,本发明采用的技术方案是面向大幅面交互式桌面的多用户窗口系统,包括多任务窗口,其基于树状结构组织,系统的桌面是整个树状结构的根节点,应用程 序的窗口在启动时作为这棵树的叶节点被窗口系统置于桌面之上;输入管理器,负责获取和处理用户的多模态并发输入信号,在输入管理器中,不同 模态的输入信号被抽象为包含用户标识、设备标识、时间戳、类型和自定义数据的输入事 件,所述输入事件在发送到上层的窗口管理器前,经过三段处理首先,输入接收器与不同 的输入设备建立联系,获取输入信号,并生成包含相应信息的输入事件;然后,输入映射器 根据输入事件的类型和自定义数据信息将输入事件与某个窗口相关联,以确定输入的作用 对象;最后,输入理解器对输入事件进行初步的理解,它基于一个给定的姿态集合,对同一 窗口上时间、位置接近的多个输入事件序列进行融合,生成具有一定语义信息的命令;窗口管理器,位于多任务窗口与输入管理器之间,包括权限管理器、冲突管理器和 布局管理器,权限管理器从输入理解器取得输入命令集A并依次调用该输入命令集A所对 应的窗口以及所有祖先窗口的权限策略对输入进行验证,过滤掉未授权的命令,生成新的 命令集B并交由冲突管理器,冲突管理器调用路径上每个窗口的冲突策略检测并消解冲 突,从而生成无冲突的命令集C并交由窗口布局器,窗口布局器首先将无冲突的命令集C发 送至对应的窗口进行事件路由,若该命令没有被窗口处理,则调用该窗口的父窗口的布局 策略对窗口进行布局调整。所述多任务窗口中,当用户的输入被发送到某窗口后,从该窗口控件树的某个叶 子节点向根节点方向路由,在该路由路径上的任意控件都可以处理该输入事件并阻止输入 继续传递,或者可以选择忽略该输入并让事件继续传递,当控件树的根节点即窗口控件,发现输入事件没有被任何控件所处理,则直接将该输入发送给窗口系统的布局器,由窗口执 行移动、缩放或旋转的布局操作。所述多任务窗口中,每个窗口拥有一个属性用于指示其是否能够成为中间节点, 当用户移动某个窗口到另一个可以作为中间节点的窗口之上时,窗口系统将自动把前者作 为子窗口置于后者之中。本发明的多用户窗口系统如果运行在微软的Windows操作系统上,则由以下两部 分组成窗口运行环境为桌面上窗口应用程序的显示、输入和管理提供支持,它包括桌面 全屏窗口、输入管理器和窗口管理器这三个组件,这三个组件中,每个组件的显示或管理策 略均定义在独立的动态链接库中,通过系统提供的开发工具包进行开发,并通过配置文件 载入到系统,完成运行环境的定制。窗口应用程序开发工具包为开发人员提供了窗口应用程序的开发框架、控件库 和IDE集成工具,每个窗口应用程序除包含显示和交互逻辑外,还包括对其子窗口的权限 认证策略、冲突消解策略和布局策略,每个窗口应用程序将被编译成DLL和资源文件,由窗 口运行环境动态加载,并运行在桌面上。本发明与现有技术相比,具有的优点是1)提供了更加灵活的窗口布局方式基于树状的组织结构,窗口系统能够加入工 作区、容器等辅助窗口,从而有效解决交互式桌面的大幅面水平显示所带来的窗口布局困 难;2)可以适应不同的应用场景基于可定制的管理策略,窗口系统可以部署在不同 的硬件环境,并应对不同的多用户协作任务,包括多人并行的独立工作,多人并行的协同工 作,以及多人的混合焦点协作。


图1是本发明的管理模型整体结构示意图。图2是窗口的输入路由示意图。图3是输入事件的组成示意图。图4是输入管理器中三段输入处理流程示意图。图5是输入命令在窗口管理器内的处理流程示意图。图6是基于本发明实现的窗口系统的应用实例示意图。图7是基于本发明实现的窗口系统的启动和运行流程示意图。
具体实施例方式下面结合附图和实施例对本发明做进一步详细说明。如图1所示,本发明为面向大幅面交互式桌面的多用户窗口系统,包括多任务窗口,其基于树状结构组织,构成了交互式桌面的可视化用户接口,系统的 桌面是整个树状结构的根节点,应用程序的窗口在启动时作为这棵树的叶节点被窗口系统 置于桌面之上,每个窗口拥有一个属性用于指示其是否能够成为中间节点,当用户移动某 个窗口到另一个可以作为中间节点的窗口之上时,窗口系统将自动把前者作为子窗口置于后者之中。例如,多个个人工作区可以作为窗口呈现在桌面上,而其他的应用程序窗口可以 自由的在工作区与桌面间移动。与传统的桌面-窗口的两层组织模式相比,这种树状的组 织结构使得多个任务的并行显示与交互成为可能,并为窗口的布局提供了很强的灵活性, 另外,本发明对窗口内的输入路由机制进行了修改,允许用户操作窗口的任意空白区域来 更改窗口的布局属性,如图2所示,当用户的输入被发送到某窗口后,从该窗口控件树的某 个叶子节点向根节点方向路由,在该路由路径上的任意控件都可以处理该输入事件并阻止 输入继续传递,或者可以选择忽略该输入并让事件继续传递,当控件树的根节点即窗口控 件,发现输入事件没有被任何控件所处理,则直接将该输入发送给窗口系统的布局器,由窗 口执行移动、缩放或旋转等其它布局操作;输入管理器,负责获取和处理用户的多模态并发输入,如图3所示,在输入管理器 中,不同模态的输入信号被抽象为包含用户标识、设备标识、时间戳、类型和自定义数据的 输入事件,这些输入事件在发送到上层的窗口管理器前,经过三段处理首先,输入接收器 与不同的输入设备建立联系,获取输入信号,并生成包含相应信息的输入事件;然后,输入 映射器根据输入事件的类型、自定义数据等信息将输入事件与某个窗口相关联,以确定输 入的作用对象;最后,输入理解器对输入事件进行初步的理解,它基于一个给定的姿态集 合,对同一窗口上时间、位置接近的多个输入事件序列进行融合,生成具有一定语义信息的 命令;如图4所示,输入管理器的每一段处理流程都允许用户定制与扩展,因而对交互式桌 面的输入处理提供了灵活性;窗口管理器,位于多任务窗口与输入管理器之间,根据当前的应用场景对窗口状 态进行调整,因而定义了窗口系统应对用户输入的响应机制。与传统窗口管理器的运作方 式不同,本发明的窗口管理器是基于各个窗口的管理策略进行管理的,每个窗口包含布局、 权限和冲突三个管理策略,它们分别定义了该窗口的子窗口如何布局,以及对输入命令进 行授权和冲突消解。这些策略可以由窗口的开发人员进行定制,因而能允许系统根据多用 户任务的特点,灵活调整窗口布局和协作模式,以满足不用应用场景的需求,窗口管理器包 括权限管理器、冲突管理器和布局管理器,如图5所示,权限管理器从输入理解器取得输入 命令集A并依次调用该输入命令集A所对应的窗口以及所有祖先窗口的权限策略对输入进 行验证,过滤掉未授权的命令,生成新的命令集B并交由冲突管理器,冲突管理器调用路径 上每个窗口的冲突策略检测并消解冲突,从而生成无冲突的命令集C并交由窗口布局器, 窗口布局器首先将无冲突的命令集C发送至对应的窗口进行事件路由,若该命令没有被窗 口处理,则调用该窗口的父窗口的布局策略对窗口进行布局调整。一个基于本发明实现的多用户窗口系统的应用示例如图6所示,它基于0#和WPF 开发,可以运行在微软的Windows操作系统上。该系统由两部分组成窗口运行环境为桌面上窗口应用程序的显示、输入和管理提供支持,它包括桌面 全屏窗口、输入管理器和窗口管理器这三个组件,这三个组件中,每个组件的显示或管理策 略均定义在独立的动态链接库中,通过系统提供的开发工具包进行开发,并通过配置文件 载入到系统,完成运行环境的定制。窗口应用程序开发工具包为开发人员提供了窗口应用程序的开发框架、控件库 和IDE集成工具,每个窗口应用程序除包含显示和交互逻辑外,还包括对其子窗口的权限 认证策略、冲突消解策略和布局策略,每个窗口应用程序将被编译成DLL和资源文件,由窗口运行环境动态加载,并运行在桌面上。系统的具体实现细节包括1)启动与运行流程系统的启动流程如图7所示。系统的窗口运行环境本身是 Windows操作系统下的一个应用程序,它的显示是依托于Windows平台的WPF技术。在系统 启动后,它会创建一个全屏的WPF窗口,作为系统的图形渲染引擎。然后它读入系统配置文 件,基于该文件中指示的动态链接库位置,创建系统显示、输入和管理策略的实例,并以此 创建输入管理器、窗口管理器和Tabletop窗口,他们将接管Windows所有的输入和显示任 务。因此,从用户角度接触到的是一个全新的tabl etop环境,而不会受到原有desktop环 境的影响。系统启动后的界面仅包含一个称作Tabletop的根窗口,该窗口包含若干图形化 接口,用于启动一个称作AppLoader的窗口应用程序。它将扫描当前系统的磁盘,当发现某 个DLL是基于开发工具包开发的窗口应用程序时,会将它显示在一个应用程序列表中供用 户选择。用户因而能通过AppLoader启动应用程序,每个应用程序包含一个或多个窗口,它 们将被置于Tabletop窗口之上,供用户交互。2)多任务窗口树状组织结构系统中的每个窗口被实现为一个称作UWindow的 对象,它继承自WPF的Control控件,因而能像所有WPF控件一样提供各种视觉效果。每 个UWindow可以由系统提供的开发工具包定制,并编译为若干个DLL,它被当作系统的一个 窗口应用程序。当系统启动时,会将一个称作Tabletop的应用程序以全屏形式动态加载 到WPF窗口内,作为桌面的起始界面,后序的应用程序窗口则会由AppLoader加载并置入 Tabletop或其上的窗口中,以构成一课树状组织结构。为了让系统支持多窗口的并发输入与响应,当UWindow被创建后,窗口系统使用 了一个称作HostVisual的机制将它被封装在一个独立的线程中,UWindow因此拥有自己的 渲染引擎和消息循环,可以并行的接收用户输入并作出响应。为了让每个窗口可以承载子 窗口,每个窗口的最上层拥有一个透明的Canvas控件,所有的子窗口将被置于该Canvas控 件之中,因而他们能够随父窗口一起移动、缩放和旋转。窗口系统将监测所有窗口的移动、缩放、旋转等布局操作。当发现某个窗口完全落 入它下方的窗口,并且下方的窗口能够容纳子窗口时,窗口系统将基于下方窗口的布局策 略将上方的窗口置于它的Canvas控件内的指定位置。3)多模态设备的并发输入系统的输入管理器继承自IInputManager接口,它可 以包含多个继承自nnputProvider,HnputMapper和HnputTranslator接口的输入管理 组件,分别用于输入的接收、映射和理解,而输入管理器的主要职责仅仅是将输入在它们间 传递。以Ilnputfrovider为例,它仅包含一个hputTrigger事件,其类型如下delegate void InputEventHandler(InputEvent input);实现了 Ilnputfrovider的输入获取器可以在任何的时间点唤起该事件,并传递 继承自hputEVent类型的输入参数,输入管理器在接收到该事件后将输入参数传递给对 应的输入映射器。新实现的输入获取器可以通过系统配置文件在系统启动时载入,也可以 通过调用以下两个API动态的加入或删除RegisterInputProvider(Type inputType, IInputProvider ρ)UnregisterInputProvider(Type inputTy, IInputProvider ρ)
为了提高系统的可扩展性,这些组件均可以被独立编译为DLL,并由输入管理器在 运行时动态加载,这使得系统可以在不重新编译的情况下添加新的输入模态。另外,为了 能并行的从不同输入设备接收和处理输入,输入管理器的所有组件也都运行在各自的线程 中。4)基于策略的多用户窗口管理系统的窗口管理器继承自IWindowManager接口, 当它启动后将动态加载位于窗口树中每个窗口的权限策略、冲突策略和布局策略。这些策 略分别继承自 IAuthoriationPolicy, IConfIictPolicy 和 ILayoutPolicy 接口,并位于窗 口应用程序的DLL中。每个接口中都包含了若干方法,它们代表了某个窗口在发生了某个 事件后需要应对的策略。对于IAuthoriationPolicy接口,它包含下述方法,用于对新入的 命令集按照权限进行过滤public void AuthorizeCommands(List<ICommand>cmds)对于IConflictPolicy接口,它也仅包含一个方法,用于对冲突进行消解,过滤存 在冲突的命令,并向命令集加入新的、无冲突的替代命令public void ResolveCommandsConfIict(List<ICommand>cmds)对于ILayoutPolicy为例,它代表了窗口管理器对其子窗口的布局策略,主要包 括如下方法void OnCommandReceived (IWindow subwnd,ICommand cmd)void OnWindowInserted (IWindow subwnd)void OnWindowRemoved (IWindow subwnd)这些方法会在拥有该布局策略的窗口的子窗口接收到了布局命令,新进入了一个 子窗口或移走一个子窗口时被调用。窗口管理器对输入命令的处理流程如下当窗口管理器获得了从输入管理器传递而来的命令集后,它将首先依次调用该命 令集所对应窗口以及所有祖先窗口的权限策略的AuthorizeCommands方法对命令集进行 验证,生成新的命令集并交由冲突管理器。与权限验证阶段类似,冲突管理器调用路径上每个窗口的冲突策略的 ResolveCommandsConflict方法对命令集进行冲突消解,生成无冲突的命令集并交由窗口 布局器。窗口布局器首先将无冲突的命令集发送至对应的窗口进行事件路由,若该命令没 有被窗口处理,则调用该窗口的父窗口的布局策略的OnCommandReceived方法执行该命 令,对子窗口进行布局。由于每个窗口可以拥有的不同管理策略,系统的窗口管理器因而能针对不同的区 域表现出不同的管理方式。
权利要求
1.面向大幅面交互式桌面的多用户窗口系统,包括多任务窗口,其基于树状结构组织,系统的桌面是整个树状结构的根节点,应用程序的 窗口在启动时作为这棵树的叶节点被窗口系统置于桌面之上;输入管理器,负责获取和处理用户的多模态并发输入信号,在输入管理器中,不同模态 的输入信号被抽象为包含用户标识、设备标识、时间戳、类型和自定义数据的输入事件,所 述输入事件在发送到上层的窗口管理器前,经过三段处理首先,输入接收器与不同的输入 设备建立联系,获取输入信号,并生成包含相应信息的输入事件;然后,输入映射器根据输 入事件的类型和自定义数据信息将输入事件与某个窗口相关联,以确定输入的作用对象; 最后,输入理解器对输入事件进行初步的理解,它基于一个给定的姿态集合,对同一窗口上 时间、位置接近的多个输入事件序列进行融合,生成具有一定语义信息的命令;窗口管理器,位于多任务窗口与输入管理器之间,包括权限管理器、冲突管理器和布局 管理器,权限管理器从输入理解器取得输入命令集A并依次调用该输入命令集A所对应的 窗口以及所有祖先窗口的权限策略对输入进行验证,过滤掉未授权的命令,生成新的命令 集B并交由冲突管理器,冲突管理器调用路径上每个窗口的冲突策略检测并消解冲突,从 而生成无冲突的命令集C并交由窗口布局器,窗口布局器首先将无冲突的命令集C发送至 对应的窗口进行事件路由,若该命令没有被窗口处理,则调用该窗口的父窗口的布局策略 对窗口进行布局调整。
2.根据权利要求1所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,所 述多任务窗口中,当用户的输入被发送到某窗口后,从该窗口控件树的某个叶子节点向根 节点方向路由,在该路由路径上的任意控件都可以处理该输入事件并阻止输入继续传递。
3.根据权利要求1所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,所 述多任务窗口中,当用户的输入被发送到某窗口后,从该窗口控件树的某个叶子节点向根 节点方向路由,在该路由路径上的任意控件都可以选择忽略该输入并让事件继续传递。
4.根据权利要求2或3所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于, 所述多任务窗口中,当控件树的根节点即窗口控件,发现输入事件没有被任何控件所处理, 则直接将该输入发送给窗口系统的布局器,由窗口执行移动、缩放或旋转的布局操作。
5.根据权利要求1所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,所 述多任务窗口中,每个窗口拥有一个属性用于指示其是否能够成为中间节点,当用户移动 某个窗口到另一个可以作为中间节点的窗口之上时,窗口系统将自动把前者作为子窗口置 于后者之中。
6.根据权利要求1所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,所 述多用户窗口系统运行在微软的Windows操作系统上,由以下两部分组成窗口运行环境为桌面上窗口应用程序的显示、输入和管理提供支持,它包括桌面全屏 窗口、输入管理器和窗口管理器这三个组件;窗口应用程序开发工具包为开发人员提供了窗口应用程序的开发框架、控件库和 IDE集成工具。
7.根据权利要求6所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,所 述桌面全屏窗口、输入管理器和窗口管理器这三个组件中,每个组件的显示或管理策略均 定义在独立的动态链接库中,通过系统提供的开发工具包进行开发,并通过配置文件载入到系统,完成运行环境的定制。
8.根据权利要求6所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,每 个窗口应用程序除包含显示和交互逻辑外,还包括对其子窗口的权限认证策略、冲突消解 策略和布局策略。
9.根据权利要求6所述的面向大幅面交互式桌面的多用户窗口系统,其特征在于,每 个窗口应用程序被编译成DLL和资源文件,由窗口运行环境动态加载,并运行在桌面上。
全文摘要
本发明涉及人机交互技术,为面向大幅面交互式桌面的多用户窗口系统,包括基于树状结构组织的多任务窗口、用于处理多模态并发输入的输入管理器和用于控制窗口布局与多用户协作策略的窗口管理器,系统的桌面是整个树状结构的根节点,应用程序的窗口在启动时作为这棵树的叶节点被窗口系统置于桌面之上,输入管理器将输入信号经过转换后与需要关联的窗口相关联,然后转换为具有一定语义信息的命令发送至窗口管理器,窗口管理器对接收到的命令进行权限管理、冲突管理和布局管理,最终完成对窗口的布局调整,本发明支持多用户的并发响应,解决了多用户同地协作时产生权限和冲突问题,使得传统面向台式计算机的窗口系统可以运用在交互式桌面上。
文档编号G06F3/048GK102141893SQ201110121058
公开日2011年8月3日 申请日期2011年5月11日 优先权日2011年5月11日
发明者史元春, 吴晨俊, 秦永强, 索岳 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1