使用小企鹅五笔单字输入模式
出于保护视力的需要,我在学习与工作中使用五笔输入法来盲打中文,从而可以有效地减少眼睛看屏幕的时间。例如,我每周将手写日记整理到电脑上的时候,一般都是只看着平时随身携带的日记本,一气呵成地将一段文字录入完毕后再统一核对、修改。为了减少盲打时的重码率,我都是将输入法自带的词库禁用,只使用单字输入模式。这样一来,就可以基本保证盲打出的每一个字就是我想要的那个。单字输入模式在Linux下的iBus输入法中已有支持。不过,iBus尚有一个致命的缺陷就是它的第一个候选条目总是被一个黑色块遮挡,非常影响用户体验。因此,我将使用了多年的iBus换为Fcitx小企鹅输入法。可惜的是,虽然在Fcitx“全局配置”中的“输出”一栏里有是否“提示词库中词组”的选项,但经过我的测试发现,取消该选项并不会令五笔输入法进入单字模式。为此,只能自己手动修改Fcitx五笔输入法的码表(table),删除其中所有的词汇,只保留单字。具体做法如下。
-
使用
apt-get
安装fcitx-tools
。其中包含了需要用到的mb2txt
与txt2mb
命令,用于在二进制格式的码表与文本格式之间做转换。 -
使用
mb2txt
将五笔输入法的码表转为文本格式:$ mb2txt /usr/share/fcitx/table/wbx.mb > wbx.txt
由此得到的
wbx.txt
文件包含如下内容:;fcitx Version 0x03 Table file
KeyCode=abcdefghijklmnopqrstuvwxy
Length=4
Pinyin=@
PinyinLength=4
Prompt=&
ConstructPhrase=^
[Rule]
e2=p11+p12+p21+p22
e3=p11+p21+p31+p32
a4=p11+p21+p31+n11
[Data]
a 工
a 戈
a 或
a 其
aa 式
aa 戒
aaa 工
aaaa 工
aaaa 恭恭敬敬
aaad 工期
aaae 黄花菜
aaae 黄芽菜
...可以看出,
[Data]
域之后就是输入法的每一个字母序列与对应的字词。 -
编写如下的Awk脚本
wbx.awk
,用于删除wbx.txt
中的所有词汇并保留其它内容:{
if ($0 ~ /^\S+\s+\S+$/) {
if (length($2) == 1) print $0
}
else print $0
} -
执行
gawk
命令,将wbx.txt
中的词汇删除并保存为新的文件:$ gawk -f wbx.awk wbx.txt > wbx-single-chars.txt
-
使用
txt2mb
,将生成的wbx-single-chars.txt
文件编译为二进制格式的码表:$ txt2mb wbx-single-chars.txt wbx-single-chars.mb
-
将生成的
wbx-single-chars.mb
五笔单字码表覆盖/usr/share/fcitx/table/wbx.mb
,然后重启Fcitx即可。