使用小企鹅五笔单字输入模式

出于保护视力的需要,我在学习与工作中使用五笔输入法来盲打中文,从而可以有效地减少眼睛看屏幕的时间。例如,我每周将手写日记整理到电脑上的时候,一般都是只看着平时随身携带的日记本,一气呵成地将一段文字录入完毕后再统一核对、修改。为了减少盲打时的重码率,我都是将输入法自带的词库禁用,只使用单字输入模式。这样一来,就可以基本保证盲打出的每一个字就是我想要的那个。单字输入模式在Linux下的iBus输入法中已有支持。不过,iBus尚有一个致命的缺陷就是它的第一个候选条目总是被一个黑色块遮挡,非常影响用户体验。因此,我将使用了多年的iBus换为Fcitx小企鹅输入法。可惜的是,虽然在Fcitx“全局配置”中的“输出”一栏里有是否“提示词库中词组”的选项,但经过我的测试发现,取消该选项并不会令五笔输入法进入单字模式。为此,只能自己手动修改Fcitx五笔输入法的码表(table),删除其中所有的词汇,只保留单字。具体做法如下。

  1. 使用apt-get安装fcitx-tools。其中包含了需要用到的mb2txttxt2mb命令,用于在二进制格式的码表与文本格式之间做转换。

  2. 使用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]域之后就是输入法的每一个字母序列与对应的字词。

  3. 编写如下的Awk脚本wbx.awk,用于删除wbx.txt中的所有词汇并保留其它内容:

     {
      if ($0 ~ /^S+s+S+$/) {
        if (length($2) == 1) print $0
      }
      else print $0
     }
  4. 执行gawk命令,将wbx.txt中的词汇删除并保存为新的文件:

     $ gawk -f wbx.awk wbx.txt > wbx-single-chars.txt
  5. 使用txt2mb,将生成的wbx-single-chars.txt文件编译为二进制格式的码表:

     $ txt2mb wbx-single-chars.txt wbx-single-chars.mb
  6. 将生成的wbx-single-chars.mb五笔单字码表覆盖/usr/share/fcitx/table/wbx.mb,然后重启Fcitx即可。

原文地址:https://www.cnblogs.com/quantumman/p/10633531.html