自己动手为WINDOWS98增加五笔字型输入法
青岛万通
周文英
---- 五笔字型是目前较为流行的汉字输入方法,而WINDOWS98中文版却没有提供这一输入法. 我们可以利用WINDOWS98中文版的输入法生成器IMEGEN.EXE, 自己动手生成五笔字型输入法。下面详细介绍这一方法。
---- 一.首先要获取符合WIN98中文版输入法生成器IMEGEN.EXE
编码格式的文本文件WBX.TXT
---- 编码格式为:中文字符串+编码字符串.
---- 这里介绍两种获取五笔字型编码的方法:
---- 方法一:利用UCDOS7.0中的WB.IMD文件生成WBX.TXT .
---- 用UCDOS7.0的万能汉字输入法编码管理器 IMDMNG 将UCDOS7.0 的输入法编码文件转换为编码源字典文件,在UCDOS7.0目录下的 DRV 子目录下有一个五笔字型编码文件WB.IMD,利用IMDMNG 就可将WB.IMD转换为编码文件WB.TXT, 其执行命令如下(可先在C盘建立WBX子目录):
---- IMDMNG C:\UCDOS\DRV\WB.IMD C:\WBX\WB.TXT
---- 用文本编辑器打开WB.TXT, 可以看到文件开始处有一些IMDMNG 管理器所需要的 信息:名称 = 【五笔】 //名称不能包含空格, 最长8个字符
功能键号 = 5 //1 = ALT-F1
//2 = ALT-F2
//...
//0 = ALT-F10
码元表 = abcdefghijklmnopqrstuvwxy
//可以是键盘上所有可见字符(-,=,~,{,}除外),最//多64个字元, ~表示包括两字符之间的所有字符万能键 = z //编码查询键最大码长 = 4 //不能超过12是否自动选择输入 = Y
//Y = 输入了最长编码且无重码时, 自动选择输入
//N = 不自动选择输入, 必须手工选择输入
是否执行模糊搜索 = N
//Y = 若当前已输入编码没有匹配字词, 则继续搜
// 索前几位编码匹配的字词
//N = 不使用模糊搜索
是否使用自定义词组 = Y //Y = 是
//N = 否
自定义词组编码方案 = 1
//0 = 双字词组编码为两字编码之和, 其它取每字
// 首编码, 若词组超过四个汉字, 则取1,2,3,
// 末汉字的首位编码
//1 = 双字词取各编码的前两位, 三字词取每字首
// 码加末字第二码,多字词组取1,2,3末汉字的
// 首位编码
数字键是否分离 = Y
//该参数仅对数字编码的输入法有效
//Y = 主键盘的数字键仅用于选择重码
// 小键盘的数字键仅用于输入数字编码
//N = 主键盘和小键盘的数字键意义相同
---- 说明: 以上为输入法规则的定义部分, 每行等号前的内容请不要做任何修改, 等号后的 实际取值与注释部分必须至少用一个空格分开。以下内容为输入法的正文内容, 编写格式为, 每行前十二列书写编写, 不足12个以空格补齐, 其余部分为相应编码的字词, 每条字词用空格分开, 每行长度不能超过200个字符,若超过时可分两 行编写。
---- 首先,要将这些无用的信息删除。另外,这里WB.TXT与中文WINDOWS编码格式 是不一样的,WB.TXT中的编码是编码字符串+空格+中文字符串, 重码在同一行以空 格隔开,如:
aaaa工 恭恭敬敬
这些重码格式必须分成两行表示,即
工aaaa
恭恭敬敬aaaa
---- 若手工转换是十分麻烦的事情,可以使用以下C程序CHANGE.C转换上述格式, 生成文件WBX.TXT。 其源程序清单如下:
#include < stdio.h >
int main(void)
{FILE *fin,*fout;
char s1[256],s2[80];
unsigned char *p1,*p2,*p;
fin=fopen("c:\\wbx\\wb.txt","r");
if (fin==NULL)
{printf("\nCan not open WB.TXT! \n");
exit(1);
}
fout=fopen("c:\\wbx\\wbx.txt","w");
if (fout==NULL)
{ printf("\nCan not open WBX.TXT! \n");
exit(2);
}
while(fgets(s1,256,fin)!=NULL)
{ p1=s1+5;
while(*p1==' ')
{while(*p1==' ')
p1++;
{
p2=s2;
while(*p1>' ')
*p2++=*p1++;
p=s1;
while(*p>' ')
*p2++=*p++;
*p2++='\n';
*p2='\0';
fputs(s2,fout);
}
}
}
fclose(fin);fclose(fout);
return 0;
}
---- 方法二, 利用RICHWIN97中的WBX.TBL文件生成WBX.TXT
---- RICHWIN97系统中有一个五笔字型编码文件WBX.TBL,利用该文件可 以很容易生成基于WINDOWS98中文版所要求格式的五笔字型编码文件WBX.TXT. WBX.TBL中的格式: 编码字符串+空格+中文字符串在WBX.TXT中只要改为: 中文字符串+编码字符串格式 即可.下面C程序CHANGE1.C可以实现这种格式转换, 生成WBX1.TXT。源程序如下:
#include < stdio.h >
#include < ctype.h >
int main(void)
{ char str1[5],str2[100];
FILE *fp1,*fp2;
fp1=fopen("C:\\rchwin97\\WBX.TBL","r");
if(fp1==NULL)
{ printf("\nCan not open the file WBX.TBL! \n");
exit(1);
}
fp2=fopen("C:\\wbx\\WBX1.TXT","w");
if(fp2==NULL)
{printf("\nCannot open the file WBX1.TXT! \n");
exit(2);
}
fscanf(fp1,"%s",str1);
for(; ;)
{fscanf(fp1,"%s",str2);
if((str2[0]< 'z')&&(str2[0]>='a'))
{if ((str2[0]=='y')&&(str2[1]=='y')
&&(str2[2]='y')&&(str2[3]='y'))
{fscanf(fp1,"%s",str1);
fprintf(fp2,"%s%s\n",str1,str2);
break;
}
strcpy(str1,str2);
continue;
}
fprintf(fp2,"%s%s\n",str2,str1);
}
{fclose(fp1);
fclose(fp2);
}
return;
}
---- 上面第一种方法产生的文件WBX.TXT大于第二种方法产生的文件WBX1.TXT, 也就是 说,用第一种方法获取的文件WBX.TXT五笔字型编码多一些。
---- 二. 生成WBX.TXT后,我们利用文本编辑器对WBX.TXT进行编辑,在文件开始处加入windows98编码文件的格式描述信息:
[Description]
Name=五笔
MaxCodes=4
MaxElement=2
UsedCodes=abcdefghijklmnopqrstuvwxy
WildChar=z
NumRules=3
[Rule]
ce2=p11+p12+p21+p22
ce3=p11+p21+p22+p31
ca4=p11+p21+p31+p41
[Text]
---- 保存此文本文件WBX.TXT。 WIN98中文版的输入法生成器”IMEGEN.EXE”所需要的五笔字型码表源文件就准备好了。
---- 三. 利用WINDOWS98中文版的输入法生成器”IMEGEN.EXE”生成五笔字型输入法。具体步骤如下:
---- 1) 单击”开始”按钮,指向”程序”,”附件”,然后单击”输入法生成器”.
---- 2) 单击创建输入**能页.
---- 3) 单击”浏览”按钮,选择WBX.TXT所在目录,将码表源文件WBX.TXT打开.
---- 4) 这时可以修改WBX.TXT中的有关描述信息,修改完毕后,按“保存”按钮存储WBX.TXT文件。
---- 5) 单击”转换”按钮,生成一个名为WBX.MB的词库文件,在转换结束时,屏幕上显示构词条数,提示转换结束,按“确定”按钮结束转换.
---- 注意:转换从UCDOS7.0获取的文件WBX.TXT至WBX.MB时,若提示有非法字符“*”,可使用文本编辑器用空格符“ ”替换“*”后, 再次单击”转换”按钮, 重新转换。
---- 6) 单击”创建”按钮,添入版本号(默认为4.0)和机构名称(默认为微软公司,可以输上自己的大名),并可在此进行设置(您也可以使用自己定义的图标和位图文件,帮助文件).
---- 7) 单击”确定”按钮,即可生成WBX.IME的五笔字型输入法文件.
---- 8) 生成五笔输入法后,系统将提示是否安装,选择安装后,系统将自动安装五笔字型输入法.
---- 此后,您可以在WIN98中使用五笔输入方法了。保存五笔编码文件WBX.TXT, 您可以很方便的给任何一台WIN98(WIN95)的电脑安装上五笔输入方法。 以上所述均已调试成功。 |