miniGUi输入法源码解析二------初始化部分

第一个重要结构体:

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;        

 

你可能感兴趣的:(项目总结,项目实战)