miniGUi输入法源码解析二------初始化部分
其他
2018-09-12 14:53:17
阅读次数: 0
第一个重要结构体:
typedef struct
{
char magic_number[sizeof (MAGIC_NUMBER)]; /* magic number */ //表示表头内容
char ename[CIN_ENAME_LENGTH]; /* ascii name */ //输入法的英文名称 pinyin
char cname[CIN_CNAME_LENGTH]; /* prompt */ //为输入法的中文名称的全拼
char selkey[SELECT_KEY_LENGTH]; /* select keys */ //存储用户选择汉子时输入的有效选择字符 //1234567890
char last_full; //表示半全角状态
int TotalKey; /* number of keys needed */ ///
int MaxPress; /* Max len of keystroke */ //表示一个汉子最多可以输入10个拼音序列
int MaxDupSel; //一页最多可以让用户选择的汉子个数
int TotalChar; //表示本输入法支持汉子和数组总数目
unsigned char KeyMap[128]; /* Map 128 chars to 64(6 bit) key index */
unsigned char KeyName[64]; /* Map 64 key to 128 chars */
unsigned short KeyIndex[64]; /* 64 key first index of TotalChar */
int PhraseNum; /* Total Phrase Number */ //表示本输入法支持的词组的数目
FILE *PhraseFile; /* *.tab.phr Phrase File */
FILE *AssocFile; /* *.tab.lx LianXiang File */
ITEM *item; /* item */ //每一个item 对应一个词组或者汉子 共有TotalChar项目
} hz_input_table;
/*
。item[TotalChar]数组是所有合法的字母排列对
应的所有汉字或词组的集合。集合中的所有元素首先按照首
字母的不同分为 26 个集合,并且按照首字母 ASCII 码从小
到大的顺序从前到后排列这 26 个集合。在这 26 个集合中再
按照第 2 个字母的不同又分为 26 个集合,并且按照第 2 个字
母 ASCII 码从小到大的顺序从前到后排列,依此类推。如果
一个合法的字母排列对应多个汉字或词组,就按照使用频率
来排列,常用的排在前面,不常用的排在后面。ITEM 结构
中的 frequency 就是汉字或词组的使用频率
*/
typedef struct
{
unsigned long key1; /* sizeof(ITEM=12) */
unsigned long key2;
unsigned short ch;
unsigned short frequency;
} ITEM;
转载自blog.csdn.net/qq_1335857320/article/details/82215235