控制数字输入的制作方法

文档序号:16049884发布日期:2018-11-24 11:11阅读:205来源:国知局

当今设备(例如,计算设备)通常支持各种不同的输入技术。例如,特定设备可经由键盘、鼠标、语音输入、(例如,到触摸屏的)触摸输入等接收来自用户的输入。一种尤其直观的输入技术允许用户能够利用触摸工具(例如,笔、触控笔、手指等)来向诸如触摸屏之类的触摸感测功能性提供徒手输入。徒手输入可被转换成显示器上的对应视觉表示,诸如用于记笔记、用于创建和编辑电子文档等。



技术实现要素:

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。

根据一个或多个方面,数字输入由数字输入系统接收,该接收包括采集数字输入的输入数据,该输入数据描述数字输入。在数字输入被接收时,数字输入的输入数据由数字输入系统提供给主应用。从主应用接收主应用对输入数据执行的一个或多个操作的指示,并且数字输入系统在接收到数字输入时至少部分地基于所操作的输入数据控制数据的显示。

根据一个或多个方面,计算设备包括输入数据采集模块、输入管理器、以及数据显示模块。输入数据采集模块包括被配置为采集输入到计算设备的数字输入的输入数据的指令。输入管理器包括被配置为在接收到数字输入时将输入数据提供给主应用,以及从主应用接收由主应用所操作的数字输入的指示的指令。数据显示模块包括被配置为与输入管理器通信并且基于由主应用所操作的数字输入来显示数据的指令。

附图简述

结合附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在说明书和附图的不同实例中使用相同的附图标记可指示相似或相同的项目。附图中所表示的各实体可指示一个或多个实体并且因而在讨论中可互换地作出对各实体的单数或复数形式的引用。

图1例示了可在其中使用本文所讨论的控制数字输入的示例环境。

图2例示了根据一个或多个实施例的包括主应用和数字输入系统的示例系统。

图3、4、5、6、7和8例示了根据一个或多个实施例的使用本文所讨论的技术来控制数字输入的示例。

图9是例示根据一个或多个实施例的用于实现控制数字输入的示例过程的流程图。

图10例示了包括示例计算设备的示例系统,该示例计算设备代表可实现本文中所描述的各种技术的一个或多个系统和/或设备。

详细描述

本文讨论了控制数字输入。计算设备包括为该计算设备提供数字墨水功能性的数字输入系统。数字输入系统可被实现为应用的一部分,作为向其他应用(本文称为主应用)或其组合提供数字输入支持的独立应用。可以按各种方式提供数字输入,诸如使用笔(例如有源笔,无源笔等)、触控笔、手指等。本文讨论的数字输入通过按徒手方式移动输入设备(例如,触控笔、笔、手指、鼠标,等等)来提供,并且因而还可被称为徒手数字输入。数字输入系统提供允许应用从计算设备的用户接收数字输入、存储接收到的数字输入并基于数字输入控制数据的显示的功能性。

数字输入系统可支持各种不同类型的数字输入。在一个或多个实施例中,数字输入系统支持可被显示在显示设备上的数字墨水。一般而言,数字墨水指的是对诸如触摸屏之类的触摸感测设备的徒手输入,这被计算设备解释为数字墨水(或者简称为“墨水”)。附加地或替代地,数字输入系统支持其他类型的数字输入,诸如用于擦除或删除先前输入的数据的一部分的数字输入、用于控制移动的方向的数字输入(例如,供机动设备采取的路线或路径,游戏的路线或路径),等等。

数字输入系统接收来自用户的数字输入并分析该数字输入以采集该数字输入的输入数据。这一输入数据指的是描述数字输入的各种信息,诸如输入设备上的发生数字输入的坐标和指示在数字输入的那些坐标中的每个坐标处施加的压力量的压力信息。数字输入指的是输入设备(例如,笔、触控笔、手指,等等)沿输入表面从起始位置(例如,输入设备被带入与输入表面接触的位置)到结束位置(例如,输入设备被带离输入表面的位置)的移动。

当接收到数字输入时,如果主应用需要输入数据,则输入数据可对主应用可用。主应用随后可以各种不同方式中的任意一种对输入数据起作用或进行操作,并将(任选地经修改的)输入数据返回到数字输入系统。数字输入系统随后继续基于所操作的输入数据来控制数据的显示。这种对数据的显示的控制可以是例如显示对应于输入数据的数字墨水、基于输入数据擦除数据、基于输入数据确定对象的移动等。例如,主应用可改变输入数据,诸如改变发生数字输入的坐标(例如,保持数字输入沿直线边缘),并将经改变的输入数据返回到数字输入系统(例如,以供显示)。作为另一示例,主应用可为新的数字输入创建新的输入数据(例如,镜像数字输入),并将新的输入数据提供给数字输入系统。数字输入系统可随后基于数字输入和新的数字输入两者来控制或操纵数据(例如,通过显示新的输入数据以及作为数字输入的一部分接收的输入数据两者)。作为另一示例,主应用可为新的数字输入创建新的输入数据(例如,将数字输入投射到不同的屏幕或显示器上),并将新的输入数据提供给数字输入系统(例如,该数字输入系统显示新的输入数据以及作为数字输入的一部分接收的输入数据两者)。

因此,主应用可在接收到输入时对数字输入起作用。本文讨论的技术允许例如主应用确保输入数据沿着标尺、量角器或其他边缘反映数字输入,提供平滑的数字输入而不是可能由用户徒手绘制的摇晃或摆动的线条。本文讨论的技术还允许例如数字输入的镜像图像被创建(例如,用户绘制的心形的另一半)和/或具有在远程显示器上显示的数字输入的副本(例如,实现数字输入系统的计算设备将数字输入投射与其上的另一屏幕或显示设备)。

本文所讨论的技术提供了利用数字输入的稳健和用户友好的体验。各种不同的主应用可利用数字输入系统来支持数字输入。主应用能够在数字输入正被作出时对数字输入起作用——主应用无需等待数字输入完成才对数字输入起作用。因此,当数字输入被作出时(例如,当用户绘制数字输入、数字输入被镜像、数字输入被修改以便沿直线边缘平滑时等等),实时地对数字输入起作用。

图1例示了可在其中使用本文所讨论的控制数字输入的示例环境100。环境100包括计算设备102,该计算设备102可被具体化为任何合适的设备,诸如例如台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板或大屏设备、蜂窝式或其他无线电话(例如,智能电话)、记事本计算机、移动站)、可穿戴设备(例如,眼镜、头戴式显示器、手表、手环)、娱乐设备(例如,娱乐电器、通信地耦合到显示设备的机顶盒、游戏控制台)、物联网(iot)设备(例如,具有用于允许与其他设备的通信的软件、固件和/或硬件的对象或事物)、电视机或其他显示设备、汽车计算机,等等。因此,计算设备102的范围可以是从具有充足存储器和处理器资源的全资源设备(如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(如传统机顶盒、手持式游戏控制台)。

计算设备102包括允许各种活动和任务能够被执行的各种不同的功能。例如,计算设备102包括操作系统104、多个应用106(本文也称为主应用)以及通信模块108。一般而言,操作系统104表示用于抽象计算设备102的诸如硬件、内核级模块和服务等各系统组件的功能性。例如,操作系统104可向应用106抽象计算设备102的各组件以允许各组件与应用106之间的交互。

应用106表示用于经由计算设备102执行不同任务的功能。应用106的示例包括文字处理应用、信息收集和/或笔记记录应用、电子表格应用、web浏览器、游戏应用等等。应用106可被安装在计算设备102本地以经由本地运行时环境来执行,和/或可表示到诸如基于云的服务、web应用等远程功能性的门户。因此,应用106可采取各种形式,诸如在本地执行的代码、到远程地主存的服务的门户等。

通信模块108表示用于允许计算设备102能够通过有线和/或无线连接进行通信的功能性。例如,通信模块108表示用于经由各种不同有线和/或无线技术和协议进行通信的硬件和逻辑。

计算设备102进一步包括显示设备110、输入机构112和数字输入系统116。显示设备110一般表示用于计算设备102的视觉输出的功能性。附加地,显示设备110任选地表示用于接收诸如触摸输入、笔输入等各种类型的输入的功能性。输入机构112一般表示用于接收到计算设备102的输入的不同的功能。输入机构112的示例包括姿势敏感传感器和设备(例如,诸如基于触摸的传感器和移动跟踪传感器(例如,基于相机))、鼠标、键盘、触控笔、触摸板、加速度计、带有伴随的语音识别软件的话筒等。输入机构112可与显示器110分开或集成在一起,集成示例包括带有集成的触摸敏感或移动敏感传感器的姿势敏感显示器。输入机构112任选地包括笔数字化仪118和/或触摸输入设备120。笔数字化仪118表示用于将到显示设备110和/或触摸输入设备120的各种类型的输入转换成可由计算设备102以各种方式使用(诸如用于生成数字墨水)的数字数据的功能性。触摸输入设备120表示用于提供与显示器110分开的触摸输入的功能性。

尽管本文参考接收各种类型的输入(诸如触摸输入或笔输入)的显示设备110,但替代地,显示设备110可能不接收此类输入。相反,被实现为触摸输入设备120的分开的输入设备(例如,触摸板)可接收此类输入。附加地或替代地,显示设备110可能不接收此类输入,但笔(诸如笔122)可被实现为触摸输入设备120,并且笔提供对输入的指示而不是被显示设备110感测到的输入。

根据各种实现,数字输入系统116表示用于执行本文所讨论的控制数字输入的技术的各个方面的功能性。本文讨论了数字输入系统116的各种功能性。在一个或多个实施例中,数字输入系统116被实现为向其他应用106(或操作系统104的程序)提供数字输入支持的应用106(或作为操作系统104的一部分)。数字输入系统116任选地包括允许应用106或其他程序与由数字输入系统116提供的功能性进行交互的应用编程接口(api)。替代地,数字输入系统116可被实现在应用106中,并为该应用106而非其他应用106提供数字输入支持。替代地,数字输入系统116可被实现为其组合。例如,数字输入系统116的一些功能性可被实现在向其他应用106或程序提供数字输入支持的应用106(或作为操作系统104的一部分)中,并且数字输入系统116的其他功能性可被实现在数字输入系统116对其提供支持的个体应用106中。

环境100进一步包括笔122,该笔122表示用于向显示设备110提供输入的输入设备。一般而言,笔122采用常规笔的形状因子,但包括用于与显示设备110和计算设备102的其他功能性进行交互的功能性。在至少一些实现中,笔122是包括用于与计算设备102进行交互的电子组件的有源笔。例如,笔122包括可向笔122的内部组件提供功率的电池。替代地或附加地,笔122可包括磁体或支持在显示设备110上方的悬停检测的其他功能性。然而,这不旨在是限制性的,并且在至少一些实现中,笔122可以是无源的,例如没有内部电子器件的触控笔。

数字输入可由用户使用笔122来提供。附加地或替代地,数字输入可由用户使用其他输入机构(诸如用户的手指、触控笔等等)来提供。

在一个或多个实现中,数字输入系统116以矢量格式维护数字输入。可使用各种不同的矢量格式,诸如可伸缩矢量图形(svg)格式。因此,与以位图格式维护数字输入的系统相反,各个数字输入(任选地被应用106修改,如下面更详细讨论的)以矢量格式被维护。数字输入可任选地由计算设备102保存。数字输入可由数字输入系统116和/或应用106存储在数字输入存储(例如,计算设备102本地的存储设备和/或经由网络访问的存储设备)中。数字输入可被保存在各种不同类型的文件中,诸如墨水序列化格式(isf)文件、可扩展标记语言(xml)文件、超文本标记语言(html)文件等。

图2例示了根据一个或多个实施例的包括主应用和数字输入系统的示例系统200。参考图1的元素来讨论图2。数字输入系统116包括输入数据采集模块202、输入管理器204以及数据显示模块206。数字输入系统116与主应用106的输入操作模块210通信,该主应用106的输入操作模块210基于输入数据执行各种操作,如下文更详细地讨论的。

输入数据采集模块202采集(例如,对计算设备102的)数字输入的输入数据。数字输入是使用称为输入数据(也称为数字输入数据)的各种信息来描述的。在一个或多个实施例中,输入数据包括一组坐标,并且任选地包括施加在每一坐标处的压力。这些坐标可处于各坐标系,诸如2维笛卡尔坐标系、极坐标系等等。压力或力可用各种单位来测量,诸如帕斯卡。这些坐标以及任选地压力可由触摸输入设备120的各传感器感测(例如,显示设备110中的传感器、笔122中的传感器等等)。输入数据可附加地或替代地包括其他数据,诸如输入设备的角度或倾斜、(例如,与触摸屏接触的)输入设备的形状(例如,与触摸屏接触的),等等。

包括在输入数据中的坐标是标识在用户提供该数字输入时的特定时间处输入机构的位置的坐标集合或坐标系列。这些特定时间可以是规律的或不规律的区间(例如,每10毫秒一次)。这些坐标由笔数字化仪118或触摸输入设备120(诸如由显示器设备110、由笔122等)检测或感测。使用图1中的“ink(墨水)”的数字墨水输入的示例,数字墨水输入的墨水笔划数据是在写字母“i”时、在写字母“n”时以及在写字母“k”时,标识输入机构的位置的坐标。在一个或多个实施例中,如本文所使用的,输入指的是输入设备从首先被感测为提供输入(例如,接触触摸屏设备或“笔落下”事件)到输入设备不再被感测为提供输入(例如,输入设备从触摸屏设备抬离或“笔提起”事件)的移动。在数字输入是数字墨水的情形下,输入也可被称为数字墨水笔划,且输入数据也可被称为数字墨水笔划数据。

输入管理器204确定控制或操纵由计算设备102显示的数据的适当方式。由计算设备102显示的此数据可以是显示数字输入的数据(例如,由用户输入的数字墨水),或基于数字输入显示和操纵的其他数据(例如,擦除先前输入的数字墨水、显示图标或字符等)。经显示的数据基于所输入的数字输入和输入操作模块210对输入数据执行的一个或多个操作两者。

输入管理器204从输入数据采集模块202接收输入数据,并向输入操作模块210通知接收到的输入数据。在一个或多个实施例中,输入操作模块210向输入管理器204注册以接收关于数字输入的特定事件,诸如输入开始的时刻、输入结束的时刻、输入期间采集的输入数据等等。每当这些注册事件中的一个发生时,输入管理器204就在事件发生时向输入操作模块210通知输入数据。此通知可以各种方式被执行,诸如通过调用api方法或输入操作模块210的回调函数。

附加地或替代地,可以其他方式向输入操作模块210通知输入数据。例如,输入管理器204可向输入操作模块通知(例如,通过调用api方法或输入操作模块210的回调函数)经采集的输入数据,而不管输入操作模块210已经注册了哪些(如果有的话)事件。作为另一示例,输入管理器204可发出指示经采集的输入数据的消息(例如,经由操作系统104的消息传递系统),并且输入操作模块210可选择是否接收此类消息(或选择接收所有此类消息,并随后确定对这些消息采取什么(如果有的话)动作。

输入操作模块210对输入数据进行操作,并向输入管理器204提供所操作的输入数据的指示。该指示可以是对从输入管理器204接收的输入数据的改变和/或输入管理器204将使用的附加输入数据。

输入操作模块210对输入管理器204提供的输入数据进行操作。输入操作模块210可以各种不同的方式对输入数据进行操作,诸如修改输入数据、生成附加输入数据等。输入操作模块210对输入数据进行操作的方式可基于主应用106的开发者和/或主应用106的用户的期望而变化。

在一个或多个实施例中,输入操作模块210基于模板修改输入数据。各种不同模板可被使用,诸如尺子、量角器、圆、曲线板,等等。“软”模板被主应用106使用(且可任选地被显示),软模板指的是由该主应用106(或在计算设备102上运行的其他程序)生成并显示的模板,与主应用106的用户可用的物理模板形成对比。软模板可从主应用106、数字输入系统116和/或计算设备102的其他程序获得。例如,软模板的库可被维护,并且主应用106的用户可选择所需的软模板以用于数字输入。

徒手的数字输入通常是摇晃或摆动的而非直线,而软模板允许用户生成符合模板的边缘形状的数字输入而非摇晃或摆动的数字输入。例如,模板可以是标尺,且输入操作模块210修改输入数据使得该输入数据指示沿着标尺的边缘的位置(例如,坐标)。作为另一示例,模板可以是用作掩模的标尺,使得在显示模板的区域中的数字输入被遮掩(并因此不被数字输入系统116显示),但是在不显示模板的区域中的数字输入未被遮掩(并因此被数字输入系统116显示)。

附加地或替代地,可以以各种其他方式修改输入数据。例如,指示由输入设备施加的压力的数据可被改变、输入设备的角度或倾斜可被改变、(例如,与触摸屏接触的)输入设备的形状可被改变等等。

在一个或多个实施例中,输入操作模块210生成附加输入数据。例如,此附加输入数据可以是反映关于一个或多个轴或线(例如,垂直轴或水平轴)的数字输入的输入数据。例如,用户可能希望绘制心形并提供作为该心形的右半部的数字输入。输入操作模块210生成对应于心形的右半部分的输入数据的附加输入数据,并生成针对心形的左半部分的附加输入数据。

附加地或替代地,此附加输入数据可以是对应于数字输入的输入数据但相对于用户输入或选择的不同的一条或多条线(或轴)的输入数据。例如,用户可能希望绘制第一直线并绘制垂直于第一直线的第二直线。输入操作模块210生成对应于第一直线的输入数据的附加输入数据,即垂直于该第一直线的第二直线(例如,从第一直线开始的地方开始或在用户指定的某个其他位置处开始)。

附加地或替代地,此附加输入数据可以是用于一个或多个附加显示器的输入数据。例如,主应用106可便于将数据从计算设备102投射到另一显示器(例如,计算设备102可以是平板或智能电话,并且主应用106可便于数据从平板或智能电话到更大的电视或监视器投射)。在此情形下,附加输入数据是指示除了(或者取代)将被显示在计算设备102的显示设备上的数据而将被显示在一个或多个附加显示器上的数据的附加输入数据。

输入操作模块210将所操作的输入数据提供给输入管理器204。输入管理器204从输入操作模块210接收所操作的输入数据,并基于所操作的输入数据确定如何控制数字输入的显示。此确定至少部分地基于从输入操作模块210接收的所操作的输入数据。在输入操作模块210修改输入数据的情形下,输入管理器204基于所操作的输入数据(经修改的输入数据)而不是从输入数据采集模块202接收到的输入数据来控制数据的显示。在输入操作模块210生成附加输入数据的情形下,输入管理器204基于附加输入数据而不是(或替代地作为附加)从输入数据采集模块202接收到的输入数据来控制数据的显示。输入管理器204将其从输入操作模块210接收的附加输入数据视为任何其他数字输入(例如,仿佛附加输入数据是从输入设备接收的而不是由输入操作模块210生成的)。

输入管理器204与数据显示模块206通信以适当地基于数字输入显示数据。数据显示模块206显示由输入管理器204指示的数据,并可在单个显示器、多个显示器等上显示数据。因此,由数据显示模块206显示的数据反映由输入操作模块210进行操作的输入数据。

应当注意,可以以不同的方式管理由输入操作模块210操作的输入数据。在一个或多个实施例中,输入管理器204向输入操作模块210提供或以其他方式使输入操作模块210能够访问采集到的输入数据的副本。输入操作模块210对副本进行操作,并随后输入管理器204更新采集到的输入数据以结合输入操作模块210对输入数据作出的任何修改(任选地维护未修改的输入数据的备份副本或记录以在需要的情况下供后续使用)。替代地,输入管理器204可向输入操作模块210提供经采集的输入数据,允许输入操作模块210修改经采集的输入数据而不是经采集的输入数据的副本。

在一个或多个实施例中,作为生成附加输入数据的一部分,输入操作模块210任选地向输入管理器204提供关于附加输入数据的附加指令或信息。此附加指令或信息可指定例如是否立即或在一些延迟之后呈现附加输入数据、数据显示模块206的多个实例中的哪一个显示该附加输入数据等等。

应当注意,数据显示模块206可以以各种方式基于数字输入显示数据,并且新的数据不是必须被显示的。例如,数字输入可以是擦除先前输入的至少一部分(例如,擦除先前输入的数字墨水),包括擦除由输入操作模块210修改的先前输入。数字输入系统116还支持对数字输入的各种附加操作,并将已由输入操作模块210操作的数字输入视为任何其他数字输入,包括保存输入数据、允许数字输入(例如,数字墨水)被复制和/或粘贴等等。

图3-8例示了根据一个或多个实施例的使用本文所讨论的技术来控制数字输入的示例。参考图1和2的元素来讨论图3-8。

图3例示了示例300,其中沿着模板的边缘生成数字墨水。在示例300中,用户希望输入为沿着软模板302的边缘的弧的数字墨水。笔122被用于在触摸屏显示器304上提供数字输入,但由于笔122的徒手输入的摇晃或摆动性质没有改变,由用户输入的数字墨水将是摇晃或摆动的弧而不是沿着软模板302的边缘平滑绘制的弧。输入操作模块210修改来自笔122的数字输入、修改输入数据使得经修改的输入数据是沿着模板302的边缘的平滑的弧。输入管理器204使用此经修改的输入数据以使数据显示模块206显示平滑的弧306。

图4例示了示例400,其中数字墨水被生成并且模板被用于遮掩部分数字输入。在示例400中,用户希望输入自由形式数字墨水的数字墨水,其未被显示在软模板402所在的区域中。笔122被用于在触摸屏显示器404上提供数字输入,并且输入操作模块210修改来自笔122的数字输入使得在软模板402所在(例如,与输入数据重叠)的位置(例如,坐标)处不显示数字输入的输入数据。输入操作模块210可将数字输入分成多个不同的数字输入、可删除或以其他方式丢弃软模板402所在位置处的输入数据、或修改输入数据以让输入管理器204包括软模版402所在位置处的输入数据为被显示的的指示符。输入管理器204使用此经修改的输入数据以使得数据显示模块206生成数字墨水406,该数字墨水406是被软模板402遮掩的用户所提供的自由形式数字输入。

图5例示了示例500,其中数字输入被用于擦除数据。在示例500中,用户希望沿着来自先前输入的数字墨水502的直线擦除数据。笔122被用于在触摸屏显示器504上提供数字输入,但由于笔122的徒手输入的摇晃或摆动性质没有改变,用户的数字输入将是摇晃或摆动的线而不是平滑绘制的直线。输入操作模块210修改来自笔122的数字输入、修改输入数据使得经修改的输入数据是沿直边缘软模板(未示出)的边缘的平滑的直线。输入管理器204使用此经修改的输入数据以使数据显示模块206从先前输入的数字墨水502擦除平滑的直线506。

图6例示了示例600,其中数字输入被用于设置路径。在示例600中,用户期望沿着从起始位置602到目的地位置604的直线设置路径。笔122被用于在触摸屏显示器606上提供数字输入,但由于笔122的徒手输入的摇晃或摆动性质没有改变,用户的数字输入将是摇晃或摆动的线而不是平滑绘制的直线。输入操作模块210修改来自笔122的数字输入、修改输入数据使得经修改的输入数据是沿直边缘软模板(未示出)的边缘的平滑的直线。此经修改的输入数据被用于生成从起始位置602到目的地位置604的平滑直线608。输入管理器204任选地使用此经修改的输入数据以使数据显示模块206绘制线608。附加地或替代地,主应用106可使用经修改的输入数据来沿着平滑的直线608生成路径,并不需要线608被显示。该路径可根据主应用106的需要用于各种不同的目的,诸如移动游戏中的图标或字符、为交通工具(例如,无人机)设置路径等。

图7例示了示例700,其中附加数字墨水被生成。在示例700中,用户希望输入数字墨水并生成附加数字墨水,该附加数字墨水是输入数字墨水的镜像。笔122被用于在触摸屏显示器702上提供数字输入。输入操作模块210生成附加输入数据,该附加输入数据是沿着(例如,可由用户输入或以其他方式选择的)轴704的输入数字墨水的输入数据的镜像。输入操作模块210将附加输入数据提供给输入管理器204,该输入管理器204使用用户提供的数字输入的输入数据以使显示模块206显示数字输入706,并使用附加输入数据以使显示模块206显示沿着轴704与数字输入706成镜像的附加线708。当输入管理器204接收到输入数据时,输入数据被提供给输入操作模块210,并当对输入数据进行操作时,附加输入数据被返回到输入管理器204。因此,附加输入数据可被用于生成和显示附加线708,同时经采集的输入数据被用于生成和显示数字输入706。

图8例示了示例800,其中附加数字墨水被生成。在示例800中,用户希望输入数字墨水并生成附加数字墨水,该附加数字墨水被显示在附加的显示设备上。笔122被用于在触摸屏显示器802上提供数字输入。输入操作模块210生成与输入数据相同的(例如,其副本)附加输入数据,但使用附加输入数据将数字输入投射到用于不同显示设备的显示器上,并向输入管理器204提供附加输入数据。输入管理器204使用由用户提供的数字输入的输入数据以使显示模块206在显示器802上显示数字输入804。输入管理器204使用附加输入数据以使显示模块206在附加显示器808上显示附加线806。附加线806可以以各种不同的方式被显示在附加显示器808上。在一个或多个实施例中,数字输入系统116包括多个数据显示模块206,每个数据显示模块206针对在其上显示数字输入的每个显示设备(例如,一个用于显示器802的数据显示模块,以及一个用于附加显示器808的数据显示模块)。这些多个数据显示模块可以是例如数据显示模块206在一进程内的不同实例,或数据显示模块206在不同进程内的不同实例。在此类情形下,输入管理器204与两个数据显示模块通信以将输入数据在显示器802上显示为线804,并将附加输入数据在显示器808上显示为线806。当输入管理器204接收到输入数据时,输入数据被提供给输入操作模块210,并当对输入数据进行操作时,附加输入数据被返回到输入管理器204。因此,附加输入数据可被用于生成和显示附加线806,同时经采集的输入数据被用于生成和显示数字输入804。

附加地或替代地,输入操作模块210生成基于输入数据但与输入数据不同的(例如,非其副本)附加输入数据。例如,附加输入数据可以是输入数据的镜像(类似于上面参考图7的讨论)。

返回图2,在一个或多个实施例中,输入操作模块210和输入管理器204至少部分地以软件或固件实现,并且输入操作模块210的至少一部分在与输入管理器204相同的线程内被执行。这允许例如在接收到输入数据时对输入数据作出修改,在移动输入设备和所显示的经修改的输入数据之间具有很少或没有用户可感知的延迟。在一个或多个实施例中,对事件的通知和对输入数据的修改是同步执行的——输入管理器204不继续使数据显示模块206改变显示(例如,显示输入数字墨水笔划的一部分)直到输入操作模块210有机会对输入数据进行操作。

应当注意,并非所有的输入操作模块210都需要在与输入管理器204相同的线程内实现。在一个或多个实施例中,输入操作模块210的更加时间敏感的部分(例如,在接收到数字输入时提供对数字输入的修改)在与输入管理器204相同的线程内执行。输入操作模块210的其他部分(诸如生成附加输入数据的部分)可在与输入管理器204不同的线程内执行。这可能导致输入管理器204在对附加输入数据起作用时的一些滞后,但是该滞后对于用户来说可能不明显(例如,用户可能不会注意到在附加显示器上显示数字墨水时滞后了四分之一秒或半秒)。

在一个或多个实施例中,如上所述,输入数据被提供给输入操作模块210,并且最近发送的输入数据可以由输入操作模块210进行操作。这允许在接收到数字输入时由数字输入系统116反映对输入数据的操作。附加地或替代地,输入操作模块210可对诸如整个数字输入之类的较大部分的输入进行操作,而不仅仅是最近发送的输入数据。当需要此类操作时,可向输入操作模块210提供将对其进行操作的数据,或替代地,输入操作模块210可在输入数据被发送给输入操作模块210时维护该输入数据。在对较大部分的输入进行操作的情形下,输入操作模块210将所操作的输入数据提供给输入管理器204,以在其被操作时显示较大部分的数据输入。

对较大部分的数据输入进行操作允许各种不同的行为。例如,用户可选择(例如,通过提供各种不同的输入,诸如摆动输入设备)以使输入数据在被操作和不被操作之间切换(例如,使得输入能够在被徒手输入和沿着模板边缘的平滑输入之间切换)。作为另一示例,用户可选择(例如,提供各种不同的输入,诸如通过摆动输入设备)以使输入数据被操作以被动画化,诸如像蛇或湿面条一样摇晃或摆动。

附加地,在一个或多个实施例中,输入操作模块210可将输入分成多个数字输入。如上文所描述的,数字输入可以指输入设备或对象从首先被感测为提供输入(例如,接触触摸屏设备或“笔落下”事件)到输入设备或对象不再被感测为提供输入(例如,输入设备从触摸屏设备抬离或“笔提起”事件)的移动。即使输入设备或对象继续被感测为提供输入(例如,正在触摸触摸屏设备),输入操作模块210也可将数字输入分离成多个数字输入。例如,再次参考图4,用户使用输入设备122提供输入,并且所例示的输入是穿过软模板402的自由形式的线。输入设备122仍然被感测为提供输入(例如,当触摸触摸屏显示器404时),但是输入操作模块210将数字输入分离为多个数字输入(例如,软模板402的左手侧的两个数字输入,软模板402的右手侧的两个数字输入)而不是单个数字输入。数字输入因此能够在输入中间完成并且开始新的数字输入(在输入中间完成的时刻或在稍后的时刻)。在数字输入是数字墨水的情形下,数字墨水因此能够在笔划中期完成并且开始新的数字墨水笔划(在笔划中期完成的时刻或在稍后的时刻)。输入操作模块210向输入管理器204通知将数字输入分离为多个数字输入。此通知可采取各种形式,诸如修改输入数据以包括数字输入已结束或开始的指示、向输入管理器204发送(例如,调用由输入管理器204暴露的api方法)指示数字输入已经结束或开始的命令,等等。

图9是例示根据一个或多个实施例的用于实现控制数字输入的示例过程900的流程图。过程900可以软件、固件、硬件或其组合来实现。在图9的左侧例示的过程900的各动作由数字输入系统执行,诸如图1或图2的数字输入系统116。在图9的右侧例示的过程900的各动作由主应用执行,诸如图1或图2的主应用106。过程900被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程900是用于实现控制数字输入的示例过程;实现控制数字输入的附加讨论参考不同的附图被包括于此。

在过程900中,由数字输入系统接收数字输入(动作902)。接收到的数字输入包括数字输入的输入数据。数字输入可以被直接输入到应用并被提供给数字输入系统,也可被提供给代表应用接收数字输入的数字输入系统。

接收到的输入数据被提供给主应用(动作904)。例如,主应用是已被注册以从数字输入系统接收关于输入数据的事件或消息的应用。

主应用从数字输入系统接收经捕捉的输入数据(动作906)并对接收到的输入数据执行一个或多个操作(动作908)。这些一个或多个操作可包括如上文所描述的修改输入数据和/或生成附加输入数据。

对所操作的输入数据的指示被提供给数字输入系统(动作910)。该指示可采用如上文所讨论的各种形式。例如,该指示可以是由主应用生成的经修改的输入数据和/或附加的输入数据。

数字输入系统接收对所操作的输入数据的指示(动作912)并至少部分地基于所操作的输入数据来控制数据的显示(动作914)。这种对数据的显示的控制可基于所操作的输入数据采取各种形式,诸如显示经修改的输入数据、显示附加的输入数据以及在动作902中采集的输入数据、擦除或不显示输入数据、擦除(包括点擦除)经修改的笔划等等。附加地或替代地,还可执行各种其他操作,诸如保存数据(例如,经修改的输入数据、附加的输入数据以及在动作902中采集的输入数据)并且稍后将经保存的数据加载回来,选择数据(例如,经修改的输入数据、附加的输入数据以及在动作902中采集的输入数据)以供复制/粘贴操作等等。

因此,本文讨论的各技术支持各种使用场景。在显示改变的效果之前(例如,在显示数字墨水的任何改变之前),主应用可以拦截和改变数字输入。可被改变的输入数据的任何方面,包括但不限于输入的坐标、反映输入设备施加的压力的数据、输入设备的倾斜和/或扭曲等。数字输入也可在输入中间完成并开始新的数字输入,允许数字输入(例如,经显示的数字墨水)停止在模板的边缘处。在基于数字输入改变显示之后,主应用也可对数字输入进行操作,允许在基于数字输入改变显示之后修改数字输入(例如,在显示数字墨水之后改变数字墨水)。还支持数字输入的重放,允许数字输入被镜像、复制、远程显示等。主应用还可在接收到数字输入时对数字输入进行操作,允许例如由主应用操作的数字墨水看起来像从输入设备的尖端“流出”。

虽然本文中参考特定模块讨论了特定功能性,但应注意,本文中讨论的个体模块的功能可被分成多个模块,和/或多个模块的至少一些功能可被组合在单个模块中。附加地,本文讨论的执行某一动作的特定模块包括该特定模块本身执行该动作或另选地该特定模块调用或与其他方式访问执行该动作的另一组件或模块(或与该特定模块联合执行该动作)。因而,执行某一动作的特定模块包括该特定模块本身执行该动作或由该特定模块调用或以其他方式访问的另一模块执行该动作。

图10在1000概括地示出了包括示例计算设备1002的示例系统,该示例系统表示可以实现本文中所描述的各种技术的一个或多个系统和/或设备。计算设备1002可以是,例如,服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统、和/或任何其他合适的计算设备或计算系统。

所示的示例计算设备1002包括处理系统1004、一个或多个计算机可读介质1006,以及相互通信地耦合的一个或多个i/o接口1008。尽管没有示出,计算设备1002可进一步包括系统总线或将各种组件相互耦合的其他数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或其组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线体系结构中的任一种的处理器或局部总线。也构想了各种其他示例,诸如控制和数据线。

处理系统1004表示使用硬件执行一个或多个操作的功能性。因此,处理系统1004被示为包括可被配置成处理器、功能块等的硬件元件1010。这可包括在作为专用集成电路或使用一个或多个半导体构成的其他逻辑设备的硬件中的实现。硬件元件1010不受形成它们的材料或者其中利用的处理机构的限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(ic))构成。在这一上下文中,处理器可执行指令可以是可电子地执行的指令。

计算机可读介质1006被例示为包括存储器/存储1012。存储器/存储1012表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储1012可包括易失性介质(如随机存取存储器(ram))和/或非易失性介质(如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储1012可包括固定介质(例如,ram、rom、固定硬盘驱动器等)以及可移动介质(例如闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1006可以下面进一步描述的各种方式来配置。

一个或多个输入/输出接口1008表示允许用户向计算设备1002输入命令和信息的功能性,并且还允许使用各种输入/输出设备向用户和/或其他组件或设备呈现信息。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、话筒(例如,用于语音输入)、扫描仪、触摸功能性(例如,电容性的或被配置来检测物理触摸的其他传感器)、相机(例如,可采用可见或诸如红外频率的不可见波长来将不涉及触摸的移动检测为姿势),等等。输出设备的示例包括显示设备(例如,监视器或投射器)、扬声器、打印机、网卡、触觉响应设备,等等。因此,计算设备1002可以下面进一步描述的各种方式来配置以支持用户交互。

计算设备1002还包括数字输入系统1014。如上文所描述的,数字输入系统1014提供支持控制数字输入的各种功能性。数字输入系统1014可以是例如图1或图2的数字输入系统116。

本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般而言,此类模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。本文使用的术语“模块”、“功能性”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的各特征是平台无关的,从而意味着该技术可在具有各种处理器的各种计算平台上实现。

所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上或跨某种形式的计算机可读介质传送。计算机可读介质可包括可由计算设备1002访问的各种介质。作为示例而非限制,计算机可读介质可包括“计算机可读存储介质”和“计算机可读信号介质”。

“计算机可读存储介质”指相对于仅信号传输、载波或信号本身而言,启用对信息的持久存储和/或有形存储的介质和/或设备。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括以适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路、或其他数据等的方法或技术来实现的诸如易失性和非易失性、可移动和不可移动介质和/或存储设备的硬件。该计算机可读存储介质的示例包括但不限于,ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光存储、硬盘、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可适用于存储所需信息并可由计算机访问的其他存储设备、有形介质或制品。

“计算机可读信号介质”可以指被配置成诸如经由网络向计算设备1002的硬件传输指令的信号承载介质。信号介质通常用诸如载波、数据信号、或其他传输机构等经调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。信号介质还包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、rf、红外线和其他无线介质。

如先前所描述的,硬件元件1010和计算机可读介质1006代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可在某些实施例中被采用来实现此处描述的技术的至少某些方面。硬件元件可包括集成电路或片上系统、应用专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld),和用硅或其他硬件设备实现的组件。在此上下文中,硬件元件可以充当处理设备,该处理设备执行由该硬件元件以及用于存储供执行的指令的硬件设备(例如前面描述的计算机可读存储介质)所体现的指令、模块和/或逻辑所定义的程序任务。

前面的组合也可被采用来实现本文所述的各种技术。相应地,软件、硬件,或模块和其他程序模块可被实现为一个或多个指令和/或在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1010实现的逻辑。计算设备1002可被配置成实现对应于软件和/或硬件模块的特定指令和/或功能。因此,将模块实现为可由计算设备1002执行为软件的模块可至少部分以硬件完成,例如,通过使用计算机可读存储介质和/或处理系统的硬件元件1010。指令和/或功能可以是一个或多个制品(例如,一个或多个计算设备1002和/或处理系统1004)可执行/可操作的,以实现本文描述的技术、模块、以及示例。

如在图10中进一步例示的,示例系统1000使得用于当在个人计算机(pc)、电视设备和/或移动设备上运行应用时的无缝用户体验的普遍存在的环境成为可能。服务和应用在所有三个环境中基本相似地运行,以便当使用应用、玩视频游戏、看视频等时在从一个设备转换到下一设备时得到共同的用户体验。

在示例系统1000中,多个设备通过中央计算设备互连。中央计算设备对于多个设备可以是本地的,或者可以位于多个设备的远程。在一个或多个实施例中,中央计算设备可以是通过网络、互联网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。

在一个或多个实施例中,该互连架构使得功能性能够跨多个设备递送以向多个设备的用户提供共同且无缝的体验。多个设备的每一个可具有不同的物理要求和能力,且中央计算设备使用一平台来使得为设备定制且又对所有设备共同的体验能被递送到设备。在一个或多个实施例中,创建目标设备的类,且针对设备的通用类来特制体验。设备类可由设备的物理特征、用途类型或其他共同特性来定义。

在各种实现中,计算设备1002可采取各种各样不同的配置,诸如用于计算机1016、移动设备1018和电视机1020用途。这些配置中的每一个包括可具有一般不同的配置和能力的设备,并且因而计算设备1002可根据不同的设备类中的一个或多个来配置。例如,计算设备1002可被实现为计算机1016类的设备,该类包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。

计算设备1002还可被实现为移动设备1018类的设备,该类包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备。计算设备1002还可被实现为电视机1020类的设备,该类包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。

本文所描述的技术可由计算设备1002的这些各种配置来支持,且不限于在本文描述的各具体示例。此功能性也可被全部或部分通过分布式系统的使用(诸如如下的经由平台1022通过“云”1024)来实现。

云1022包括和/或代表资源1024的平台1026。平台1024抽象云1022的硬件(如,服务器)和软件资源的底层功能性。资源1026可包括可在计算机处理在位于计算设备1002远程的服务器上执行时使用的应用和/或数据。资源1026也可包括在互联网上和/或通过诸如蜂窝或wi-fi网络之类的订户网络上提供的服务。

平台1024可抽象资源和功能以将计算设备1002与其他计算设备相连接。平台1024还可用于抽象资源的缩放以向经由平台1024实现的资源1026所遇到的需求提供对应的缩放级别。相应地,在互联设备的实施例中,本文描述的功能性的实现可分布在系统1000上。例如,该功能性可部分地在计算设备1002上以及经由抽象云1024的功能性的平台1022来实现。

在本文的讨论中,描述了各种不同的实施例。要领会和理解,本文描述的每个实施例可以单独或与本文描述的一个或多个其他实施例结合使用。本文所讨论的技术的进一步方面涉及以下实施例中的一个或多个。

一种方法,包括:通过数字输入系统接收数字输入,接收包括采集所述数字输入的输入数据,所述输入数据描绘所述数字输入;当所述数字输入被接收时,由所述数字输入系统向主应用提供所述数字输入的输入数据;从所述主应用接收所述主应用对所述输入数据执行的一个或多个操作的指示;以及当所述数字输入被接收时,通过所述数字输入系统至少部分地基于所操作的输入数据来控制数据的显示。

作为上文描述的方法中的任一者的替代或补充,以下任一者或其组合:所述数字输入包括数字墨水输入,所述一个或多个操作包括修改所述输入数据,并且控制包括使用所述经修改的输入数据而不是所述经采集的输入数据来显示数字墨水笔划;所述输入数据包括发生所述数字输入的输入设备的坐标;所述主应用被实现在计算设备中,并且所述数字输入系统被实现为所述计算设备中与所述主应用分离的程序,所述一个或多个操作包括修改所述输入数据,并且控制包括使用所述经修改的输入数据而不是所述经采集的输入数据来控制数据的显示;所述数字输入包括数字墨水输入,所述一个或多个操作包括生成附加的输入数据并将所述附加的输入数据提供给所述数字输入系统,并且所述控制包括同时显示所述附加的输入数据并显示所述经收集的输入数据;控制进一步包括在不同的显示设备上显示所述附加的数字输入数据和所述经采集的输入数据;所述一个或多个操作包括将所述数字输入分成多个数字输入;所述方法进一步包括:在所述输入数据被接收之后,由所述主应用对所述输入数据执行附加的一个或多个操作,以及在所述输入数据被接收之后,由所述数字输入系统至少部分地基于附加的所操作的输入数据来控制数据的显示。一种计算设备,包括:一个或多个处理器;以及计算机可读存储介质,其上存储有多个指令,所述多个指令实现数字输入系统,并响应于所述一个或多个处理器的执行使得所述一个或多个处理器以:采集输入到所述数字输入系统的数字输入的输入数据,所述输入数据描述所述数字输入;当所述数字输入被接收时,将所述输入数据提供给主应用;从所述主应用接收所述主应用对所述输入数据执行的一个或多个操作的指示;以及基于所述主应用对所述输入数据执行的所述一个或多个操作来控制数据的显示。

作为上文描述的计算设备中的任一者的替代或补充,以下任一者或其组合:所述主应用在所述计算设备中被实现为与所述数字输入系统分离的程序;所述主应用通过修改所述输入数据来对所述数字输入进行操作,并且所述控制包括使用所操作的输入数据来控制数据的显示;所述主应用通过将所述数字输入分成多个数字输入来对所述数字输入进行操作;所述主应用通过生成附加的输入数据对所述数字输入进行操作,并且所述控制进一步包括基于所述输入数据以及所述附加的输入数据来控制数据的显示。

一种计算设备,包括:输入数据采集模块包括被配置为采集输入到所述计算设备的数字输入的输入数据的指令;输入管理器包括被配置为在所述数字输入被接收时将所述输入数据提供给主应用,以及从所述主应用接收由所述主应用所操作的所述数字输入的指示的指令;以及数据显示模块包括被配置为与所述输入管理器通信并且基于由所述主应用所操作的所述数字输入来显示数据的指令。

作为上文描述的计算设备中的任一者的替代或补充,以下任一者或其组合:所述输入数据包括数字墨水笔划数据,所述主应用通过修改所述数字墨水笔划数据对所述数字墨水笔划数据进行操作,并且所述数据显示模块包括进一步配置为与所述输入管理器通信以基于经修改的数字墨水笔划数据显示数字墨水的指令;所述输入数据包括发生所述数字输入的输入设备的坐标;所述主应用在所述计算设备中被实现,并且所述数字输入系统被实现为所述计算设备中与所述主应用分离的程序;所述主应用通过修改所述输入数据来对所述数字输入进行操作,并且所述数据显示模块包括被进一步配置为与所述输入管理器通信以基于经修改的数字输入数据显示数据的指令;所述主应用通过将所述数字输入分成多个数字输入来对所述数字输入进行操作。

尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。更确切而言,以上所描述的具体特征和动作是作为实现权利要求的示例形式公开的。

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