用于输入法编辑器的扩展框的制作方法

文档序号:6352271阅读:290来源:国知局
专利名称:用于输入法编辑器的扩展框的制作方法
技术领域
本公开涉及输入法。
背景技术
在使用语标字体(logographic script)的语言中,一个或两个字符大约对应于一个词语或含义,这样的语言具有比标准输入设备上的按键更多的字符,标准的输入设备如计算机键盘或移动设备键盘。例如,中文包含由基础拼音(Pinyin)字符和五个音调定义的数以万计的字符。这些多对一关联的映射可以通过帮助输入在输入设备上没有找到的字符和符号的输入法来实现。因此,西式键盘或移动设备可以用来输入中文字符。同样,输入法可以用来使用西式键盘输入许多其他语言,包括表意文字(ideogram),诸如日语、韩语、其他语目。输入法编辑器(ME)可以用来实现输入法。以中文为例,用户可以输入一个或多个拼音字符或查询,它们由頂E处理以提供一个或多个中文字符候选项。一种场景包括查询对候选项映射(query-to-candidates mapping)功能f (查询)=候选项(f (query) =candidates),其中,查询包括ACSII键的序列,而候选项包括中文或非中文字符串的列表。虽然其他输入对输出映射将ACSII查询映射到中文或非中文候选项,但是这样的映射在功能上也是受限的。

发明内容
本说明描述了涉及输入法的技术,并且具体来讲,涉及用于输入法的扩展框(extension framework)。一般,在本说明中描述的主题的一个创新的方面可以体现为包括以下动作的方法接收在输入法编辑器(IME)的用户界面中的用户输入;将用户输入提供给脚本引擎;从电存储在脚本储存库中的多个脚本中选择脚本;使用脚本引擎通过脚本处理用户输入以生成一个或多个候选项;以及将一个或多个候选项提供给IME引擎。在一些方面中,所述动作还包括例示沙盒进程,脚本引擎在沙盒进程内运行。在一些方面中,IME引擎使用进程间通信与脚本引擎进行通信。在一些方面中,所述动作还包括在沙盒进程内运行IPC服务器,IPC服务器启用在IME引擎和脚本引擎之间的通信。在一些方面中,沙盒进程限制脚本引擎的功能。在一些方面中,用户输入包括识别脚本的输入序列和要由脚本处理的输入。在一些方面中,所述动作还包括将用户输入与一个或多个触发字符串进行比较;确定用户输入与一个或多个触发字符串之一匹配;以及基于所述一个或多个触发字符串之一选择脚本。在一些方面中,所述动作还包括接收指示在扩展模式中的ME的操作的输入;响应于接收输入,在扩展模式中操作IME ;以及当在扩展模式中操作时,将所有用户输入提供给脚本引擎。在一些方面中,通过脚本处理用户输入包括以下动作建立与基于网络的服务的网络连接;将至少一部分用户输入提供给基于网络的服务;以及从基于网络的服务接收响应,该响应已经基于所述至少一部分用户输入而生成,并且一个或多个候选项包括该响应。在一些方面中,基于网络的服务包括地图服务、搜索服务、以及翻译服务中的至少一个。在一些方面中,所述动作还包括生成包括第一组候选项的第一候选项列表;生成包括第二组候选项的第二候选项列表,第二组候选项包括使用脚本引擎生成的一个或多个候选项;组合至少一部分第一组候选项和至少一部分第二组候选项,以提供第三候选项列表;以及在用户设备上显示第三候选项列表。在一些方面中,IME引擎处理一个或多个候选项用于在用户界面上显示。在一些方面中,所述动作还包括接收指示选择一个或多个候选项之一的第二用户输入;以及将一个或多个候选项之一输入到在用户设备上运行的应用。在一些方面中,所述应用包括文字处理应用、文本编辑应用、电子表单应用、电子邮件应用、展示应用、以及网络浏览器之一。在一些方面中,电存储在脚本储存库中的每个脚本包括从多个核准的(approved)例程中选择的一个或多个例程。在一些方面中,所述动作还包括识别脚本的脚本语言,其中,所述脚本引擎例示与用于通过脚本处理用户输入的脚本语言相对应的运行时间(runtime)。在一些方面中,用户输入以第一语言提供。在一些方面中,一个或多个候选项以第一语言提供。在其他方面中,一个或多个候选项以第二语言提供。在其它方面中,一个或多个候选项以第一语言和第二语言的组合提供。在一些方面中,一个或多个候选项包括一个或多个符号。在一些方面中,所述动作还包括接收输入;响应于输入,生成电存储在中央寄存器(central registry)中的可用脚本的列表,可用脚本的列表包括脚本;接收指示脚本选择的第二输入;响应于第二输入,从中央寄存器中检索脚本;以及将脚本存储在脚本储存库中。在本说明中描述的主题的另一个创新的方面可以体现为包括以下动作的方法接收在IME的用户界面中的用户输入;将用户输入提供给脚本引擎;从电存储在脚本储存库的多个脚本中选择脚本;基于脚本中提供的指令,建立与基于网络的服务的网络连接;将至少一部分用户输入提供给基于网络的服务;从基于网络的服务接收响应;以及将响应提供给IME引擎,以便将响应显示给用户。在一些方面中,基于网络的服务包括地图服务、搜索服务、以及翻译服务中的至少一个。在一些方面中,至少一部分用户输入被提供给地图服务,由地图服务产生响应,并且响应包括用户可选择的超链接。在其他方面中,至少一部分用户输入被提供给搜索服务作为搜索词(search term),由搜索服务生成响应,并且响应包括由搜索服务基于搜索词生成的一个或多个搜索结果。在其他方面中,至少一部分用户输入被提供给翻译服务,并且以第一语言提供,由翻译服务生成响应,并且以第二语言提供该响应。一般,在本说明中描述的主题的另一个方面可以体现为包括以下动作的方法接收脚本文件,脚本文件可由ME系统运行,以基于对ME系统的用户输入生成一个或多个候选项;将脚本文件电存储在中央寄存器中,中央寄存器包括多个脚本;以及公布可用于下载到用户设备并安装在用户设备上的多个脚本,用户设备包括ME系统。在一些方面中,所述多个脚本中的每个脚本包括从多个核准的例程中选择的一个或多个例程。在一些方面中,所述多个脚本中的脚本以JavaScript、Lua以及VBScript之一编与。在一些方面中,所述多个脚本中的至少一个脚本包括关联元数据,关联元数据提供用于显示一个或多个候选项的指令。在一些方面中,所述指令包括提供用于显示在候选项列表中的一个或多个候选项的号码序列。在其它方面中,所述指令包括提供用于显示在候选项列表中的一个或多个候选项的字母序列。在本说明中描述的主题的一个或多个实施方式的细节在以下附图和描述中阐述。从描述、附图、以及权利要求中,本主题的其他特征、方面、以及优点将变得清楚。而且,在本说明中描述的主题的方面,包括上述各方面,可以以一个或多个组合方式进行组合。


图1是可以利用来实施这里描述的系统和方法的示例系统的框图。图2是示例输入法编辑器(ME)的框图。图3是示例ME扩展框的框图。图4是示出用于IME的命令扩展模式的示例进程的流程图。图5是示出用于运行頂E的示例进程的流程图。图6A示出了对应于命令扩展模式的示例扩展。图6B示出了基于图6A的扩展的示例输出。各个附图中的类似符号指示类似的元素。
具体实施例方式概览本说明描述了涉及用于输入法编辑器(IME)的扩展框的技术。虽然将在英语和中文语言的上下文中描述示例的实施方式,但是本公开可以容易地应用到其他非语标(non-logographic)语言(例如,包括德语、法语、意大利语、西班牙语、葡萄牙语、瑞典语)以及语标语言(例如,包括日语、汉语、和/或印度语)。图1是可以利用来实施这里描述的系统和方法的示例系统100的框图。系统100可以包括,例如,计算机设备,如个人计算机设备,或其他电子设备,如移动电话、移动通信设备、个人数字助理(PDA)、等等。系统100包括处理设备102、第一数据存储器(Store)104、第二数据存储器106、输入设备108、输出设备110、以及网络接口 112。总线系统114包括,例如,数据总线和主板,总线系统114可以用来建立和控制组件102、104、106、108、110和112之间的通信。其他系统体系结构也可以使用。处理设备102可以包括,例如,一个或多个微处理器。第一数据存储器104可以包括,例如,随机存取存储器存储设备(random access memory storagedevice),如动态随机存取存储器,或者其他类型的计算机可读介质存储器设备(computer readable mediummemory device)。第二数据存储器106可以包括,例如,一个或多个硬盘驱动器、闪存、和/或只读存储器、或者其他类型的计算机可读介质存储设备。示例输入设备108可以包括键盘、鼠标、手写笔等,而示例输出设备110可以包括显示设备、音频设备等。网络接口 112可以包括,例如,可操作地将数据传送到网络116和从网络116接收数据的有线或无线网络设备。网络116可以包括一个或多个局域网(LAN)和/或广域网(WAN),如因特网。在一些实施方式中,系统100可以包括来自数据存储器的ME代码101,例如来自数据存储106。IME代码101可以包括指令,当运行指令时,使得处理设备102执行ME功能。IME代码101可以包括,例如,解释指令(interpreted instruction),如脚本指令,例如JavaScript或ECMAScritp指令,可以在网络浏览器环境中运行指令。其他实施方式也可以使用,例如,独立应用、小应用(applet)、插件模块、等等。IME代码101的运行生成或启动ME实例103。IME实例103帮助一个或多个输入法在设备100中的处理,在此期间,系统100可以接收用于输入字符或符号的组合输入(composition input),诸如,例如,汉字(Hanzi)字符。例如,用户可以使用一个或多个输入设备108 (例如,键盘,如西式键盘,与手写识别引擎一起使用的手写笔,等等)输入用于识别汉字字符的组合输入。在一些示例中,汉子字符可以由多于一个的组合输入来组成。第一数据存储器104和/或第二数据存储器106可以存储组合输入与字符的关联。基于用户输入,输入法编辑器实例103可以使用数据存储器104和/或数据存储器106中的信息来识别由输入表现的一个或多个候选项选择。在一些实施方式中,如果识别到多于一个的候选项选择,则候选项选择被显不在输出设备110上。使用输入设备108,用户可以从候选项选择中选择用户希望输入的汉字字符。在一些实施方式中,系统100上的ME实例103可以接收一个或多个拼音组合输入,并将组合输入转换为汉字字符。ME实例103能够,例如,使用从敲击按键中接收的拼音音节或字符来表现汉字字符。每个拼音音节能够,例如,对应于一个或多个西式键盘中的敲击按键。使用拼音ME,用户通过使用包括表现汉字字符的声音的一个或多个拼音音节的组合输入来输入汉字字符。但是,用于其他语言的输入法也可以是有帮助的。在一些实施方式中,可以访问系统100的远程计算系统118也可以用来编辑语标脚本。例如,系统100可以是经由网络116提供语标脚本编辑能力的服务器。在一个示例中,用户能够使用远程计算系统,例如,客户端计算机,编辑存储在数据存储器104和/或数据存储器106中的语标脚本。系统100能够,例如,选择字符和经由网络接口 112从用户接收组合输入。处理设备102能够,例如,识别邻近所选择的字符的一个或多个字符,并且基于接收的组合输入以及邻近的字符来识别一个或多个候选项选择。系统100能够将包括候选项选择的数据通信传送回远程计算系统。在一些实施方式中,ME实例103能够基于一个或多个组合输入和语言上下文105来识别候选项选择。语言上下文105能够,例如,定义由输入法编辑器实例103支持的不同语言,例如,英语语言上下文105a、中文语言上下文105b、汉语语言上下文105c、等等。例如,IME实例103能够将英语上下文105a应用到组合输入,以便将组合输入映射到英语字母表。同样,頂E实例103能够将中文语言上下文105b应用到组合输入,以便将组合输入映射到拼音输入、等等。
基于组合输入和语言上下文105,IME实例103能够识别用于由用户选择的一个或多个候选项选择。在一些实施方式中,语言上下文105能够被利用来自动地提供由不同语言定义的候选项选择,例如,交织显示模式,其中,来自英语语言的候选项选择(例如,定义词语的字母)可以与中文字符(例如,汉子字符)同时显示。在一些实施方式中,语言上下文105能够被利用来自动地提供由一种语言定义的候选项选择,例如,切换显示模式,其中,只有来自英语语言的候选项选择,例如,定义词语的字母,可以被显示用于第一组字符,而只有来自中文语言的候选项选择,例如,汉子字符,可以被显示用于第二组字符。图2是示例ME系统120的框图。ME系统120可以使用,例如,输入法编辑器代码101和相关联的数据存储器104和106来实现。ME系统120包括ME引擎122、字符数据存储器124、组合输入数据存储器126、语言模型数据存储器128、以及扩展框200。其他存储体系结构也可以使用。字符数据存储器124包括在一个或多个语言模型中使用的语标脚本的字符,以及在基于罗马或西式字母表中的字符和词语,例如,英文、德文、西班牙文、等等。在一些实施方式中,字符数据存储器124还包括关于字符之间的关系的信息。例如,字符数据存储器124可以包括取决于邻近该字符的字符而分配给该字符的分数或概率值。其他上下文的相关数据也可以使用。如以下所更详细讨论的,扩展框200与ME引擎122交互以支持任意的查询对候选项(query-to-candidate)的映射。组合输入数据存储器126包括组合输入和存储在字符数据存储器124中的字符的关联。在一些实施方式中,组合输入数据存储器126可以将字符数据存储器124中的每个字符链接到由输入法编辑器引擎122使用的组合输入。例如,IME引擎122能够使用字符数据存储器124和组合输入数据存储器126中的信息,将字符数据存储器124中的一个或多个字符与组合输入数据存储器126中的一个或多个组合输入相关联和/或相识别。语言模型数据存储器128可以定义一个或多个语言模型,例如,英语语言模型、中文语言模型、等等。每个语言模型能够,例如,定义特定的规则集合,例如,语言特定的语法、短语集合、动词、等等,可以用来确定用户录入一组组合输入时可能的意图。每个语言模型还可以包括特定用户的用户历史,例如,由该特定用户经常使用的词语或短语的字典。在一些实施方式中,ME引擎122可以根据语言上下文105来解释组合输入,例如,英语上下文105a、中文上下文105b、韩语上下文105c、等等。当根据语言上下文105解释组合输入时,可以确定语言上下文值107。基于语言上下文值107和组合输入,可以识别候选项选择并展示给用户用于选择。例如,可以通过输入法编辑器引擎122接收若干组合输入,例如,敲击按键。敲击按键可以定义一系列中文上下文105b中的拼音输入,并且可以定义英语上下文105a中的一系列字母。因此,一个或多个英语候选项选择,例如,词语,以及一个或多个中文候选项选择,例如,汉子字符,可以展示给用户用于选择。在一些实施方式中,英语上下文值107a可以通过将组合输入与英语词语的前缀进行比较并基于该比较设定英语上下文值来确定。例如,组合输入o-p-p-o匹配词语“opportunity”中的字符串。例如,英语上下文值107a能够与通过比较识别的前缀匹配成比例地设定,例如,对于组合输入o-p的上下文值可以很低,而对于组合输入o-p-p-o-r-t-u的上下文值可以高很多。语言上下文值107也可以通过其他进程来确定。例如,中文上下文值107b可以通过评估中文字符对中文语言模型并基于评估设定中文上下文值107b来确定。例如,中文语言模型可以包括中文语法模型。示例中文语法模型可以包括连动结构模型、完成式和未完成式模型、以及其他语法模型。基于组合输入,例如,敲击按键,能够识别一系列拼音输入。拼音组合输入,反过来可以用来识别汉字字符。中文语法模型可以被应用到汉子字符,以确定用户在中文上下文中意图输入的似然性。例如,以汉字字符全部是动词为结果的组合输入字符串将会得分很低,而以动词和宾语为结果的组合输入字符串将得分更高、等等。作为另一个示例,结果为读作“我爱花(I loveflowers的中文字符串的组合输入将收到较高的中文上下文值107b,而结果为读作“床牛电视(bed cow tv)”的中文字符串的组合输入字符串将收到很低的中文上下文值107b。其他进程可以用来确定语言上下文值107。例如,特定语言的不经常使用的词语的上下文值可以得分(scaled)较低,而如由用户简档(profile)定义的常用词语或短语的上下文值可以得分较高、等等。扩展框IME提供查询对候选项映射功能,一般提供为f (查询)=候选项其中,查询是ASCII按键的序列。使用中文语言作为示例,作为结果的候选项可以包括中文或非中文字符串的列表。例如f (“pinyin”)=[“拼音”、“品”、“频”、......]示出了作为拼音ME的基础输入模式的拼音对中文映射。存在能够将ASCII查询映射到一个或多个候选项(例如,中文或非中文候选项)的其他映射。作为一个示例,IME可以用于英语的自动完成模式,以便基于部分词语输入来提供词语候选项的列表。例如f (“eng”) =[ “eng”、“English”、“engineering”、......]作为另一个示例,IME可以用于中文数字输入模式。例如f (“il23”)=[ “一百二十三”、“壹佰貳拾叁”、“一二三”]本公开的ME扩展框通过提供命令扩展模式(称为“扩展模式”)扩展了 ME的能力,该命令扩展模式使得ME能够支持任意的查询对候选项映射,以便满足不同用户的需求和/或喜好。ME扩展框实现了这一点而无需底层映射功能的硬编码。一般,ME扩展框包括脚本引擎、沙盒进程、脚本储存库、进程间通信(IPC)机制、公共应用程序接口(API)和控制台工具。脚本引擎托管(host)脚本语言解释器的运行时间以运行存储在脚本储存库中的一个或多个脚本,并返回结果。沙盒进程在安全环境中运行脚本引擎。IPC机制启用了在ME引擎和沙盒进程之间的通信。公共API使得第三方开发者能够以统一的方式编写IME扩展,而控制台工具使得开发者能够测试和验证所创建的扩展脚本。图3是示例ME扩展框200的框图。当ME在命令扩展模式中操作并且包括沙盒进程202和脚本储存库204时,实施ME扩展框200。沙盒进程202运行IPC服务器206和脚本引擎208。IME扩展框200与ME引擎122通信,以便基于用户输入提供基于脚本的查询对候选项的映射。具体来讲,用户能够与一个或多个应用220交互。每个应用220包括用户界面222,用于接收用户输入以及显示基于用户输入生成的一个或多个候选项。作为非限定性的示例,每个应用220可以包括文字处理应用、文本编辑应用、电子表单应用、电子邮件应用、展示应用、和/或网络浏览器。由頂E扩展框200提供的查询对候选项的映射可以包括一对一的映射,这可以通过简单的表格查找来实现。由ME扩展框200提供的映射还可以包括基于实施的脚本语言的更多的复杂的查询对候选项的映射。例如,基于脚本的扩展可以提供来将用户文本输入从水平布局转换为垂直布局,如下所示:I I 到 I 把 II I 下 I 您 II I 面 I 要 II I 的 I 转 II I 输 I 换 II I A I 的 II I 框 I 文 II I 中 I 字 II I I 输 II I I A I而且,IME扩展框200通过经过网络(例如,图1的网络116)连接到远程资源来启用对这样的资源的访问。例如,通过运行扩展脚本,能够连接到由在线服务提供商(例如,Google)提供的服务。以这种方式,扩展脚本功能可以访问服务提供商的服务,以实施更有用的输入特征。示例的输入特征可以包括查询Google地图有关详细的地址字符串(例如,提供为用户可选择的超链接)、指导IME用户到Google搜索、检索Google建议的结果、和/或使用Google翻译将用户输入转换到另一种语言和/或符号。如以下更详细讨论的,IME扩展框200还使得第三方开发者能够使用脚本编程来编写定制的查询对候选项的映射逻辑,与C++先编码然后编译相反。扩展脚本可以由第三方生成和测试。运行的扩展脚本可以被注册和公布,以便使ME用户可用。例如,通过ME,用户可以请求可用的列表(B卩,公布的扩展脚本)。ME可以通过网络连接到中央寄存器(例如,通过图1的网络116连接到中央寄存器230 ),例如,该中央寄存器存储所公布的扩展脚本。用户能够选择一个或多个扩展脚本,并且所选择的扩展脚本被下载到当在扩展模式中操作頂E时要被调用的用户的本地设备,并且安装在用户的本地设备上。扩展脚本可以存储在脚本储存库204上,该脚本储存库204可以提供在系统100的数字存储器中。脚本储存库使得脚本引擎208能够本地装载和运行相应的脚本。由用户安装的所有脚本被存储在脚本储存库204中。在一些实施方式中,一个或多个脚本托管(script host)网站(例如,由第三方开发者维持),每个网站用作远离用户设备的远程脚本储存库。用户设备可以访问一个或多个脚本托管网站,并且可以被提供可从特定网站得到的列表可获得脚本,并将所选择的脚本下载到脚本储存库204。当在扩展模式中操作时,IME扩展框200检索并运行所安装的命令扩展,并且将一个或多个结果提供给ME引擎,用于显示给用户。结果可以由语标字符、非语标字符、数字、数学表达式、超文本链接、图标、表情图标和/或符号组成。作为非限定性的示例,符号可以包括数学符号(例如,Σ、V々、η、~、古、=、<、>、等等)、黄道十二宫符号(例如,T、¥、H、S、设、等等)、或者任何其它类型的符号(例如,1、丨、t、F、£、&、$、
J、J3、等等)。扩展模式包括命令扩展模式(称为“1-ext模式”)、触发扩展模式、以及处理器(handler)扩展模式。在命令扩展模式中,当用户输入特定字符序列时,调用扩展功能。示例字符序列可以包括:i+命令+自变量,以下更详细地讨论。在触发扩展模式中,当输入序列时,或者由ME生成的候选项之一匹配预注册的触发字符串或模式(pattern)时,调用扩展功能。也就是,IME基于输入序列生成一个或多个候选项,并且回顾全部输入序列和一个或多个候选项两者,以确定与预注册的触发模式的匹配。在处理器扩展模式中,所有用户输入指向扩展功能,并且要由頂E显示的所有候选项通过扩展功能来生成。以这种模式,ME的行为通过调用的扩展脚本来控制。因此,用户明确地指令IME (例如,点击扩展注册的热键)以进入处理器扩展模式,并且将所有的用户输入路由到扩展脚本。第三方开发者可以通过提供多字符命令名称、输入功能名称、以及简短描述来注册用于在命令扩展模式中使用的扩展脚本。用于在触发扩展模式中使用,第三方开发者可以通过提供入口函数名称、简短描述、用于匹配用户输入的(Tn触发字符串/模式、用于匹配一个或多个me生成的候选项的(Tm触发字符串/模式来注册扩展脚本。用于在处理器扩展模式中使用,第三方开发者可以通过提供由扩展处理的输入模式的名称、入口函数名称、简短描述、以及使用户能够激活处理器扩展模式的定制热键或菜单项。这个信息被存储在中央储存库,用于由IME用户下载和安装。以下更详细地讨论在扩展模式(B卩,命令、触发、以及处理器扩展模式之一)中ME的操作。脚本引擎脚本引擎初始化脚本运行时间环境,将内置例程注册到运行时间中,从脚本储存库中装载脚本,并且在每次请求ME核心引擎时评估映射功能。多个脚本语言(例如,JavaScript、Lua或VBScript)可以被并行支持。例如,脚本引擎可以基于所装载的脚本的文件扩展(例如,.js、.1ua或.vb)来选择相应的脚本语言运行时间,并在运行时评估功能。在一些实施方式中,脚本语言可以被直接嵌入,而MS Windows ScriptEngine可以经由IActiveScript接口使用。在这样的实施方式中,不需要另外的安装程序大小(installer size),无需另外费劲就可以支持两种脚本语言(例如,JavaScript和VBScript),并且可以利用(leverage)预安装的ActiveX控制。在一些实施方式中,可以提供嵌入的Lua运行时间引擎。Lua运行时间存储器要求很小(例如,仅需要大约50KB额外安装程序存储器)。而且,Lua运行时间容易调整(trim)和/或定制,并且白列表(white-list)Lua特征和内建例程以避免安全性威胁很容易。在一些实施方式中,例如,可以实施嵌入的JavaScript引擎。JavaScript是网络开发者中流行的脚本语言,当运行JavaScript代码时比Windows Script Engine更快,并且能够被调整或定制。
在包括嵌入的Lua运行时间引擎的实施方式中,Lua运行时间引擎可以包括一个或多个以下模块:语法分析器(lexer)和解析器、虚拟机、存储器管理和垃圾收集、预编译的内存块(chunk)转储/解除转存(dump/undump)、Lua AP1、调试支持、以及构建例程(built-routine)。构建历程模块可以包括基础库、协同例程例程(co-routine routines)、模块/数据包例程、字符串库、数学库、操作系统库、表格库、输入/输出库、和/或调试库。这些模块可以被定制和整理,以最小化二进制大小,或者为了安全性考虑而白列表特征和内置例程。定制Lua运行时间的一个目的在于限制可以由第三方开发者使用的语言特征和内建例程。只利用ME相关的例程,像字符串例程、数学例程、表格例程、以及特定IME例程,第三方开发者不能直接影响用户的本地系统,即使在没有沙盒保护的情况下,这将在以下详细讨论。一般,IME扩展框是独立于语言的。从而,IME扩展框可以支持任何脚本语言,并且不限于这里所讨论的脚本语言。沙盒讲稈沙盒是程序在其中运行的限制性的环境,并且典型地得到库的帮助,使得如脚本引擎的进程在限制性的环境内运行。当运行沙盒时,脚本引擎具有受限的功能。在一些实施方式中,脚本引擎只能访问CPU周期和存储器。在这样的实施方式中,例如,沙盒的脚本引擎不能写入磁盘或显示其自己的窗口。通过限制脚本对沙盒进程的运行,第三方脚本可以逻辑上与应用分离。所允许的脚本引擎的功能通过明确的策略来管控。沙盒利用(leverage)由特定操作系统提供的安全性,以允许代码运行,该代码运行不能对计算机做出永久的改变或者存取秘密的信息。沙盒提供的体系结构和准确保证(exactassurance)取决于操作系统。在Windows中,例如,代码不能执行任何形式的I/O而无需进行系统调用。在大多数系统调用中,Windows执行安全性检查。沙盒保证安全性检查对于特定动作失败,如相应策略中定义的那样禁止服务器进程执行所述特定动作。在一些实施方式中,沙盒依赖于通过操作系统机制而提供的保护,可以包括但不限于,令牌(token)、对象和/或完整性级别。这些示例的机制在保护操作系统、其配置、以及用户数据方面非常有效。实际的限制由所述策略来配置,其是能够被调用以定义脚本引擎的限制和允许的编程接口。在一些实施方式中,控制所述限制的示例的机制包括主令牌、模仿(impersonate)令牌和任务令牌。一些实施方式还包括完整性级别(例如,包括WindowsVista操作系统的实施方式)。作为另一个示例,提供由Google提供的Chrome操作系统用于创建沙盒进程(例如,脚本引擎)。Chrome操作系统使用令牌限制、任务对象、以及API拦截来限制沙盒进程的特权,并且使用简单的共享存储器作为IPC,以便提供在沙盒进程和代理(broker)进程(例如,ME引擎)之间的通信。例如,ME引擎提供能够用来开始和初始化沙盒进程的自动开始的IME守护(daemon)进程。对于本公开的IME扩展框,可以实施更简单的沙盒(例如,使用令牌限制和任务对象而不需使用API拦截来限制脚本引擎的特权的沙盒)。而且,沙盒进程本身可以用作IPC中的服务器角色。如上所述,令牌限制、任务对象和API拦截可以被实施以限制沙盒进程的特权。关于令牌限制,进程(例如,脚本引擎)利用剥离掉(stripped) —些或全部其安全性标识符(SID)的令牌在沙盒中开始。无需任何SID,对安全对象的访问将被操作系统的安全管理器否定。关于任务对象,进程(例如,脚本引擎)可以在用来限制进程的能力的任务对象中运行。具体来讲,限制被置于任务对象上,以避免进程改变令牌、发送消息到任务范围之外、和/或创建新的桌面。API拦截可以用来控制沙盒进程对非安全资源的访问,并且拦截以及使低级别API调用失败。IME引擎的自动开始的守护进程可以用来开始和初始化沙盒进程。为了达成这一点,守护进程可以制作受限制的令牌、制作任务对象和限制其能力,利用受限制的令牌来产生(spawn)沙盒进程,将沙盒进程分配给任务对象,和/或将新进程的主线程(thread)的令牌改变为具有更多权限的模仿令牌。頂E引擎可以装载扩展脚本,并且可以利用具有更多权限的模仿令牌初始化脚本引擎和IPC服务器。IME和沙盒讲稈之间的通信在一些实施方式中,ME引擎和沙盒进程之间的通信可以如上面所讨论的使用IPC来建立。IPC提供了一组技术,用于在一个或多个进程中的多个线程之中交换数据。IPC方法技术可以包括远程程序调用(RPC)。RPC启用子例程或程序,以便在与调用程序应用的地址空间不同的另一个地址空间中运行。在一些实施方式中,ME引擎使用简单的共享存储器IPC与在沙盒中包装的(wrapped)脚本引擎进行通信。可以基于例如,处理消息发送和接收的操作系统事件来实施通知机制。为了达成这一点,IPC可以提供为更简单的IPC (例如,比以Chrome沙盒代理为目标的IPC更简单)。例如,也在沙盒中包装的IPC服务器不需要支持多个任务。当在ME引擎和沙盒进程之间传送信息时,IPC接口可以使用协议缓冲器作为数据格式。在一些实施方式中,IPC支持使用C++模板和协议缓冲器的任意的请求和响应类型。示例的IPC请求和响应可以包括,例如:
权利要求
1.一种计算机实施的方法,包括: 接收在输入法编辑器αΜΕ)的用户界面中的用户输入; 将用户输入提供给脚本引擎; 从电存储在脚本储存库的多个脚本中选择脚本; 使用脚本引擎通过脚本来处理用户输入,以生成一个或多个候选项;并且 将一个或多个候选项提供给IME引擎。
2.如权利要求1所述的计算机实施的方法,还包括 例示沙盒进程,该脚本弓I擎在沙盒进程内运行。
3.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,所述IME引擎使用进程间通信与脚本引擎进行通信。
4.如权利要求3所述的计算机实施的方法,还包括在沙盒进程内运行IPC服务器,该IPC服务器启用ME引擎和 脚本引擎之间的通信。
5.如权利要求2到4中的一个或多个所述的计算机实施的方法,其中,所述沙盒进程限制脚本引擎的功能。
6.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,所述用户输入包括识别脚本的输入序列和要由脚本处理的输入。
7.如前述权利要求中的一个或多个所述的计算机实施的方法,还包括: 将用户输入与一个或多个触发字符串进行比较; 确定用户输入与所述一个或多个触发字符串之一匹配;并且 基于所述一个或多个触发字符串之一选择脚本。
8.如权利要求1到5中的一个或多个所述的计算机实施的方法,还包括: 接收指示在扩展模式中的IME的操作的输入; 响应于接收输入,在扩展模式中操作ME ;并且 当在扩展模式中操作时,将所有用户输入提供给脚本引擎。
9.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,通过脚本处理用户输入包括: 建立与基于网络的服务的网络连接; 将至少一部分用户输入提供给基于网络的服务;并且 从基于网络的服务接收响应,该响应已经基于至少一部分用户输入而生成,并且所述一个或多个候选项包括该响应。
10.如权利要求9所述的计算机实施的方法,其中,所述基于网络的服务包括地图服务、搜索服务、以及翻译服务中的至少一个。
11.如前述权利要求中的一个或多个所述的计算机实施的方法,还包括: 生成包括第一组候选项的第一候选项列表; 生成包括第二组候选项的第二候选项列表,第二组候选项包括使用脚本引擎生成的一个或多个候选项; 组合至少一部分第一组候选项和至少一部分第二组候选项,以提供第三候选项列表;并且 在用户设备上显示第三候选项列表。
12.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,所述IME引擎处理一个或多个候选项用于在用户界面上显示。
13.如前述权利要求中的一个或多个所述的计算机实施的方法,还包括: 接收指示选择一个或多个候选项之一的第二用户输入;并且 将所述一个或多个候选项之一输入到在用户设备上运行的应用。
14.如权利要求13所述的计算机实施的方法,其中,所述应用包括文字处理应用、文本编辑应用、电子表单应用、电子邮件应用、展示应用、以及网络浏览器之一。
15.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,电存储在脚本储存库中的每个脚本包括从多个核准的例程中选择的一个或多个例程。
16.如前述权利要求中的一个或多个所述的计算机实施的方法,还包括识别脚本的脚本语言,其中,脚本引擎例示与用于通过脚本处理用户输入的脚本语言相对应的运行时间。
17.如前述权利要求中的一个或多个所述的计算机实施的方法,其中,所述用户输入以第一语目提供。
18.如权利要求17 所述的计算机实施的方法,其中,所述一个或多个候选项以第一语言提供。
19.如权利要求17所述的计算机实施的方法,其中,所述一个或多个候选项以第二语言提供。
20.如权利要求17所述的计算机实施的方法,其中,所述一个或多个候选项以第一语言和第二语言的组合提供。
21.如权利要求17到20中的任何一个所述的计算机实施的方法,其中,所述一个或多个候选项包括一个或多个符号。
22.如前述权利要求中的一个或多个所述的计算机实施的方法,还包括: 接收输入; 响应于输入,生成电存储在中央寄存器的可用脚本的列表,可用脚本的列表包括脚本; 接收指示脚本选择的第二输入; 响应于第二输入,从中央寄存器中检索脚本;并且 将脚本存储在脚本储存库中。
23.—种计算机实施的方法,包括: 接收在输入法编辑器(ME)的用户界面中的用户输入; 将用户输入提供给脚本引擎; 从电存储在脚本储存库中的多个脚本中选择脚本; 基于脚本中提供的指令,建立与基于网络的服务的网络连接; 将至少一部分用户输入提供给基于网络的服务; 从基于网络的服务接收响应;并且 将响应提供给ME引擎,以便将该响应显示给用户。
24.如权利要求23所述的计算机实施的方法,其中,所述基于网络的服务包括地图服务、搜索服务、以及翻译服务中的至少一个。
25.如权利要求24所述的计算机实施的方法,其中,所述至少一部分用户输入被提供给地图服务,由地图服务生成响应,并且该响应包括用户可选择的超链接。
26.如权利要求24所述的计算机实施的方法,其中,所述至少一部分用户输入被提供给搜索服务作为搜索词,由搜索服务生成响应,并且该响应包括由搜索服务基于搜索词生成的一个或多个搜索结果。
27.如权利要求24所述的计算机实施的方法,其中,所述至少一部分用户输入被提供给翻译服务,并且以第一语言提供,由翻译服务生成响应,并且以第二语言提供。
28.—种计算机实施的方法,包括: 接收脚本文件,该脚本文件可由输入法编辑器(ME)系统运行,以便基于对ME系统的用户输入生成一个或多个候选项; 将脚本文件电存储在中央寄存器,该中央寄存器包括多个脚本;并且 公布用于下载到用户设备并 且安装在用户设备上的多个脚本,用户设备包括頂E系统。
29.如权利要求28所述的计算机实施的方法,其中,所述多个脚本中的每个脚本包括从多个核准的例程中选择的一个或多个例程。
30.如权利要求28或29所述的计算机实施的方法,其中,所述多个脚本中的脚本以JavaScript、Lua 以及 VBScript 之一编写。
31.如权利要求28到30中的一个或多个所述的计算机实施的方法,其中,所述多个脚本中的至少一个脚本包括关联元数据,关联元数据提供用于显示一个或多个候选项的指令。
32.如权利要求31所述的计算机实施的方法,其中,所述指令包括提供用于显示在候选项列表中的一个或多个候选项的号码序列。
33.如权利要求31所述的计算机实施的方法,其中,所述指令包括提供用于显示在候选项列表中的一个或多个候选项的字母序列。
34.—种系统,包括: 显示器; 计算机可读的存储介质,包括用于电存储一个或多个脚本的脚本储存库;以及 一个或多个处理器,运行输入法编辑器(ME),接收对ME的用户输入,将用户输入提供给脚本引擎,从脚本储存库中选择脚本,使用脚本引擎通过脚本处理用户输入以生成一个或多个候选项,并且提供一个或多个候选项以显示在显示器上。
35.如权利要求34所述的系统,其中,所述一个或多个处理器例示沙盒进程,脚本引擎在沙盒进程内运行。
36.如权利要求34或35所述的系统,其中,所述ME引擎使用进程间通信与脚本引擎进行通信。
37.如权利要求36所述的系统,其中,所述一个或多个处理器在沙盒进程内运行IPC服务器,IPC服务器启用ME引擎和脚本引擎之间的通信。
38.如权利要求35到37中的一个或多个所述的系统,其中,所述沙盒进程限制脚本引擎的功能。
39.如权利要求34到38中的一个或多个所述的系统,其中,所述用户输入包括识别脚本的输入序列和要由脚本处理的输入。
40.如权利要求34到39中的一个或多个所述的系统,其中,所述一个或多个处理器将用户输入与一个或多个触发字符串进行比较,确定用户输入与所述一个或多个触发字符串之一匹配,并且基于所述一个或多个触发字符串之一选择脚本。
41.如权利要求34到38中的一个或多个所述的系统,其中,所述一个或多个处理器接收指示在扩展模式中的ME的操作的输入,响应于接收输入在扩展模式中操作ME,并且当在扩展模式中操作时将所有用户输入提供给脚本引擎。
42.如权利要求34到41中的任何一个所述的系统,其中,所述一个或多个处理器通过以下步骤通过脚本处理用户输入: 建立与基于网络的服务的网络连接; 将至少一部分用户输入提供给基于网络的服务;并且 从基于网络的服务接收响应,该响应已经基于所述至少一部分用户输入而生成,并且所述一个或多个候选项包 括该响应。
43.如权利要求42所述的系统,其中,所述基于网络的服务包括地图服务、搜索服务、以及翻译服务中的至少一个。
44.如权利要求34到43中的一个或多个所述的系统,其中,所述一个或多个处理器生成包括第一组候选项的第一候选项列表,生成包括第二组候选项的第二候选项列表,第二组候选项包括使用脚本引擎生成的一个或多个候选项,组合至少一部分第一组候选项和至少一部分第二组候选项,以提供第三候选项列表,并且在用户设备上显示第三候选项列表。
45.如权利要求34到44中的一个或多个所述的系统,其中,所述ME引擎处理一个或多个候选项用于在用户界面上显示。
46.如权利要求34到45中的一个或多个所述的系统,其中,所述一个或多个处理器接收指示选择一个或多个候选项之一的第二用户输入,并且将所述一个或多个候选项之一输入到在用户设备上运行的应用。
47.如权利要求46所述的系统,其中,所述应用包括文字处理应用、文本编辑应用、电子表单应用、电子邮件应用、展示应用、以及网络浏览器之
48.如权利要求34到47中的一个或多个所述的系统,其中,电存储在脚本储存库中的每个脚本包括从多个核准的例程中选择的一个或多个例程。
49.如权利要求34到48中的一个或多个所述的系统,其中,所述一个或多个处理器识别脚本的脚本语言,其中,所述脚本引擎例示与用于通过脚本处理用户输入的脚本语言相对应的运行时间。
50.如权利要求34到49中的一个或多个所述的系统,其中,所述用户输入以第一语言提供。
51.如权利要求50所述的系统,其中,所述一个或多个候选项以第一语言提供。
52.如权利要求50所述的系统,其中,所述一个或多个候选项以第二语言提供。
53.如权利要求50所述的系统,其中,所述一个或多个候选项以第一语言和第二语言的组合提供。
54.如权利要求50到53中的一个或多个所述的系统,其中,所述一个或多个候选项包括一个或多个符号。
55.如权利要求34到54中的一个或多个所述的系统,其中,所述一个或多个处理器接收输入,响应于输入生成电存储在中央寄存器中的可用脚本的列表,可用脚本的列表包括脚本,接收指示脚本选择的第二输入,响应于第二输入从中央寄存器中检索脚本,并且将脚本存储在脚本 储存库中。
全文摘要
本公开的实施方式提供用于扩展(IME)功能的输入法编辑器(IME)扩展框。在一些实施方式中,接收在IME的用户界面中的用户输入,并提供给脚本引擎。从电存储在脚本储存库中的多个脚本中选择脚本。使用脚本引擎通过脚本来处理用户输入,以生成一个或多个候选项,并且所述一个或多个候选项被提供给(IME)引擎。在一些实施方式中,接收脚本文件,该脚本文件可被(IME)系统运行,以基于对(IME)系统的用户输入生成一个或多个候选项。脚本文件被电存储在中央寄存器,中央寄存器包括多个脚本,并且多个脚本被公布用于下载到用户设备并安装在用户设备上,该用户设备包括(IME)系统。
文档编号G06F3/023GK103080873SQ201080067382
公开日2013年5月1日 申请日期2010年4月12日 优先权日2010年4月12日
发明者王咏刚, 区良裔, 张荫芾 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1