在应用之间跟踪和恢复指针位置转让专利

申请号 : CN202111267666.X

文献号 : CN114527897B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : F·保肖特J·维埃勒Z·斯扎莱

申请人 : 国际商业机器公司

摘要 :

本公开涉及在应用之间跟踪和恢复指针位置。一种用于响应于用户在应用之间切换而恢复应用内的指针位置的方法。该方法包括一个或多个计算机处理器识别在用户的计算设备上执行的一组应用。该方法还包括响应于用户与该组执行中应用中的第一应用对接,确定第一应用的图形用户界面(GUI)内的一系列指针位置。该方法还包括确定用户暂停与第二应用对接并恢复访问第一应用。该方法还包括从分别与第一应用的GUI相关联的一系列指针位置中确定指针位置。该方法还包括响应于确定用户恢复访问第一应用,将第一应用的GUI内的指针定位在所确定的指针位置处。

权利要求 :

1.一种用于在应用之间跟踪和恢复指针位置的方法,包括:由一个或多个计算机处理器识别在用户的计算设备上执行的一组应用;

由一个或多个计算机处理器响应于所述用户与该组执行中应用中的第一应用对接而周期性地确定第一应用的图形用户界面GUI内与指针对应的位置,以获得一系列指针位置;

由一个或多个计算机处理器确定所述用户暂停与第二应用对接并恢复访问第一应用;

由一个或多个计算机处理器从分别与第一应用的GUI相关联的所述一系列指针位置中确定指针位置;以及响应于确定所述用户恢复访问第一应用,由一个或多个计算机处理器将第一应用的GUI内的所述指针定位在所确定的指针位置处,其中所确定的指针位置是第一应用的GUI的阈值区域内的静止位置,所述指针在所述阈值区域内保持了大于停留时间值的持续时间。

2.如权利要求1所述的方法,其中确定所述应用的GUI内的所述一系列指针位置还包括:由一个或多个处理器将对应于所述指针的指定数量的确定的指针位置存储为有序集合。

3.如权利要求2所述的方法,其中在所述GUI内发生的所述事件选自由以下各项组成的组:触发悬停元素、执行用户定义的热键组合、执行内容相关动作、以及访问上下文菜单。

4.如权利要求1所述的方法,其中确定所述用户暂停与第二应用对接并恢复访问第一应用还包括:由一个或多个计算机处理器识别指示所述指针退出第二应用的GUI的事件;

由一个或多个计算机处理器确定对应于所述指针的运动指示所述指针朝向第一应用的GUI移动;以及由一个或多个计算机处理器确定所述指针是否在第一应用的GUI的接近度阈值内移动。

5.如权利要求4所述的方法,还包括:

响应于确定所述指针在第一应用的GUI的接近度阈值内移动,由一个或多个计算机处理器访问第一应用。

6.如权利要求1所述的方法,其中确定所述用户暂停与第二应用对接并恢复访问第一应用还包括:由一个或多个计算机处理器确定所述用户执行要求访问第一应用的热键组合。

7.一种计算机可读存储介质,其上存储有程序指令,所述程序指令可由一个或多个计算机处理器读取/运行以执行根据权利要求1至6中任一项所述的方法中的步骤。

8.一种计算机系统,包括:

一个或多个计算机处理器;

一个或多个计算机可读存储介质;以及

存储在所述计算机可读存储介质上的程序指令,所述程序指令用于由所述一个或多个计算机处理器中的至少一个执行以执行根据权利要求1至6中任一项所述的方法中的步骤。

9.一种计算机系统,包括:用于执行根据权利要求1至6中任一项所述的方法的步骤的装置。

说明书 :

在应用之间跟踪和恢复指针位置

技术领域

[0001] 本发明总体上涉及图形用户界面(GUI)领域,并且更具体地涉及响应于用户在应用之间切换而控制指针的位置。

背景技术

[0002] 诸如台式计算机、膝上型计算机、大型系统、移动设备、蜂窝电话等的计算设备的各种操作系统(OS)利用图形用户界面(GUI)以使得用户能够与计算设备的功能和在计算设备上执行的应用交互。例如,显示在OSGUI内并且分别与安装的应用相关联的图标能够响应于用户经由定点设备选择与应用相对应的图标来激活该应用。
[0003] 此外,OS的GUI还可以支持生成分别地与安装在计算设备上的执行应用相关联的其他GUI和/或与不同功能相关联的GUI元素。用户可以利用输入/输出(I/O)设备,诸如在OS和应用GUI上导航的鼠标或触摸屏。例如,界面元素可被可视地描绘为使用户能够与应用的不同元件交互的箭头,诸如激活下拉菜单;重新布置与一组功能相关的选项卡的次序;选择与后续动作(诸如复制或删除)相关联的应用内的元素(例如,文本、互联网链接、图片等);等等。此外,web浏览器可包括嵌套GUI和GUI元素,诸如对应于web浏览会话的每个活动的互联网链接的一组选项卡、网页内的显示互联网链接的内容的框架(所述互联网链接不同于与web浏览器选项卡相关的主链接)、以及可经由互联网访问的应用的WUI(web用户界面)。

发明内容

[0004] 根据本发明的一个方面,存在一种用于响应于用户在应用之间切换而恢复应用内的指针位置的方法、计算机程序产品和/或计算机系统。在一实施例中,该方法包括至少一个计算机处理器通过一个或多个计算机处理器识别在用户的计算设备上执行的一组应用。该方法还包括至少一个计算机处理器响应于用户与第一应用对接,确定该组执行中的应用的第一应用的图形用户界面(GUI)内的一系列指针位置。该方法还包括至少一个计算机处理器确定用户暂停与第二应用对接并恢复访问第一应用。该方法进一步包括至少一个计算机处理器从分别与第一应用的GUI相关联的一系列指针位置中确定指针位置。该方法还包括至少一个计算机处理器通过将第一应用的GUI内的指针定位在所确定的指针位置处,对确定用户恢复访问第一应用作出响应。

附图说明

[0005] 图1示出根据本发明的实施例的计算设备环境。
[0006] 图2描绘了根据本发明的实施例的指针监视和恢复训练程序的步骤的流程图。
[0007] 图3描绘了根据本发明的实施例的指针监视和恢复程序的步骤的流程图。
[0008] 图4是根据本发明的实施例的计算机的组件的框图。

具体实施方式

[0009] 本发明的实施例认识到操作系统(OS)的进步使得用户能够同时执行多个应用程序和/或系统功能,并且使得其他应用程序和/或功能在不使用时在后台活动。本发明的实施例认识到许多OS利用图形用户界面(GUI)以使得用户能够与OS的功能对接、执行多个应用和/或利用应用的嵌入式特征。此外,本发明的实施例认识到用户利用一个或多个定点设备(诸如鼠标、轨迹球)和/或另一界面,诸如用于控制指针元件或指针图标的移动的触摸屏,诸如GUI内的箭头、十字、指向手等(以下称为指针),并执行与指针的位置相关的一个或多个动作。
[0010] 本发明的实施例还认识到,基于技术进步,计算设备之间的显示/界面区域可以显著不同。在一个示例中,智能电话的GUI区域可以是几平方英寸,而与医疗系统或制造环境相关联的GUI环境可以分布在一排(例如,多个)显示器中,这些显示器可以覆盖多个平方英尺。此外,大的GUI区域使得用户能够看到多个执行中的应用并与其交互,而智能电话的有限的GUI区域迫使用户在不可见并且可能在OS的后台被静默的应用(app)之间滚动。进一步,本发明的实施例认识到一些遗留应用可能不与其他应用集成,或者遗留应用可能关于OS如何显示遗留应用的GUI是受限制(即,受约束)的,诸如仅全屏模式。
[0011] 本发明的实施例认识到,基于可用GUI区域以及执行中应用程序的数量和类型,存在对用户既可见又易理解的内容的限制。本发明的实施例还认识到,用户可多任务和/或任务可要求用户从可经由不同应用程序访问的多个源获得信息。这样,指针的位置不断改变,并且用户可能响应于在应用程序之间的切换而忘记用户在一个或多个应用程序中工作的地方。如本文所使用的,应用程序和应用可互换地使用。在一个示例中,应用程序“A”(例如,地图程序)不与其他应用集成并且呈现一GUI,其中指针位置允许显示可以有利地访问并输入到应用程序“B”的相关信息。用户需要在屏幕上显示应用程序“A”和“B”两者,并且在应用程序“A”和“B”之间重复地交换以首先从在应用程序“A”的GUI内显示的指示位置(例如,地图的区域)获得信息,该信息然后可以被输入到应用程序“B”。随后,用户返回到应用程序“A”以探索接近先前位置的另一位置,诸如当探索沿着曲线、线性资产、路径等的一系列点时。问题是,在一些情况下,访问应用程序“A”和“B”,并且对应用程序“B”的GUI进行导航是通过指针移动来完成的,丢失了应用程序“A”中的先前位置。
[0012] 本发明的实施例认识到像机器人过程自动化(RPA)的解决方案并不很好地适合于解决上述问题,因为用于跟踪和捕捉应用“A”中的一系列点的逻辑可能取决于上下文、信息和用户习惯而大大地变化。进一步,如果访问三个或更多个应用,则RPA对于日益复杂的交互而言过于受限。
[0013] 本发明的一个实施例被实现为有限状态机(FSM),该有限状态机跟踪匹配预定义交互模板的事件序列。例如,本发明的实施例识别用户在一对应用之间重复地移动或交换。用户利用定点设备将指针移动靠近第一应用(app)内的先前“静止”位置,诸如在利用第二应用之后的插入点或高亮项目中。在一些场景中,指针的“静止”位置还可以指应用程序GUI内指针静止或移动小于阈值大于规定的停留时间(例如,时间的)值的位置。
[0014] 随后,本发明的实施例响应于确定第一应用程序和第二应用程序之间的用户交互的数量超过另一阈值,确定用户形成(例如,创建)第一应用程序和第二应用程序之间的交互模板。作为响应,本发明的实施例在一组应用程序中的至少第一应用程序内设置、记忆和/或定义指针的恢复位置。本发明的另一方面可以响应于确定用户在恢复与第一应用程序对接之前将指针移动到第二应用程序内的在第二应用程序内的先前指针位置的阈值内的位置,而潜在地设置第二应用程序内的另一指针恢复位置。
[0015] 本发明的一些实施例可检测用户访问子GUI或嵌套GUI内的应用程序,诸如由在用户的设备外部执行的应用(诸如可经由互联网访问的应用程序)生成的web浏览器选项卡或web用户界面(WUI)。另外,本发明的实施例还可包括在用户访问的应用程序之间的交互的一个或多个模板内的子GUI、嵌套GUI和/或WUI内检测到的应用程序。本发明的其他实施例在网络可访问的GUI环境内实现,诸如桌面即服务环境或虚拟桌面基础设施(VDI);和/或在用户设备GUI和网络可访问的GUI环境之间。
[0016] 本发明的另一实施例利用用户输入来定义两个或更多个应用程序之间的交互模板的开始,并跟踪规定的应用模板(例如,预定义配置)之间的指针移动和用户动作。此外,用户输入和/或偏好可以规定如何以及何时定义或确定指针恢复位置。另选地或附加地,用户可定义访问(例如,切换、转换)与交互模板相关联的一组执行中的应用程序中的特定应用程序的键盘快捷方式,或者在应用程序之间循环的键盘快捷方式,而不是确定指针移动指示退出一个应用程序并朝向另一个应用程序移动。
[0017] 本发明的其他实施例利用更复杂的标准和分析(诸如图分析)来从一组执行中应用中确定和识别交互模板或交互模板组。随后,利用决策树或其他技术来从与一组执行中应用相关联的交互模板中的两个或更多个模板中选择一个特定交互模板。本发明的各个实施例可组合来自用户使用的计算设备的多个会话的信息,以确定应用程序之间的交互的一个或多个模板。
[0018] 本发明的进一步实施例确定与一组应用中的每个执行应用相对应的状态数据和/或交互模板。响应于对OSGUI(例如,显示区域)的一个或多个改变,与应用GUI相对应的状态数据(诸如OSGUI内的位置和大小)被用于确定指针的补偿的(例如,替换的)恢复位置。在一个示例中,OSGUI状态数据响应于添加或移除影响对应于执行中应用的GUI的显示而改变(例如,大小改变、位置改变、自动最小化应用GUI等)。在另一示例中,对应于执行中应用的GUI的状态数据受以下行为的影响:观看朝向改变的影响,诸如旋转智能电话或平板计算机;关闭一个或多个应用;执行一个或多个其他应用;等等。
[0019] 类似地,本发明的进一步实施例还可以响应于确定对与应用GUI相关的状态数据的一个或多个改变,确定一个或多个执行中应用内的指针的补偿的恢复位置。在进一步示例中,与应用GUI相关的状态数据可包括对应于应用GUI的尺寸改变、纵横比改变、观看朝向改变、缩放水平的改变、在OSGUI内移动应用GUI等。例如,响应于一个或多个应用程序或OSGUI改变,收集状态数据以确定补偿的指针位置。与应用相关的其他状态数据可包括与分别与特定位置相关联的GUI元素和与指针相关联的事件相关的元数据,诸如与在用户将指针移动或悬停在GUI的触发区域上时激活的鼠标经过、鼠标悬停或悬停框(例如,图形控制元素)相关联的信息。
[0020] 与本发明相关的不同场景、实例和示例的描述已出于说明的目的被呈现,但不旨在为详尽的或限于所公开的实施例。
[0021] 现在将参考附图详细描述本发明。图1是示出根据本发明的实施例的计算环境100的功能框图。在一个实施例中,计算环境100包括用户设备120。用户设备120可表示用户的计算设备,诸如膝上型计算机、平板计算机、上网本计算机、个人计算机、台式计算机、个人数字助理(PDA)、智能电话、可穿戴设备(例如,智能眼镜、智能手表、电子纺织品、AR头戴式耳机等)或本领域已知的任何可编程计算机系统。根据本发明的实施例,用户设备120可以包括如关于图4进一步详细描绘和描述的组件。
[0022] 在另一实施例中,如果计算环境100的用户设备120缺少足够的硬件资源来执行与本发明有关的一些功能,则用户设备120的一个或多个程序和/或文件可由互联网可访问的应用或服务(未示出)(诸如云计算系统)托管。在另一实施例中,计算环境100的一个或多个方面与可经由网络(未示出)访问的桌面即服务环境或虚拟桌面基础设施(VDI)相关联。
[0023] 在一实施例中,用户设备120包括定点设备121、显示器122、键盘123、应用(app)125‑1,应用125‑2、应用125‑3至应用125‑N、用户界面(UI)130、用户偏好132、交互模板134、应用信息136、指针位置信息138、指针监视和恢复(PMAR)训练程序200、指针监视和恢复(PMAR)程序300以及其他程序和数据(未示出)。其他程序和数据的示例可包括操作系统(OS)、生产力套件、日历功能、无线通信程序、web浏览器、媒体库程序、文档、数据文件等。在不同实施例中,用户设备120的OS和应用生成相应的GUI(未示出)。
[0024] 在另一实施例中,用户设备120的一个或多个硬件元件(在下文中描述)在用户设备120外部,但是可操作地耦合到用户设备120。如本文所使用的,可操作地耦合可以指物理连接或无线连接。在一些实施例中,设备120包括硬件元件的两个或更多个实例,诸如无线鼠标和触摸板(即,定点设备121的实例);连接到膝上型计算机的嵌入式触摸屏和外部监视器;和/或有线连接到一排四个监视器(即,显示器122的实例)的两个双输出图形卡(未示出)。
[0025] 在一实施例中,定点设备121控制GUI(例如,OS或应用GUI)和/或UI130内的指针或图标(诸如箭头、十字、指向手等)的移动。定点设备121可以执行与指针的位置相关的一个或多个动作,诸如打开菜单;滚动通过菜单;突出显示所显示的内容(例如,文本、图形等);设置插入点;执行功能,诸如复制或删除所选内容项等。在一些实施例中,定点设备121是操作地耦合到用户设备120但是在用户设备120外部的硬件元件,诸如鼠标、轨迹球、图形输入板等。在其他实施例中,定点设备121是包括在用户设备120内的电子设备,诸如触摸板或具有功能按钮的定点杆。
[0026] 在其他实施例中,定点设备121可操作地被包括在另一硬件元件内,诸如包括在执行输入功能和输出/显示功能两者的触摸屏(即,显示器122的实例)内。在另一实施例中,定点设备121是在计算环境100内生成的用于由显示器122的实例呈现的虚拟I/O设备,显示器122诸如智能眼镜、平视显示器、增强现实(AR)设备或程序等。用户设备120的用户可以经由运动捕捉、手指跟踪、眼睛跟踪、数据手套等与定点设备121的虚拟实例对接。
[0027] 在一实施例中,显示器122的一个或多个实例呈现(即,显示)用户设备120的OSGUI的各方面,并且还可基于各种因素来显示与一个或多个执行中应用相关联的GUI,所述因素诸如为显示配置、与显示器122的实例相关联的显示区域大小、执行中应用的数量、以及呈现给用户的执行中应用的GUI的相应大小。
[0028] 在一个实施例中,显示器122代表包括在用户设备120内的硬件元件,诸如膝上型计算机的显示器。在另一实施例中,显示器122代表可操作地耦合到用户设备120的外部硬件元件,诸如监视器或智能TV。在不同实施例中,显示器122代表包括(先前在上文关于定点设备121讨论的)其他功能的触摸屏显示器。在一些实施例中,显示器122的实例可动态地耦合或解耦到用户设备120。在一个示例中,将膝上型计算机(即,用户设备120)对接到连接到显示器122的两个实例的对接站(未示出)可以扩展OSGUI区域以利用三个不同的可视区域。在另一示例中,将显示器122的外部实例与用户设备120断开连接可基于显示器分辨率的改变来影响一个或多个GUI。
[0029] 在不同实施例中,用户设备120的用户利用键盘123来输入影响PMAR训练程序200、PMAR程序300和/或UI130的预定义热键组合(即,键盘快捷方式)。在一个实施例中,键盘123是用户设备120外部的但操作地耦合到用户设备120的硬件元件。在一些实施例中,键盘123是包括在用户设备120内的硬件元件,诸如膝上型计算机的键盘。在其他实施例中,键盘123是用户经由显示器122的触摸屏实例利用的用户设备120的OSGUI的图形界面。
[0030] 在另一实施例中,键盘123是在计算环境100内生成的虚拟I/O设备,用于由显示器122的不同实例(诸如智能眼镜、平视显示器、增强现实(AR)设备或程序等)呈现。用户设备
120的用户可经由运动捕捉、手指跟踪、眼睛跟踪、数据手套等与虚拟实例键盘123对接。
[0031] 在一个实施例中,应用125‑1、应用125‑2、应用125‑3至应用125‑N代表安装在用户设备120上的计算机程序或应用,诸如文字处理应用程序、日历应用程序、演示应用程序、电子表格应用程序、web浏览程序等。在另一实施例中,应用125‑1、应用125‑2、应用125‑3至应用125‑N中的一个或多个应用在用户设备120外部执行,诸如可经由互联网访问的web应用程序。
[0032] 在各种实施例中,应用125‑1、应用125‑2、应用125‑3至应用125‑N中的每个应用生成相应的应用(app)GUI。进程ID(PID)、元数据、和/或状态数据(关于应用信息136进一步详细描述的)可以分别与应用程序相关联。在一实施例中,用户设备120的用户经由定点设备121、显示器122和/或键盘123与应用125‑1、应用125‑2、应用125‑3至应用125‑N的执行中实例的特征和GUI元素的相应集合交互。此外,用户设备120的用户在使用定点设备121执行应用程序的GUI之间导航和/或在使用键盘123执行应用程序的GUI之间切换。
[0033] 在一个实施例中,UI130表示与PMAR训练程序200和PMAR程序300相关联的用户界面(UI)或GUI。用户设备120的用户利用UI130来填充不同字段,并在用户偏好132内输入或编辑信息。在一些实施例中,用户设备120的用户利用UI130来定义、配置、查看、编辑和/或删除交互模板134内的交互模板。在其他实施例中,UI130使得用户能够修改PMAR训练程序200和/或PMAR程序300的不同识别或确定,诸如从指针监视中排除一应用。
[0034] 用户偏好132包括由PMAR训练程序200和/或PMAR程序300利用的信息和规则,诸如激活PMAR训练程序200的热键组合;与激活PMAR训练程序200、PMAR程序300和/或UI130的事件相关的规则。用户偏好132内的其他信息可包括交互模板内包括的应用的最大数量的值、一系列指针位置内的指针位置的数量的值、用于周期性地确定指针在应用程序GUI内的位置的时间值、基于应用程序GUI内的指针运动的位置和/或方向或者应用程序GUI之间的指针移动触发指针位置改变的接近阈值。在一个示例中,用户偏好132包括用于识别指针在应用程序GUI内的“静止”位置的值,诸如指针是静止的或指针保持在阈值区域内大于规定的停留时间值的持续时间。此外,用户偏好值可应用于一组应用程序(例如,默认值)或可分别与给定应用程序相关联。
[0035] 在一些实施例中,用户偏好132还包括与识别、配置和/或选择在两个或更多个执行中应用之间用户的交互的模板有关的其他偏好。在一个示例中,用户偏好132可规定指示交互模板的两个或更多个应用之间的交换(例如,交替对接)的数量的阈值。在另一示例中,用户偏好132包括分析规则,诸如利用决策树来识别交互模板;与确定应用程序之间的逻辑交互有关的规则;识别应用程序之间的事件驱动的交互;和/或组合与来自用户设备120的当前会话(例如,激活)的用户交互相关的信息与使用用户设备120的用户的一个或多个先前会话。
[0036] 在一个实施例中,用户偏好132还包括如果用户没有在规定的时间段内恢复交互模板则终止PMAR程序300的超时值、用于切换到特定应用程序以及响应于提示用户设备120的用户该使用已经开始执行已知的交互模板而禁用PMAR程序300的激活的键盘快捷方式(即,热键组合)。在不同实施例中,用户偏好132可以规定收集一个或多个应用程序GUI的元数据,诸如将悬停事件、或者用于确定补偿的指针位置的状态数据记录日志。
[0037] 交互模板134包括用户以基于由PMAR训练程序200确定、在用户经由UI130规定的配置中定义和/或用户利用UI130编辑的信息的特定方式利用的两个或更多个执行中应用的分组的列表。在一个实施例中,执行中应用之间的交互的模板可以包括对应于执行中应用的名称;与执行中应用相关的元数据,诸如该应用访问的文件或内容源;一个或多个规定,例如与在两个或更多个应用程序之间恢复指针位置相关的方向性(例如,单向或双向)的指示;用户利用一组应用程序中的应用程序的序列或组合;等等。在一个示例中,交互模板134指示应用125‑1和应用125‑2之间的双向交互(例如,为两个应用确定的指针恢复位置)。在另一示例中,交互模板134指示应用125‑2、应用125‑3和应用125‑N之间的循环交互(例如,针对一对应用程序中的一个应用程序确定指针恢复位置)。在进一步的实施例中,交互模板134可以包括在子GUI和/或其他环境的GUI内发生的交互的模板。
[0038] 在一些实施例中,交互模板134还可包括与交互模板的一个或多个应用程序相关联的规定和/或逻辑动作。在一个示例中,在访问诸如辐条(spoke)和中枢(hub)模拟的公共应用之前,查看或复制来自两个或更多个应用的信息。基于一个或多个偏好,相应“辐条”应用程序内的一个或多个指针位置被存储(例如,记忆或冻结)为指针恢复位置,但是“中枢”应用程序缺少定义的指针恢复位置。在另一示例中,第二应用程序内的恢复位置可响应于识别到与第一应用相关的事件而从先前恢复位置改变到估计或预测的恢复位置,诸如在检测到复制事件的情况下改变恢复位置;但是如果识别出不同的事件或动作(诸如突出显示内容、改变字体等),则使指针恢复位置不变。
[0039] 应用信息136包括与分别与一个或多个交互模板相关联的多个应用(即,app)有关的信息,诸如与应用程序的GUI相对应的初始状态数据。在不同实施例中,与执行应用相关的一些信息可改变,诸如由用户设备120的OS针对应用程序的每个实例分配的唯一进程ID(PID),并且PID是易失性的(例如,在应用终止、用户设备120的OS重启/关闭时丢失),在给定交互期间应用的指针图标形状等。此外,应用信息136包括被利用来映射OSGUI内的应用程序GUI的位置的信息,因为应用程序GUI不是固定的并且可能对于用户设备120的每次激活(例如,会话)处于不同的位置。
[0040] 在进一步的实施例中,应用信息136包括与一个或多个GUI或应用程序有关的状态数据、用户设备120的显示区域、与应用程序或应用程序GUI相关联的元数据。在一个示例中,状态数据可包括或指示GUI大小的改变;应用程序的GUI在显示区域内的位置的改变(例如,移动GUI、从最小化状态恢复GUI等);与应用程序GUI内的内容相关联的缩放改变;改变影响应用程序所显示的内容的参数(例如,页边距、行距、字体名称、字体大小等)等。在另一示例中,与应用程序或应用程序GUI相关的元数据可以与应用程序内的内容相关,诸如在应用程序GUI内添加或移除的内容区域的大小;与应用程序内的指针恢复位置对应的悬停信息;悬停事件触发;等等。在其他实施例中,应用信息136包括与一个或多个子GUI;嵌套GUI;和/或在用户设备120外部执行的应用程序相关联的状态数据,诸如网页框架的位置、分配给web浏览选项卡的大小、与WUI相关联的状态数据等。
[0041] 在一实施例中,指针位置信息138包括与应用GUI相关的多个系列(例如,有序集合)的指针位置。指针位置信息138存储由PMAR训练程序200和/或PMAR程序300跨越与用户设备120对接的用户的一个或多个会话捕获的指针位置。在一些实施例中,指针位置信息138还包括多个指针位置、GUI内的指针移动路径、遍历OSGUI的路径、以及与和用户设备120对接的用户的多个会话相关联并且进一步与执行中应用的集合相关联的交互序列。与路径相关联的指针位置还可包括方向指示、标识先前应用程序的指示、标识后续应用程序的指示、和/或与访问/交换/切换到另一应用程序有关的热键组合。
[0042] 在其他实施例中,指针位置信息138包括与指针位置相关的一个或多个附加指示,诸如该位置被标识为指针的“静止”位置;指针位置与GUI事件(诸如悬停事件或执行用户定义的热键组合的位置)相关联;执行内容动作,诸如复制动作;访问上下文菜单(例如,右击菜单);激活链接;等等。与指针位置相关的附加指示可以进一步映射到存储在应用信息136内的状态数据和/或元数据。在进一步的实施例中,响应于识别出与应用程序GUI相关的改变,诸如状态数据改变;应用程序的内容的改变;和/或OSGUI的改变,基于所识别的改变来确定一个或多个补偿的指针位置或多系列补偿的指针位置。
[0043] 在一个实施例中,用户执行PMAR训练程序200以编译用于确定用户设备120的用户在两个或更多个执行中应用之间的交互的模板的信息。在另一实施例中,PMAR训练程序200在用户设备120的后台执行,以通过确定至少两个应用程序之间的重复交互的数量超过阈值来确定由利用用户设备120的用户和两个或更多个执行中应用生成的交互的序列或组合是否指示交互模板。例如,PMAR训练程序200在FSM模式中执行。在一些实施例中,PMAR程序300调用PMAR训练程序200以确定用户是生成新交互模板还是修改已知的交互模板。
[0044] 在一实施例中,PMAR训练程序200监视与一个或多个应用程序对接的用户的动作、对应于应用程序的GUI内的指针的多个移动、以及应用程序GUI之间的遍历,其共同地涉及与用户设备120的会话期间的交互序列。除了安装在用户设备120上的应用程序的GUI之外,PMAR训练程序200还可监视和捕获(例如,编译)子GUI、嵌套GUI和WUI之间的交互和指针移动。作为响应,PMAR训练程序200分析交互的不同序列和/或组合以确定用户是否生成两个或更多个应用程序之间的交互的模板。在不同实施例中,PMAR训练程序200可以组合来自利用用户设备120的用户的多个会话的信息,以确定用户设备120的应用之间的交互的一个或多个模板。
[0045] PMAR程序300基于已知的交互模板和在用户先前利用应用程序时确定的一系列指针位置,响应于确定用户在与一个或多个其他应用程序对接之后恢复与所述应用程序对接,将指针恢复到该应用程序的GUI内的位置。PMAR程序300可基于跟踪指针在GUI之间的移动或识别用于访问应用程序的键盘快捷方式的执行来确定用户恢复与所述应用程序对接。在一个场景中,PMAR程序300响应于用户使用用户设备120而自动激活。作为响应,UI130提示用户选择静默PMAR程序300或允许PMAR程序300执行。在一些场景中,PMAR程序300响应于检测到满足预定义标准(诸如确定所定义的应用集合被执行)或与准备季度末演讲相关联的时间段(例如,日历日期范围)而执行。在另一场景中,用户命令PMAR程序300执行。
[0046] 在不同实施例中,PMAR程序300监视和跟踪用户在多个执行中应用程序的GUI内和之间的多个动作和指针移动。随后,PMAR程序300经由PMAR训练程序200先前确定的交互模板来确定用户是否正在与一组两个或更多个应用程序对接(例如,使用)。响应于确定用户正经由已知的交互模板与一组两个或更多个应用程序对接,PMAR程序300确定至少一个应用程序内的指针的恢复位置。如果用户恢复与包括确定的恢复位置的应用程序对接,则PMAR程序300自动将定点设备121的指针移动到应用程序的GUI内所确定的恢复位置。
[0047] 在一些实施例中,PMAR程序300确定对应于执行中的应用程序集合中与交互模板相关联的至少一组应用程序的状态数据。PMAR程序300利用状态数据来识别和定位OSGUI内的应用程序的GUI,并且确定指针移动是朝向还是远离与交互模板相关联的应用程序。在另一实施例中,PMAR程序300分析与用户设备120和/或一个或多个应用程序相关联的状态数据的改变(诸如显示器122的面积的改变、与应用程序的GUI对应的尺寸改变),以确定用作GUI内的指针的恢复位置的新的(例如,补偿的)位置。
[0048] 图2是描绘根据本发明的实施例的PMAR训练程序200的操作步骤的流程图,PMAR训练程序200是用于基于与定点设备相关联的活动和移动来确定(例如,产生)两个或更多个执行中应用之间的用户交互的模板的程序。在一个实施例中,用户启动PMAR训练程序200。在另一实施例中,PMAR训练程序200在用户设备120的后台中执行。在一些实施例中,PMAR训练程序200由PMAR程序300调用以确定用户在执行中应用之间的动作是生成新的交互模板还是修改已知的交互模板。
[0049] 在步骤202中,PMAR训练程序200识别一组执行中应用。在一个实施例中,PMAR训练程序200通过对接用户设备120的OS来识别安装在用户设备120内的一组执行中应用。在另一实施例中,PMAR训练程序200识别未安装在用户设备120内的一个或多个其他执行中的网络可访问应用,例如通过确定分别与web浏览器选项卡相关联的任务的性质。在又一实施例中,PMAR训练程序200识别在另一环境(例如VDI)内执行的一个或多个应用。在各种实施例中,PMAR训练程序200确定与该组执行中应用相关的附加信息,诸如相同执行中应用的实例的状态数据和/或不同的PID,并且将该附加信息存储在应用信息136内。
[0050] 在步骤204中,PMAR训练程序200接收一组用户偏好。在一个实施例中,PMAR训练程序200向用户呈现UI130以接收或修改用户偏好132内的一组偏好。在另一实施例中,PMAR训练程序200从用户偏好132加载一组用户偏好。在一些实施例中,PMAR程序200利用与用户设备120相关的信息来确定要加载的该组用户偏好。例如,PMAR训练程序200基于显示器122的OSGUI区域和所识别的应用程序集合的相应GUI区域来选择一组用户偏好。在其他实施例中,PMAR训练程序200确定用户偏好规定用户可以修改所识别的一组执行中应用以从随后的指针监视和交互分析中排除一个或多个执行中应用。
[0051] 在步骤206中,PMAR训练程序200确定用户利用的第一应用。在一个实施例中,PMAR训练程序200基于从用户接收的输入(诸如从经由UI130显示的执行中应用的列表中的选择或在应用的GUI内执行的热键组合)来确定用户设备120的用户利用(例如,访问)的第一应用。在另一实施例中,PMAR训练程序200通过检测指针进入并且用户在应用内执行一个或多个动作(诸如添加/修改内容、复制内容等)的第一应用GUI来确定用户利用的第一应用。
[0052] 在步骤208中,PMAR训练程序200跟踪指针在执行中应用内的位置。PMAR训练程序200基于一个或多个因素(诸如时间段、用户动作和/或标识指针的“静止”位置)将与应用相关联的一系列指针位置捕获(例如,存储)在指针位置信息138内。在一个实施例中,PMAR训练程序200捕获指针相对于第一应用(诸如应用125‑1)的移动和活动。在另一实施例中,PMAR训练程序200捕获关于不同于第一应用的应用(诸如一个或多个后续应用)的GUI的指针位置。在其他实施例中,PMAR训练程序200还获得分别与指针位置相关联的其他信息,诸如用户动作、事件、相关元数据等。PMAR训练程序200将分别与指针位置相关联的其他获得的信息存储在应用信息136内。
[0053] 在步骤210中,PMAR训练程序200确定与指针的位置改变相关联的事件。在一个实施例中,PMAR训练程序200确定指针的位置改变与指针退出(例如,离开或移动通过GUI边缘)一个应用的GUI并进入OS的GUI的事件相关。在另一实施例中,PMAR训练程序200确定与指针的位置改变相关联的事件与访问另一应用的热键组合有关。在一些实施例中,PMAR训练程序200确定与指针的位置改变相关联的事件基于最小化当前应用,诸如响应于确定显示器122的区域被约束(例如,限制可查看应用GUI的数量)。在其他实施例中,PMAR训练程序200确定事件进一步与操纵、复制和/或移动来自应用程序内的内容相关联。
[0054] 在步骤212中,PMAR训练程序200确定用户使用的后续应用。在一个实施例中,PMAR训练程序200基于确定指针穿过OSGUI并进入(例如,跨过周边或边界)另一执行中应用的GUI来确定用户使用的后续应用。在另一实施例中,PMAR训练程序200基于识别用户执行的热键组合访问的应用程序来确定用户使用的后续应用程序。
[0055] 在一些实施例中,如果PMAR训练程序200经由判定步骤215的“否”分支循环,则后续应用可以是第一应用或另一个应用。例如,如果用户首先使用应用125‑1,接下来用户使用应用125‑3,并且随后用户在应用125‑3内执行不同动作之后返回到应用125‑1,则PMAR训练程序200确定应用125‑1是应用125‑3的后续应用。PMAR训练程序200还确定每个应用被利用或访问的次数以及在给定应用之前和/或之后是否访问了不同的应用。
[0056] 仍参考步骤212,在不同实施例中,PMAR训练程序200还确定与穿过OSGUI以访问后续应用相关联的一个或多个指针位置。在一些场景中,PMAR训练程序200生成相对于执行中应用程序的集合的指针位置(例如,移动)和用户交互的网或图结构。在其他场景中,PMAR训练程序200的每次执行(例如,与用户设备120相关联的会话)生成指针位置和用户交互的路径的单独组。PMAR训练程序200将指针移动路径、一系列指针位置、应用程序被访问的次序和相关信息存储为指针位置信息138内的交互序列。PMAR训练程序200还将在步骤208和步骤210中确定的信息包括在交互序列和/或组合内。
[0057] 在步骤214中,PMAR训练程序200分析与用户在执行中应用之间的交互有关的信息。PMAR训练程序200利用不同分析技术(诸如统计分析、结构分析、模板匹配、分割和分类等)来识别与执行中应用程序的集合相关的用户交互之中的一个或多个序列或结构。此外,PMAR训练程序200可利用其他信息来增强识别和生成交互模板,诸如标注用户动作、跟踪应用之间的内容移动、配置热键组合来访问应用等。
[0058] 在一实施例中,PMAR训练程序200利用用户偏好132内的不同规则、标准、偏好等来确定用户在执行中应用的集合之中的交互的当前序列和/或组合是否指示执行中应用的集合之中的一个或多个模板。交互模板是指用户至少基于应用程序之间的指针移动的频率利用的一组两个或更多个应用程序。在一个示例中,如果用户访问在用户设备120上执行的五个不同的应用(未示出),但是任何两个应用之间的交换的数量小于阈值,则PMAR训练程序200确定没有获得足够的信息来确定(例如,生成)这五个应用之间的交互的模板。在另一示例中,如果用户偏好132要求确定一组三个未指定的应用程序之间的交互的模板,并且在两对应用程序之间用户访问或交换的次数超过阈值,但是在任何两对应用程序之间没有共同的第三应用程序,则PMAR训练程序200基于应用程序之间的用户访问或交换(例如,交互)的数量来确定没有获得足够的信息来确定一组三个应用程序之间的交互的模板。
[0059] 仍参考步骤214,在一些实施例中,PMAR训练程序200访问指针位置信息138以从PMAR训练程序200的一个或多个先前执行(例如,会话)获得附加的交互序列和/或组合,以确定是否有足够的信息可用于确定指定的应用程序组或指定数量的应用程序之间的交互的模板。在一个示例中,PMAR训练程序200利用决策树来确定交互模板的数目,以便基于在指针位置信息138内可用于一组执行中应用的信息的先前会话的数目来潜在地识别。在另一示例中,PMAR训练程序200分析由用户偏好132指示的多个交互序列和/或组合,以确定是否获得足够的信息来确定针对指定的应用程序对的交互模板。
[0060] 在判定步骤215中,PMAR训练程序200确定是否获得足够的信息以确定交互模板。在一个实施例中,如果访问后续应用程序但是针对该后续应用程序缺少指针位置信息和/或用户交互,则PMAR训练程序200确定没有获得足够的信息来确定交互模板。在另一实施例中,PMAR训练程序200基于步骤214中执行的分析来确定没有获得足够的信息以确定交互模板。在一些实施例中,PMAR训练程序200基于步骤214中执行的分析来确定获得足够的信息以确定两个或更多个应用程序之间的交互的至少一个模板。
[0061] 响应于确定没有获得足够的信息来确定交互模板(否分支,判定步骤215),PMAR训练程序200循环到步骤208至步骤214以获得与一个或多个应用程序相关联的附加信息并且分析该附加信息。
[0062] 参考判定步骤215,在一个实施例中,响应于确定获得足够的信息以确定交互模板(是分支,判定步骤215),PMAR训练程序200确定(例如,生成)交互模板(步骤216)。在一些实施例中,用户偏好132规定要确定两个或更多个交互模板。如果获得足够的信息以确定一个交互模板(是分支,判定步骤215),则PMAR训练程序200的当前实例在步骤216中确定用于一个交互序列和/或组合的交互模板。PMAR训练程序200的另一实例经由判定步骤215的否分支循环到步骤208至步骤214,以在确定规定数量的应用程序之间的交互的至少第二模板之前确定与一个或多个执行中应用程序相关的附加信息,诸如指针位置、事件和用户交互。
[0063] 在步骤216中,PMAR训练程序200确定交互模板。PMAR训练程序200将所确定的交互模板存储在交互模板134内。此外,PMAR训练程序200可基于用户偏好激活UI130以向用户呈现所确定的一个或多个交互模板以接受、修改或删除。在一实施例中,PMAR训练程序200基于所确定的交互序列和/或组合以及其他先前确定的信息(诸如与指针位置改变相关联的事件、应用程序内的用户动作、应用程序之间的内容移动方向等)来确定(例如,生成)两个应用程序之间的交互的模板。在一些实施例中,PMAR训练程序200确定一组三个或更多个应用程序之间的交互的模板,诸如一组应用程序中的应用程序之间的交互的组合的形状(例如,圆形、中枢和辐条、网络等),至少两个应用程序之间的基于内容的用户动作的次序或方向(例如,单向、双向等)。
[0064] 在不同实施例中,PMAR训练程序200还可以基于指针退出一个应用程序的GUI(例如,跨越边界)并进入OSGUI的方向来确定潜在指针位置或预测用户使用的下一应用程序。可以利用与每个应用GUI相对应的状态数据来映射OSGUI内的一组应用的位置,由此使得能够针对两个或更多个应用设置定向触发。在另一实施例中,PMAR训练程序200还分析至少两个应用之间的指针位置移动以确定交互模板是否包括用户将指针移动到应用内的与应用内的先前指针位置相关的另一位置(例如,可预测的指针恢复位置)。例如,PMAR训练程序
200可确定当用户恢复存取应用程序时,用户将指针移动到与基于内容的事件相关的位置,例如在所复制内容的区段的开始处或粘贴内容的区段的末尾处。
[0065] 图3是描绘根据本发明的实施例的PMAR程序300的操作步骤的流程图,PMAR程序300是响应于确定用户在与一个或多个其他应用程序对接之后恢复与先前利用的应用程序对接而将指针恢复到先前利用的应用程序的GUI内的位置的程序。在一些实施例中,PMAR程序300确定用户执行不同于已知的交互模板的动作,作为响应,PMAR程序300执行PMAR训练程序200以确定用户是正在生成新交互模板还是修改已知的交互模板。
[0066] 在步骤302中,PMAR程序300确定与一组执行中应用相关的信息。PMAR程序300基于先前关于PMAR训练程序200的步骤202讨论的各种方法来识别在用户设备120上执行的一组应用。在不同实施例中,PMAR程序300与用户设备120的OS(未示出)对接以确定与一组执行中应用相关的信息。PMAR程序300在应用信息136内存储所确定的与一组执行中应用有关的信息。与一组执行中应用相关的信息可以包括与正在执行的应用的每个实例相对应的PID、分别与正在执行的应用的每个实例的GUI相关联的状态信息、与执行中应用相关的元数据等。与执行中应用相关的元数据的示例可包括由该应用利用的文件的名称和/或目录位置、与嵌入式内容相关联的信息(诸如热点、互联网链接、悬停元素等)。在一实施例中,用户利用UI130来指示PMAR程序300从该组执行中应用中排除一个或多个应用。
[0067] 在步骤304中,PMAR程序300确定用户偏好。在一个实施例中,PMAR程序300基于该组执行中应用从用户偏好132中选择各种用户偏好。在另一实施例中,PMAR程序300可基于其他信息(例如,与显示器122的区域相关联的大小和所识别的一组应用程序的相应GUI区域的大小、时间段等)来修改用户偏好的选择。在一些实施例中,PMAR程序300可响应于确定在与用户设备120的会话期间执行两个或更多个交互模板而利用不同的用户偏好。在一实施例中,PMAR程序300利用UI130来呈现对用户偏好的选择以供使用或修改。
[0068] 在步骤306中,PMAR程序300周期性地确定与应用相关的指针的位置。PMAR程序300可基于指针相对于应用程序的GUI的一个或多个方面或特征(例如,边界、框、菜单栏等)的位置信息来确定指针位置。在一个实施例中,PMAR程序300在用户偏好132内定义的周期的基础上(诸如时间间隔值)确定指针在应用程序的GUI内的位置。在不同实施例中,PMAR程序300从在所确定的用户偏好内指示的多个确定的指针位置创建分别与应用的GUI相关联的一系列(例如,有序集)指针位置。PMAR程序300将指针位置和一系列指针位置存储在指针位置信息138内。
[0069] 在一些实施例中,PMAR程序300响应于以下操作而确定应用的GUI内的指针位置:响应于识别事件,诸如检测指针何时静止达阈值时间段;响应于用户动作,诸如内容相关动作、激活上下文菜单、执行热键组合等;触发悬停GUI元素等。此外,PMAR程序300将与事件相关的信息与所确定的指针位置相关联,诸如指示位置是指针的“静止”位置;识别热键组合被执行;识别所执行的内容动作,诸如复制动作;上下文菜单被访问;链接被激活;由悬停元素显示的内容;等等。PMAR程序300可将与事件相关联的信息映射到存储在应用信息136内的状态数据和/或元数据。
[0070] 仍参考步骤306,在另一实施例中,PMAR程序300还将一系列指针位置与交互模板相关联。例如,如果应用125‑3对于两个交互模板是共有的,则PMAR程序300生成与每个交互模板相关联的一系列指针位置。在其他实施例中,如果PMAR程序300确定指针进入或定位在不与交互模板相关联的应用的GUI内,则PMAR程序300不确定和记录指针的位置。PMAR程序300可标记应用程序以供PMAR训练程序200以后分析来确定用户是否正产生新交互模板。
[0071] 在步骤308中,PMAR程序300更新与应用相关的一系列指针位置。在一个实施例中,PMAR程序300利用一个或多个用户偏好来确定一系列指针位置内的大小(例如,指针位置的数量)和一系列指针位置内要更新的点的数量。在一些实施例中,PMAR程序300利用先进先出(FIFO)策略以基于所识别的用户偏好来更新(例如,替换)一系列指针位置中的一个或多个指针位置。在另一实施例中,响应于PMAR程序300恢复先前利用的应用内的指针位置(在步骤314中),PMAR程序300删除先前系列指针位置并开始生成新系列指针位置。
[0072] 在又一实施例中,响应于确定状态数据改变影响一个或多个应用,PMAR程序300从存储在指针位置信息138中的一系列指针位置并基于与受影响的应用相关联的状态数据的改变(诸如GUI大小的改变、缩放改变等)来计算应用的另一系列指针位置(例如,补偿位置)。
[0073] 在判定步骤309中,PMAR程序300确定指针是否保持在应用的GUI内。在一个实施例中,PMAR程序300基于确定指针的位置在当前应用的GUI的边界内部来确定指针保持在当前应用的GUI内。在另一实施例中,PMAR程序300基于确定指针退出当前应用的GUI的边界或在用户设备120的OS的GUI内被检测到,确定指针未保持在当前应用的GUI内。
[0074] 在一些实施例中,PMAR程序300基于确定用户执行访问(例如,切换到)相关应用程序(例如,在交互模板期间利用的一组应用程序中的应用程序)的热键组合,确定该指针未保持在当前应用程序的GUI内。在其他实施例中,PMAR程序300基于识别状态数据或元数据的改变来确定该指针未保持在当前应用的子GUI或WUI(诸如同一web浏览器内的不同选项卡)内。
[0075] 响应于确定指针保持在应用的GUI内(是分支,判定步骤309),PMAR程序300循环到步骤306以确定指针在当前(即,相同)应用内的一个或多个其他位置。
[0076] 参见判定步骤309,响应于确定指针未保持在应用的GUI内(否分支,判定步骤309),PMAR程序300确定对应于指针的位置(步骤310)。
[0077] 在步骤310中,PMAR程序300确定对应于指针的位置。在一个实施例中,PMAR程序300基于在用户设备120的OSGUI内跟踪指针来确定对应于指针的位置和移动方向。基于映射应用GUI在OSGUI内的位置,PMAR程序300可以识别指针正在移向其的应用。
[0078] 在另一实施例中,PMAR程序300基于确定用户执行热键组合来访问相关应用程序,来确定对应于指针的位置在相关应用程序内。在一个场景中,如果PMAR程序300确定在与用户设备120的当前会话期间用户先前没有使用相关应用,则PMAR程序300跳到步骤312以监视与相关应用相关联的活动。在另一场景中,如果PMAR程序300确定在与用户设备120的当前会话期间用户先前利用了相关应用,则PMAR程序300跳到步骤314以将指针恢复到先前利用的相关应用内的位置。可替代地,如果PMAR程序300确定用户执行的热键组合访问与当前交互模板不相关联的应用程序,则PMAR程序300跳到步骤315。
[0079] 在判定步骤311中,PMAR程序300确定指针是否朝着相关应用的GUI移动。在一个实施例中,PMAR程序300利用在步骤310中确定的指针位置和移动信息以及状态数据(诸如应用程序GUI的位置和执行中应用程序的集合)来确定用户正在将指针移向的应用程序。在一个场景中,PMAR程序300基于确定指针正朝向与用户正在执行的交互的当前模板相关联的应用(例如,相关应用)移动,来确定用户朝向相关应用移动。在另一场景中,PMAR程序300确定指针朝向与当前交互模板不相关联的应用程序移动。
[0080] 响应于确定指针朝向相关应用移动(是分支,判定步骤311),PMAR程序300监视与相关应用相关联的活动(步骤312)。
[0081] 在步骤312中,PMAR程序300监视与相关应用相关联的活动。在一实施例中,PMAR程序300通过执行步骤306、步骤308、判定步骤309、步骤310和/或判定步骤311的并行实例来监视与相关应用相关联的活动。在不同实施例中,PMAR程序300使用在步骤312内获得的信息来创建一系列指针位置并且确定用于相关应用的一个或多个潜在指针恢复位置。
[0082] 在一些实施例中,PMAR程序300基于从在步骤312期间监测的活动导出的信息来识别所使用的下一应用程序。在一个场景中,PMAR程序300确定在利用一组相关应用中的一个应用之后,用户恢复利用该组相关应用中的先前应用,其中该先前应用与一系列指针位置(例如,一个或多个潜在指针恢复位置)相关联。在另一场景中,PMAR程序300确定用户利用先前未被利用的一不同相关应用(例如,缺少潜在的指针恢复位置)。在一些场景中,PMAR程序300基于用户偏好或交互模板内的指示来确定用户恢复利用被排除在指针位置监视之外(例如,缺少潜在的指针恢复位置)的相关应用。
[0083] 在判定步骤313中,PMAR程序300确定是否将指针恢复到相关应用内的位置。在一个实施例中,PMAR程序300基于确定用户恢复使用与一个或多个潜在指针恢复位置相关联的应用程序来确定将指针恢复到一组应用程序(例如,与交互模板相关联的应用程序)中的相关应用程序内的位置。在其他实施例中,PMAR程序300响应于确定相关应用程序缺少潜在的指针恢复位置而确定在相关应用程序(例如,利用的下一个应用程序)内不恢复指针位置。
[0084] 响应于确定将指针恢复到相关应用内的位置(是分支,判定步骤313),PMAR程序300将指针恢复到先前利用的应用内的位置(步骤314)。
[0085] 在步骤314中,PMAR程序300将指针恢复到先前利用的应用内的位置。PMAR程序300可利用用户偏好132的一个或多个规则来影响指针在应用程序(例如,应用程序GUI)内的恢复位置。在一个实施例中,PMAR程序300将指针位置恢复到与用户恢复利用的应用程序(现在是当前应用程序)相关联的一系列指针位置中的最后位置。在另一实施例中,PMAR程序300基于与指针位置相关联的事件修改指针被恢复到的位置。例如,如果事件是粘贴内容,则PMAR程序300确定在粘贴内容之后指针的恢复位置,而不是插入内容的指针位置。
[0086] 在一些实施例中,PMAR程序300从不同于与事件相关联的位置的一系列指针位置中选择指针恢复位置。例如,PMAR程序300选择更靠近GUI内用户执行一个或多个动作(而不是应用程序交换事件(例如,热键组合执行))的区域的指针恢复位置。在又一实施例中,如果PMAR程序300确定状态数据改变影响当前应用程序,则PMAR程序300确定一个或多个补偿的位置以用作指针的恢复位置。在一实施例中,PMAR程序300还可以重新触发与恢复位置有关的发明。在一些示例中,PMAR程序300可以将指针恢复到悬停位置并触发与悬停位置相关联的信息呈现。在另一个示例中,如果PMAR程序300确定内容存储在OS的剪贴板中,并且先前在指针位置处执行的动作是粘贴动作,则PMAR程序300可自动将在途内容粘贴在指针恢复位置处。
[0087] 参见判定步骤311,响应于确定指针没有朝着相关应用的GUI移动(否分支,判定步骤311),PMAR程序监视与指针相关联的活动(步骤315)。
[0088] 在步骤315中,PMAR程序300监视与指针相关联的活动。在一个实施例中,如果PMAR程序300确定指针活动指示横越未包括在交互模板内的不相关应用程序的GUI的移动,但用户未利用该应用程序,则PMAR程序300返回到步骤310。在另一实施例中,如果PMAR程序300确定指针进入与不同交互模板相关联的应用程序的GUI并且用户开始与该应用程序对接,则PMAR程序300的另一实例在步骤304开始执行并且包括当前应用程序。
[0089] 在一些场景中,用户偏好132规定:如果PMAR程序300确定指针进入与一组相关应用程序(例如,与交互模板相关联的应用程序)不相关联的应用程序的GUI,则PMAR程序300忽略与该不相关联的应用程序的用户交互。随后,PMAR程序300响应于确定在另一应用程序内检测到指针而恢复执行。另选地,用户偏好132可规定PMAR程序300响应于确定用户开始与不相关联的交互模板对接而执行PMAR训练程序200的实例以确定用户是否发起新的交互模板。
[0090] 参见判定步骤313,响应于确定在相关应用内不恢复指针(否分支,判定步骤313),PMAR程序监视与指针相关联的活动(步骤315)。
[0091] 参见步骤315,在另一场景中,PMAR程序300监视当前应用程序内的指针的活动,直到指针退出当前应用程序或用户执行热键组合来访问另一应用程序。随后,PMAR程序300在步骤310处恢复执行。另选地,PMAR程序300可执行PMAR训练程序200的实例以确定用户是否将元素添加到PMAR程序300正监视的交互模板或对所述元素进行修改。
[0092] 图4描绘了代表设备计算环境100的一个或多个部分的计算机系统400。计算机系统400是包括软件和数据412的系统的示例。计算机系统400包括处理器401、高速缓存403、存储器402、持久存储器405、通信单元407、输入/输出(I/O)接口406、以及通信结构404。通信结构404提供高速缓存403、存储器402、持久存储器405、通信单元407和输入/输出(I/O)接口406之间的通信。通信结构404可用任何架构来实现,所述架构被设计用于在处理器(诸如微处理器、通信和网络处理器等)、系统存储器、外围设备和系统内的任何其他硬件组件之间传递数据和/或控制信息。例如,通信结构404可用一个或多个总线或纵横开关来实现。
[0093] 存储器402和持久存储器405是计算机可读存储介质。在本实施例中,存储器402包括随机存取存储器(RAM)。通常,存储器402可包括任何合适的易失性或非易失性计算机可读存储介质。高速缓存403是通过保持来自存储器402的最近访问的数据以及最近访问的数据附近的数据来增强处理器401的性能的快速存储器。
[0094] 用于实施本发明的实施例的程序指令和数据可存储在持久存储器405和存储器402中,以便由相应处理器401中的一个或多个经由高速缓存403执行。在一实施例中,持久存储器405包括磁性硬盘驱动器。可替代地,或除了磁性硬盘驱动器之外,持久存储器405可以包括固态硬盘驱动器、半导体存储设备、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存或能够存储程序指令或数字信息的任何其他计算机可读存储介质。
[0095] 持久存储器405所使用的介质也可以是可移除的。例如,可移除硬盘驱动器可以用于持久存储器405。其他示例包括光盘和磁盘、拇指驱动器和智能卡,其被插入到驱动器中以便转移到也是持久存储器405的一部分的另一计算机可读存储介质上。软件和数据412存储在持久存储器405中,以便由各个处理器401中的一个或多个经由高速缓存403和存储器402的一个或多个存储器访问和/或执行。关于用户设备120,软件和数据412包括应用125‑
1、应用125‑2、应用125‑3至应用125‑N、用户界面130、用户偏好132、交互模板134、应用信息
136、指针位置信息138、PMAR训练程序200和PMAR程序300、以及其他程序和数据(未示出)。
[0096] 在这些示例中,通信单元407提供与其他数据处理系统或装置(包含在互联网(未示出)上执行的资源和程序)的通信。在这些示例中,通信单元407包括一个或多个网络接口卡。通信单元407可以通过使用物理和无线通信链路之一或两者来提供通信。可以通过通信单元407将用于实施本发明的实施例的程序指令和数据下载到持久存储器405。
[0097] I/O接口406允许与可以连接到每个计算机系统的其他设备输入和输出数据。例如,I/O接口406可以提供到外部设备408(诸如键盘、小键盘、触摸屏和/或一些其他合适的输入设备)的连接。外部设备408还可包括便携式计算机可读存储媒质,诸如例如拇指驱动器、便携式光盘或磁盘、以及存储卡。用于实施本发明的实施例的软件和数据可存储在这种便携式计算机可读存储媒质上,并且可经由I/O接口406加载到持久存储器405上。I/O接口406还连接到代表显示器140的显示器409。
[0098] 显示器409提供向用户显示数据的机制,并且可以是例如计算机监视器。在一实施例中,显示器409代表显示器140。显示器409还可充当触摸屏,例如平板计算机或智能电话的显示器。或者,显示器409基于投影技术(例如,虚拟视网膜显示器、虚拟显示器等)向用户显示信息。在不同实施例中,显示器409用来产生和接收来自输入装置的图形或虚拟实例的输入。
[0099] 本文中所描述的程序是基于其在本发明的特定实施例中实施的应用来识别的。然而,应当理解,本文中的任何特定程序命名法仅为了方便而使用,因此本发明不应限于仅在由这种命名法识别和/或暗示的任何特定应用中使用。
[0100] 本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储媒体(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。
[0101] 计算机可读存储媒质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储媒质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储媒质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD‑ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储媒质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输媒质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
[0102] 本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。
[0103] 用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及常规的过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
[0104] 本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
[0105] 这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储媒质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储媒质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
[0106] 计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0107] 附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以作为一个步骤完成、同时执行、基本同时地、以部分或全部时间上重叠的方式执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
[0108] 已经出于说明的目的呈现了本发明的不同实施例的描述,但并不旨在是穷尽性的或局限于所公开的实施例。在不脱离本发明的范围和精神的情况下,许多修改和变化对本领域的普通技术人员将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或在市场中发现的技术上的技术改进,或使得本领域普通技术人员能够理解在此公开的实施例。