从这一回开始我们开始介绍Sunpinyin中ime部分的代码。
要构建ime部分的代码,可以执行下面的操作:
$ ./autogen.sh --prefix=/usr --enable-debug --enable-gtkstandalone
$ make
使用--enable-gtkstandalone选项,会生成一个不依赖于输入法框架的演示程序,位于wrapper/gtk_standalone目录中。你可以通过这个演示程序来了解或调试Sunpinyin输入法的代码。我们后面的系列,也会从这个演示程序入手。
同时,在configure.ac中,--enable-cle是缺省打开的(你可以通过--disable-cle来关闭这个选项),因此在执行make时,还同时会为iiimf-cle(Chinese Language Engine)构建一个输入法模块,执行make install,会把它安装到/usr/lib/iiim/le/cle的目录下。如果要在Mac OS上编译,需要export LDFLAGS=-liconv。
Sunpinyin支持两种输入风格,“经典风格”和“及时转换风格”。“及时转换风格”和微软拼音的风格类似,用户在输入拼音时,只在preedit区域中显示当前的最佳句子,可以通过左右键,对其中任意不满意的部分进行编辑(即用户选择,user selection)。

“经典风格”和紫光拼音(以及后来的搜狗拼音、Google拼音)的风格类似。用户在输入拼音时,preedit区域中显示的是输入的拼音串(或用户选择),候选区中显示当前的最佳句子,以及拼音串开始部分的拼音可能得到的词和字。但这种风格下,第一次用户选择只能从拼音串的起始部分开始。


Sunpinyin采用了view/window-handler的结构。上述的两种风格,在代码中分别对应于两个视图(view)类:CIMIModernView和CIMIClassicView。所谓window-handler,就是view的一个callback类。ime/wrapper目录下有三个window-handler的实现,cle, iiim_le和gtk_standalone。要将Sunpinyin移植到其它输入法框架或平台,主要的工作就是为其编写一个wrapper。我们非常希望SCIM社区的开发者、Mac OS上的输入法开发者,会有兴趣将Sunpinyin移植到他们擅长的平台上。
下一回,我们会介绍ime部分的概念模型(concept model)。