TSF(Text Service Framework)简介
2015-10-15 17:41
344 查看
------------------------------------------------------------------
大家好,我是Mike,微软拼音的开发工程师。这里简单介绍下Windows里一种不同于传统IMM的强大可扩展的输入框架。
------------------------------------------------------------------
几个关于TSF的术语
TIP (Text Input Processor), a Text service in TSF
Cicero,TSF的开发代号,所以微软内部通常称呼TSF框架为Cicero
CUAS (Cicero Unaware Application Support),为所有应用程序和控件提供基本的TIP支持
AIMM(Active Input Method Manager),和CUAS一起工作
输入法框架
先讲一点点历史,Windows提供了两套输入法框架: Windows XP及之前,是IMM (Input Method Manager),基于纯函数API的。目前市面上非微软中文输入法基本上都是只实现IMM框架。
Windows XP开始及以后,Windows提供新的输入框架TSF,是基于COM的。实际上,到了Windows Vista,Windows 7,所有的应用程序和各种输入控件都是优先使用TSF的实现。但之所以Windows Vista,Windows 7用户还能使用各种基于IMM的输入法,是因为Windows提供了一个组件来将所有TSF的请求转为IMM的API。
按照微软的说法,TSF会最终取代IMM框架。而微软拼音基于兼容,功能和性能方面的原因,将这两个框架都实现了。
下面主要介绍TSF框架的输入法及与应用程序的交互。
TSF框架
Cicero它的目标是提供一套简单通用并易扩展的框架,用于高级文本输入和自然语言处理。一个TSF text service能够提供多语言支持和处理:键盘输入(我们通常讲的输入法),手写识别,语言识别等。
TSF的构架图
从上面构架图可以看到,TSF提供一个位于应用和输入法实现的间接层(一个Text service/TIP可以是一个输入法,或语音识别)。所以,TSF的优点在于,它是一个设备无关,语言中立,可扩展的系统;同时给用户提供一致的输入体验。任何TSF-enabled应用程序都能从任何text service接受文字输入,而不用考虑Text source的具体细节。同时,Text service也不用考虑各种不同应用的差别。譬如下面的应用场景:
上图可以看出, 应用程序收到”The boy ate the red apple”这段文字, 但是它不知道这些字是哪个TIP输入的,有可能是”Keyboard TIP”, 或是”Speech TIP”等。
与应用程序的交互
那么,这个框架是如何工作的?看看下面的组件交互图
在windows XP下,默认是CUAS关闭的,其交互如下
从上图可见,所有“edit control”(包括Notepad)都是直接调用IMM的API,最后调用IMM输入法,而4.1版本后的“RichEdit control”(包括WordPad等)是直接用TSF实现的输入法)
在Windows XP下如果打开CUAS,或者在Windows Vista和Windows 7下,则如下交互:
可以看到,IMM32和CUAS中多了一条交互,这意味着如果一个输入法实现了TIP,在Windows Vista和Windows 7,或CUAS打开的Windows XP下,应用程序的所有输入由TIP实现完成。
总结
本文简单介绍了输入法框架,TSF框架的构架和优点,以及它如何与应用程序和TIP实现交互。由于这方面的官方资料极为稀少,希望此文对大家有所帮助。
[附注]
在Windows XP如何打开CUAS:勾上下图红框中的复选框。
大家好,我是Mike,微软拼音的开发工程师。这里简单介绍下Windows里一种不同于传统IMM的强大可扩展的输入框架。
------------------------------------------------------------------
几个关于TSF的术语
TIP (Text Input Processor), a Text service in TSF
Cicero,TSF的开发代号,所以微软内部通常称呼TSF框架为Cicero
CUAS (Cicero Unaware Application Support),为所有应用程序和控件提供基本的TIP支持
AIMM(Active Input Method Manager),和CUAS一起工作
输入法框架
先讲一点点历史,Windows提供了两套输入法框架: Windows XP及之前,是IMM (Input Method Manager),基于纯函数API的。目前市面上非微软中文输入法基本上都是只实现IMM框架。
Windows XP开始及以后,Windows提供新的输入框架TSF,是基于COM的。实际上,到了Windows Vista,Windows 7,所有的应用程序和各种输入控件都是优先使用TSF的实现。但之所以Windows Vista,Windows 7用户还能使用各种基于IMM的输入法,是因为Windows提供了一个组件来将所有TSF的请求转为IMM的API。
按照微软的说法,TSF会最终取代IMM框架。而微软拼音基于兼容,功能和性能方面的原因,将这两个框架都实现了。
下面主要介绍TSF框架的输入法及与应用程序的交互。
TSF框架
Cicero它的目标是提供一套简单通用并易扩展的框架,用于高级文本输入和自然语言处理。一个TSF text service能够提供多语言支持和处理:键盘输入(我们通常讲的输入法),手写识别,语言识别等。
TSF的构架图
从上面构架图可以看到,TSF提供一个位于应用和输入法实现的间接层(一个Text service/TIP可以是一个输入法,或语音识别)。所以,TSF的优点在于,它是一个设备无关,语言中立,可扩展的系统;同时给用户提供一致的输入体验。任何TSF-enabled应用程序都能从任何text service接受文字输入,而不用考虑Text source的具体细节。同时,Text service也不用考虑各种不同应用的差别。譬如下面的应用场景:
上图可以看出, 应用程序收到”The boy ate the red apple”这段文字, 但是它不知道这些字是哪个TIP输入的,有可能是”Keyboard TIP”, 或是”Speech TIP”等。
与应用程序的交互
那么,这个框架是如何工作的?看看下面的组件交互图
在windows XP下,默认是CUAS关闭的,其交互如下
从上图可见,所有“edit control”(包括Notepad)都是直接调用IMM的API,最后调用IMM输入法,而4.1版本后的“RichEdit control”(包括WordPad等)是直接用TSF实现的输入法)
在Windows XP下如果打开CUAS,或者在Windows Vista和Windows 7下,则如下交互:
可以看到,IMM32和CUAS中多了一条交互,这意味着如果一个输入法实现了TIP,在Windows Vista和Windows 7,或CUAS打开的Windows XP下,应用程序的所有输入由TIP实现完成。
总结
本文简单介绍了输入法框架,TSF框架的构架和优点,以及它如何与应用程序和TIP实现交互。由于这方面的官方资料极为稀少,希望此文对大家有所帮助。
[附注]
在Windows XP如何打开CUAS:勾上下图红框中的复选框。
相关文章推荐
- 算法复习之:最大子串和问题
- Linux的join命令
- 8.Contains Duplicate
- C++自定义函数
- C#获取变量名的扩展方法
- Android 启动白屏或者黑屏闪现解决
- C#之 HashSet(临时笔记,未参考资料,请慎重)
- DOM对象和jQuery对象之间的相互转换
- IAudioCaptureClient interface
- 基于directshow技术实现的录音程序
- Amoeba for mysql安装配置
- MMS Host is unreachable
- Android笔记(三十七) 如何停止AsyncTask?
- CentOS 7下编译FreeSWITCH 1.6
- Spring+SpringMVC+mybatis+easyui整合实例-----spring mvc整合及mybatis事务部分
- 实战分析一个性能问题
- Fortify SCA快速入门以及常见问题解决方法
- (八)Spark源码理解之DAGScheduler---part3
- 单链表实现栈
- 常用链接