分享

将海峰五笔码表转换到 iBus 下使用 | 林健的BLOG

 hesmer 2010-09-25

  Ubuntu 早已使用 iBus 取代 SCIM 作为默认的输入平台了。但我一直还在用 SCIM,原因就是 iBus 的五笔码表实在有些问题:生僻字或繁体字常常排在常用的简体字前面。它默认会自动调节词频,虽说调节词频是解决上述问题的办法,但这与很多五笔用户的习惯不符。不过其实 SCIM 也有几处用得不爽,例如不方便输入书名号、破折号等。
  我今天简单研究了一下 iBus,发现自动调节词频是可以关闭的(在码表中,而不在界面或配置文件中);而它的标点符号输入也相对自然。因此,决定找一套好用的码表替代原有码表,进而尝试用 iBus 取代 SCIM。我选择了 Windows 下的海峰五笔(86版)码表:其一,它的词库规模适中,我在 Windows 下用过感觉不错;其二,它使用标准的 Windows 码表格式,便于提取数据;其三,作者在主页上宣布“鼓励大家反编译,定制自己的专用输入法”,这种开放的态度让我选择了它。
  将海峰五笔码表转换到 iBus 下,步骤如下:
  1.在 Windows 下使用海峰五笔自带的 ImegenU.exe 工具将编译过的 Sun86.mb 码表逆转换为文本码表 Sun86.txt。不要用 Windows 自带的 Imegen.exe,在实验时发现 Imegen.exe 会产生部分错误的编码,比如“跑”字,暂不知其中原因。
  2.将基于 UTF16LE.DOS.BOM 编码的 Sun86.txt 转换为 UTF8.UNIX.NON-BOM 编码,命名为 Sun86-u.txt。在 Linux 下可使用以下命令:

  1. iconv --from-code=utf16 --to-code=utf8 --output=Sun86-u.txt Sun86.txt
  2. fromdos Sun86-u.txt

  3.编辑 Sun86-u.txt,删除头信息,只保留码表。
  4.编写一个小程序(trans),将 Windows 文本码表转换为 iBus 文本码表,命名为 Sun86-i.txt。

  1. ./trans Sun86-u.txt > Sun86-i.txt

  5.下载 iBus 码表源代码(ibus-table-xingyin),从中提取出原版五笔的文本码表 wubi.txt。
  6.使用 Sun86-i.txt 中的内容覆盖 wubi.txt 的 Table 段。可保留 wubi.txt 中以 zz 开头的一系列非汉字符号的编码定义。
  7.修改 wubi.txt,禁用词频调整:

  1. DYNAMIC_ADJUST = FALSE

  8.编译并覆盖码表:

  1. bus-table-createdb -s wubi86.txt
  2. sudo cp wubi86.db /usr/share/ibus-table/tables

  9.重新登录桌面环境,新的码表即可生效。

  另外,在使用中发现 iBus 默认没有启用无重码自动上屏的选项。Google 了一下,可参考这篇的方法。直接修改 /usr/share/ibus-table/engine/table.py,找到:

  1. self._auto_commit = self.db.get_ime_property('auto_commit').lower() == u'true'

修改为:

  1. self._auto_commit = False

然后使用以下 python 程序:

  1. import py_compile
  2. py_compile.compile(r'table.py')

将其 table.py 编译为字节码文件 table.pyc 即可。

  编译好的海峰五笔(86版)for iBus 码表以及上面提到的 trans 程序源代码可在以下位置下载:
  http://files./c_cpp/SunWB-iBus.tar.gz
  http://www./files/c_cpp/SunWB-iBus.tar.gz

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多