动态输入设备的无窗运行时控件的制作方法

文档序号:6427432阅读:109来源:国知局
专利名称:动态输入设备的无窗运行时控件的制作方法
技术领域
本申请涉及动态输入设备的无窗运行时控件。
背景技术
许多计算系统用拥有系统范围的活动焦点的单个应用程序来操作。在这样的系统中,输入被自动地传递给当前拥有系统范围的活动焦点的应用程序。例如,如果字处理应用程序拥有系统范围的活动焦点,则键盘输入将被自动地传递给该字处理应用程序,例如在文档中写句子。系统范围的活动焦点可以从一个应用程序改变到另一应用程序,但是两个不同的应用程序将不在相同的时刻拥有系统范围的活动焦点。例如,系统范围的活动焦点可以从字处理应用程序改变到浏览器应用程序。在这样的改变之后,键盘输入将被自动地传递给浏览器应用程序,例如在地址栏中写URL。在实施系统范围的活动焦点的许多系统中,不存在用于将键盘输入和其他类型的输入转移到与带有系统范围的活动焦点的应用程序不同的应用程序的机制。概述根据本公开内容的一个方面,可以由计算系统提供动态输入设备的无窗运行时控件,该无窗运行时控件包括主控包括无窗运行时环境在内的一个或多个运行时环境的容器模块。该计算系统还包括输入设备用户界面运行时应用程序,该输入设备用户界面运行时应用程序在该无窗运行时环境内执行,以便在该容器模块外执行的另一应用程序拥有该计算系统的活动焦点的同时,接收来自动态输入设备的动态输入消息。提供本概述以便以简化形式介绍下面在详细描述中进一步描述的概念的选集。本概述不旨在标识所要求保护的本主题的关键特征或必要特征,也不旨在用来限制所要求保护的本主题的范围。此外,所要求保护的本主题不限于解决本公开内容的任何部分中提到的任何或所有缺点的实现。附图简述

图1示出包括提供结合键盘套件的按键显示可查看的输出的能力的动态输入设备的示例计算系统。图2是图1中示出的动态输入设备的分解图,且示出由动态输入设备的键盘套件下的显示设备提供的可查看的显示输出。图3示出根据本公开内容的实施方式的示例计算系统。图4示出用于实现图3的计算系统的示例体系结构。图5示出用于实现图3的计算系统的另一示例体系结构。图6示出根据本公开内容的实施方式的用户输入和动态输入设备输出的序列。图7示出使用无窗运行时环境来管理来自动态输入设备的输入的示例方法。图8示出供主要应用程序用动态输入设备实现辅助体验的示例方法。详细描述公开用于将键盘输入和其他类型的输入递送到与拥有系统范围的活动焦点的应用程序不同的应用程序的系统和方法。如下面所描述,来自动态输入设备的触摸输入和其他类型的输入可以由主控无窗运行时环境的容器模块处理,在容器模块内可以主控以输入设备用户界面运行时应用程序(UI运行时app)的形式的辅助体验。如下面更详细地描述, 动态输入设备可以被配置为在不同的键或其他输入位置处显示不同的图像。该UI运行时应用程序可以控制在不同的键或其他输入位置显示什么图像。当用户按压在输入位置处显示的虚拟按钮时,从虚拟按钮得到的输入消息可以被传递给在此所公开的容器模块,以供离开当前拥有系统范围的活动焦点的应用程序而处理。在一些实施方式中,从物理键入得到的输入消息可以可选地被传递给在此所公开的容器模块。在这一方式中,辅助体验或UI 运行时应用程序可以与拥有系统范围的活动焦点的桌面应用程序合作以给用户提供丰富的用户体验。图1示出包括显示监视器22、组件外壳M(例如,包含处理器、硬盘驱动器等等) 和动态输入设备26的示例计算系统20。动态输入设备沈也可以被称为自适应输入设备, 这是因为该输入设备可以通过显示不同的图像来动态地改变。图2提供动态输入设备沈和可以在其构建中使用的示例组件的附加视图。如将在各种示例中描述,动态输入设备沈可以被实现为除了键盘类型的输入功能之外还提供可显示的输出。此外,计算机外围设备可以包括促进图像的键上和/或按键查看的键。在其他实施方式中,动态输入设备可以不包括键,而是包括能够识别触摸激活的一个或多个显示区域。如由键28 ±m“Q,,、“r,、“E,,、“R,,、“T,,、“Y,,(图1和图2)等等指示,常常期望动
态输入设备26被配置为提供常规的字母数字输入能力。为简化阐释,图1和图2中示出不带标记的许多键,但应明白,标签或图像将常常在每一键处显示。此外,除了“QWERTY”模式或代替该模式,可以动态地改变键盘的键观以提供其他功能。可以指派各键,例如,以便提供用于各种语言和字母表功能,和/或激活用于控制计算系统20的其他输入命令。在一些实现中,键功能可以基于上下文而改变,例如响应于改变在计算系统20上运行的软件的操作上下文。例如,一旦按压“ALT”键,用来输入字母“F”的键可能取而代之地导致激活软件应用中的“File (文件)”菜单。一般地,应理解,可以有选择地按压本示例中的键以产生用于控制计算机的任何类型的输入信号。动态输入设备沈可以提供各种各样的可显示的输出以便增强和以另外方式扩充计算体验。在一些示例中,计算机外围设备引起在各个键观上或其附近显示可查看的输出以便指示键功能。这可以见于图1和图2,其中代替带有喷漆或打印到键帽表面的字母的键,显示装置(例如,位于各键下的液晶显示器(IXD)设备)被用来指示各键的“Q”、“W”等功能。这一动态的和可编程的显示能力促进动态输入设备沈的以各种不同方式的潜在用途。例如,可以映射以上所描述的基于英语的键盘,以便以字母表次序而不是常规“QWERTY” 模式来提供字母,然后可以容易地改变每一键的显示以便反映不同的键指派。在此预期的显示能力可以被用来将任何类型的可查看的输出提供给计算系统20 的用户,且不限于字母表、字母、数字、符号等等。作为对上面的示例的替代,可以以在空间感觉上并不必定与单个键关联的方式显示图像。图像可以被呈现在例如跨越多个键的键盘区域。提供该成像而无需与键盘的输入功能相关联。可以例如出于美观目的提供图像以个性化用户体验或提供其他类型的输出。确实,本公开内容包括出于任何目的的显示输出。而且,除了在键观上或其附近提供的显示之外,可以在其他区域提供显示功能,例如在位于键观上的区域32。更进一步,除了由键观提供的键盘类型输入之外,可以给区域32或动态输入设备26的其他部分提供基于触摸或手势的交互性。例如,经由基于电容的技术、基于电阻的技术或其他合适的方法,可以将区域32实现为交互触摸屏幕显示。更进一步,在一些实施方式中,动态计算机外围设备可以仅包括触摸区域而没有可按压的键。图2示出动态输入设备沈的非限制性示例配置。所提供的示例决不是限制性的, 且应理解,本公开内容与任何动态输入设备兼容。如所示出的,动态输入设备沈可以包括显示设备40和被放置在该显示设备上并与之耦合的键盘套件42。键盘套件42可以是至少部分地透明,以便允许用户通过键盘套件查看由显示设备产生的图像。在一种实施方式中, 例如,每一键观具有中央的透明部分,允许用户看到由位于键盘套件42下的LCD面板或其他显示设备产生的图像。在一些情况中,基本上所有的键都将是透明的。在其他示例中,键的外围部分可以是不透明的,例如一般隐藏促进键帽的上下移动的结构。在一些实施方式中,键帽可以包括双凸透镜屏幕或可以将图像背投到其上的其他光漫射屏幕。可以采用各种类型的显示设备。如上面简要地指示,一种类型的合适的显示设备是IXD设备。然而,应明白,该键盘套件可以与包括投影和楔形投影显示在内的各种其他显示类型耦合。如上面所介绍,来自键盘和其他计算机外围设备设备的输入通常被自动地传递给当前拥有系统范围的活动焦点的应用程序。然后,当前拥有系统范围的活动焦点的应用程序直接地处理以此方式接收的输入。在许多环境中,这样的框架向用户提供可预测的计算体验。然而,在一些场景中,可能期望与当前拥有系统范围的活动焦点应用程序不同的某物处理来自键盘和其他计算机外围设备的输入。例如,在动态输入设备的上下文中,可能期望以UI运行时应用程序形式的辅助体验接收来自动态输入设备的输入并处理一些或所有这样的输入。这样的范例允许UI运行时应用程序控制由动态输入设备显示的图像。这样的范例也允许该UI运行时应用程序控制激活键或动态输入设备上的其他输入区域的最终效
: O用UI运行时应用程序集中输入和输出控制允许桌面应用程序和其他程序利用动态输入设备而不需要被设计为处理所有设备输入和设备显示输出。换句话说,被编写为供与标准键盘一起使用的桌面应用程序可以与动态输入设备一起使用,且以UI运行时应用程序形式的辅助体验可以被用来功能上在动态输入设备和桌面应用程序之间工作。UI运行时应用程序可以控制由动态输入设备显示什么图像以及取决于显示哪些图像如何解释用户激活。为了允许此类型的控制,允许UI运行时应用程序代替拥有系统范围的活动焦点的应用程序处理至少一些输入消息。为了提供这样的灵活性,UI运行时应用程序可以不是追随系统范围的活动焦点的规约的常规桌面应用程序。如下面更详细地描述,代替地,UI运行时应用程序可以在无窗运行时环境内作为对桌面应用程序的辅助体验而操作。图3示意性地示出计算系统50的示例实施例,该计算系统50可以将触摸输入、键盘输入和/或其他类型的输入递送给与拥有系统范围的活动焦点的应用程序不同的应用程序。尤其,图3示出包括将输入消息递送给UI运行时应用程序的动态输入设备的计算系统,如上面所介绍。计算系统50可以可选地包括键盘形式的直接输入设备52。计算系统50也包括以包括多个键56的自适应键盘形式的动态输入设备M,在多个键56处可以显示不同的图像。动态输入设备M也包括不带有键的触摸区域58。触摸区域可以被用来显示可以由用户激活的一个或多个虚拟按钮或其他虚拟控件。尽管在这一示例中未示出,但动态输入设备可以包括键和触摸区域的不同的排列或组合,且一些动态输入设备可以包括不带有触摸区域的键或不带有键的触摸区域。动态输入设备可以被配置为动态地将多个输入图像显示给用户并确认被定向到多个输入图像中的任何特定的一个的用户输入。作为示例,可以在多个键56处显示不同的输入图像,且动态输入设备M可以响应于被定向到特定键的用户输入而输出包括该特定键的指示在内的动态输入消息。作为另一示例,可以在触摸区域58的不同位置处将不同的输入图像显示为虚拟控件,且动态输入设备M可以响应于被定向到特定虚拟控件的用户输入而输出包括特定虚拟控件的指示在内的动态输入消息。计算系统50可以包括用于执行一个或多个本机应用程序的操作系统60。操作系统60可以管理和协调资源共享以及在所执行中应用程序当中的分配。操作系统60也可以控制计算系统50的至少一些I/O功能。在至少一些框架中,操作系统60被配置为允许当前正被执行的一个或多个本机应用程序中的单个应用程序拥有系统范围的活动焦点。在这样的框架中,操作系统60将所有直接输入消息从一个或多个直接输入设备引导到拥有系统范围的活动焦点的本机应用程序。操作系统的非限制性的示例包括微软 Windows 、苹果 MACOS⑥和LINUX⑧。在一些实施方式中,操作系统可以将键盘消息(例如,从被按压的键盘键所得到的消息)传递给拥有系统范围的活动焦点的应用程序。在这样的情况中,操作系统挂钩可以被用来窥视键盘消息。这些消息也可以被发送到UI运行时应用程序,因而允许UI运行时应用程序基于该UI运行时应用程序观察到什么键盘消息而响应。另一方面,触摸输入消息(例如,从触摸区域58上的用户触摸所得到的消息)可以被直接地传递给运行时环境并被转换成UI运行时应用程序可以理解的消息。触摸输入消息可以被传递给运行时环境,且无需被传递给拥有系统范围的活动焦点的应用程序。动态输入设备可以包括不引起操作系统枚举动态输入设备并将动态输入设备看作是标准显示监视器和/或键盘的界面。然而,在一些实施方式中,操作系统可以将动态输入设备的各键枚举为标准键盘,但是不将触摸区域枚举为标准数字化仪,以便避免触摸动态输入设备被解释为触摸主显示监视器。如下面更详细地描述,容器模块62、虚拟运行时环境64和UI运行时应用程序66可以提供其他软件可以调用以便接收来自动态输入设备的输入(例如,触摸输入、键入等等)并将图像输出发送给动态输入设备的函数。计算系统50包括容器模块62。容器模块可以提供一个或多个不同的控件可以在其中运行的环境。作为非限制性示例,容器模块62可以是微软 ACTIVEX 容器,被配置为提供微软 ACTIVEX 控件可以在其中运行的环境。容器模块62可以操纵、管理和向所有由该容器模块主控的控件提供服务。例如,容器模块62可以给控件提供事件处理器。在一些实施方式中,容器模块可以被实现为桌面应用程序的部分。容器模块62可以被配置为主控以在当前活动桌面的上下文中运行的运行时环境 64的形式的控件。尽管本公开内容与任何数量的不同的合适的运行时环境兼容,但在此作为非限制性示例提供微软 SILVERLIGHT 运行时环境。使用这一示例,以微软 ACTIVEX 容器形式的容器模块62可以主控以微软 511^扎16肌 插件形式的运行时环境。然而,应理解,可以在不偏离本公开内容的范围的前提下使用其他容器模块和/或运行时环境。作为非限制性示例,该运行时环境可以被实现为Adobe Flash 运行时环境。在一些实施方式中,运行时环境64可以是在当前活动桌面的上下文中运行的无窗运行时环境。换句话说,运行时环境64可以不实例化专用的GUI渲染窗口,而这通常由大多数本机桌面应用程序和其他运行时环境完成。在一些实施方式中,容器模块和无窗运行时环境可以利用开发者用来开发用于其他目的的应用程序的相同的框架。作为示例,无窗运行时环境可以与本机浏览器应用程序兼容。因而,所开发的与本机浏览器应用程序兼容的应用程序与该容器模块和该无窗运行时环境兼容。换句话说,开发者可以使用与该开发者用来开发用于本机浏览器应用程序的应用程序相同的工具和规约来为该无窗运行时环境开发应用程序。因而,为无窗运行时环境开发相对容易。使用来自上面的示例,熟悉开发微应用程序的任何开发者可以开发供与动态输入设备一起使用的应用程序。作为不同的示例,如果该运行时环境被实现为Adobe Flash 运行时环境,则熟悉开发Adobe Flash 应用程序的任何开发者可以开发供与动态输入设备一起使用的应用程序。计算系统50还包括在该无窗运行时环境内执行的一个或多个输入设备用户界面运行时应用程序(例如,UI运行时应用程序66)。在这样的场景中,在容器模块62外执行的不同的应用程序(例如,桌面应用程序68)可以拥有系统范围的活动焦点。因而,桌面应用程序68将接收常规的输入,例如来自直接输入设备52的输入和/或来自被枚举为标准直接输入设备(例如,在一些实施方式中是动态键盘的各键)的动态输入设备的那些部分的输入。然而,UI运行时应用程序66可以被配置为接收来自动态输入设备M的动态输入消息。在这一点上,即使桌面应用程序68接收来自一个或多个直接输入设备的所有直接输入消息,UI运行时应用程序也接收来自动态输入设备的至少一些输入,。桌面应用程序或其他主要应用程序可以注册和/或指定可以控制动态输入设备上的可显示输出的一个或多个辅助体验。例如,这样的辅助体验可以采取在无窗运行时环境中运行的UI运行时应用程序的形式。作为一个非限制性示例,辅助体验可以被封装为一个或多个微软 Silverlight XAP文件。这些辅助体验可以经由客户机应用程序编程界面(API)而被注册。每个主要应用程序可以注册一个或多个体验,且该主要应用程序可以基于该主要应用程序的当前上下文动态地指定所注册的体验中的哪一个是活动的。每一 XAP文件或辅助体验的其他实现可以与该主要应用程序的特定上下文相关联。在一些实现中,这样的上下文可以对应于可以经由该主要应用程序执行的不同的用户任务(例如,创建新的电子邮件、查找联系人、安排新的会议、审阅任务等等)。可以通过用适于辅助用户执行当前活动的上下文或任务的图像、虚拟控件和经更新的键动态地更新动态输入设备来促进每一上下文或任务。对应于特定的上下文的辅助体验可以被配置为在动态输入设备上动态地显示第一组虚拟控件并向该主要应用程序报告第一组虚拟控件的激活。客户机API可以被配置为提供供主要应用程序发送和接收去往和来自辅助体验的消息的信道。作为非限制性示例,该应用程序编程界面可以包括供主要应用程序基于该主要应用程序的当前上下文指定辅助体验的调用,以及供所指定的辅助体验将经由该辅助体验显示的虚拟控件的激活报告回给主要应用程序的调用。在一些实施方式中,操作系统可以被配置为将直接输入和动态输入传递给拥有系统范围的活动焦点的应用程序。例如,操作系统可以将直接输入和动态输入传递给桌面应用程序。在这样的实施方式中,该桌面应用程序可以被配置为判断特定的输入是动态的还是直接的。被判断为动态的输入可以被传递给UI运行时应用程序66以供处理。在这样的实施方式中,桌面应用程序和UI运行时应用程序可以被配置为经由任何合适的消息传递方法(例如,消息传递API)协调和共享信息。在其他实施方式中,操作系统可以被配置为判断特定的输入是动态的还是直接的。在这样的实施方式中,操作系统可以被配置为将直接输入传递给拥有系统范围的活动焦点的应用程序,同时将动态输入传递给UI运行时应用程序。访问控制层(ACL)可以使用来自所注册的应用程序中的注入挂钩的输入以及来自操作系统可存取性系统的输入来做出关于动态输入设备上应有什么样的最终渲染体验的决定。在一种实现中,ACL注视操作系统中的所有焦点改变,使得ACL知晓哪一应用程序拥有焦点。在每一焦点改变时,ACL可以移除与丢失焦点的应用程序相关联的任何辅助体验。接下来ACL可以查找获得焦点的应用程序是否拥有任何所注册的辅助体验。如果获得焦点的应用程序拥有所注册的辅助体验,那么当前“活动的”辅助体验被加载、被初始化并被预先准备好以供渲染。如果获得焦点的应用程序不拥有所注册的辅助体验,那么ACL可以加载、初始化和预先准备好默认的辅助体验。一旦正确的辅助体验已经被标识和预先准备好,它就可选地与由系统提供的任何“默认的”体验(例如,被显示在键盘键上的标准键盘图像)组合。如上面所介绍,在一些实施方式中,渲染系统可以是私有主控的微软 SILVERLIGHT 控件。然而,在不偏离本公开内容的范围的前提下,替代的运行时环境可以主控渲染系统。在这一示例中,微软 SILVERLIGHT 控件中的活动的内容可以由ACL和/ 或支持控制模块管理。诸如微软 SILVERLIGHT 等的无窗运行时管理可以被用作动态输入设备的唯一渲染器。使用该示例,无窗运行时控件是拥有独立焦点系统的可主控的XAML 渲染器。独立焦点系统允许在辅助体验中示出适当的控制反馈而不影响操作系统的焦点状态。基于从动态输入设备接收到的原始的触摸数据,可以将鼠标消息注入到无窗运行时控件,因而允许来自动态输入设备的触摸输入与辅助体验直接地交互。QWERTY管理器可以被用来给予辅助体验关于键盘上什么键正被按压的通知。结合默认的QWERTY XAML布局, 这一 QWERTY管理器为动态输入设备上的每一键顶提供动态的、适当的渲染。这一 QWERTY 管理器提供独立地监视来自操作系统的所有击键报告的机制。另外,该QWERTY管理器被配置为报告所有键按压,包括在该运行时环境中不受默认支持的键按压。UI运行时应用程序66可以被配置为将从设备消息导出的系统消息输出到拥有系统范围的活动焦点的应用程序。这可以经由在桌面应用程序和UI运行时应用程序之间的通信信道来完成。系统消息使得拥有系统范围的活动焦点的应用程序能够响应经由动态输入设备的用户输入。UI运行时应用程序66可以将对应于用户激活的虚拟控件或键的系统消息发送给拥有系统范围的活动焦点的应用程序,且考虑了虚拟控件或键可更换功能,如由在该虚拟控件或键处所显示的图像来指示。在这一方式中,动态输入设备M可以被用来控制拥有系统范围的活动焦点的应用程序。此外,可以动态地改变与激活任何特定的键或任何特定的虚拟控件相关联的功能,且,拥有系统范围的活动焦点的应用程序可以接收经由UI运行时应用程序66根据该特定的键或虚拟控件的当前功能转换的输入。使用上面所提供的示例,在微软 ACTIVEX 容器接收来自动态输入设备M的触摸输入信息时,微软 ACTIVEX 容器将此信息转换成类似于微软 Windows 鼠标消息的信息,并调用用于将输入注入到微软 SILVERLIGHTTM插件的方法,在这一情况中,该方法是 IOlelnPlaceObjectffindowlessOnffindowMessage(. · ·)。如以上所描述的,UI运行时应用程序66还可以被配置为向动态输入设备M输出显示输出消息。显示输出消息可以被用来指定要由动态输入设备显示的一个或多个图像。 这样的图像可以被用作向用户通知与特定的键或虚拟控件动态地关联的功能的可视线索。 如上所述,UI运行时应用程序66可以输出对应于在用户输入被定向到和被检测的位置(例如,键或虚拟控件)处显示的图像的系统消息。使用上面所提供的示例,在处理鼠标消息时,微软 SILVERLIGHTTM插件可以改变动态输入设备的可视外观。该插件可以经由例如IOlehPlaceSiteWindowless: Invalida teRectC..)向容器模块62通知脏矩形(dirty rect)(即,经改变的像素的集合)。例如,经由IViewObject: :Draw(...),容器模块62可以使用脏矩形来要求该插件将无效区域绘制到位图。然后,经由合适的调用,借助于新的图像数据,容器模块62可以使用脏矩形和来自该位图的比特来只更新动态输入设备的无效部分。运行时环境64可以可选地包括输入模块70和/或输出模块72。在被包括在内时,输入模块70和输出模块72可以被用来管理在动态输入设备M和计算系统50之间的通信。在一些实施方式中,UI运行时应用程序66、容器模块62和/或操作系统60可以被用来管理在动态输入设备M和计算系统50之间的通信。在一些实施方式中,桌面应用程序和/或能够拥有系统范围的活动焦点的其他应用程序或模块可以被配置为辅助管理在动态输入设备M和计算系统50之间的通信。在此介绍的各API可以被用来促进这样的通计算系统50可以可选地包括安全通信模块74。该安全通信模块可以被用来促进在UI运行时应用程序66、运行时环境64和/或容器模块62和计算系统的其他方面之间的安全通信。作为一个非限制性示例,UI运行时应用程序66、运行时环境64和/或容器模块 62可以拥有可以被用来验证所有消息的经签署的数字证书,以使得计算系统的其他方面可以验证该证书以确保消息是来自可信的源。计算系统50也可以包括可以由各种系统组件用来访问包括通信消息在内的系统功能的一个或多个系统API 76。尽管在图3中未示出,但在一些实施方式中动态输入设备可以利用API 76。转回到图3,在一些实施方式中,计算系统50包括逻辑子系统78和数据保持子系统80。逻辑子系统78可以包括配置为执行一个或多个指令的一个或多个物理设备。例如, 该逻辑子系统可以被配置为执行是一个或多个程序、例程、对象、组件、数据结构、或其他逻辑构造的一部分的一个或多个指令。这样的指令可以被实现为执行任务、实现数据类型、变换一个或多个设备的状态或以另外方式达成所期望的结果。该逻辑子系统可以包括被配置
9为执行软件指令的一个或多个处理器。另外,或替代地,该逻辑子系统可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑机器。该逻辑子系统可以可选地包括贯穿在一些实施例中可以远程定位的两个或更多个设备而分布的个体组件。数据保持子系统80可以包括被配置为存储数据和/或可由该逻辑子系统执行以便实现在此所描述的方法和过程的指令的一个或多个物理的、非暂态的设备。作为非限制性示例,数据保持子系统80可以被用来存储被用来执行操作系统60、容器模块62、运行时环境64、UI运行时应用程序66和桌面应用程序68的指令。在实现这样的方法和过程时, 可以变换数据保持子系统80的状态(例如,以便保存不同的数据)。数据保持子系统80可以包括可移动介质和/或内嵌设备。数据保持子系统80可以包括光学存储器设备、半导体存储器设备和/或磁存储器设备以及其他。数据保持子系统80可以包括具有下列特性中的一个或多个的设备易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序访问、位置可寻址、文件可寻址和内容可寻址。在一些实施方式中,逻辑子系统78和数据保持子系统80可以被集成到一个或多个常见的设备,例如专用集成电路或系统芯片。术语“模块”和“引擎”可以被用来描述计算系统50的被实现为执行一个或多个特定的功能的方面。在某些情况下,可以通过逻辑子系统78执行由数据保持子系统80所保存的指令来实例化这样的模块或引擎。应理解,可以从相同的应用程序、代码块、对象、例程和/或函数实例化不同的模块和/或引擎。同样地,在一些情况中,可以由不同的应用程序、代码块、对象、例程和/或函数实例化相同的模块和/或引擎。如以上所描述的,桌面应用程序和辅助体验(例如,UI运行时应用程序)可以协作以便给用户提供丰富的和交互的输入体验。各种不同的体系结构和协议可以被用来实现参考图3描述的范例。图4和图5示出两个不同的示例体系结构。在图4和图5的示例体系结构,动态输入设备被看作是光栅化设备。因此,软件堆栈不必支持动态输入设备中的复杂GPU,而是所有复杂的组合和渲染都可以在宿主计算机上完成。因而,仅光栅图像(位图)被传送给动态输入设备。在其中动态输入设备不是简单的光栅化仪而是带有更强大的CPU和/或GPU的设备的各实施方式中,该体系结构可以被扩展为使得运行时环境被主控在动态输入设备本身上。设备抽象可以被用来枚举动态输入设备的所有自适应特征(例如,动态输入设备是否包括键盘、动态输入设备是否包括触摸传感器、触摸传感器的大小是什么等等)。设备抽象也可以被用来控制在动态输入设备上渲染的内容。设备抽象界面也可以被用来从无窗运行时控件获取完全地渲染的位图并将该完全地渲染的位图传递给动态输入设备以供显示。设备抽象界面也提供供动态输入设备报告触摸数据以及与动态输入设备的任何其他用户交互的设施。此触摸数据和其他信息可以被传递回来以便在无窗运行时控件中当前运行的可视树种表示。该抽象是总线(例如,USB、以太网等等)不可知的。图4示出使用共享的无窗运行时环境92的示例体系结构90,无窗运行时环境92 被配置为执行由两个或更多个不同的主要应用程序指定的输入设备用户界面运行时应用程序。尤其,该示例体系结构使用带有访问控制层(ACL)94的单个微软 SILVERLIGHTTM控件,访问控制层(ACL) 94被配置为管理来自带有该单个微软 SILVERLIGHT 控件的所有应用程序的所有所注册的内容。如以上所描述的,可以在不偏离本公开内容的范围的前提下使用不同的运行时环境。此体系结构使用单个控件,且较少的数据实例跨进程边界。然而,任何所注册的辅助体验中的任何错误代码都可以影响所有其他体验。图5示出使用本地无窗运行时98环境的示例体系结构96,本地无窗运行时98环境由主要应用程序100主控,且被配置为执行仅由该主要应用程序指定的输入设备用户界面运行时应用程序。尤其,在注册/激活辅助体验的每一主要应用程序的进程中创建微软 SILVERLIGHT 控件。在被用于由访问控制层104的规则控制的最终组成的分开的运行中创建另一微软 SILVERLIGHTTM控件102。除了跟踪焦点改变之外,ACL被增强为跟踪来自每一关联应用程序/体验的当前位图。此体系结构保持所有应用程序体验都是分开的, 且给定体验中的坏代码仅影响提供该坏代码的应用程序。另外,任何安全问题也都被包含在应用程序本身。此体系结构也可以允许在主要应用程序和关联的被主控的体验之间的更高保真度的通信信道,这是由于主要应用程序和体验两者都是在相同的进程中。此体系结构可以将更高的带宽用于跨进程数据共享。图4和图5中阐释的和以上所描述的各示例体系结构是非限制性的。在不偏离本公开内容的范围的前提下可以使用其他体系结构。图6稍微示意性地示出其中通过动态输入设备112执行用户输入的序列110,动态输入设备112可以充当使用显示114的计算设备(例如,图3的计算系统50,未示出)的外围设备。在所阐释的示例中,电子邮件应用程序116当前拥有该计算设备的系统范围的活动焦点,且该电子邮件应用程序与以UI运行时应用程序形式的辅助体验协作。序列110演示以上所描述的系统和方法的示例实现,这允许计算设备在动态输入设备112和显示114 两者上呈现图形。经由时间线描绘所阐释的序列110,时间线按时间先后从时间tl进行到时间t4。在tl,通过用户在动态输入设备112上执行键输入来发起输入序列。在所阐释的示例中,键输入是其中用户按下t键且然后按下r键的键式输入。应注意,动态输入设备 112可以在每一键处显示图像(例如,在t键处的图像“t”和在r键处的图像“r”)。然而, 为便于理解,图6仅示出在与这一示例相关的那些键的键图像。被包括在动态输入设备中的输入传感子系统可以检测键输入并将键输入信号发送给计算设备,如上所述。可以使用任何合适的类型的消息和/或编码来报告键输入。计算设备可以如上所述处理该输入信号。然后,显示可以接收来自计算设备的信号并变更被呈现在显示上的活动的内容。 在这一示例中,当对应的键被激活时,在文本框118中显示对应于该键的字母。电子邮件应用程序也可以分析该输入并预测用户尝试发送的内容。在t2,动态输入设备接收来自计算设备信号并在动态输入设备的触摸显示器121 上呈现多个虚拟按钮(即,联系人控制按钮120a、联系人控制按钮120b、联系人控制按钮 120c)。虚拟按钮对应于电子邮件应用程序已经判断为最有可能是该电子邮件的收件人的联系人。应明白,虚拟按钮可以充当用户可以触摸以便激活的触摸屏幕上的控件。可以经由向电子邮件应用程序提供辅助体验的UI运行时应用程序向动态输入设备提供虚拟按钮。 如上所述,该UI运行时应用程序可以是无窗控件。在t3,用户执行被定向到由动态输入设备显示的虚拟按钮中的一个(即,联系人控制按钮120a)的触摸输入。传感子系统检测该触摸输入并向计算设备发送消息。如上所述,即使电子邮件应用程序拥有系统范围的活动焦点,此消息也可以由UI运行时应用程序处理。一旦接收到该消息,UI运行时应用程序就可以与电子邮件应用程序通信,指示用户已经选择对应于联系人控制按钮120a的联系人。在t4,响应于该触摸输入,且一旦接收来自UI运行时应用程序的通信,电子邮件应用程序就自动地填写和显示对应于联系人控制按钮120a的联系人的电子邮件地址122。通过上面的示例可以明白,在此描述的系统和方法允许动态输入设备以可以由用户激活的虚拟控件和/或动态键的形式向用户显示信息。此外,在此描述的系统和方法允许虚拟控件的激活,且在一些实施方式中,允许动态键不受系统范围的活动焦点的正常限制而起作用。图7示出使用无窗运行时环境来管理来自动态输入设备的输入的示例方法130。 在132,方法130包括主控包括无窗运行时环境在内的一个或多个运行时环境。在134,方法130包括接收来自动态输入设备的动态输入消息,同时在无窗运行时环境外执行的另一应用程序具有系统范围的活动焦点。图8示出用动态输入设备实现辅助体验的主要应用程序的示例方法140。在142, 方法140包括判断主要应用程序的第一上下文。例如,主要应用程序可以自我判断该主要应用程序是在特定的上下文(例如,创建新的电子邮件、查找联系人、安排新的会议、审阅任务等等)中。应用程序可以具有各种不同的上下文,每一种上下文可以对应于不同的辅助体验。在144,方法140包括指定第一辅助体验。所指定的辅助体验与主要应用程序分开且对应于主要应用程序的第一上下文。如以上所描述的,所指定的辅助体验可以被配置为在动态输入设备上动态地显示第一组虚拟控件并向主要应用程序报告第一组虚拟控件的激活。在146,方法140包括判断主要应用程序的第二上下文,该第二上下文不同于主要应用程序的第一上下文。例如,主要应用程序可以自我判断主要应用程序已经从第一上下文改变到第二上下文(例如,从创建电子邮件上下文改变到安排会议上下文)。不同的上下文可以对应于将经由动态输入设备来显示的不同的辅助体验。在148,方法140包括指定与主要应用程序分开且不同于第一辅助体验的第二辅助体验。第二辅助体验对应于主要应用程序的第二上下文,并被配置为在动态输入设备上动态地显示第二组虚拟控件并向主要应用程序报告第二组虚拟控件的激活。应理解,在此描述的配置和/或方法在本质上是示例性的,且不应以限制的意义来理解这些具体的实施方式或示例,这是因为众多变更是可能的。在此描述的具体的例程或方法可以表示任何数量的处理策略中的一个或多个。因而,所阐释的各种动作可以以所阐释的序列、以其他序列、并行来执行,或者在一些情况中可以被省略。同样,可以改变以上所描述的过程的次序。本公开内容的本主题包括在此公开的各种过程、系统和配置和其他特征、函数、动作和/或性质的所有新颖的和非明显的组合和子组合及其任何和全部等效物。
1权利要求
1.一种计算系统(50),包括:主控一个或多个运行时环境(64)的容器模块(62),所述一个或多个运行时环境包括无窗运行时环境;以及输入设备用户界面运行时应用程序(66),所述输入设备用户界面运行时应用程序 (66)在所述无窗运行时环境内执行,以在所述容器模块外执行的另一应用程序(68)拥有所述计算系统的活动焦点的同时,接收来自动态输入设备的动态输入消息。
2.如权利要求1所述的计算系统,其特征在于,所述输入设备用户界面运行时应用程序将显示输出消息输出到所述动态输入设备,所述显示输出消息指定要由所述动态输入设备显示的一个或多个图像。
3.如权利要求1所述的计算系统,其特征在于,所述输入设备用户界面运行时应用程序将从设备消息导出的系统消息输出给拥有活动焦点的应用程序,其中所述系统消息使得所述应用程序能拥有活动焦点以响应在所述动态输入设备处的用户输入。
4.如权利要求1所述的计算系统,其特征在于,所述输入设备用户界面运行时应用程序将显示输出消息输出到所述动态输入设备,所述显示输出消息指定要由所述动态输入设备显示的一个或多个图像,且其中,所述输入设备用户界面运行时应用程序输出与在用户输入被定向到的位置处由所述动态输入设备显示的图像相对应的系统消息。
5.如权利要求1所述的计算系统,其特征在于,所述容器模块是微软 ActiveX 容ο
6.如权利要求5所述的计算系统,其特征在于,所述无窗运行时环境是微软 ActiveX 控件。
7.如权利要求6所述的计算系统,其特征在于,所述ActiveX 控件是微软 SiIverlight 插件。
8.如权利要求6所述的计算系统,其特征在于,所述ActiveX 控件是Adobe Flash 插件。
9.如权利要求1所述的计算系统,其特征在于,所述输入设备用户界面运行时应用程序是微软 Silverlight 应用程序。
10.如权利要求1所述的计算系统,其特征在于,所述输入设备用户界面运行时应用程序是Adobe Flash 应用程序。
全文摘要
由计算系统提供动态输入设备的无窗运行时控件,该无窗运行时控件包括主控包括无窗运行时环境在内的一个或多个运行时环境的容器模块。该计算系统还包括输入设备用户界面运行时应用程序,该输入设备用户界面运行时应用程序在该无窗运行时环境内执行,以便在该容器模块外执行的另一应用程序拥有该计算系统的活动焦点的同时,接收来自动态输入设备的动态输入消息。
文档编号G06F9/44GK102289371SQ20111017782
公开日2011年12月21日 申请日期2011年6月17日 优先权日2010年6月18日
发明者D·M·桑斯特, R·D·扬 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1