用于远程化的应用的触摸支持的制作方法

文档序号:12663936阅读:389来源:国知局
用于远程化的应用的触摸支持的制作方法与工艺

相关申请的交叉引用

本申请要求对2010年10月5日提交、名称为“MULTI-TOUCH SUPPORT FOR REMOTE APPLICATIONS”的第61/389,874号美国临时申请的优先权。通过完全引用将上述申请的内容结合于此。

技术领域

这里描述的方面总体上涉及支持应用中的触摸输入。例如,方面涉及提供用于远程化的应用的触摸输入支持。



背景技术:

静止和移动设备二者可以提供用于在其上执行的应用和操作系统的触摸支持。附加地或者备选地,应用和操作系统可以与触摸输入有触摸兼容或者不兼容。在一些布置中,应用可以是在服务器设备上执行的远程化的应用。远程化的应用可以允许用户通过客户端设备交互而无需客户端设备存储或者执行应用。作为替代,客户端设备可以从服务器设备接收应用输出和数据并且在本地显示器上显示应用输出。

在一些实例中,客户端设备可以与触摸输入兼容,并且因此用户可能希望使用触摸输入来控制应用。由于在服务器设备执行应用,所以可以向服务器传递针对应用的触摸输入以用于在应用的情境中适当处理。然而,在一些布置中,可以根据底层操作系统以专有或者专用方式处理触摸输入。例如,可以在仅可以可由操作系统或者其函数访问的非公共存储器区域中存储触摸输入数据。应用可以通过调用由操作系统提供的函数来取回触摸输入数据。因而,在一些示例中,从一个设备向另一设备传递触摸输入事件可能由于潜在无能力在操作系统的非公共存储器区域中存储触摸输入数据以及使用操作系统函数来取回数据而引起处理障碍。



技术实现要素:

下文呈现公开内容的简化概括以便提供对一些方面的基本理解。它并非旨在于标识公开内容的重要或者关键要素或者界定公开内容的范围。以下概括仅以简化形式呈现公开内容的一些概念作为下文提供的更具体的描述的前序。

根据一个或者多个方面,可以在远程化的应用中通过向执行远程化的应用的服务器提供触摸输入数据来支持触摸、多触摸、轻弹、手写笔输入和手势。在一个示例中,服务器可以提供如下挂钩(hook),这些挂钩检测第一函数调用的执行,该执行旨在于从专用地址空间取回触摸输入数据并且用对公共地址空间的第二函数调用替换第一函数调用。在另一示例中,服务器可以使用驱动器来仿真或者生成触摸输入事件,该驱动器被配置用于访问操作系统的专用地址空间并且在其中存储触摸输入数据。在又一示例中,在一些服务器操作系统上,服务器可以使用被设计用于输入注入的API来仿真或者生成触摸输入事件。在一些布置中,可以针对从一个本地设备(例如,平板计算机或者电话)向另一本地设备(例如,具有用于输入和查看的更大屏幕的另一写字板、PC或者其它设备)远程化的应用提供触摸、多触摸、手势、轻弹和手写笔支持。

根据另一方面,可以通过将触摸输入转换成鼠标事件来为旧式应用支持触摸输入。

根据又一方面,可以根据多种因素针对远程化的应用由客户端本地处理或者由服务器远程处理触摸输入。在一个示例中,如果延时在指定的阈值以上,则可以本地处理触摸输入。在另一示例中,用户、应用、服务器、客户端设备或者其它实体可以指定将在何处处理触摸输入。

根据另一方面,可以根据包括客户端设备的操作系统、服务器的操作系统、用户偏好、应用要求等和/或其组合的各种因素将触摸输入转译成不同功能。

根据更多其它方面,应用可以是输入类型或者输入来源认知。因而,即使应用与触摸输入不兼容,如果输入事件源于触摸输入设备,则应用可以修改它的显示或者界面或者与如果输入事件源于非触摸输入设备不同地执行功能。

这里描述的方面包括用于轻弹命令的支持。轻弹命令可以是自给事件,例如,未引用设备上的地址空间的事件。自给事件可以在通知消息内存储包括坐标、方向、压力等的触摸输入数据。触摸或者手势输入数据还可以包括用于触笔/硬笔输入的支持。例如,触笔或者手势输入数据可以包括(在触敏表面上的硬笔或者触笔的)坐标、定向、压力等。

根据一些方面,可以提供一种用于提供共享会话环境的方法。该方法可以包括:有助于与第一远程计算设备建立第一连接以向第一设备提供对共享会话视窗的访问;并且有助于与第二远程计算设备建立第二连接以向第二设备提供对共享会话视窗的访问。该方法还可以包括:与第一远程计算设备和第二远程计算设备协商手势能力;经由第一连接接收与在第一设备显示的共享会话视窗输入的用于与共享会话视窗交互的第一手势对应的数据;以及经由第二连接接收与在第二设备显示的共享会话视窗输入的用于与共享会话视窗交互的第二手势对应的数据。此外,该方法可以包括:协调与第一手势和第二手势对应的数据以生成修改指令,该修改指令代表由在第一远程计算设备和第二远程计算设备与共享会话视窗的交互定义的操作;以及通过第一连接和第二连接向第一计算设备和第二计算设备传输修改的共享会话视窗。

在一些布置中,该方法还可以包括:获得来自第一设备的第一规范化时间戳和来自第二设备的第二规范化时间戳,其中协调步骤可以包括:基于第一规范化时间戳对准接收的第一手势的时间戳;以及基于第二规范化时间戳对准接收的第二手势的时间戳。此外,协调步骤可以包括:运用将与第一手势对应的数据映射到第一共享会话命令并且将与第二手势对应的宿将映射到第二共享会话命令的映射表和/或将原始多触摸信息格式化成与共享会话视窗兼容的格式。格式化在一些实例中可以考虑到用于第一远程计算设备的协商的手势能力。在一些示例中,第一连接可以包括屏幕共享信道和第一输入信道,并且第二连接可以包括屏幕共享信道和第二输入信道。另外,与第一手势对应的数据可以包括原始多触摸信息。在更多其它示例中,协调步骤可以包括在低带宽网络条件中排队、投掷(toss)和/或合并第一和/或第二手势。另外,协调步骤可以包括:确定在第一手势与第二手势之间的接收时间差异;以及响应于确定时间差异低于阈值时间量来丢弃第一手势和第二手势之一。

根据更多方面,协商步骤可以包括聚合第一远程计算设备和第二远程计算设备的能力。聚合能力可以例如包括汇总第一远程计算设备能够接收的触摸输入的数目和第二远程计算设备能够接收的触摸输入的数目。

根据其它方面,可以格式化与第一手势对应的数据以用于通过在第一远程计算设备处理原始多触摸信息来解译。在一些示例中,与第一手势对应的数据可以对应于轻弹和/或来自硬笔或者手指触摸的触笔事件。

根据更多其它方面,一种用于提供共享会话环境的方法可以包括:有助于与第一远程计算设备建立第一连接以向第一设备提供对共享会话视窗的访问;有助于与第二远程计算设备建立第二连接以向第二设备提供对共享会话视窗的访问;与第一远程计算设备协商手势能力;以及经由第一连接接收与在第一设备显示的共享会话视窗输入的用于与共享会话视窗交互的手势对应的数据。此外,该方法可以包括:经由第二连接接收与在第二设备显示的共享会话视窗输入的用于与共享会话视窗交互的非手势对应的数据;协调与手势和非手势对应的数据以生成修改指令,该修改指令代表由在第一和第二远程计算设备与共享会话视窗的交互定义的操作;以及通过第一连接和第二连接向第一计算设备和第二计算设备传输修改的共享会话视窗。例如,非手势可以对应于鼠标点击或者键盘录入,并且与第一手势对应的数据可以对应于原始多触摸信息。在特定示例中,第一手势可以是轻弹或者可以是来自硬笔或者手指触摸的触笔事件。该方法还可以包括:获得来自第一设备的第一规范化时间戳和来自第二设备的第二规范化时间戳,其中协调步骤包括:基于第一规范化时间戳对准接收的手势的时间戳;以及基于第二规范化时间戳对准接收的非手势的时间戳。协调步骤可以备选地或者附加地包括运用将与手势对应的数据映射到第一共享会话命令并且将与非手势对应的数据映射到第二共享会话命令的映射表。在一些示例中,协调步骤可以包括将原始多触摸信息格式化为与共享会话视窗兼容的格式并且可以考虑到用于第一远程计算设备的协商的手势能力。另外,协调步骤可以包括在低带宽网络条件中排队、投掷和/或合并第一和/或第二手势。

根据另一方面,第一连接包括屏幕共享信道和第一输入信道,并且第二连接包括屏幕共享信道和第二输入信道。附加地或者备选地,协商可以包括聚合第一远程计算设备和第二远程计算设备的能力。例如,聚合能力可以包括汇总第一远程计算设备能够接收的触摸输入的数目和第二远程计算设备能够接收的触摸输入的数目。根据更多其它方面,可以格式化与第一手势对应的数据以用于通过在第一远程计算设备处理原始多触摸信息来解译。

在更多其它布置中,可以提供具有如下硬件部件和软件的设备、系统和装置,这些硬件部件和软件提供这里描述的功能和特征。例如,设备可以包括用于与其它设备建立一个或者多个连接的网络接口和被配置用于执行软件的处理器。软件可以例如使设备或者装置提供这里描述的一个或者多个功能、特征或者其它方面。

在附图和下文描述中阐述本公开内容的这些和其它实施例的细节。将从说明书和附图以及从权利要求清楚公开内容的其它特征和优点。

本申请提供以下项目:

项目1.一种方法,包括:由第一计算设备从与所述第一计算设备不同的第二计算设备接收触摸输入的指示,其中所述触摸输入针对在所述第一计算设备上执行的应用;由所述第一计算设备生成第一消息格式的触摸输入通知消息,所述触摸输入通知消息被配置用于触发所述应用的第一类型的函数调用以用于处理所述触摸输入;以及由所述第一计算设备向所述应用转发所述触摸输入通知消息。

项目2.根据项目1所述的方法,还包括:由所述第一计算设备接收所述第二计算设备的设备能力信息,其中所述设备能力信息包括所述第二计算设备的输入能力。

项目3.根据项目1所述的方法,还包括:在所述第一计算设备处使用驱动器来生成触摸输入事件,所述驱动器被配置用于在所述第一计算设备的底层操作系统中生成触摸输入事件,其中所述驱动器作为所述操作系统的部分而执行。

项目4.根据项目1所述的方法,还包括:执行由所述第一计算设备的底层操作系统提供的函数以生成与所述触摸输入的指示对应的触摸输入事件。

项目5.根据项目1所述的方法,还包括:检测由所述应用的所述第一类型的函数调用的发起以处理所述触摸输入;以及响应于检测到所述第一类型的函数调用的发起,用与所述第一类型的函数调用不同的第二类型的函数调用替换所述第一类型的函数调用。

项目6.根据项目5所述的方法,还包括:使用所述第二类型的函数调用来处理所述触摸输入,其中所述第二类型的函数调用被配置用于提供用于所述触摸输入的数据。

项目7.根据项目5所述的方法,其中所述第一类型的函数调用由操作系统提供。

项目8.根据项目5所述的方法,其中执行所述第二类型的函数调用包括:确定与所述应用对应的应用类型;以及基于确定的所述应用类型生成所述一个或者多个触摸输入命令。

项目9.根据项目5所述的方法,其中执行所述第二类型的函数调用包括:确定在所述第一计算设备和第二计算设备中的至少一个计算设备上执行的操作系统的类型;以及基于所确定的在所述第一计算设备和第二计算设备中的所述至少一个计算设备上执行的所述操作系统的类型生成所述一个或者多个触摸输入命令。

项目10.根据项目5所述的方法,其中所述触摸输入数据包括坐标,并且其中所述方法还包括:基于指定的平动值修改所述坐标。

项目11.根据项目5所述的方法,其中所述第一类型的函数调用被配置用于使用内核存储器,并且所述第二类型的函数调用被配置用于使用非内核存储器。

项目12.根据项目1所述的方法,还包括:取回与所述触摸输入对应的原始输入数据;确定用于向所述应用提供的触摸输入信息的类型,其中所述触摸输入信息的类型包括以下之一:所述原始输入数据,以及一个或者多个命令;以及在确定所述触摸输入信息的类型包括所述一个或者多个命令时,基于所述原始输入数据生成所述一个或者多个命令,否则向所述应用提供所述原始输入数据。

项目13.根据项目1所述的方法,还包括:取回用于所述触摸输入的数据;将所述触摸输入数据处理成一个或者多个触摸输入命令;以及执行所述一个或者多个触摸输入命令。

项目14.根据项目13所述的方法,其中执行所述一个或者多个触摸输入命令造成对所述应用的显示外观的修改,并且其中所述方法还包括:向所述第二计算设备传输所述应用显示外观的所述修改。

项目15.根据项目1所述的方法,其中所述触摸输入对应于轻弹输入。

项目16.根据项目1所述的方法,其中所述触摸输入对应于手写笔输入。

项目17.根据项目1所述的方法,其中所述触摸输入对应于手势输入。

项目18.一种方法,包括:由第一计算设备检测针对在第二计算设备上执行的应用的第一触摸输入事件,其中所述应用的输出在所述第一计算设备处被接收;向所述第二计算设备传输与所述第一触摸输入事件有关的信息;接收用于基于所述第一触摸输入事件来修改所述应用的显示的指令;以及根据接收的所述指令修改所述应用显示。

项目19.根据项目18所述的方法,其中所述第一触摸输入事件包括多触摸输入事件。

项目20.根据项目18所述的方法,其中传输与所述第一触摸输入事件有关的所述信息由在所述第一计算设备上执行的远程应用客户端执行,其中所述远程应用客户端被配置用于协调用于与所述应用交互的、所述第一计算设备与所述第二计算设备之间的通信。

项目21.根据项目18所述的方法,其中与所述第一触摸输入事件有关的所述信息包括由所述第一计算设备的一个或者多个触敏硬件单元检测的原始输入数据。

项目22.根据项目18所述的方法,还包括:检测第二触摸输入事件;以及基于所述第二触摸输入事件所针对的应用和所述触摸输入事件的类型中的至少一项,确定是否在所述第一计算设备处本地处理所述第二触摸输入事件。

项目23.根据项目18所述的方法,其中所述触摸输入数据包括坐标,并且其中所述方法还包括:基于指定的平动值修改所述坐标。

项目24.根据项目18所述的方法,还包括:检测第二触摸输入事件;以及基于在所述第一计算设备与所述第二计算设备之间的可用网络带宽的量和所述应用的处理速度中的至少一项,确定是否在所述第一计算设备处本地处理所述第二触摸输入事件。

项目25.根据项目24所述的方法,还包括:响应于以下至少一项而在所述第一计算设备处本地处理所述第二触摸输入事件:所述可用网络带宽的数量在指定的带宽阈值以下;以及所述应用的所述处理速度在速度阈值以下。

项目26.根据项目24所述的方法,还包括:向队列中存储所述第二触摸输入事件;确定所述第二触摸输入事件的年龄;以及在所述第二触摸输入的所述年龄达到指定的年龄时丢弃所述第二触摸输入事件。

项目27.根据项目26所述的方法,其中丢弃所述第二触摸输入事件包括丢弃具有最旧创建日期的触摸输入事件。

项目28.根据项目26所述的方法,其中丢弃所述第二触摸输入事件包括丢弃存在达指定时间量的所有触摸输入事件。

项目29.根据项目18所述的方法,还包括:检测针对所述应用的第二触摸输入事件;基于一个或者多个规则确定是否本地处理所述第二触摸输入事件;以及响应于确定所述第二触摸输入事件将被本地处理,由所述第一计算设备本地处理所述第二触摸输入事件,其中本地处理所述第二触摸输入事件包括本地修改所述应用显示。

项目30.根据项目29所述的方法,其中所述一个或者多个规则包括将要被本地处理的触摸输入的一个或者多个类型。

项目31.一种方法,包括:由第一计算设备检测针对在第二计算设备上执行的应用的触摸输入事件,其中所述应用的输出在所述第一计算设备处被接收;由所述第一计算设备确定在所述第一计算设备与所述第二计算设备之间的网络延时的量;确定所述网络延时的量是否在指定的阈值以上;以及响应于确定所述网络延时的量在所述指定的阈值以上,在所述第一计算设备处本地处理所述触摸输入事件,包括修改所述应用的显示。

项目32.根据项目31所述的方法,还包括:在本地处理所述触摸输入事件时,向所述第二计算设备传输与所述触摸输入事件有关的信息。

项目33.根据项目32所述的方法,还包括:响应于向所述第二计算设备传输与所述触摸输入事件有关的所述信息,从所述第二计算设备接收应用显示更新。

项目34.一种或者多种存储计算机可读指令的非瞬态计算机可读介质,所述计算机可读指令在被执行时使装置:从与所述装置不同的计算设备接收触摸输入的指示,其中所述触摸输入针对在所述装置上执行的应用;生成第一消息格式的触摸输入通知消息,所述触摸输入通知消息被配置用于触发所述应用的第一类型的函数调用以用于处理所述触摸输入;以及向所述应用转发所述触摸输入通知消息。

项目35.根据项目34所述的一种或者多种非瞬态计算机可读介质,其中所述计算机可读指令在被执行时还使所述装置:接收所述计算设备的设备能力信息,其中所述设备能力信息包括所述计算设备的输入能力。

项目36.根据项目34所述的一种或者多种非瞬态计算机可读介质,其中所述计算机可读指令在被执行时还使所述装置使用驱动器在所述装置生成触摸输入事件,所述驱动器被配置用于在所述装置的底层操作系统中生成触摸输入事件,其中所述驱动器作为所述操作系统的部分而执行。

项目37.一种装置,包括:处理器;以及存储计算机可读指令的存储器,所述计算机可读指令在被执行时使所述装置:从与所述装置不同的计算设备接收触摸输入的指示,其中所述触摸输入针对在所述装置上执行的应用;生成第一消息格式的触摸输入通知消息,所述触摸输入通知消息被配置用于触发所述应用的第一类型的函数调用以用于处理所述触摸输入;以及向所述应用转发所述触摸输入通知消息。

项目38.根据项目37所述的装置,其中所述计算机可读指令在被执行时还使所述装置:取回与所述触摸输入对应的原始输入数据;确定用于向所述应用提供的触摸输入信息的类型,其中所述触摸输入信息的类型包括以下之一:所述原始输入数据,以及一个或者多个命令;以及在确定所述触摸输入信息的类型包括所述一个或者多个命令时,基于所述原始输入数据生成所述一个或者多个命令,否则向所述应用提供所述原始输入数据。

项目39.根据项目37所述的装置,其中所述计算机可读指令在被执行时还使所述装置:接收用于所述触摸输入的数据;将所述触摸输入数据处理成一个或者多个触摸输入命令;以及执行所述一个或者多个触摸输入命令。

附图说明

在附图中通过示例而非限制的方式举例说明本公开内容,在附图中,相似标号指示相似单元,并且在附图中:

图1A图示根据这里描述的一个或者多个方面的可以被配置用于提供对计算设备和在其上执行的应用程序的远程访问的示例网络环境。

图1B和图1C是图示根据这里描述的一个或者多个方面的示例计算设备的框图。

图2A是图示根据这里描述的一个或者多个方面的用于在外部显示设备上在用户可配置的显示布局中显示多个资源的示例系统的框图。

图2B是图示根据这里描述的一个或者多个方面的用于将一个或者多个资源的显示映射到一个或者多个显示设备的示例系统的框图。

图2C图示根据这里描述的一个或者多个方面的在外部显示设备上在用户可配置的显示布局中显示多个资源的示例界面,该用户可配置的显示布局被划分成网格。

图2D图示根据这里描述的一个或者多个方面的在外部显示设备上在用户可配置的动态显示数据中显示多个资源的示例界面。

图3A是图示根据这里描述的一个或者多个方面的由附着到一个或者多个外部显示设备的移动计算设备提供的示例屏幕空间的框图。

图3B是图示根据这里描述的一个或者多个方面的提供多个屏幕空间的示例移动计算设备的框图。

图3C是图示根据这里描述的一个或者多个方面的由虚拟图形驱动器管理的多个屏幕空间的示例逻辑表示的框图。

图4图示显示设备上的远程化的应用的示例已知界面。

图5是图示根据这里描述的一个或者多个方面的用于变更设备上的远程化的应用的显示的示例系统的框图。

图6是图示根据这里描述的一个或者多个方面的用于处理用于设备上的远程化的应用的触摸输入的示例方法的流程图。

图7是图示根据这里描述的一个或者多个方面的用于使触摸输入远程化的示例方法的流程图。

图8是图示根据这里描述的一个或者多个方面的用于处理用于远程化的应用的触摸输入的示例方法的流程图。

图9图示根据这里描述的一个或者多个方面的用于轻弹输入的示例功能映射。

图10A图示这里描述的一个或者多个方面可以在其中操作的示例计算环境。

图10B图示这里描述的一个或者多个方面可以在其中操作的另一示例计算环境。

图11是图示根据这里描述的一个或者多个方面的用于处理用于旧式应用的触摸输入事件的示例方法的流程图。

图12图示根据这里描述的一个或者多个方面的可以提供的用于输入认知和非输入认知应用的示例用户界面。

图13图示根据这里描述的一个或者多个方面的显示多触摸应用输出的示例用户界面。

图14图示根据这里描述的一个或者多个方面的在各种模式中显示应用的示例用户界面。

图15A和图15B图示根据这里描述的一个或者多个方面的显示用于旧式应用的缩放效果的示例用户界面。

图16是图示根据这里描述的一个或者多个方面的用于解决在处理触摸输入时的延时问题的示例方法的流程图。

图17是图示根据这里描述的一个或者多个方面的用于在单个会话或者应用实例中处理来自多个客户端的触摸输入的示例方法的流程图。

具体实施方式

应用可以由第一计算设备远程执行以用于在第二计算设备(例如,客户端设备)使用。通过使用远程化的应用,客户端设备可以使用第一计算设备的处理能力以执行远程化的应用的功能和特征。此外,可以在从多个远程位置可访问(例如,通过公共和/或专用网络)的位置供应数据和应用。

图1A图示包括与一个或者多个服务器106A-106N(这里通称为“服务器106”)通信的一个或者多个客户端机器102A-102N(这里统称为“客户端机器102”)的示例计算环境101。在客户端机器102与服务器106之间安装网络。

在一个示例中,计算环境101可以包括在服务器106与客户端机器102之间安装的用具(appliance)(例如,设备或者装置)。这一用具可以管理客户端/服务器连接并且在一些情况下可以在负荷上平衡在多个后端服务器之中的客户端连接。

客户端机器102可以在一些示例中是单个客户端机器102或者单组客户端机器102,而服务器106可以是单个服务器106或者单组服务器106。在一个示例中,单个客户端机器102可以与多于一个服务器106通信,而在另一示例中,单个服务器106可以与多于一个客户端机器102通信。在又一示例中,单个客户端机器102可以仅与单个服务器106通信。

客户端机器102可以在一些示例中由以下术语中的任何术语引用:客户端机器102;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;端点;端点节点;或者第二机器。服务器106在一些示例中可以由以下术语中的任何术语引用:服务器、本地机器;远程机器;服务器群、主机计算设备或者第一机器。

根据一个或者多个布置,客户端机器102可以是虚拟机102C虚拟机102C可以是任何虚拟机,而在一些配置中,虚拟机102C可以是由XenSolutions,Citrix Systems,IBM、VMware开发的管理程序或者任何其它管理程序管理的任何虚拟机。在其它示例中,虚拟机102C可以由任何管理程序管理,而在更多其它示例中,虚拟机102C可以由在服务器106上执行的管理程序或者在客户端102上执行的管理程序管理。

客户端机器102可以在一些示例中执行、操作或者以其他方式提供应用,比如:软件;程序;可执行指令;虚拟机;管理程序;web浏览器;基于web的客户端;客户端-服务器应用;瘦客户端计算客户端;ActiveX控件;Java小程序;与网际协议语音(VoIP)通信有关的软件(比如软IP电话);用于流视频和/或音频的应用;用于有助于实时数据通信的应用;HTTP客户端;FTP客户端;Oscar客户端;Telnet客户端;或者任何其它可执行指令集。因而,在至少一些布置中,使应用远程化可以包括客户端设备102接收和显示由在服务器106或者其它远程定位的机器或者计算设备上远程执行的应用生成的应用输出。例如,客户端设备102可以在应用程序视窗、浏览器或者其它输出视窗中显示程序输出。在一个示例中,程序是桌面或者虚拟桌面,而在其它示例中,程序是应用。如这里所用,桌面是指其中可以托管和/或执行一个或者多个应用的图形环境或者空间。桌面可以包括图形壳,该图形壳为操作系统的实例提供其中可以集成本地和/或远程应用的用户界面。应用如这里所用是在已经加载操作系统的实例(并且可选地也加载桌面)之后执行的程序。操作系统的每个实例可以是物理的(例如,每设备一个操作系统)或者虚拟的(例如,在单个设备上运行的OS的许多实例)。可以在本地设备上执行或者在远程定位的设备上执行(例如,远程化)每个应用。可以用多种方式将应用远程化。在一个实例中,可以用无缝方式将应用远程化,在该方式中,在客户端设备上创建视窗以便让应用显示看来如同它在客户端设备及其桌面上本地运行。在另一示例中,可以在视窗化的模式中提供远程化的应用,在该模式中,将桌面向客户端设备远程化并且显示应用作为在远程化的桌面中执行的应用。也可以实施或者使用各种其它远程化方法和技术。

根据一些方面,服务器106可以执行远程呈现客户端或者其它客户端或者程序,该客户端或者程序使用瘦客户端或者远程显示协议以捕获由在服务器106上执行的应用生成的显示输出并且随后向远程客户端102传输应用显示输出。瘦客户端或者远程显示协议可以是以下协议中的任何协议(或者其它适当协议):由Ft,Lauderale,Florida的Citrix Systems,Inc.制造的独立计算架构(ICA)协议;或者由Redmond,Washington的Microsoft Corporation制造的远程桌面协议(RDP)。

计算环境可以包括多于一个服务器106A-106N,从而使得服务器106A-106N在逻辑上和/或物理上被一起分组成服务器群106。在一个示例中,服务器群106可以包括在地理上分散并且在逻辑上一起在服务器群106中分组的服务器106或者在另一示例中相互邻近定位并且在逻辑上一起在服务器群106中分组的服务器106。在服务器群106内的在地理上分散的服务器106A-106N可以在一些示例中使用WAN、MAN或者LAN来通信,其中可以将不同地理区域表征为:不同大陆;大陆的不同地区;不同国家;不同州;不同城市;不同邮政编码;不同邻域;不同校园;不同房间;或者前述地理位置的任何组合。在一些示例中,可以将服务器群106作为单个实体监管,而在其它示例中,服务器群106可以包括多个服务器群106。

服务器群106可以包括执行基本上相似类型的操作系统平台(例如,由Redmond,Washington的Microsoft Corp.制造的WINDOWS NT、UNIX、LINUX或者SNOW LEOPARD)的服务器106。在其它示例中,服务器群106可以包括执行第一类型的操作系统平台的第一组服务器106和执行第二类型的操作系统平台的第二组服务器106。服务器群106在其它示例中可以包括执行不同类型的操作系统平台的服务器106。

服务器106在一些示例中可以是任何服务器类型。在其它示例中,服务器106可以是以下服务器类型中的任何服务器类型:文件服务器;应用服务器;web服务器;代理服务器;用具;网络用具;网关;应用网关;网关服务器;虚拟化服务器;部署服务器;SSL VPN服务器;防火墙、web服务器;应用服务器或者作为主控应用服务器;执行活跃目录的服务器106;或者执行应用加速程序的服务器106,该应用加速程序提供防火墙功能、应用功能或者负荷平衡功能。在一些示例中,服务器106可以是包括远程认证拨号用户服务的RADIUS服务器。在其中服务器106包括用具的布置中,服务器106可以是由以下制造商中的任何制造商制造的用具:Citrix Application Networking Group;Silver Peak Systems,Inc;Riverbed Technology,Inc.;F5Networks,Inc.;或者Juniper Networks,Inc。一些示例包括第一服务器106A,该第一服务器从客户端机器102接收请求、向第二服务器106B转发请求并且用来自第二服务器106B的响应对由客户端机器102生成的请求做出响应。第一服务器106A可以获取可用于客户端机器102的应用的枚举以及与托管在应用枚举内标识的应用的应用服务器106关联的地址信息。第一服务器106A继而可以使用web界面来呈现对客户端的请求的响应并且与客户端102直接通信以向客户端102提供对标识的应用的访问。

服务器106可以在一些示例中执行以下应用中的任何应用:使用瘦客户端协议以向客户端传输应用显示数据的瘦客户端应用;远程显示呈现应用;Citrix Systems,Inc.的CITRIX ACCESS SUITE的任何部分、比如METAFRAME或者CITRIX PRESENTATION SERVER;由Microsoft Corporation制造的MICROSOFT WINDOWS终端服务;或者由Citrix Systems,Inc.开发的ICA客户端。另一示例包括服务器106,该服务器是应用服务器,比如:提供电子邮件服务的电子邮件服务器,比如由Microsoft Corporation制造的MICROSOFT EXCHANGE;web或者因特网服务器;桌面共享服务器;协作服务器;或者任何其它类型的应用服务器。更多其它示例包括如下服务器106,该服务器执行以下类型的托管的服务器应用中的任何服务器应用:由Citrix Online Division,Inc.提供的GOTOMEETING;由Santa Clara,California的WebEx,Inc.提供的WEBEX;或者由Microsoft Corporation提供的Microsoft Office LIVE MEETING。

客户端机器102可以在一些示例中是寻求访问由服务器106提供的资源的客户端节点。在其它示例中,服务器106可以向客户端102或者客户端节点提供对托管的资源的访问。服务器106在一些示例中充当主控节点,从而使得它与一个或者多个客户端102或者服务器106通信。在一些示例中,主控节点可以标识并且向一个或者多个客户端102或者服务器106提供与托管请求的应用的服务器106关联的地址信息。在更多其它示例中,主控节点可以是服务器群106、客户端102、客户端节点102的群集或者用具。

一个或者多个客户的102和/或一个或者多个服务器106可以通过在计算机环境101内的机器与用具之间安装的网络104传输数据。网络104可以包括一个或者多个子网络并且可以安装于客户端102、服务器106、在计算机环境101内包括的计算机器和用具的任何组合之间。在一些示例中,网络104可以是:局域网(LAN)、城域网(MAN);广域网(WAN);包括位于客户端机器102与服务器106之间的多个子网络104的主网络104;具有专用子网络104的主公共网络104;具有公共子网络104的主专用网络104;或者具有专用子网络104的主专用网络104。更多示例包括可以是以下网络类型中的任何网络类型的网络104:点到点网络;广播网络;电信网络;数据通信网络;计算机网络;ATM(异步传输模式)网络;SONET(同步光网络)网络;SDH(同步数字分级) 网络;无线网络;有线网络;或者包括无线链路的网络104,其中无线链路可以是红外线信道或者卫星频带。网络104的网络拓扑可以在不同示例内不同,可能的网络拓扑包括:总线网络拓扑;星型网络拓扑;环形网络拓扑;基于重发器的网络拓扑;或者分层星型网络拓扑。附加示例可以包括使用协议以在移动设备之中通信的移动电话网络的网络104,其中协议可以是以下协议中的任何协议:AMPS;TDMA;CDMA;GSM;GPRS UMTS;或者能够在移动设备之中传输数据的任何其它协议。

图1B图示示例计算设备100。可以将图1A中所示的客户端机器102和服务器106部署为这里图示和描述的计算设备100的任何示例或者任何其它计算设备和/或在这里图示和描述的计算设备100的任何示例或者任何其它计算设备上执行图1A中所示的客户端机器102和服务器106。在计算设备100内包括与以下部件通信的系统总线150:中央处理单元121;主存储器122;存储装置存储器128;输入/输出(I/O)控制器123;显示设备124A-124N;安装设备116;以及网络接口118。在一个示例中,存储装置存储器128包括:操作系统、软件例程和客户端代理120。I/O控制器123在一些示例中还连接到键盘126和指点设备127。其它示例可以包括连接到输入/输出设备130A-130N中的一个或者多个输入/输出设备的I/O控制器123。

图1C图示示例计算设备100,其中可以将图1A中所示的客户端机器102和服务器106部署为这里图示和描述的计算设备100的任何示例或者任何其它计算设备和/或在这里图示和描述的计算设备100的任何示例或者任何其它计算设备上执行图1A中所示的客户端机器102和服务器106。在计算设备100内包括与以下部件通信的系统总线150:桥接器170和第一I/O设备130A。在另一示例中,桥接器170还与主中央处理单元121通信,其中中央处理单元121还可以与第二I/O设备130B、主存储器122和高速缓存存储器140通信。在中央处理单元121内包括I/O端口、存储器端口103和主处理器。

计算机器100的示例可以包括由以下部件配置中的任何部件配置表征的中央处理单元121:对主存储器单元122做出响应并且处理从主存储器单元122取读的指令的逻辑电路;微处理器单元,比如:由Intel Corporation制造的微处理器单元;由Motorola Corporation制造的微处理器单元;由Santa Clara,California的Transmeta Corporation制造的微处理器单元;RS/6000处理器,比如由International Business Machines制造的RS/6000处理器;处理器,比如由Advanced Micro Devices制造的处理器;或者逻辑电路的任何其它组合。中央处理单元122的更多其它示例可以包括以下各项的任何其他组合:微处理器、微控制器、具有单个处理核的中央处理单元、具有两个处理核的中央处理单元或者具有多于一个处理核的中央处理单元。

尽管图1C图示包括单个中央处理单元121的计算设备100,但是在一些示例中,计算设备100可以包括一个或者多个处理单元121。在这些示例中,计算设备100可以存储和执行如下固件或者其它可执行指令,该固件或者其它可执行指令在被执行时指引一个或者多个处理单元121同时执行指令或者同时对单条数据执行指令。在其它示例中,计算设备100可以存储和执行如下固件或者其它可执行指令,该固件或者其它可执行指令在被执行时指引一个或者多个处理器单元各自执行指令组的一段。例如,可以通知每个处理单元121执行程序的一部分或者程序内的特定模块。

在一些示例中,处理单元121可以包括一个或者多个处理核。例如,处理单元121可以具有两个核、四个核、八个核等。在一个示例中,处理单元121可以包括一个或者多个并行处理核。处理单元121的处理核可以在一些示例中访问作为全局地址空间的可用存储器,或者在其它示例中,可以对在计算设备100内的存储器分段并且向在处理单元121内的特定核分配存储器。在一个示例中,在计算设备100中的一个或者多个处理核或者处理器可以各自访问本地存储器。在又一示例中,可以在一个或者多个处理器或者处理核之中共享计算设备100内的存储器,而其它存储器可以由特定处理器或者处理器子集访问。在其中计算设备100包括多于一个处理单元的示例中,可以在单个集成电路(IC)中包括多个处理单元。这些多个处理器在一些示例中可以由可以被称为单元互连总线的内部高速总线链接在一起。

在其中计算设备100包括一个或者多个处理单元121或者处理单元121(该处理单元包括一个或者多个处理核)的示例中,处理器可以同时对多条数据执行单个指令(SIMD),或者在其它示例中可以同时对多条数据执行多个指令(MIMD)。在一些示例中,计算设备100可以包括任何数目的SIMD和MIMD处理器。

计算设备100在一些示例中可以包括图形处理器或者图形处理单元(未示出)。图形处理单元可以包括软件与硬件的任何组合并且还可以输入图形数据和图形指令、根据输入的数据和指令表现图形以及输出表现的图形。在一些示例中,可以在处理单元121内包括图形处理单元。在其它示例中,计算设备100可以包括一个或者多个处理单元121,其中至少一个处理单元121专用于处理和表现图形。

在一个示例中,计算机器100可以包括经由也被称为后端总线的辅助总线与高速缓存存储器140通信的中央处理单元121,而计算机器100的另一示例包括经由系统总线150与高速缓存存储器通信的中央处理单元121。本地系统总线150可以在一些示例中也由中央处理单元用来与多于一个类型的I/O设备130A-130N通信。在一些示例中,本地系统总线150可以是以下类型的总线中的任何类型的总线:VESA VL总线;ISA总线;EISA总线;微通道架构(MCA)总线;PCI总线;PCI-X总线;PCI-快速总线;或者NuBus。备选地或者附加地,计算机器100可以包括I/O设备130A-130N,该I/O设备是与中央处理单元121通信的视频显示器124。计算机器100的更多其它版本包括经由以下连接中的任何连接来连接到I/O设备130A-130N的处理器121:HyperTransport、迅速I/O或者InfiniBand。计算机器100的更多示例包括使用本地互连总线来与一个I/O设备130A通信并且使用直接连接来与第二I/O设备130B通信的处理器121。

计算设备100在一些示例中包括主存储器单元122和高速缓存存储器140。高速缓存存储器140可以是任何存储器类型,并且在一些示例中可以是以下存储器类型中的任何存储器类型:SRAM;BSRAM;或者EDRAM。其它示例包括高速缓存存储器140和主存储器单元122,该主存储器单元可以是以下存储器类型中的任何存储器类型:静态随机存取存储器(SRAM)、猝发SRAM或者同步猝发SRAM(BSRAM);动态随机存取存储器(DRAM);快速页面模式DRAM(FPM DRAM);增强型DRAM(EDRAM)、扩展型数据输出RAM(EDO RAM);扩展型数据输出DRAM(EDO DRAM);猝发扩展型数据输出DRAM(BEDO DRAM);增强型DRAM(EDRAM);同步DRAM(SDRAM);JEDEC SRAM;PC100SDRAM;双重数据速率SDRAM(DDR SDRAM);增强型SDRAM(ESDRAM);同步链接DRAM(SLDRAM);直接Rambus DRAM(DRDRAM);铁电RAM(FRAM);或者任何其它类型的存储器。更多示例包括可以经由以下各项访问主存储器122的中央处理单元121:系统总线150;存储器端口103;或者允许处理器121访问存储器122的任何其它连接、总线或者端口。

在一个或者多个布置中,计算设备100可以提供用于以下安装设备116中的任何安装设备的支持:CD-ROM驱动、CD-R/RW驱动、DVD-ROM驱动、各种格式的带驱动、USB设备、可引导介质、可引导CD、用于GNU/Linux分发的可引导CD(比如)、硬驱动或者适合用于安装应用或者软件的任何其它设备。应用可以在一些示例中包括客户端代理120或者客户端代理120的任何部分。计算设备100还可以包括存储设备128,该存储设备可以是一个或者多个硬盘驱动或者一个或者多个冗余独立磁盘阵列;其中存储设备被配置用于存储操作系统、软件、程序应用或者客户端代理120的至少一部分。计算设备100也可以包括被用作存储设备128的安装设备116。

计算设备100还可以包括用于通过多种连接与局域网(LAN)、广域网(WAN)或者因特网对接的网络接口118,这些连接包括但不限于:标准电话线、LAN或者WAN链路(例如,802.11、T1、T3、56kb、X.25、SNA、DECNET)、广播连接(例如,ISDN、帧中继、ATM、吉比特以太网、在SONET之上的以太网)、无线连接或者上述连接中的任何或者所有连接的某一组合。也可以使用多种通信协议(例如,TCP/IP、IPX、SPX、NetBIOS、以太网、ARCNET、SONET、SDH、光纤分布式数据接口(FDDI)、RS232、RS485、IEEE 802.11、IEEE 802.11a、IEEE802.11b、IEEE 802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。计算设备100的一个版本包括能够经由任何类型和/或形式的网关或者隧道传输协议(比如安全套接字层(SSL)或者传送层安全(TLS)或者由Citrix Systems,Inc.制造的Citrix网关协议)与附加计算设备100’通信的网络接口118。网络接口118的版本可以包括以下各项中的任何一项:内置式网络适配器;网络接口卡;PCMCIA网卡;卡总线网络适配器;无线网络适配器;USB网络适配器;调制解调器;或者适合于使计算设备100与能够通信并且执行这里描述的方法和系统的网络对接的任何其它设备。

根据一个或者多个方面,计算设备100可以包括以下I/O设备130A-130N中的任何I/O设备:键盘126;指点设备127;鼠标;跟踪板;光笔;跟踪球;麦克风;绘图写字板;视频显示器;扬声器;喷墨打印机;激光打印机;以及颜料升华打印机;或者能够执行这里描述的方法和系统的任何其它输入/输出设备。I/O控制器123可以在一些示例中连接到多个I/O设备130A-130N以控制一个或者多个I/O设备。在一些示例中,I/O设备130A-130N可以被配置用于提供存储装置或者安装介质116,而其它I/O设备可以提供用于接收USB存储设备(比如由Twintech Industry,Inc.制造的设备的USB快闪驱动线)的通用串行总线(USB)接口。附加地或者备选地,计算设备100可以包括I/O设备130,该I/O设备可以是在系统总线150与外部通信总线之间的桥接器,该总线比如是:USB总线;Apple桌面总线;RS-232串行连接;SCSI总线;FireWire总线;FireWire 800总线;以太网总线;AppleTalk总线;吉比特以太网总线;异步传输模式总线;HIPPI总线;超HIPPI总线;SerialPlus总线;SCI/LAMP总线;光纤通道总线;或者串行附着小型计算机系统接口总线。

在一些示例中,计算机器100可以连接到多个显示设备124A-124N,在其它示例中,计算设备100可以连接到单个显示设备124,而在更多其它示例中,计算设备100连接到相同显示器类型或者形式的显示设备124A-124N或者不同类型或者形式的显示设备。显示设备124A-124N的示例可以由以下各项支持和实现:一个或者多个I/O设备130A-130N;I/O控制器123;I/O设备130A-130N与I/O控制器123的组合;能够支持显示设备124A-124N的硬件与软件的任何组合;用于对接、通信、连接或者以其他方式使用显示设备124A-124N的任何类型和/或形式的视频适配器、视频卡、驱动器和/或库。计算设备100可以在一些示例中被配置用于使用一个或者多个显示设备124A-124N,这些配置包括:具有用于与多个显示设备124A-124N对接的多个连接器;具有多个视频适配器,其中每个视频适配器连接到显示设备124A-124N中的一个或者多个显示设备;具有被配置用于支持多个显示器124A-124N的操作系统;使用计算设备100内包括的电路和软件以连接到并且使用多个显示设备124A-124N;以及在主计算设备100和多个辅助计算设备上执行软件以使主计算设备100能够使用辅助计算设备的显示器作为用于主计算设备100的显示设备124A-124N。计算设备100的更多其它示例可以包括由多个辅助计算设备提供的并且经由网络连接到主计算设备100的多个显示设备124A-124N。

根据一个或者多个布置,计算机器100可以执行任何如下操作系统,该操作系统包括:MICROSOFT WINDOWS操作系统的版本,比如WINDOWS 3.x;WINDOWS 95;WINDOWS 98;WINDOWS 2000;WINDOWS NT 3.51;WINDOWS NT 4.0;WINDOWS CE;WINDOWS XP;以及WINDOWS VISTA;Unix和Linux操作系统的不同发布;由Apple Computer制造的MAC OS的任何版本;由国际商用机器公司制造的OS/2;任何嵌入式操作系统;任何实时操作系统;任何开源操作系统;任何专有操作系统;用于移动计算设备的任何操作系统;或者任何其它操作系统;在一些示例中,计算机器100可以执行多个操作系统。例如,计算机器100可以执行PARALLELS或者另一虚拟化平台,该虚拟化平台可以执行第一操作系统或者管理执行第一操作系统的虚拟机,而计算机器100执行与第一操作系统不同的第二操作系统。

可以在以下计算设备中的任何计算设备中实现计算机器100:计算工作站;台式计算机;膝上型或者笔记本计算机;服务器;手持计算机(例如,平板计算机,比如由Apple Computer制造的iPad和iPad 2);移动电话;便携电信设备;媒体播放设备;游戏系统;移动计算设备;上网本;由Apple Computer制造的IPOD设备系列的设备;由Sony Corporation制造的PLAYSTATION设备系列的任何设备;由Nintendo Co制造的Nintendo设备系列的任何设备;由Microsoft Corporation制造的XBOX设备系列的任何设备;或者能够通信并且具有充分处理器能力和存储器容量以执行这里描述的方法和系统的任何其它类型和/或形式的计算、电信或者媒体设备。在其它示例中,计算机器100可以是移动设备,比如以下移动设备中的任何移动设备:具有JAVA功能的蜂窝电话或者个人数字助理(PDA),比如都由Motorola Corp制造的i55sr、i58sr、i85s、i88s、i90c、i95cl或者im1100;由Kyocera制造的6035或者7135;由Samsung Electronics Co.,Ltd.制造的i300或者i330;由Palm,Inc.制造的TREO 180、270、600、650、680、700p、700w或者750智能电话;任何如下计算设备,该设备具有与设备一致的不同处理器、操作系统和输入设备;或者能够执行这里描述的方法和系统的任何其它移动计算设备。在更多其它示例中,计算设备100可以是以下移动计算设备中的任何移动计算设备:由Research In Motion Limited制造的任何一个Blackberry系列或者其它手持设备;由Apple Computer制造的iPhone;Palm Pre;Pocket PC;Pocket PC Phone;或者任何其它手持移动设备。

在一些示例中,计算设备100可以具有与设备一致的不同处理器、操作系统和输入设备。例如,在一个示例中,计算设备100是由Palm,Inc.制造的TREO 180、270、600、650、680、700p、700w或者750智能电话。在这些示例中的一些示例中,TREO智能电话是在PalmOS操作系统的控制之下操作的并且包括触笔输入设备以及五路导航器设备。

根据一个或者多个配置,计算设备100可以是移动设备,比如具有JAVA功能的蜂窝电话或者个人数字助理(PDA),比如都由Schaumburg,Illinois的Motorola Corp制造的i55sr、i58sr、i85s、i88s、i90c、i95cl或者im1100、由Kyoto,Japan的Kyocera制造的6035或者7135或者由Seoul,Korea的Samsung Electronics Co.,Ltd.制造的i300或者i330。在一些示例中,计算设备100是由Finland的Nokia或者由Lund,Sweden的Sony Ericsson Mobile Communication AB制造的移动设备。

在一些示例中,计算设备100可以是Blackberry手持或者智能电话,比如由Research In Motion Limited制造的设备,这些设备包括Blackberry 7100系列、8700系列、7700系列、7200系列、Blackberry 7520或者Blackberry Pearl 8100。在更多其它示例中,计算设备100是智能电话、Pocket PC、Pocket PC Phone或者支持Microsoft Windows移动软件的其它手持移动设备。另外,计算设备100可以是任何工作站、台式计算机、膝上型或者笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机或者能够通信并且具有充分处理器能力和存储器容量以执行这里描述的操作的其它形式的计算或者电信设备。

附加地或者备选地,计算设备100可以是数字音频播放器。例如,计算设备100是数字音频播放器,比如由Cupertino,California的Apple Computer制造的Apple IPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE设备线。在这些示例中的另一示例中,数字音频播放器可以充当便携媒体播放器和海量存储设备二者。在其它示例中,计算设备100是数字音频播放器,比如由Ridgefield Park,NJ的Samsung Electronics America制造的DigitalAudioPlayer Select MP3播放器或者由Schaumburg,IL的Motorola Inc.制造的Motorola m500或者m25数字音频播放器。在更多其它示例中,计算设备100是便携媒体播放器,比如由Creative Technologies Ltd.制造的Zen Vision W、Zen Vision系列、Zen便携媒体中心设备或者数字MP3的MP3播放器线。在更多其它示例中,计算设备100是支持如下文件格式的便携媒体播发器或者数字音频播放器,这些文件格式包括但不限于MP3、WAV、M4A/AAC、WMA Protected AAC、AIFF、Audible音频书籍、Apple无损音频文件格式和.mov、.m4v和.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。

计算设备100可以备选地或者附加地包括设备组合,比如与数字音频播放器或者便携媒体播发器组合的移动电话。在这些示例之一中,计算设备100是组合数字音频播放器和移动电话的Motorola RAZR或者Motorola ROKR线。在这些示例中的另一示例中,计算设备100是由Cupertino,California的Apple Computer制造的iPhone智能电话。

应用显示管理

现在参照图2A,框图图示用于在一个或者多个显示设备上显示多个资源的示例系统。该系统包括可以与一个或者多个外部显示设备202a-n通信的移动计算设备102。图2A中的示例示出具有本机显示器201的移动计算设备102,但是也可以使用没有本机显示器的设备。移动计算设备102执行多个资源204a-n(统称为204)。视窗管理系统206和虚拟图形驱动器208管理与多个资源中的每个资源关联的输出数据在用户可配置的显示布局中的显示的位置和尺寸。在许多示例中,移动计算设备102向外部显示设备202传输与多个资源204中的每个资源关联的输出数据。在这些示例中的一些示例中,移动计算设备102在与外部显示设备202建立连接时传输输出数据。备选地或者附加地,移动计算设备102向设备的本机显示器201传输与多个资源204中的每个资源关联的输出数据。例如,移动计算设备102可以仅向设备的本机显示器传输输出数据或者仅向外部显示设备202a-n中的一个或者多个外部显示设备传输输出数据。在一些示例中,移动计算设备102向本机显示器201传输与多个资源204中的某些资源关联的输出数据并且向外部显示设备202a-n传输与多个资源204中的其它资源关联的输出数据。

移动计算设备102可以被配置用于执行多个资源204。在一个示例中,移动计算设备102是如上文结合图1A-图1C描述的客户端102。在另一示例中,移动计算设备102显示与由移动计算设备102执行的多个资源204a-n中的资源204a关联的输出数据。在一些示例中,移动计算设备102显示与多个资源204中的每个资源关联的输出数据。

在多个资源204中的资源可以包括而不限于数据文件、可执行文件、配置文件、应用、桌面环境(该桌面环境本身可以包括用于由用户执行的多个应用)、计算环境映像(比如虚拟机映像)和/或为了执行计算机环境映像而需要的操作系统软件或者其它应用。

根据一个或者多个布置,移动计算设备102包括视窗管理服务206,该视窗管理服务允许外部显示设备202显示与在移动计算设备102上执行的多个资源204中的每个资源关联的输出数据。如与允许仅在本机显示器201或者外部显示设备202上查看一个资源204的输出比对,视窗管理服务206也可以允许在基本上相同时间在外部显示设备202或者本机显示器201上查看在移动计算设备102上运行的多个资源。在一个示例中,视窗管理服务206与虚拟图形驱动器208结合管理在外部显示设备202和本机显示器201上显示的视窗的显示布局。在一些示例中,虚拟图形驱动器208是管理如下虚拟屏幕帧缓冲器的驱动器级部件,该虚拟屏幕帧缓冲器存储移动计算设备102上的本机显示器201或者外部显示设备202将显示的输出数据。视窗管理服务206与虚拟图形驱动器208结合还可以管理用来显示输出数据的屏幕空间的边界和尺寸以及在哪个显示设备上显示输出数据。

在一些示例中,外部显示设备202接收与多个资源204中的每个资源关联的输出数据并且在用户可配置的显示布局中显示输出数据。在一个示例中,外部显示设备202包括移动计算设备102连接到的停靠座。在另一示例中,外部显示设备202包括用于如上文结合图1A-图1C描述的例如经由蓝牙、Wi-Fi或者其它联网协议与移动计算设备102通信的接收器。在又一示例中,外部显示设备202可以是如上文结合图1B和图1C描述的显示设备124。

现在参照图2B,框图图示用于映射移动计算设备102的一个或者多个资源204在一个或者多个显示设备201和/或202上的显示的示例系统。在各种示例中,视窗管理服务206管理虚拟屏幕空间210。虚拟屏幕空间210可以映射到本机显示器201和一个或者多个外部显示设备202。视窗管理服务器206可以在虚拟屏幕空间210上对与一个或者多个资源204的用户界面关联的输出数据定位以指定将在何处显示每个用户界面。在一些示例中,视窗管理服务206根据用户偏好对输出数据定位。在附加示例中,视窗管理服务206根据策略对输出数据定位。在各种示例中,视窗管理服务206基于与输出数据关联的资源204对输出数据定位。

视窗管理服务206与虚拟图形驱动器208通信以向本机显示器201和一个或者多个外部显示设备202传输与资源204的用户界面关联的输出数据。在一些示例中,视窗管理服务206可以向虚拟图形驱动器208传输来自虚拟屏幕空间的输出数据和关联坐标。在各种示例中,虚拟图形驱动器208在虚拟屏幕帧缓冲器中存储输出数据。在许多示例中,虚拟图形驱动器208向本机显示器201和外部显示设备202传输虚拟屏幕帧缓冲器中的条目。在许多示例中,虚拟图形驱动器208基于虚拟屏幕帧缓冲器中的条目在帧缓冲器中的位置向本机显示器201或者外部显示设备202传输条目。

现在参照图2C,用户界面图示示例用户可配置的显示布局,在该显示布局中,外部显示设备202显示资源204的输出数据。在这一示例中,在网格显示布局中显示资源204的输出数据。网格显示布局可以包括在一个布置中的一个或者多个单元格。单元格可以显示与资源关联的输出数据。在一些示例中,多于一个单元格显示与相同资源关联的输出数据。

此外,在一些示例中,单元格尺寸统一,而在其它示例中,单元格具有不同尺寸。可以在任何配置中布置单元格。在一些示例中,可以在行、列或者二者中布置单元格。单元格可以具有与单元格在网格中的位置关联的描述符。描述符可以指示单元格在行内的位置。在图2C中描绘的示例中,用于资源204a的单元格可以具有描述符“1-1”,用于资源204b的单元格可以具有描述符“1-2”,用于资源204c的单元格可以具有描述符“1-3”,用于资源204d的单元格可以具有描述符“2-1”,并且用于资源204d的单元格可以具有描述符“2-2”。在其它示例中,可以对单元格编号,例如,“单元1”、“单元2”等。然而,可以使用本领域普通技术人员已知的任何选择描述符的体系。

在各种示例中,视窗管理服务206根据在本机显示器201或者外部显示设备202上显示的资源204配置网格显示布局。在一些示例中,服务206根据显示的资源204的数目配置网格显示布局。在其它示例中,服务206根据在资源204的用户界面中的内容尺寸或者数量配置网格显示布局。例如,如果外部显示设备202将显示具有相当内容数量的四个资源,则视窗管理服务206可以向网格显示布局配置四个均匀单元格。在另一示例中,如果外部显示设备202将显示四个资源并且一个资源包括与其它资源的内容的三倍一样多的内容,则视窗管理服务206可以向网格显示布局配置在第一行中的三个均匀单元格和在第二行中的单个单元格。在第二行中的单个单元格可以与在第一行中的单元格的三倍一样宽。在各种示例中,视窗管理服务206可以配置网格显示布局以保留如下单元格,该单元格用于显示关于被显示的资源的信息,比如资源的菜单。在许多示例中,视窗管理服务206可以配置网格显示布局以保留用于允许用户配置网格显示布局的单元格。

现在参照图2D,用户界面图示提供动态显示布局的示例用户可配置的显示布局,在该动态显示布局中,外部显示设备202显示与多个资源204关联的输出数据。在这一示例中,可以对外部显示设备202上的显示用于资源204的输出数据的视窗动态定位和设定尺寸。视窗管理服务206可以在默认位置和用默认尺寸对用于资源的用户界面定位,该默认位置和默认尺寸根据策略、资源204或者任何其它方法来选择。视窗管理服务206可以对重叠用户界面排序,从而使得更高顺序的用户界面遮蔽更低顺序的用户界面。视窗管理服务206可以向虚拟图形驱动器208传输反映该遮蔽的输出数据。用户可以例如通过点击和拖拉视窗或者视窗边来对视窗重定位或者重设尺寸。在这些示例中,虚拟图形驱动器208可以检测用户对视窗的改变并且向视窗管理服务206传输关于用户的改变的信息。视窗管理服务206可以处理改变并且向虚拟图形驱动器208传输更新的输出数据。在一些示例中,用户将用于资源204的用户界面移向在本机显示器201或者外部显示设备202上的任何位置。在一些示例中,用户将用于资源204的用户界面移向不同显示设备。在一些示例中,更新的输出数据指示已经增加一个用户界面的尺寸或者已经调整位置以遮蔽另一用户界面。在其它示例中,更新的输出数据指示已经减少一个用户界面的尺寸或者已经调整位置以使得另一用户界面的更多部分应当可见。

现在参照图3A,框图图示附着到一个或者多个外部显示设备的由移动计算设备提供的示例虚拟屏幕空间210。如图3A中所示,移动计算设备102包括虚拟图形驱动器208和虚拟屏幕210。虚拟屏幕210包括多个虚拟屏幕空间310和312a-n。虚拟屏幕空间310可以是用于移动计算设备102上的本机显示器201的本机显示屏幕空间。其它虚拟屏幕空间312a-n可以是与外部显示屏幕202的显示器对应的扩展屏幕空间。视窗管理服务206和虚拟图形驱动器208管理虚拟屏幕210。在一个示例中,虚拟图形驱动器208使用虚拟屏幕帧缓冲器以管理移动计算设备的本机显示器201并且改变本机显示器201的屏幕分辨率。在另一示例中,虚拟图形驱动器208使用虚拟屏幕帧缓冲器以管理扩展屏幕空间312并且改变扩展屏幕312的分辨率。

在一些示例中,虚拟图形驱动器208分配和管理多个虚拟屏幕空间310、312a-n和虚拟屏幕帧缓冲器。在这些示例中的一些示例中,每个虚拟屏幕空间和虚拟屏幕帧缓冲器具有与其它屏幕空间和帧缓冲器独立的分辨率。在这些示例之一中,与多个资源204中的每个资源关联的输出数据可以驻留于虚拟屏幕空间310、312a-n中的任何虚拟屏幕空间内。在这些示例中的另一示例中,扩展屏幕空间312a-n中的每个扩展屏幕空间根据设备的能力与至少一个外部显示设备202关联。

在各种示例中,视窗管理服务206和虚拟图形驱动器208分配和管理与多个资源关联的输出数据在多个外部显示设备202上的显示。例如,与资源204a关联的输出数据在移动计算设备102上显示,与资源204b关联的输出数据在一个外部显示设备202a上显示,并且与资源204c关联的输出数据在另一外部显示设备202b上显示。在这些示例中的另一示例中,视窗管理设备206基于资源204a的类型标识外部显示设备202中的用于显示由资源204a生成的输出数据的外部显示设备。例如,视窗管理服务206可以确定表现视频的资源类型可以在电视屏幕上显示,而表现字处理应用的资源类型可以在膝上型计算机的显示器上表现。

现在参照图3B,框图图示向虚拟屏幕210提供可变分辨率的虚拟屏幕空间310、312a-n的示例移动计算设备102。在这一示例中,虚拟屏幕210包括具有320个像素x240个像素的分辨率的与移动计算设备102的本机显示器201对应的本机显示屏幕空间310。虚拟屏幕210也包括具有1024个像素x768个像素的分辨率的与外部显示设备202的显示器对应的扩展屏幕312a、具有800个像素x600个像素的分辨率的与外部显示设备202的显示器对应的扩展屏幕312n-1和具有640个像素x480个像素的分辨率的与外部显示设备202的显示器对应的扩展屏幕312n。在许多示例中,虚拟屏幕210可以包括任何分辨率的本机显示屏幕空间310和任何数目的扩展屏幕312。可以将整个虚拟屏幕空间210映射到单个虚拟屏幕帧缓冲器中,但是也可以使用映射到多个缓冲器中的示例。

现在参照图3C,框图图示由虚拟图形驱动器管理的多个虚拟屏幕空间的示例逻辑表示。在这一示例中,虚拟图形驱动器208管理虚拟屏幕帧缓冲器中的具有不同分辨率的多个虚拟屏幕空间。在这一示例中,移动计算设备的本机显示器201是主显示器,并且与扩展屏幕312a对应的外部显示设备202是辅助显示器。在各种示例中,将在本机显示器201上显示本机显示屏幕空间310上的与资源204关联的输出数据,并且将在与扩展屏幕空间312a关联的外部显示设备202上显示扩展屏幕空间312a上的与资源204关联的输出数据。在其它示例中,可以在本机显示器201上显示与资源204关联的所有输出数据。在更多其它布置中,可以在外部显示设备(比如外部显示设备202)上显示与资源204关联的所有输出数据。

在将应用远程化时支持触摸输入

图5图示如下示例系统,在该示例系统中,可以在通过客户端设备(比如移动设备102)提供显示和用户交互之时在服务器远程执行应用。因而,用户可以在客户端设备(例如,移动设备102)查看从服务器(例如,远程服务器501)远程化(例如,远程执行)的应用并且与该应用交互而无需在客户端设备上安装或者存储应用和/或数据。图5的系统可以包括(例如,与图2B中所示移动计算设备相似的)移动计算设备102,该移动计算设备被配置用于执行和/或存储一个或者多个资源204,比如在移动计算设备102上执行的应用。在一些示例中,至少一个资源可以是在移动设备102上执行的操作系统,并且一个或者多个其它资源可以在操作系统的情境内执行。移动设备102还可以执行可以与在移动设备102上执行的其它应用通信并且在一些示例中可以与在移动设备102上执行的虚拟图形驱动器208和资源或者应用204通信的视窗管理服务206。移动计算设备102还可以执行虚拟图形驱动器208并且可以存储用于生成虚拟屏幕空间210的缓冲器,该缓冲器可以包括用于本机显示屏幕空间210a的缓冲器。移动设备102可以与移动设备102的本机显示器201通信,可以在该本机显示器上显示由资源204生成的应用输出。移动设备102还可以与可以执行一个或者多个资源505A-505N(通称为远程资源505)的远程计算机501通信,该远程资源可以在一些示例中是远程应用505。远程计算机501还可以执行远程化客户端510。远程应用505可以在如下文进一步具体讨论的一个或者多个布置中由远程计算机执行以用于在移动设备102使用。在一个或者多个远程应用505由远程计算机执行以用于在移动设备102使用时,那些应用可以被视为远程化的应用。

根据一个或者多个布置,在移动设备102上执行的资源204和/或资源505A-505N可以是被配置用于接受通过触屏输入的数据的应用。例如,应用可以是通常不从触屏接收数据的应用的修改版本。这些修改的应用204可以经由移动设备102的触屏接收由用户输入的数据并且可以被修改用于适应典型触屏输入功能,比如虚拟键盘和虚拟滚动菜单。例如,可以修改SAFARI(由APPLE发布的web浏览器)的修改版本以在用户选择编辑控件(比如文字框)或者向该编辑控件给予聚焦时向上平移。SAFARI向上平移应用以适应在浏览器之上显示的虚拟键盘并且从而使得用户可以当在虚拟键盘上打字之时查看文字框。

触摸输入可以包括多种器具、手部或者手指移动和动作,这些移动和动作包括触摸屏幕上的点、手写笔输入、挥动移动、轻弹移动、多手指或者多触摸动作(例如,夹捏、扩张)和手势等。触摸输入可以根据接收输入的应用的类型触发不同功能。例如,一些应用可以接收轻弹动作为关闭应用,而其它动作可以将轻弹动作解译为在某一方向上移动应用视窗。每个应用可以定义它自己的对不同类型的触摸输入的解译或者可以使用由底层操作系统提供的标准定义。

根据一个或者多个配置,移动设备102可以用多种方式与远程计算机501通信。远程计算机501可以是服务器、客户端或者任何其它计算机器。在一些示例中,远程计算机501可以是执行用于移动设备102的一个或者多个应用的远程应用服务器。因而,在一些示例中,移动设备102可以通过一个或者多个虚拟信道与远程计算机501通信。在一些示例中,虚拟信道可以通过网络来建立并且可以被称为控制虚拟信道。在其它示例中,虚拟信道可以是无缝虚拟信道。控制虚拟信道可以用来使(例如,用于应用的)控制命令和其它杂项命令远程化,而无缝虚拟信道可以用来使应用视窗、任务栏、系统托盘等远程化。因此,在一些示例中,每个虚拟信道可以使不同功能和内容远程化。在更多其它示例中,虚拟信道可以由在移动设备102上执行的视窗管理服务206建立,或者虚拟信道可以由视窗管理服务206和在远程计算机501上执行的远程化客户端510二者建立。虚拟信道可以在一些示例中有助于使用ICA协议来发送的通信。

在一些示例中,远程计算机501可以执行远程化终端510。远程化终端510可以是控制虚拟信道或者无缝虚拟信道并且可以是与客户端510用来向移动设备102传输数据和从移动设备102接收数据的虚拟信道对应的远程化应用。在一些示例中,远程化客户端510可以与(移动计算设备102的)视窗管理服务206协作以修改用于在移动设备102上的远程显示的远程应用505。视窗管理服务206可以例如是由CITRIX SYSTEMS发布的CITRIX接收器。在一些示例中,远程化客户端510可以与远程应用505通信以解译由远程应用505生成的事件提供通知和数据。具体而言,远程化客户端510可以使用由远程应用505中的一个或者多个远程应用提供的应用编程接口来执行一个或者多个控件的基于事件的检测。例如,至少一个远程应用505可以是在远程计算机501上执行的操作系统。另一远程应用505B可以在远程计算机501上执行并且在操作系统505的情境内。在这些示例中,远程化客户端510可以使用由操作系统505使得可用的应用编程接口来截获由远程应用505B内的控件生成的事件。控件可以基于控件是否聚焦于感兴趣的控件的预定列表或者在该列表上由远程化客户端510选择。控件在一些示例中可以是在用户与之交互的应用内的对象,例如,文字框、下拉菜单、单选按钮、按钮、复选框、编辑框、组合框等。控件还可以被称为域或者交互元素。在一些示例中,远程化客户端510可以通过向与应用505B关联的通信接口注册以在聚焦改变事件出现于应用505B内时接收通知来截获控件生成的事件。例如,远程化应用510可以在对象或者控件接收聚焦时接收通知,该通知例如指示用户选择过应用内的文字框。

在一些示例中,远程化客户端510可以通过虚拟信道与视窗管理服务206通信。在特定示例中,远程化客户端510可以通过虚拟信道向视窗管理服务206发送截获的事件通知。在其它示例中,远程化客户端510可以传输用于控件的位置坐标、控件类型、控件的内容、控件的视窗句柄和/或用于控件的母视窗信息。视窗句柄或者用于界面或者应用内的元素的其它标识信息可以包括全局唯一标识符(GUID)。视窗管理服务206可以从远程化客户端510接收信息并且使用接收的信息来调整或者修改应用204在本机显示器201上的显示。调整显示可以包括平移、缩放(放大或者缩小)、滚动或者以其他方式修改应用204的显示。

在一些示例中,远程计算机501可以执行一个或者多个资源505。这些资源在一些示例中可以是应用。在其它示例中,至少一个资源可以是在远程计算机501上执行的操作系统。在这些示例中,其它应用505可以在操作系统的情境内执行。在一些示例中,应用505从设备102的观点来看可以对应于远程应用505,并且可以将应用505中的一个或者多个应用向移动设备102远程化以用于由用户在移动设备102使用。

图6图示用于向远程应用远程提供手势信息的示例过程600。在移动设备102上执行的视窗管理服务206可以提取手势信息并且向远程计算机501传输提取的信息(步骤605)。远程计算机501可以接收手势信息(步骤610)并且然后按照选择的格式生成新手势信息(步骤615)。远程计算机501然后可以将手势信息转换成公共格式(步骤620)并且可以重放用于远程应用的手势信息(步骤625)。

图7图示如下示例方法,客户端设备可以通过该方法检测触摸输入并且针对在服务器上执行的远程化的应用来处理触摸输入。例如,在步骤700中,客户端设备的视窗管理服务或者其它服务或者应用可以通过触敏硬件单元检测和/或接收触摸输入。在步骤705中,客户端设备可以生成指示检测到和/或接收到触摸输入的通知消息。在一个示例中,通知消息可以对应于WM_GESTURE或者WM_TOUCH消息,该消息指定如下内核句柄(例如,位置指针),该内核句柄指向在其中存储触摸输入数据的未归档专用地址空间。在一些示例中,每当向应用视窗发出手势或者触摸输入时,在客户端设备上执行的操作系统向对应应用转发事件。然而,在一个或者多个布置中,客户端设备可以根据触摸输入事件针对的应用不同地处置触摸输入事件。例如,应用可以是本地执行应用、远程执行桌面或者远程执行应用(例如,远程化的应用的无缝视窗)。因而,在步骤710中,客户端设备可以确定与触摸输入针对的应用视窗或者其它用户界面元素对应的应用的类型。

如果客户端设备确定应用类型是本地执行的应用,则客户端设备可以在步骤715中向应用转发通知消息以用于由应用和/底层操作系统本地处理。然而,如果客户端设备确定向与远程化的应用或者桌面对应的应用视窗或者用户界面元素发出触摸输入,则操作系统可以忽略该输入。忽略输入可以引起调用如下默认视窗过程(例程,DefWindowProc),该默认视窗过程通过试图将手势和多触摸输入转换成鼠标事件来处置输入。在一个或者多个示例中,客户端设备(或者其视窗管理服务)可以被配置用于包括如下子函数或者模块,该子函数或者模块可以处置用于远程化的应用的触摸(例如,多触摸)、手写笔和手势事件。在这样的配置中,客户端设备的视窗管理服务可以在步骤720中截获向与远程执行应用或者桌面对应的应用视窗或者其它界面元素发出的和/或本地操作系统忽略的触摸(例如手势和多触摸)事件。

客户端设备的视窗管理服务响应于截获或者检测到与远程化的应用对应的触摸、多触摸或者手势输入消息可以在步骤725中提取关于手势或者触摸输入的信息。提取手势信息可以包括使用操作系统API的GetGestureInfo()函数或者挂钩到该函数中来从WM_GESTURE的HGESTUREINFO IPara参数提取信息。提取的信息可以包括:手势状态;手势标识符(例如,GID_BEGIN、GID_END、GID_ZOOM、GID_PAN、GID_ROTATE);目标视窗句柄(例如,在服务器上的对应视窗的句柄);视窗的坐标和触摸输入的区域;序列标识符;任何附加变元。应用通常使用公共GetGestureInfo()而不是与HGESTUREINFO IPara参数关联的存储器,因为这一参数指向未归档存储器结构。客户端设备的视窗管理服务还可以调用CloseGestureInfoHandle()API以释放资源。使用提取的触摸输入信息,客户端设备可以在步骤730中生成并且向服务器传输通知消息。在一些示例中,通知消息可以包括由视窗管理服务截获的通知消息或者其部分。通知消息可以例如保持原有格式化(例如,如截获的格式)的一些或者全部。

根据一些布置,可以基于客户端设备的操作系统不同地实施步骤720-725。在特定示例中,在Windows 8客户端操作系统上,客户端设备的视窗管理服务206可以在Windows Runtime(WinRT)平台中执行例如作为Metro Style应用并且可以使用PointerPoint界面来取回触摸输入。例如,视窗管理服务206可以取回常用数据,比如联系人ID、像素位置,并且也可以从属性包取回输入专属数据。视窗管理服务206也可以使用GestureRecognizer界面以注册以接收关于手势的事件并且配置手势本身。视窗管理服务206可以分别地或者在相同时间取回原始触摸输入或者手势或者二者。另外,视窗管理服务206可以使用PointerDevice界面以取回各种能力和属性,例如,输入设备的类型、它是否为集成或者外部、最大输入计数,或者获得设备的支持的HID使用。

类似地,在Windows 8客户端操作系统上,客户端设备的视窗管理服务206可以在Win32平台中执行作为桌面应用,并且可以处置WM_POINTER消息(WinRT PointerPoint的等效消息)并且使用GetPointerInfo()API和有关函数来取回原始输入数据。视窗管理服务206也可以使用InteractionContext界面以取回部件化的手势识别。视窗管理服务206可以分别地或者在相同时间取回原始触摸输入或者手势或者二者。视窗管理服务206也可以使用Win32Pointer Device API以查询在客户端环境中的指针设备。

在另一特定示例中,在iOS操作系统上可以将客户端设备的视窗管理服务206实施为iOS应用。iOS设备的多触摸界面在用户触摸iOS应用的视图时生成低级事件。视窗管理服务应用可以向在其上出现触摸的视图发送这些事件(作为UIEvent对象)。类型UIEventTypeTouches的UIEvent对象可以代表触摸事件。视窗管理服务应用的该视图可以分析由每个事件对象代表的触摸并且预备它们以用于向服务器传输作为原始触摸输入。视图可以将触摸解译为常用手势,比如轻敲或者挥动手势。客户端应用可以利用被称为手势识别器的UIKit类,每个UIKit类被设计用于识别具体手势,例如,用于轻敲的UITapGestureRecognizer、用于夹捏放大和缩小(缩放)的UIPinchGestureRecognizer、用于平移或者拖拉的(UIPanGestureRecognizer)、用于挥动的UISwipeGestureRecognizer、用于旋转的UIRotationGestureRecognizer、用于按压和保持的UILongPressGestureRecognizer等。另外,如果视窗管理服务应用需要UIKit对象以对事件不同地做出响应,则它可以创建和使用该框架类的子类并且超越适当事件处置方法。事件管理服务也可以通过将UIGestureRecognizer子类化、分析多触摸序列中的事件流以识别相异手势来实施完全定制的手势识别器。视窗管理服务206可以分别地或者在相同事件取回原始触摸输入或者手势或者二者。

在向服务器传输触摸事件通知消息之后,客户端设备可以在步骤735中接收一个或者多个指令,该指令指示用于修改触摸输入针对的应用视窗或者其它用户界面元素的方式。一个或者多个指令可以是从服务器接收的并且指示显示修改命令,比如缩放、滚动、平移、移动、扩张、收缩、最小化、最大化等。在步骤740中,客户端设备(或者视窗管理服务)可以根据指定的指令修改应用界面元素。在一个示例中,一个或者多个指令可以包括包括更新的应用显示或者其部分的图像和/或用于修改应用显示视窗的命令。

在一个特定示例中,客户端设备可以将向被注册用于接受原始触摸输入的视窗发出的触摸事件(例如,WM_TOUCH消息)远程化。在客户端设备发送触摸输入时,客户端设备的视窗管理服务使用GetTouchInputInfo()API从WM_TOUCH的(HTOUCHINPUT)lParam参数向TOUCHINPUT结构的阵列中提取原始触摸信息。触摸点数目可以由WM_TOUCH的wParam参数指示。在一些实施例中,客户端设备也可以发送:用于从接触下来的点直至它往回上来为止的触摸接触序列的标识符,这一标识符允许多个同时序列或者多触摸(多个手指或者人);达到物理屏幕坐标像素的百分之一的X和Y坐标,这为需要细微分辨率的应用(例如,手写识别)提供高精确性;接触区域的宽度和高度;时间戳;这是否为主触摸点,例如,建立的第一触摸点;触摸/点序列的各种方面,比如向下、移动、向上或者悬停事件、是否合并输入、它是否来自用户的手掌等;以及可以用来取回关于输入设备的信息的设备句柄。在一些布置中,设备句柄可以用来取回关于客户端设备的信息。客户端设备的视窗管理服务还可以调用CloseTouchInputHandle()API以释放资源。如下文关于图8进一步具体描述的那样,在服务器接收触摸输入之后,服务器可以重放向在服务器上的对应应用视窗的触摸输入(例如,使用SendMessage()、SendMessageTimeout()、SendNotifyMessage()或者PostMessage()API以发送WM_TOUCH)。

附加地或者备选地,如果视窗管理服务截获或者接收来自在客户端设备上执行的操作系统的并且向显示远程执行应用或者桌面的应用视窗发出的GESTURENOTIFY消息,则视窗管理服务可以阻止从本地消息处置器的返回。视窗管理服务然后可以向服务器传输GESTURENOTIFY消息,在该服务器为与客户端设备的应用视窗对应的应用视窗重放消息。在一些实施例中,服务器可以用SendMessageTimeout()函数调用重放消息,从而使得与应用视窗对应的应用可以例如使用SetGestureConfig()函数来设置手势配置选项。捕获、向客户端设备传输并且向显示应用输出的远程视窗应用配置。视窗管理服务然后可以调用DefWindowProc函数并且从本地消息处置器返回。在一些布置中,远程化应用可以在服务器上的应用视窗上前摄地调用GESTURENOTIFY以触发调用SetGestureConfig()函数。因此,可以预先(例如,在接收触摸输入事件通知之前)确定并且向客户端设备发送配置信息,在该客户端设备高速缓存它。

图8图示如下示例方法,该方法可以由应用执行服务器执行以管理和处理触摸输入事件(在一个示例中,在图6的总过程内)。在步骤800中,服务器可以从应用被远程化到的客户端设备接收通知。通知可以指定在客户端设备接收的用于远程化的应用的触摸输入并且可以包括触摸信息事件信息,比如初始触摸位置的坐标、触摸接触序列的ID和用于多触摸输入的主触摸位置、接触区域的宽度和高度、移动方向、输入时间等。在一些实例中,触摸事件信息可以包括与由触摸输入硬件生成的数字数据流对应的原始输入数据。在步骤805中,服务器可以确定触摸输入事件针对的应用。在特定示例中,可以在从客户端设备接收的触摸输入事件信息中指定应用或者视窗标识符并且使用该应用或者视窗标识符以标识适当应用或者应用视窗。在接收触摸输入事件数据时,服务器还可以在步骤810中在共享存储器空间或者位置中存储数据。此外,服务器可以在步骤815中将共享存储器空间或者位置标识符与由客户端设备的操作系统生成的专用或者未归档地址关联,从而使得如果在去往标识的应用的一个或者多个通知消息中使用未归档地址,则服务器可以标识共享存储器空间。

在步骤820中,服务器可以按照指定的格式生成局部消息,该消息向确定的应用通知接收的触摸输入事件。在一个或者多个示例中,客户端设备或者在服务器上执行的数字化器可以基于触摸或者手势通知消息格式创建通知消息,比如WM_TOUCH或者WM_GESTURE。通知消息可以在特定示例中重复或者重放由客户端设备生成的WM_TOUCH或者WM_GESTURE消息,然而,用在服务器保持传输的触摸输入数据的服务器共享存储器空间或者位置标识符替换客户端设备用来保持触摸输入数据的未归档地址。在一些示例中,如果触摸或者手势通知消息未引用适当地址空间,则底层操作系统可以阻止消息。因而,通知消息的格式可以不同于本机触摸或者手势输入通知消息格式以避免作为不恰当触摸或者手势通知消息而被操作系统阻止向应用传输。在创建通知消息时,服务器(或者在其上执行的远程化客户端) 可以在步骤825中向目标应用或者其视窗发送事件通知和触摸输入信息。例如,目标视窗可以是显示由应用生成的应用输出的应用输出视窗。在特定示例中,如果在客户端设备上显示的应用视窗是显示由在服务器上执行的MICROSOFT EXPLORER生成的应用输出的MICROSOFT EXPLORER视窗,则目标视窗是服务器的与MICROSOFT EXPLORER的该实例对应的应用输出视窗。

备选地或者附加地,服务器可以通过对从客户端设备接收的触摸信息(例如,在未归档存储器结构中的触摸信息)进行反向工程来生成通知消息。具体而言,服务器可以(例如,在除了专用内核存储器区域之外的共享存储器区域中)根据协议重建内部存储器结构。

在步骤830中,服务器可以检测应用发起函数调用以处理通知消息。例如,应用可以调用DefWindowProc函数以处理消息。由于DefWindowProc函数可能由于按照指定的格式(例如,非传统手势或者触摸输入通知消息格式)提供通知消息而不理解通知消息,所以服务器可以或者其远程化客户端可以在步骤835中用备选函数替换函数调用。备选函数可以被配置用于将通知消息转换成底层操作系统本机的并且被原先调用的函数(例如,DefWindowProc)理解为手势或者触摸输入事件通知的格式。一旦已经将消息转换成本机或者传统输入事件通知格式,应用可以在步骤840中在接收转换的消息时执行原先调用的函数(例如,替换的函数)。例如,原先调用的函数可以被配置用于基于通知消息的内容和格式标识待采取的动作。在一个示例中,函数可以确定消息对应于触摸输入事件通知并且通知应用执行用于提取触摸输入数据的又一函数。

因而,在步骤845中,一旦应用已经处理通知消息,服务器可以检测应用发起函数调用以提取触摸输入数据。在其中WM_GESTURE和/或WM_TOUCH被用作通知格式的上例中,函数调用可以对应于GetGestureInfo()和/或CloseGestureInfoHandle()。由于WM_TOUCH和WM_GESTURE消息一般包括如下句柄或者指针,该句柄或者指针指向在其中存储触摸输入数据的未归档专用(例如,非公共可访问)存储器区域或者结构,所以函数调用可以用来取回触摸事件数据。然而,由于未归档存储器区域或者结构位于客户端设备而不是服务器上,所以执行GetGestureInfo()和/或CloseGestureInfoHandle()函数可能造成错误。因而,在检测到应用发起执行数据取回函数时,服务器可以在步骤850中标识和执行被配置用于访问服务器(或者另一存储设备)的存储器空间并且取回在其中存储的触摸输入数据的另一备选函数。例如,如上文所言,存储器空间可以是在服务器或者另一存储设备上提供的共享存储器空间。可以基于存储的在通知消息中指定的未归档地址与其中服务器存储触摸输入数据的存储器地址之间的关联来标识在其中存储触摸输入数据的存储器空间。

在一些示例中,可以向一个或者多个或者每个进程地址空间中注入由在服务器上执行的远程化客户端应用或者虚拟数字化器管理的触摸或者多触摸挂钩DLL,从而使得DLL挂钩由或者向未归档存储器结构进行的所有调用。因此,在响应于解译向目标视窗和应用发送的通知消息来调用一个或者多个指定的函数时,服务器可以挂钩函数调用并且用备选函数替换它。这一备选函数可以专属于远程化客户端应用或者是虚拟数字化器专属函数,比如CTXGetGestureInfo()和CTXCloseGestureInfoHandle()。在其它示例中,多触摸DLL可以挂钩发出的用于获得触摸输入信息的所有调用并且可以用系统专属实现方式替换这些调用,例如,用CtxGetTouchInputInfo()和CtxCloseTouchInputHandle()替换GetTouchInputInfo()和CloseTouchInputHandle()。因此,在应用调用GetTouchInputInfo()函数时,可以用将按照系统专属格式格式化的触摸输入转换成应用可以处理的公共格式的CtxGetTouchInputInfo()替换函数。类似地,在应用调用CloseTouchInputHandle()时,多触摸DLL可以用释放分配的资源的CtxCloseTouchInputHandle()替换函数。

根据一些配置,触摸或者多触摸挂钩DLL可以使用AppInit_DLLs注册表关键值方法。在其它布置中,触摸或者多触摸挂钩DLL可以使用CreateRemoteThread()或者SetWindowHookEx()方法以向具有用户界面的进程中注入挂钩。在更多其它布置中,触摸或者多触摸挂钩DLL也可以挂钩SetGestureConfig()函数并且用备选系统专属函数(比如CTXSetGestureConfig()函数)替换它。可以例如调用SetGestureConfig()函数以通过向操作系统传递定义用于某个手势的消息的GESTURECONFIG存储器结构阵列来向操作系统通知支持的存储器结构。例如,可以向操作系统传递存储器结构,比如定义以下手势的方面的存储器结构:平移;旋转;惯性等。结构可以控制触摸输入或者手势的方面,比如允许水平平移但是不允许竖直平移或者不允许惯性。在向操作系统发送这些存储器结构时,操作系统然后可以被配置用于支持在存储器结构中定义的特定触摸输入或者手势。在一些示例中,服务器可以将SetGestureConfig/CTXSetGestureConfig()向客户端设备远程化,并且客户端设备可以将在函数调用期间传递的存储器结构应用于在其上执行的操作系统。这是在客户端设备的视窗管理服务在显示的应用视窗上调用SetGestureConfig()函数时实现的。例如,如果GOOGLE CHROME的实例无法支持旋转,则服务器可以传输包括如下存储器结构的SetGestureConfig()/CTXSetGestureConfig(),该存储器结构标识与GOOGLE CHROME的该实例关联的应用输出视窗为不支持旋转。向客户端设备传输这一函数调用,该客户端设备又向如下应用输出视窗发出具有如下变元的本地SetGestureConfig()函数调用,该应用输出视窗显示由在服务器上执行的GOOGLE CHROME的实例生成的应用输出,该变元声明不支持旋转。

在一些实例中,在步骤850中执行的函数还可以被配置用于将取回的触摸输入信息转换成在服务器上执行的应用可识别的公共格式。例如,在应用调用CTXGetGestureInfo()函数时,函数可以将触摸输入信息从未定义存储器结构格式(例如,系统专属格式)转换成公共GESTUREINFO结构。在一个实例中,系统专属格式可以包括原始输入数据,而公共格式可以对应于应用兼容命令(例如,平移、缩放、滚动、扩张等)。附加地或者备选地,处理系统专属触摸输入信息和数据的方式可以依赖于触摸输入针对的应用的类型、客户端设备的或服务器的操作系统类型和/或在其上显示应用的客户端设备的类型。例如,可以将触摸输入转译成用于第一应用或者应用类型的第一命令类型和用于第二应用或者应用类型的第二命令类型。

在从指定的存储器区域取回和/或转换触摸输入数据之后,可以在步骤855中调用函数(比如CloseGestureInfoHandle()API)以关闭与手势信息句柄关联的资源。在一个或者多个布置中,也可以用如下备选函数替换用于关闭资源的函数,该备选函数被配置用于向客户端设备传输用于关闭由客户端侧提供的资源的消息。备选地,在一个或者多个布置中,客户端设备在向服务器发送输入之后不久释放触摸输入资源而且并不依赖于来自服务器的用于释放它的资源的通知。此外,也可以在执行备选资源关闭函数时关闭由服务器使用的存储器区域。另外,在步骤860中,服务器可以根据公共格式化的触摸输入信息和命令修改应用和/或其显示。例如,如果触摸输入信息是缩放命令,则服务器可以扩张应用视窗和/或其内容。此外,可以在步骤865中按照用于修改在客户端设备的远程化的应用的显示的指令这一形式向客户端设备传输对应用和/或其显示的修改。在一些布置中,服务器还可以基于在客户端设备上的操作系统或者在其上执行应用的操作系统转译触摸输入。例如,服务器可以在各种示例中默认为如在客户端设备的操作系统中定义的触摸功能。因此,如果客户端设备操作iOS,则可以将按压和保持手势解译为删除功能,即使应用可以在WINDOWS上执行,其中作为替代默认将按压和保持解译为鼠标右击。在这样的情况下,服务器可以将触摸输入转译成在WINDOWS中具有等效功能的触摸输入。例如,服务器可以将按压和保持手势转译成默认意味着删除的左上轻弹手势或者向应用直接发送删除键输入。在另一示例中,服务器可以默认为特定操作系统,比如WINDOWS。因而,如果服务器使用iOS,则可以基于WINDOWS触摸输入定义将触摸输入转译成WINDOWS触摸输入和功能。服务器可以存储用于各种操作系统的在触摸输入与功能之间的表或者映射并且按照需要交叉引用映射。用户也可以指定待使用的配置。例如,用户可以指定应当在iOS方案或者WINDOWS环境中对待所有触摸输入。服务器然后如果必要则可以基于用户对操作系统的选择或者优选的触摸定义集转译触摸输入。在特定示例中,用户可以定义他或者她自己的优选触摸输入定义集并且请求服务器根据那些定义转译触摸输入。

也可以用相似方式处理轻弹输入。例如,轻弹输入可以在客户端设备或者在第一操作系统上具有一个定义集并且在服务器或者在第二操作系统上具有第二定义集。因而,用户可以配置将使用什么定义。备选地,使用的定义可以由在客户端设备或者服务器上的操作系统控制。在一些配置中,轻弹输入可以自给。也就是说,轻弹输入可以在轻弹输入通知消息内存储输入位置数据和其它信息而不是引用底层系统的地址空间(例如,如可以是针对触摸或者手势输入的情况那样)。因而,可以无需以与在向服务器远程化时相同的方式处理轻弹输入。在一个示例中,可以向应用传输轻弹输入而不挂钩函数调用或者用共享存储器空间替换地址空间。

图9图示如下图,该图图示轻弹输入和对应功能的示例。可以修改映射,从而使得下弹输入例如可以对应于最小化命令而不是如图9中所示的下拖命令,而上弹输入可以对应于最大化命令而不是上拖命令。

远程服务器在一些实例中也可以被配置用于如果远程化的应用未在触摸兼容操作系统上操作则将从具有触摸功能的客户端设备接收的触摸输入转换成非触摸输入。在示例中,平板PC可以使用触摸不兼容(例如,不理解触摸输入)的操作系统来向远程化服务器传输触摸输入。因而,服务器可以将触摸输入转译成鼠标事件或者其它类型的操作系统兼容命令(例如,用于修改应用的外观、调用应用的功能等)并且向既定应用转发它们。

图10A图示可以用来支持用于远程化的应用的触摸处理的示例计算环境。系统100可以如图所示包括输入数字化器层1001、操作系统或者平台应用编程接口(API)1003、远程化的应用视窗1005、多触摸抽象化层1007和虚拟驱动器1009。例如,输入数字化器层1001可以包括用于硬件输入单元的驱动器、在待执行的各种应用和触摸输入硬件设备(比如触屏)下面的操作系统等。操作系统可以提供允许应用与操作系统的各种功能和能力对接的一个或者多个API 1003。例如,操作系统可以是WINDOWS OS并且提供用于接收触摸输入数据并且将触摸输入数据转换成手势或者其它触摸命令的多触摸API。其它API可以包括用于取回系统度量或者其它系统信息的接口。远程化的应用可以在操作系统和数字化器层1001上方操作并且调用用于创建视窗(比如视窗1..N1005)以显示远程化的应用的各种功能。在一个示例中,远程化客户端可以在客户端设备上执行并且使用平台API 1003来调用视窗创建函数以创建用于显示应用输出和数据的一个或者多个视窗。然后可以在多触摸平台抽象化层1007抽象化出并且使用驱动器1009向服务器传输包括多触摸手势、单触摸输入、轻弹输入等的触摸输入。多触摸平台抽象层1007也可以返回应用输出和用于修改应用的外观或者功能的指令。在一个或者多个示例中,平台API 1003也可以用来取回设备能力信息,比如识别的输入类型、可检测输入类型(例如,单触摸比对多触摸)、操作系统支持的功能等。

图10B图示用于如下服务器设备的示例框图,该服务器设备被配置用于执行用于一个或者多个客户端设备的应用。如图所示,服务器1050可以包括被配置用于与虚拟驱动器或者客户端代理(比如图10A的虚拟驱动器1009)对接的主机代理1051。主机代理1051还可以被配置用于与可以在其中存储和访问触摸输入数据的存储器1053以及与操作系统API 1055和应用1057交互。在一个示例中,一个或者多个应用或者函数挂钩(比如挂钩DLL 1059)可以访问和/或以其他方式使用存储器1053。如这里描述的那样,在一个示例中,主机代理1051可以传输向应用(例如,应用1057中的一个或者多个应用)通知触摸输入事件的定制消息(例如,按照指定的格式的消息)。应用可以发起函数调用以使用底层OS API1055来取回触摸输入数据。然而,主机代理1051可以截获这些函数调用并且用挂钩DLL 1059替换它们,这些挂钩DLL被配置用于访问在其中存储触摸输入数据的存储器1053。

并非所有应用可以被配置用于接受触摸输入。然而,用户可能无论应用的配置如何都想要使用触摸输入。因而,在一些示例中,可以将触摸输入转换成用于未被配置用于接收和处理触摸输入的应用的鼠标事件或者其它类型的输入事件。

图11图示用于处理用于非触摸兼容或者无触摸功能的应用的触摸输入的示例方法。例如,在步骤1100中,客户端设备的视窗管理服务或者其它应用可以截获所有触摸、多触摸、轻弹、手写笔输入和手势事件并且向服务器发送那些事件,可以在该服务器为对应远程化的应用重放它们。服务器可以在步骤1105中确定远程化的应用是否与触摸输入兼容。例如,服务器可以基于应用是否已经注册为触摸输入兼容应用来进行这一确定。应用可以将视窗注册为能够接收原始输入,比如WM_TOUCH消息。在一个示例中,触摸多触摸DLL可以挂钩RegisterTouchWindow()API并且用系统专属CtxRegisterTouchWindow()API替换它。在应用将视窗注册为能够接收原始输入(例如,发出RegisterTouchWindow()/CtxRegisterTouchWindow())时,服务器可以向客户端设备转发调用,该客户端设备又通过调用本地RegisterTouchWindow()API来通报对应视窗为具有触摸功能。这一函数调用可以包括任何数目的配置参数,比如:关断合并和接通细微触摸,从而使得合并原始触摸输入变成处置应用的职责;停用手掌拒绝,这阻止来自意外手掌接触的消息;以及任何其它配置参数。类似地,触摸或者多触摸挂钩DLL可以挂钩UnregisterTouchWindow()API并且用系统专属CtxUnregisterTouchWindow()API替换它。服务器可以截获这一调用并且向客户端设备传输它从而使客户端设备通报视窗不再需要或者接受原始触摸输入。

在其中远程应用不能处置触摸输入的实例中,可以向默认视窗过程传播输入或者消息,该视窗过程使在服务器上执行的操作系统在步骤1110中将触摸输入转换成鼠标事件并且在步骤1115中向既定应用转发鼠标事件。例如,服务器可以存储在触摸输入或者手势类型与不同鼠标事件/输入类型之间的映射。在特定示例中,虚拟平移手势可以使操作系统检测滚动栏和对应Ctrl-Scroll Wheel命令生成。操作系统也可以检测应用视窗中的可编辑区域并且在接收触摸输入时可以使触摸键盘选项等被生成和显示。例如,服务器可以将触摸输入转换成针对可编辑区域的鼠标点击事件。在可编辑区域上的鼠标点击事件然后可以使虚拟键盘或者其它输入单元被显示和激活。

如果远程化的应用能够处置触摸输入,则服务器可以在步骤1120中向远程化的应用转发触摸事件通知以用于如这里进一步具体描述的那样处理(例如,根据图8的过程)。

在一些配置中,取代或者附加于向系统专属触摸信息取回函数中挂钩替换或者备选函数,服务器可以执行操控以提取原始触摸输入并且向适当应用视窗转发它。例如,服务器可以对底层操作系统在其中存储原始触摸输入的未归档数据结构进行反向工程。这可以包括重建与未归档数据结构近似的视窗内部存储器结构,然后向适当应用视窗发送WM_TOUCH消息,其中该消息指向新创建的存储器结构。另一方法可以包括按照公共触摸输入结构的阵列或者按照系统专属格式(例如,CITRIX格式)重建触摸输入信息。在重建触摸输入时,远程化服务器可以向目标视窗发送WM_TOUCH消息。在特定示例中,服务器可以调用在操作系统内执行并且模拟触摸输入硬件数据的硬件驱动器。多触摸挂钩DLL也可以挂钩GetRawInputDeviceInfo API,该API基于客户端先前通信的设备句柄可以用来取回关于输入设备的信息,例如,名称、类型、设备专属信息。

另外,在一个或者多个布置中,底层操作系统可以提供用于在本机空间和格式中创建触摸或者手势输入数据的一个或者多个公共接口或者函数。例如,操作系统可以提供如下函数,该函数用于创建可以在其中存储并且以后由其它公共函数和调用取回触摸或者手势输入数据的专用地址空间。因此,取代或者附加于应用/函数挂钩和/或模拟驱动器,由操作系统提供的函数和接口可以用来创建触摸或者手势输入数据并且在操作系统指明的位置中存储该数据。在特定示例中,在Windows 8Server操作系统上,远程化客户端510可以使用原始触摸输入注入API(比如InitializeTouchInjection and InjectTouchInput)并且提供POINTER_TOUCH_INFO结构的阵列,该阵列包含关于指针类型的信息,比如触摸或者触笔、联系人ID、像素位置等。在服务器上的Windows Runtime(WinRT)平台中运行的应用(比如Metro Style应用)然后可以使用PointerPoint界面来无缝取回触摸输入。例如,应用可以取回常用数据(比如联系人ID、像素位置)并且也可以从属性包取回输入专属数据。在服务器上运行的Metro Style应用也可以无缝使用GestureRecognizer界面以注册接收关于手势的事件并且配置手势本身。另外,应用可以使用PointerDevice界面以取回各种能力和属性,例如,输入设备类型、它是否为集成或者外部、最大输入计数或者获得设备的支持的HID使用。类似地,在服务器上的Win32平台上运行的应用(桌面应用)可以处置WM_POINTER消息(WinRT PointerPoint的等效消息)并且使用GetPointerInfo()API和有关函数来取回原始输入数据。桌面应用也可以使用InteractionContext界面以取回部件化的手势识别,并且也可以使用Win32 Pointer Device API以查询在服务器环境中的虚拟指针设备。

可以相互结合使用或者可以与其它技术排斥地使用图8的函数调用替换特征、硬件驱动器触摸输入事件创建特征和公共操作系统界面特征。例如,可以在一些境况中使用函数调用替换,而可以在其它境况中使用硬件驱动器创建或者公共操作系统对接。在特定示例中,可以在其中触摸输入可能需要在客户端设备与服务器之间的手势转译、直接手势注入、转译成鼠标事件或者其它非触摸事件的情形中使用函数调用替换。

一些应用可以是输入认知的但不是触摸兼容或者触摸认知的。同样,这样的应用可以基于输入的来源而不是接收的实际输入类型修改应用显示或者调用各种应用函数。例如,如果应用与触摸输入不兼容,则可以将接收的触摸输入转换成用于应用的鼠标事件。应用可以不仅基于接收的鼠标事件而且还基于输入的来源(比如触敏显示器、鼠标、键盘、触板等)修改显示或者调用函数。因而,如果触摸输入的来源对应于触摸输入设备,则无论应用接收的输入是鼠标事件,应用可以用触摸输入来源专属的方式修改显示或者调用触摸输入来源特有的函数。在特定示例中,可以在检测到输入事件的来源是触摸输入设备时扩张菜单或者输入区域以有助于触摸输入。对照而言,来自鼠标输入设备的鼠标事件可能不引起菜单或者输入区域的这样的扩张。在一些配置中,可以总是与手势/触摸事件并行发送鼠标事件。图12图示用于响应于确定接收的输入类型来修改输入认知应用的示例界面。例如,在接收的输入是鼠标输入时,目的地列表更小(例如,左列表1201小于右列表1203)。然而,在接收的输入是触摸输入时,目的地列表更大(例如,右列表1203大于左列表1201)。在一些示例中,确定输入类型可以包括调用GetMessageExtraInfo()函数以获得与消息或者输入关联的附加信息。附加地或者备选地,操作系统可以用特殊签名标记鼠标移动。另外,应用可以用掩码(比如0xFFFFFF80)掩蔽额外信息。因此,在所得值例如是0xFF515780时,输入然后可以被视为触摸。在一些示例中,远程应用可以是输入认知的并且因此可以在接收特定输入类型时修改它们的用户界面。在一些实施例中,应用可以是输入认知的但可能不是手势认知的。在这样的实例中,可以向默认视窗过程传播手势,在该视窗过程将手势修改成鼠标事件。虽然默认视窗过程已经处置手势,但是仍然可以将它们标记为触摸输入。因此,应用或者桌面仍然可以确定输入是输入触摸并且可以相应地修改它的用户界面。

执行应用的服务器也可以调用应用的各种功能或者修改应用显示而无需应用为输入认知的。因此,如果服务器了解输入来源是触摸设备,则即使应用可能不是触摸输入兼容的,服务器仍然可以自动扩张应用或者其部分(例如,输入域)。具体而言,如果服务器识别应用不是触摸兼容的,则服务器可以在通知应用显示扩张输入区域之时向应用传输鼠标事件。图13图示包括支持多触摸的便笺本应用视窗支持的示例用户界面。在便笺本上的线对应于不通过触摸输入,例如,四个手指或者四个触笔。另外,多个线图示同时输入多个触摸事件。这里描述的方法和系统可以支持任何数目的同时多触摸输入。在一些示例中,这一支持可以仅受移动设备102的硬件、移动设备102的操作系统或者移动设备的驱动器限制。

图14图示如下示例用户界面,该示例用户界面将这里描述的各种方法和系统的应用显示于桌面环境。在一个示例中,桌面环境可以包括视窗化、全屏和多监视器视窗模式。可以在每视窗基础上协商触摸,因此可以向在桌面中的不同视窗分配不同触摸水平,并且可以修改在桌面内的视窗而其它视窗保持相同。

图15A和15B图示如下示例用户界面,这些示例用户界面显示在旧式应用中和在桌面环境中实施缩放的结果。在一些布置中,视窗管理服务(比如视窗管理服务206)可以使用StretchBitBit来扩张具有触摸聚焦的视窗并且可以针对旧式应用和桌面部件二者这样做。例如,图15A图示其中可以将多触摸环境的放大功能扩展至并不本机支持缩放的旧式应用的方式。图15B图示其中可以对在桌面中显示的单个应用视窗(例如,文件保存为视窗)重设尺寸或者放大而在桌面中的其它应用视窗保持相同尺寸的方式。这可以通过在具有触摸聚焦的应用视窗上放大来实现。在一些实施例中,在应用视窗支持缩放时,可以关断由视窗管理服务提供的缩放技术,从而使得应用视窗可以照常并且根据它的配置来工作。

由于这里描述的方面通过(例如,在客户端设备与远程服务器之间的)网络操作,所以延时以及低带宽可能引起问题。因而,将触摸输入和手势远程化可以包括延时补偿过程。图16图示可以用来在具有高延时连接的环境中实现零延时或者基本上零延时的示例过程。在步骤1600中,(接收远程化的应用的)客户端设备可以确定在客户端设备与提供远程化的应用的服务器之间的网络连接的延时(例如,传输时间)。在一个示例中,客户端设备可以向服务器发送消息(比如ping请求)以确定与消息关联的往返时间。然后可以基于确定的往返事件的量值确定并且可以在接收输入事件、指定数目的输入事件、基于指定的间隔或者非周期时间表确定延时。例如,可以每30秒、每5秒、每10秒、基于时间表,其中在第一确定之后的5秒进行第二确定并且在第二确定之后的10秒进行第三确定等确定和/或刷新延时。在步骤1605中,客户端设备可以确定延时是否大于指定的阈值。可以将阈值例如设置于如下往返时间值,鉴于根据触摸输入来修改应用显示,用户可能在该往返时间值经历在提供该触摸输入与接收响应之间的显著延时。如果延时在指定的阈值以下,则客户端设备可以如在步骤1650中所示处理触摸输入而没有延时补偿(例如,向服务器转发触摸输入事件的通知)。如果延时在指定的阈值以上,则客户端设备可以使用多个过程中的一个或者多个过程以补偿延时。

第一延时化解技术可以包括在客户端设备本地处理触摸输入。例如,在客户端设备上执行的视窗管理服务或者其它客户端应用可以向显示远程执行应用的应用视窗提供本地反馈(例如,显示修改指令)。这一本地反馈可以基于历史或者近似的信息来确定并且在一些实例中可以跟随有来自远程执行应用的真实反馈。配置视窗管理服务或者其它客户端设备以便能够本地做出响应可以包括如在步骤1610中所示向视窗管理服务或者其它客户端应用传达视窗的能力和应用的处置具体手势的能力。然而,可以在确定延时之前或者在过程中的其它时间传达对应用/视窗能力的传达。在步骤1615中,客户端设备可以确定与接收的触摸输入对应的应用功能。例如,客户端设备可以调用底层操作系统的手势API以将原始触摸输入解译成手势命令。

在步骤1620中,客户端设备然后可以比较应用功能与确定的应用能力以确定应用是否支持触摸输入命令。如果应用与触摸输入命令兼容,则客户端设备可以在步骤1625中本地处理输入命令。例如,如果视窗可以处置滚动和缩放并且确定网络延时在预定阈值以上,则客户端设备可以在检测到触摸输入或者手势时基本上立即调用和/或执行与触摸输入对应的功能。在一些示例中,视窗管理服务或者其它客户端应用可以使用来自视频或者图像缓冲器的图形并且通过对应用视窗的客户端区域执行StretchBitBit或者BitBit操作来本地处置手势。非客户端区域可以保持不改变和未触摸。例如,视窗管理服务或者其它客户端应用可以在应用视窗中显示的图片上放大但是可以允许视窗的标题和边界保持不改变。此外,在步骤1630中,客户端设备还可以向在服务器的远程化的应用传输手势或者触摸输入,从而使得在执行来源/位置更新远程化的应用。一旦远程应用处置手势,远程应用就可以向客户端设备传输应用输出,该客户端设备接收应用输出并且更新应用视窗以显示应用的对手势输入的真实响应。

在其中应用不支持触摸输入命令或者与之关联的功能的情况下,客户端设备可以向服务器传输触摸输入信息(如在步骤1630中那样)以用于远程处置而不进行本地处理。备选地,客户端设备可以丢弃触摸输入而不本地处理触摸输入并且不向服务器发送输入。

另一延时或者会话交互性化解过程可以包括在低带宽和/或高延时条件中排队和投掷触摸输入事件。例如,在步骤1635中,客户端设备可以向将向服务器发送的队列中添加触摸输入事件。在指定的时间,客户端设备可以回顾队列(例如,如在步骤1640中所示)以标识具有至少指定的年龄的触摸输入事件。例如,每个触摸输入事件的年龄可以由触摸输入事件已经在队列中的时间量、自从接收触摸输入事件起的时间量等定义和/或确定。客户端设备然后可以在步骤1645中丢弃具有至少指定的年龄的触摸输入事件。例如,客户端设备可以丢弃具有至少1秒、30毫秒、2秒等的年龄的所有触摸输入事件。备选地或者附加地,客户端设备可以基于将在队列中包括的触摸输入事件的最大数目将队列中的触摸输入事件移除。因而,如果将在队列中存储的触摸输入事件的最大限制为10,则客户端设备可以丢弃最旧的触摸输入事件以将队列中的事件数目减少至10。排队和丢弃可以帮助合并原有触摸输入事件以防止使传输流水线超负荷并且保留远程会话在低带宽条件中或者在(例如,触摸输入事件的)应用执行速度低时的交互性。例如,在一些情况下,应用可能在解译触摸输入时缓慢,即使通向服务器的带宽可以充分,例如,如果服务器负荷高,在该情况下,服务器可能合并输入以便保留应用的交互性。在没有合并时,应用可能忙于消化潜在长的陈旧手势序列并且对用户做出反应有延迟。

也可以针对非基于延时的问题执行在客户端设备与服务器设备之间的触摸输入仲裁。例如,客户端设备可以根据因素(比如操作系统兼容性、客户端、服务器或者用户指定的规则、应用指定的规则等)确定哪个设备将处理触摸输入(服务器或者客户端)。在一些示例中,客户端设备和服务器均可以处理触摸输入。在特定示例中,特定手势(例如,四手指挥动)可以对应于在执行应用之间切换。客户端设备和服务器均可以处理这一手势以造成在客户端设备上本地执行的应用与在服务器上执行的远程化的应用之间的无缝切换。在其它实例中,特定类型的触摸输入可能从未被远程化(例如,向服务器发送)或者可以总是向服务器发送。用于将在何处处理触摸输入的各种规则也可能依赖于客户端设备是否兼容(例如,理解)触摸输入。如果不是,则可以最为替代向服务器传输触摸输入。另外,用户可以希望使用本地或者远程UI元素或者交互规则。因而,用户可以指定将本地或者远程处理某些触摸输入类型(或者所有触摸输入)。

在一些布置中,应用或者系统可以希望确定设备或者其它类型的硬件(比如输入数字化器,例如,客户端设备的输入数字化器)的触屏能力。因而,在一个示例中,视窗管理服务可以使用具有索引SM_DIGITIZER的GetSystemMetrics API以查询输入数字化器的能力,比如支持多触摸、硬笔或者触摸、设备是否准备好、它是否为集成或者外部的、支持多少同时输入。在一些实施例中,接收的信息可以向视窗管理服务通知移动设备的触摸能力。可以向服务器传输这些能力,它们可以在该服务器由远程应用用来根据移动(或者其它客户端)设备的能力修改它们的用户界面。在一些实施例中,这可以包括让多触摸DLL挂钩GetSystemMetrics API并且替换为可以查询移动设备的能力的系统专属API。在查询能力时,服务器可以接收能力并且使它们可用于在服务器上执行的应用。

根据另一方面,操作系统可以提供有助于操控和惯性处理的应用。操控可以包括使用2D仿射变换矩阵在相同时间处理多个/复杂变换,例如,在相同时间用任何数目的手指的旋转、缩放、平动/平移。应用可以向操控处理器中馈送原始数据并且接收变换矩阵。可以将手势概括成个别操控。可以用各种方式使用惯性,这些方式包括指定减速速度或者终点、边界等。惯性API可以生成来自仿真用户的假事件,但是应用可以用与实际事件相同的方式处置它们。默认操控和惯性应用可以被替换为定制操控和惯性处置的应用。在一些示例中,可以在移动(例如,客户端)设备上处置惯性和操控,而在其它示例中,可以在服务器上处置惯性和操控。

在一些实施例中,可以向多个客户端平台(比如iPhone、iPad、Android、Blackberry等)移植上文描述的方法和系统。恰如可以修改这里描述的方法和系统以定制用户的体验,可以这样修改在客户端平台上的特征。例如,如与在远程会话本身中示出键盘并且将触摸事件远程化比对,示出本地/本机客户端触摸键盘,然后将键击向主机远程化。这里描述的方法和系统的能力可以根据客户端/移动设备变化。例如,如果OS并不本机支持从原始事件识别手势,则客户端多触摸平台抽象化可能必须进行它自己的从原始事件识别手势。它也可能必须停用本地处理(例如,缩放/平移)并且向远程会话委托本地处理。

将应用和触摸输入远程化还可以包括支持坐标转译以化解在客户端设备与服务器之间的屏幕位置、尺寸、分辨率等的差别。在客户端设备(例如,移动设备102)上显示的并且显示由远程执行应用生成的应用输出的应用输出视窗(例如,无缝视窗)可以在一些实例中采用空初始位置[0,0]。另外,无缝视窗可以创建具有与客户端设备的显示器基本上相同的分辨率的远程会话。这一分辨率在一些实施例中可以是用于多监视器环境的组合桌面分辨率。在应用输出视窗显示部分或者整个远程桌面时,应用输出视窗可以具有相对于本地物理显示器的偏移坐标。在一些实例中,这可以对于视窗化和甚至全屏远程桌面(在多监视器环境的情况下)而言成立。多触摸和手势输入的准确处置因此可以要求客户端设备或者在其上执行的视窗管理服务在向主机发送物理屏幕坐标作为手势或者原始触摸事件的部分之前将它们转译成逻辑屏幕坐标。例如,如果手势或者触摸输入的物理坐标为[PhysicalX, PhysicalY]并且远程桌面的左上拐角处于物理偏移[DesktopX,DesktopY],则向主机发送的在桌面内的逻辑坐标是[PhysicalX–DesktopX,PhysicalY-DesktopY]。

除了坐标转译之外,客户端设备或者视窗管理服务可以执行坐标缩放。例如,对于向视窗发出的如下手势或者触摸输入,该手势或者触摸输入具有从左上拐角的在[WindowX,WindowY]的并且以比例[ScaleX,ScaleY]缩放的位置,向主机发送的所得逻辑坐标可以是:[WindowX–DesktopX+(PhysicalX-WindowX)/ScaleX,WindowY–DesktopY+(PhysicalY-WindowY)/ScaleY]。可以针对平移输入执行相似平动和缩放或者缩放桌面视窗以与客户端设备视窗尺寸相配。坐标平动和/或缩放可以由客户端或者由服务器或者二者执行。

根据一个或者多个配置,上文描述的方法和系统还可以支持穿过技术。穿过技术包括允许数据在客户端设备与远程化服务器之间的传输期间穿过多个协议跳跃。根据一些方面,这里描述的方法和系统可以支持穿过技术而无任何附加修改。例如,在会话中运行的客户端可以充当接收手势或者多触摸输入的另一应用并且可以向另一会话或者在另一会话中执行的另一客户端转送输入。可以向所有会话中的包括后续网络节点(例如,协议跳跃)的应用呈现数字化器能力。

在一些布置中,上文描述的方法和系统可以附加地或者备选地支持三维图像远程化,例如,三维图像和使用三维图像的桌面,比如Aero技术。在这些实施例中,可以从服务器向客户端设备传输三维绘图命令,并且视窗管理服务可以处置表现来自三维绘图命令的三维图像。在一些实施例中,视窗管理服务可以在屏幕外表面上绘制三维图像,并且然后向三维命令流中注入表面或者表现的图像。这些实施例可以要求缓解在三维命令流中的表面与视窗之间缺乏可辨认关联。在一些实施例中,将三维图像远程化可以包括通过将原始触摸输入流向服务器远程化来提供原始触摸输入支持,其中服务器可以使用触摸输入的坐标以确定应当在哪个对应主机视窗上重放输入。在一些实例中,这一支持可以包括将原始触摸事件转译成用于无触摸功能的那些应用视窗的手势。

根据另一方面,多个用户或者客户端设备可以与单个应用会话(例如,在远程服务器执行的应用的单个实例)交互。因而,用户和客户端设备可以在文档或者图像或者其它应用功能上协作。从多个用户和/或客户端设备接收的输入可以包括触摸输入、手写笔输入、鼠标输入、键盘输入、操纵杆输入等。可以向服务器发送并且化解来自用户的各种输入以确定对将向每个用户传输的应用显示的修改。在一个实例中,一个计算机(例如,客户端设备)可以阴影化另一计算机,例如,CITRIX SMART AUDITOR、CITRIX SMART AUDITOR PLAYER、CITRIX XENAPP或者CITRIX XENDESKTOP。在这些实施例中,应用可以用来重放在远程或者本地用户会话期间生成的应用内容。例如,用户可以在远程化服务器登录用户会话,并且在用户会话内执行的应用可以记录由在用户会话内执行的应用生成的应用输出。在一些实施例中,记录器可以存储记录的应用输出以用于将来回顾或者可以向在其中显示记录的输出的另一会话或者计算机基本上同时传输记录的输出。在生成应用输出时实时查看它有时可以被称为阴影化。在多个用户阴影化另一用户的会话时,阴影化可以被配置用于允许多个阴影用户(阴影化者)与在阴影化的用户(例如,被阴影化者)内执行的应用交互。因而,在一些布置中,阴影化可以用来提供在相同应用实例和用户会话中在多个用户之间的协作功能。

图17图示其中多个用户或者设备可以在单个远程化的应用实例上协作的示例过程。在步骤1700中,远程应用服务器可以从客户端设备和/或用户接收用于发起用户会话的请求。响应于请求,服务器可以在步骤1705中生成新用户会话并且向客户端设备传输输出(例如,显示)。在一个示例中,在发起新用户会话时的初始输出可以是桌面。备选地或者附加地,输出可以对应于用于在客户端设备的操作系统和环境内激活视窗的命令。显示数据和信息也可以与用于在激活的一个或者多个视窗中显示信息和数据的指令一起被传输。在步骤1710中,服务器可以从客户端设备和用户接收用于执行应用的又一请求。作为响应,服务器可以在1715中激活应用的实例并且向客户端设备传输应用输出。应用输出可以包括图标、按钮、菜单项、图形和其它界面元素。

在步骤1720中,服务器可以从另一客户端接收用于阴影化第一客户端的用户会话或者应用实例的请求。在从另一客户端接收请求时,服务器可以在步骤1725中开始记录应用输出并且向另一客户端传输输出。在一些布置中,可以实时或者基本上实时执行这一记录和传输过程。在一些实例中,可以在修改应用输出与向另一设备传输输出之间引入人为延迟。在其它实例中,可以一旦修改应用并且记录输出就传输输出。在步骤1730中,服务器还可以生成与用户或者应用会话关联的一个或者多个虚拟信道的多个实例。每个实例可以对应于共享用户或者应用会话的客户端设备中的不同客户端设备。例如,(请求用户会话的)初始用户或者客户端设备可以使用虚拟信道的第一实例,而另一用户或者客户端设备(例如,阴影化者)可以使用虚拟信道的第二实例。因而,在其中3个阴影化者请求允许阴影化初始用户的一个实例中,可以创建虚拟信道的4个实例,虚拟信道的每个实例对应于包括阴影化者和被阴影化者的组中的不同用户。如描述的那样,虚拟信道实例可以用来向服务器传输包括触摸输入、鼠标输入、键输入等的输入。

在步骤1735中,服务器可以聚合和协调用于与用户会话关联的多个客户端设备的能力。例如,服务器可以请求、接收和聚合阴影化或者托管(例如,被阴影化者)用户会话的每个客户端设备的能力。例如,如果第一客户端设备支持两个同时触摸输入但是第二客户端设备支持十个,则在服务器的共享用户会话环境将向托管的应用报告十二个同时触摸输入的虚拟数字化器能力。能力信息可以包括输入类型(例如,特定手势类型或者原始输入数据集)和对应功能。由于每个客户端设备可以具有不同触摸能力,所以客户端设备可以用不同方式解译触摸输入。为了解决来自不同设备的对相似输入的这些潜在不同解译,服务器可以创建将待执行的功能(例如,伸展、平移、缩放、切换应用、关闭应用、最小化应用等)映射到客户端设备和接收的输入类型的映射表。在一些布置中,可以在客户端设备加入会话时针对该加入设备执行设备能力聚合。备选地或者附加地,可以在每个客户端设备加入(例如,阴影化)用户会话时刷新或者重聚合设备能力。另外,相同或者不同映射可以将客户端设备的触摸输入标识符关联/映射到用户会话输入标识符(例如,在用户会话内唯一的标识符)以避免在从不同设备接收的具有相同的由客户端指定的输入标识符的触摸输入之间的潜在冲突或者抵触。另外,协调多个由客户端报告的主触摸点可以涉及到在共享用户会话中将从任何客户端报告为主触摸点的第一点视为(例如,用于特定触摸输入事件或者命令的)事实上的主触摸点。在其它示例中,报告的最后点可以被视为事实上的主触摸点。可以定义用于确定主触摸点的其它规则(例如,其它基于时间的规则)。主触摸点可以对应于多触摸输入事件的第一触摸点。例如,对于显示旋转多触摸输入事件,主触摸点可以对应于旋转移动的中心。

在步骤1740中,可以通过虚拟信道的多个实例接收多个输入(例如,各自来自两个或者更多信道实例的至少一个输入)。在接收时,服务器可以开始如在步骤1745-1760中描述的那样处理输入。例如,服务器可以在步骤1745中根据时间戳在时间上对准输入。在一个示例中,服务器可以标识接收输入的时间并且减去在每个客户端或者用户的时间与基础时间之间的时间差异。在一个示例中,基础时间可以对应于被阴影化者的本地时间。在其它示例中,基础时间可以对应于服务器时间。因此,可以基于从输入的接收时间减去这些差异来规范化时间戳。

在步骤1750中,服务器可以确定是否处理多个输入中的每个输入。在一个示例中,服务器可以确定在两个输入之间的时间戳中的差异是否在指定的阈值以下。例如,如果在相互的1秒或者更少时间内接收两个输入,则可以仅处理两个输入之一以避免在修改应用显示或者其它输出或者执行应用功能时的抵触。可以使用各种阈值,并且应用的阈值可以依赖于输入类型、应用的功能或者对应用的所得修改。例如,缩放应用视窗可以需要2秒来完成(例如,用于可视动画的所需时间)。因而,可以丢弃或者或者以其他方式忽略在缩放输入的2秒内接收的其它输入。

如果将忽略一个或者多个输入,则服务器可以在步骤1755中选择待处理的输入。例如,服务器可以总是优先于阴影化者的输入处理被阴影化者的输入。在另一示例中,服务器可以处理两个或者更多抵触输入中的第一输入(按时间)。可以备选地或者附加地实施其它规则以化解在输入之间的抵触。在步骤1760中,服务器可以随后在应用的情境内处理接收的输入或者选择的输入(例如,以影响应用的功能或者显示)并且向参与设备和用户传输输出。

根据一些方面,可以针对多个不同应用、应用视窗、用户界面控件或者应用显示的部分并行接收和处理任何数目(例如,数目N)的用户输入。可以从相同用户或者从多个用户接收和处理多个同时输入。例如,针对相同用户会话,并行地,第一用户可以录入用于第一应用(比如字处理应用)的输入,而第二用户可以录入用于第二应用(比如计算器应用)的输入。执行应用的服务器或者其它设备然后可以处理用于每个应用的接收的输入并且向第一和第二用户两者返回结果(例如,应用显示或者桌面的修改)。备选地,可能仅向从其接收用户输入的用户提供由于输入而产生的应用显示的修改。在一些实例中,第一和第二用户可以通过相同设备(例如,平板计算机或者其它计算设备的相同触屏)录入输入或者可以通过不同设备录入输入。因而,在上述通过阴影化的协作示例中,用户也可以向多个相异应用中录入输入而不是与用户会话的相同应用交互。在一些示例中,单个用户输入可以针对多个应用并且针对多个应用并行处理单个用户输入。同样,在特定示例中,用户可以录入用于关闭多个应用或者应用软件的应用关闭命令(例如,触摸或者手势命令)。服务器可以接收关闭命令并且针对多个应用中的每个应用为一次地多次重复或者以其他方式处理命令。

可以在除了客户端设备和远程服务器系统之外的其它环境中使用这里描述的各种特征。例如,服务器可以对应于电话或者平板计算机,而客户端可以对应于另一平板计算机或者静止个人计算机。将这里描述的特征应用于这样的环境,用户可以使用另一平板计算机或者静止个人计算机或者其它计算设备的更大显示器以操作或者控制具有更小显示器的设备(例如,电话或者平板计算机或者其它计算设备)。因而,在一些示例中,两个设备可以相互在本地(例如,在相同大楼、相同房间中)或者相互远离。

还可以通过能够存储计算机可读指令的任何数目的计算机可读介质实施这里记载的方法和特征。可以使用的计算机可读介质的示例包括RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、DVD或者其它光盘存储装置、磁盒、磁带、磁存储装置等。

另外,尽管这里描述的方面和特征中的许多方面和特征包括使用移动设备,但是静止或者固定位置的设备也可以包括相同或者相似方面和特征。例如,(例如,向壁装插座中插入的)个人计算机或者工作站可以包括触摸输入控件并且提供对来自远程计算设备的远程化的应用的访问。因而,可以用与移动设备(比如平板计算机)相似的方式从个人计算机或者工作站生成和使用相似本机控制元素。

附加地或者备选地,在至少一些示例中,可以通过一个或者多个集成电路(IC)实施这里记载的方法和特征。集成电路可以例如是访问只读存储器(ROM)中存储的编程指令或者其它数据的微处理器。在一些这样的示例中,ROM存储使IC根据这里描述的方法中的一个或者多个方法执行操作的编程指令。在至少一些其它示例中,向IC中硬接线这里描述的方法中的一个或者多个方法。换言之,IC在这样的情况下是如下专用集成电路(ASIC),该ASIC具有专用于这里描述的计算和其它操作的门和其它逻辑。在更多其它示例中,IC可以基于执行从ROM或者RAM读取的编程指令来执行一些操作,而向IC的门和其它逻辑中硬接线其它操作。另外,IC可以向显示缓冲器输出图形数据。

虽然已经描述了实现各种特征的具体示例,但是本领域技术人员将理解,存在在如所附权利要求中阐述的公开内容的精神实质和范围内包含的上述系统和方法的许多变化和排列。此外,本领域普通技术人员将从对本公开内容的回顾中想到在所附权利要求的范围和精神实质内的许多其它示例、修改和变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1