在炎黄中文平台上,用户可以自行添加输入法。炎黄中文平台的输入部分的程序设计使用了一个主导模块作为和平台的接口,它和各输入法模块之间采用统一的、规范的界面。各个输入法可看作是一个个过滤,输入ASCII码,返回得到的汉字。
输入法的主导模块以动态连接库(libimpi.a)的形式存在,和各输入法模块连接成单独的可执行文件。对于每一个具体的输入法,只需要按照一定的数据结构就可以链接成为新的可执行文件,并且添加到炎黄中文平台上。这些数据结构包括外部变量和外部函数。
1、外部变量
数组extcode[]:字符串类型,表示输入的外码串;
数组candstr[]:字符串类型,表示重码的待选串;
数组result[]:字符串类型,表示得到的结果串;
数组imname[]:字符串类型,表示输入法的名称;
数组imdscrpt[]:字符串类型,表示对输入法的描述。
变量maxeclen:整型,表示外码的最大长度;
变量eclen:整型,表示外码的长度。
这些变量的定义如下所示:
extern int maxeclen; /* The maximum length of external code */
extern int eclen; /* The length of external code */
extern char extcode[]; /* External code */
extern char candstr[]; /* Candinate string */
extern char result[]; /* Result string */
2、外部函数
外部函数一共有四个,它们分别是IMInit()、IMCleanup()、IMSelect()和IMFilter()。这四个函数的定义分别如下所示:
int IMInit();
int IMClearup();
int IMSelect(int select);
int IMFilter(int ch);
其中IMInit()函数用来完成输入法的初始化工作;IMClearup()函数用来对输入法被释放时的情况进行处理; IMSelect()函数用来处理当前输入法被选中的情况;IMFilter()是输入法的核心函数,用来对接收的字符串进行过滤,得到正确的输入结果。