LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 6758|回复: 18

[原创]从极点到fcitx码表的转换方法

[复制链接]
发表于 2008-3-6 14:56:29 | 显示全部楼层 |阅读模式
一、格式分析
极点5的码表结构:如(蓝色为码表的内容,红色部分为我的注释,码表仅给出关键结构)

头部信息
输入法名称=二笔输入法#
Name=二笔标版
……
……
---------------------------------
[rule]
三字词=p11+p12+p21+p31
编码开始,这个是码表的主要内容
[Text]
, ,
. 。
/ 、
; ;
下面开始的内容是关键
a 安
a,ri 嫒
……
zykg 斋 主客观 左右开弓 颤  <=请注意这一行
……
zzzy 种族主义
zzzz 自作主张
结束,极点6导出文件中没有下面部分的
[拼音区]
a 啊 阿 呵 吖 嗄 腌 锕 錒


极点6的码表需要导出,用其导出功能即可,得到的码表结构与极点5的差不多,就不再分析了

fcitx 码表源文件结构
键码=abcdefghijklmnopqrstuvwxyz;',./
……
……
[数据]
下面开始的内容是关键
a 安
a,ri 嫒
……
zykg 斋 <=请注意这四行与极点码表的差别
zykg 主客观
zykg 左右开弓
zykg 颤
……
zzzy 种族主义
zzzz 自作主张

结束

大家发现了吧,其实fcitx码表源文件的结构和极点的码表结构差不多,除了一些附件信息外,唯一的差别就在于对重码字词的安排上,极点的是放在一个条目下的,而fcitx是分开放的。
所以转换的关键就在于把
“zykg 斋 主客观 左右开弓 颤 ”之类变成
“zykg 斋
zykg 主客观
zykg 左右开弓
zykg 颤”

二、制作
1、在windows下修改好极点码表
如果是极点5,去掉除a~z编码部分的所有头尾信息,如果是极点6,把导出后的码表同样处理,再把unicode格式转换为ansi格式(用记事本或ue之类另存为ansi格式即可)。
2、转换码表
到装有fcitx的linux下,运行
  1. jd2fcitx 改好的极点码表>>待修改的fcitx码表源文件
复制代码

完整安装了fcitx应该就有jd2fcitx这个命令,如果没有,可以自己从源码中解开单独编译一下。但在Windows下编译运行,不能正常转换码表。或者下载我编译好的(见附件,win下对代码作了点小修改),解开后得到jd2fcitx和jd2fcitx.exe,分别可在linux和windows下运行
编辑刚才获得的文件,加入相关头部信息即可。
最后运行
  1. txt2mb 修改好后的fcitx码表源文件 码表名.mb
复制代码
就得到了相应的码表

附:二笔的fcitx码表头部信息
键码=abcdefghijklmnopqrstuvwxyz;',./
码长=4
规避字符=;iuv
[组词规则]
e2=p11+p12+p21+p22
e3=p11+p12+p21+p31
a4=p11+p21+p31+n11
[数据]
a 安
……

3、题外话:
没想到fcitx的码表制作是如此方便吧?
当时我制作码表的时候没发现有jd2fcitx这个工具,还自己写了个程序……
其实Yuking在fcitx包里还提供如win2fcitx等一系列码表制作工具,像Yuking这样充分为用户考虑的人真不愧为大侠!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-10-23 15:29:12 | 显示全部楼层
谢谢,正需要这方面的资料
回复 支持 反对

使用道具 举报

用户名用户名 该用户已被删除
发表于 2008-10-23 20:16:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2009-1-30 20:31:37 | 显示全部楼层
之前看过这个帖子,当时理解错了,因为”jd2fcitx 改好的极点码表“,我还以为是这个”改好“是指手动把重码格式给改了……囧……刚刚重新看,才明白原来下面的程序完成这一步……唉,脑子啊……

多谢楼主!我把本帖转到ubuntu中文网了,希望lz不要介意。
回复 支持 反对

使用道具 举报

发表于 2009-2-6 13:41:53 | 显示全部楼层
Post by 第六元素;1823755
一、格式分析
极点5的码表结构:如(蓝色为码表的内容,红色部分为我的注释,码表仅给出关键结构)

头部信息
输入法名称=二笔输入法#
Name=二笔标版
……
……
---------------------------------
[rule]
三字词=p11+p12+p21+p31
编码开始,这个是码表的主要内容
[Text]
, ,
. 。
/ 、
; ;
下面开始的内容是关键
a 安
a,ri 嫒
……
zykg 斋 主客观 左右开弓 颤  <=请注意这一行
……
zzzy 种族主义
zzzz 自作主张
结束,极点6导出文件中没有下面部分的
[拼音区]
a 啊 阿 呵 吖 嗄 腌 锕 錒


极点6的码表需要导出,用其导出功能即可,得到的码表结构与极点5的差不多,就不再分析了

fcitx 码表源文件结构
键码=abcdefghijklmnopqrstuvwxyz;',./
……
……
[数据]
下面开始的内容是关键
a 安
a,ri 嫒
……
zykg 斋 <=请注意这四行与极点码表的差别
zykg 主客观
zykg 左右开弓
zykg 颤
……
zzzy 种族主义
zzzz 自作主张

结束

大家发现了吧,其实fcitx码表源文件的结构和极点的码表结构差不多,除了一些附件信息外,唯一的差别就在于对重码字词的安排上,极点的是放在一个条目下的,而fcitx是分开放的。
所以转换的关键就在于把
“zykg 斋 主客观 左右开弓 颤 ”之类变成
“zykg 斋
zykg 主客观
zykg 左右开弓
zykg 颤”

二、制作
1、在windows下修改好极点码表
如果是极点5,去掉除a~z编码部分的所有头尾信息,如果是极点6,把导出后的码表同样处理,再把unicode格式转换为ansi格式(用记事本或ue之类另存为ansi格式即可)。
2、转换码表
到装有fcitx的linux下,运行
  1. jd2fcitx 改好的极点码表>>待修改的fcitx码表源文件
复制代码

完整安装了fcitx应该就有jd2fcitx这个命令,如果没有,可以自己从源码中解开单独编译一下。但在Windows下编译运行,不能正常转换码表。或者下载我编译好的(见附件,win下对代码作了点小修改),解开后得到jd2fcitx和jd2fcitx.exe,分别可在linux和windows下运行
编辑刚才获得的文件,加入相关头部信息即可。
最后运行
  1. txt2mb 修改好后的fcitx码表源文件 码表名.mb
复制代码
就得到了相应的码表

附:二笔的fcitx码表头部信息
键码=abcdefghijklmnopqrstuvwxyz;',./
码长=4
规避字符=;iuv
[组词规则]
e2=p11+p12+p21+p22
e3=p11+p12+p21+p31
a4=p11+p21+p31+n11
[数据]
a 安
……

3、题外话:
没想到fcitx的码表制作是如此方便吧?
当时我制作码表的时候没发现有jd2fcitx这个工具,还自己写了个程序……
其实Yuking在fcitx包里还提供如win2fcitx等一系列码表制作工具,像Yuking这样充分为用户考虑的人真不愧为大侠!


好文章,正好想找这方面的文章呢。
回复 支持 反对

使用道具 举报

发表于 2009-2-6 16:37:04 | 显示全部楼层
利用这个方法我想把五笔论坛里梦幻词库转换成Fcitx使用词库,没有成功,老是出现问题,在windows下显示是ASNI编码,在LInux里设置是UTF-8有没有影响,另外去掉信息时拼音区的内容保留吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-8 22:11:22 | 显示全部楼层
Post by cysky;1944528
利用这个方法我想把五笔论坛里梦幻词库转换成Fcitx使用词库,没有成功,老是出现问题,在windows下显示是ASNI编码,在LInux里设置是UTF-8有没有影响,另外去掉信息时拼音区的内容保留吗

对一些有GBK以外字符的码表转换似乎有点问题,表现为转换成功但无法正常使用,可能是fcitx本身的问题。
我在转换时是去掉拼音区的,如果要保留应该也不会有问题,但“[拼音区]”一定要去掉。
总之,待转换的极点码表一定要是只要编码和字词的。
回复 支持 反对

使用道具 举报

发表于 2009-2-22 00:43:32 | 显示全部楼层
你把极点最新版6。5版加上98沧海词库1。9版给转换一下吗,做个deb包,让大家享受一下在win下极点98的感觉呀,先谢谢啦,我不会编程,只会用。
回复 支持 反对

使用道具 举报

发表于 2009-2-22 23:01:14 | 显示全部楼层
我准备把“极爽词库”转成fcitx用的。

向楼主请教一下,极点词库中
~:生僻字词
^:用户词组
!联想词组

这些的fcitx中是如何处理的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 11:04:09 | 显示全部楼层
fcitx似乎还只能支持GBK字符集以内的编码,所以有些码表在转换时可能会出现问题。
因此,在准备码表时最好去掉特殊字符的条目,比如倭文字符、汉字偏旁之类。

另外,今天我专门试着转换五笔的梦幻词库和98沧海词库,发现其中有类似的“aad 匿 ~”的编码,不知道后面的“~”有什么作用,如果没什么用的话,把“~”去掉就行。
否则,也许修改下jd2fcitx.c后能行,当然,即使转换成功,最终也不一定能正常使用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表