制作Linux中的SCIM输入法

时间:2021-12-08 06:29:35

转换Windows中的输入法(部分)为SCIM输入法

【工具】
mb2scim 将Win下的码表文本文件转换成制作SCIM输入法必备的码表文件。转换命令在命令提示符下,在该文件夹(目录)中执行。
【说明】
1、Win码表文件要求为UNICODE格式,即使用“输入法生成器5.0”(Win2000之后版本中附带)逆转换.mb文件得到的.txt文件,或者使用UltraEdit之类的工具,将其转化为UNICODE格式,并放在mb2scim所在的文件夹中。
2、目标码表文件为UTF-8格式,在Win下可以使用UltraEdit等工具查看、编辑,在Linux下,可以使用Gedit查看、编辑。
3、使用前,请手工修改header.txt文件,设置相应参数(2003年发布的mb2scim中是可以自动设置部分参数的,但是感觉不方便,还不如手工直接设置。所以此次进行了改进)。
4、在Linux下,可以通过Wine使用该工具。
5、文件包中的所有设置,都是针对郑码输入法的。并已对其他输入法进行了测试(要修改转换生成的.txt码表文件的文件头如输入法名称,UUID等信息)。
【用法】
Windows:mb2scim win码表文件名 输出的SCIM码表文件名
Linux:wine mb2scim win码表文件名 输出的SCIM码表文件名
【注意】
1、header.txt和pv.txt(字、词频信息)文件必须在当前文件夹下。
2、需要正确设置header.txt(可以不作修改)。
3、如果出现和uuid有关的错误,请在Linux下运行uuidgen,或者在Windows下运行guidgen,以得到新的uuid,并替代header.txt中的相应字符串。也可直接手动修改码表文件中的UUID,随机更改其中几个即可。
另外,还可制作 48 x 48 的PNG图片作为输入法的标识,图片的名称可以用输入法的拼音简称,而且应与转换成的SCIM码表文件中的 ICON = /usr/share/scim/icons/srf.png 一致(注意大小写)。
【生成输入法BIN文件】
在linux下
使用刚才生成的UTF-8格式输入法码表scim-make-table:
scim-make-table shurufa.txt -b -o shurufa.bin
如果有错会有
Loading table file XXX...
table file load failed!
的错误,这时就只有再查一下你的码表文件的格式了。
【安装】
在linux下,在shell下su-成boot用户
cp /.../shurufa.bin /usr/share/scim/tables/
cp /.../srf.png /usr/share/scim/icons/
/.../为shurufa.bin、srf.png所在的目录,可以定位到该目录,用ls命令显示目录内容而获得。
然后打开 SCIM SETUP 配置你的输入法。

自行制作SCIM输入法

1.下载最新的SCIM包。
http://www.scim-im.org/ 里可以下包.
如果你使用 debian linux 可以使用 apt-get source scim scim-tables-zh
可能有一些包的名字会变,这时可以通过apt-cache search 查一下。
2. 主要需要下 scim-tables
但 scim-tables 编译时可能需要下scim包。
所以建议你先编译一下scim
然后
tar xvfz scim-tables-0.5.1.tar.gz
cd scim-tables-0.5.1
./configure
make
这时你可以看到他是先生成一下scim-make-table
scim-make-table 在src目录下
然后用他编译一个一个的输入法的。
3. SCIM的输入法配置文件格式。
SCIM只支持 UTF-8 格式的码表。其配置文件的格式是:
表头
码表部分。
SCIM的码表格式是
编码 对应的结果 词频
wo 我 200
4. 转成UTF-8
可以用很多的工具,但推荐kwrite,一般的做法是用iconv:
iconv -f -t -o
如:
iconv -f gb2312 -t UTF-8 shurufa.txt -o shurufa_utf8.txt
但是很多输入法中,GB2312的编码会有一些是乱码,
iconv经常会报错:
iconv: illegal input sequence at position XXX
这个往往是由于你的原始文件不是纯粹的GB2312。
比如在Windows下,微软在Windows里就扩展了GB2312,加入了一些繁体字。
所以如果你用gbk的设置应该会好一些。
5. 码表部分调整
编码 对应的结果 词频
wo 我 200
之间用空格或者TAB来分隔。
一般词频不是很好统计,就空着好了。
如果你的码表是从windows里面用输入法生成工具自己做的,他的格式如下:
一a
地b
...
一下aa
...
可歌可泣aaav
这时可以在shell下执行
sed 's/[a-z]*$/ &/' shurufa.txt | awk '{print $NF,$1}' > shurufa_scim.txt
例如:
sed 's/[a-z]*$/ &/' wb98.txt | awk '{print $NF,$1}' > wb98_scim.txt
最好还是用 mb2scim 工具将Win下的码表文本文件转换成SCIM可以识别的码表文件。
6. 填写输入法配置文件的配置部分
一般都有说明,你就按照说明一步一步做就可以了。
下面是一个例子

### Begin Table definition.
BEGIN_DEFINITION
ICON = /usr/share/scim/icons/zm.png
NAME = zhengma
NAME.zh_CN = 万能郑码
NAME.zh_HK = 萬能鄭碼
NAME.zh_TW = 萬能鄭碼
LANGUAGES = zh_CN,zh_SG,zh_TW,zh_HK
STATUS_PROMPT = 中
VALID_INPUT_CHARS = abcdefghijklmnopqrstuvwxyz
SINGLE_WILDCARD_CHAR = `
MULTI_WILDCARD_CHAR = *
SPLIT_KEYS = apostrophe
COMMIT_KEYS = space
FORWARD_KEYS = Return
SELECT_KEYS = 1,2,3,4,5,6,7,8,9
PAGE_UP_KEYS = Page_Up,comma,minus
PAGE_DOWN_KEYS = Page_Down,period,equal
MAX_KEY_LENGTH = 4
END_DEFINITION

### Begin Table data.
BEGIN_TABLE
a 一
b 地
...
zgr 中国人
...
zzzb 总政治部
END_TABLE

7. 生成输入法BIN文件和安装
同前述。

现在你的Linux拥有了自己需要的SCIM输入法。