研究iiimf和scim中,很想整合它们

发表于:2007-05-26来源:作者:点击数: 标签:
Internet/Intranet Input Framework(IIIMF) 是sun公司提出的一个输入法框架,旨在提出一个国际化的输入法方案。 该框架高度细化了输入法功能(和sun的很多东西一样,复杂得看起来很美),甚至提出了分布式输入法 服务器 的概念。该框架 将输入法分为iii msf
Internet/Intranet Input Framework(IIIMF)是sun公司提出的一个输入法框架,旨在提出一个国际化的输入法方案。
该框架高度细化了输入法功能(和sun的很多东西一样,复杂得看起来很美),甚至提出了分布式输入法服务器的概念。该框架
将输入法分为iiimsf(iiim ServerFramework),iiimcf(iiim ClientFramework)和iiimp(iiim Protocal)几个部分。每个部分是由插件
来构成的,没有插件,该框架将毫无用处。另外输入法引擎(iiimf-le)属于iiimsf的一个支持插件的部件。
本文主要是我的一些构想性的东西(仅限于讨论linux平台),没有详细的技术资料,IIIMF sdk的whitepaper能带给你更多的东西。 

  • "你在用什么输入法?别告诉我你在用那个垃圾iiimf"
我现在大部分时间生活在Fedora Core系统中,暑假刚升级到了FC4。FC是各发行版中唯一一个不遗余力的推广iiimf框架的,原因很简单,Fedora要做的是i18n(internationalization),而不是l10n(localization)——以前的rh系列会对zh_CN locale提供GBK编码和chinput这样的专门的XIM输入
法,但现在Fedora力推的是UTF-8编码和iiimf国际化输入法框架——但是,几乎所有国内的fc用户都认为fc自带的输入法几乎是无法使用的,于是
就都说iiimf是垃圾。但事实上,要澄清一点,这绝不是iiimf的问题,是现在没有一个好用的中文输入法插件,现在zh_CN用的是iiimf-le-chinput插件
,从名字就可以看出这个是chinput从XIM框架移植到iiimf框架的,改插件的功能是很弱的,和全拼输入法有得一拼。迫于无奈,我现在用的是scim的
拼音输入法。

  • 我为什么有将scim移植到iiimf框架的想法
首先,我宁愿选择i18n而不是l10n。GB*系列的编码给现在linux在国内发展带来的困境,就是l10n的后果。
再者,iiimf的分层机制可以轻易完成下面的图景:
IIIMSF                                  IIIMP                                           IIIMCF
____________________                                                ____________iiimgcf,gtk程序的clientframework(已存在)
|                                      |                                                |
|iiimf-le-scim(构想中)  |------------------------------------____________iiimqcf,kde/qt程序的cf(已存在)
|                                      |                                                |
|IIIMSF核心 (已存在 ) |                                                |____________iiimxcf,传统X程序的cf(已存在)
|___________________|                                                |
                                                                                        |____________iiimjcf,java程序的cf(已存在)
                                                                                        |
                                                                                        |____________iiimecf,emacs的cf插件(已存在)
                                                                                        |
                                                                                        |____________iiim-getty-cf,用于我构想中的i18n-mingetty(构想中)

其中大部分已经是构建良好的,但是现有的中文输入引擎iiimf-le-chinput实在是不能够使用。
这样利用IIIMP,你所作的工作就是专注于输入法的设计,而忽略客户到底是java程序还是gtk程序还是X程序——这些程序都有自己的一套IM(Input Method)api。

  • “你所说的i18n-mingetty是什么东西”
现在的虚拟终端的汉化方式常见的就是clearcase/" target="_blank" >cce和zhcon,而我更倾向于将内核的终端改成支持多字节字符(现有的内核console不能处理这个)——这不是空想,TurboLinux
其实在这方面做了很多工作,但技术内容似乎不明朗。想象如果内核终端支持多字节编码,那么你的dmesg可能会出现什么呢:
$dmesg8139too Fast Ethernet driver 0.9.27
.……
检测IDE 接口 ide0...
hda: IC25N040ATMR04-0, ATA DISK drive
ide0在0x1f0-0x1f7,0x3f6占据中断号14
检测IDE 接口 ide1...
hdc: 东芝 DVD-ROM SD-C2612, ATAPI CD/DVD-ROM drive
……
好了,仅仅是显示中文问题,输入呢?现有的mingetty不支持这一点。cce/zhcon都是外挂式的终端,不是最佳解决办法。
我的想法就是设计一个可以捕获ctrl+space之类按键的mingetty,然后再设计一个iiim-getty-cf,这样,就可以和IIIMSF的输入引擎互通了

  • “我觉得你有病”
请将你的想法说出来,谢谢。

原文转自:http://www.ltesting.net