Home > IT > Make Ibus-pinyin 1.2.99.20091211 Support Xiaohe Double Pinyin Schema

Make Ibus-pinyin 1.2.99.20091211 Support Xiaohe Double Pinyin Schema

分享家:Addthis中国

自从某次因为安装 Windows 7 把我的 GRUB 弄坏了,我一直懒得修复(看来我不算一个比较忠实的 Ubuntu 用户),导致我很久没有进去过我的 Ubuntu 9.10。

Ubuntu 10.04 发布了一段时间了,看着这个全新 LTS 版本的出现又让我心动了,终于还是安装了。用 Linux 最纠结的还是输入法的问题。之前用过 SCIM ,小企鹅,感觉都不怎么好用。一直到 iBus 的出现,至少它的用户体验和记忆联想都做得很不错。

可惜本人是个双拼用户,而且用的还是目前比较小众的小鹤双拼方案(虽然比较小众,但是我个人觉得它的设置更科学)。这次的 Ubuntu 10.04 自带的 iBus-pinyin 1.2.99.20091211-1ubuntu1_i386 版本竟然支持双拼了,太兴奋了。高兴之余,也看到了遗憾,双拼方案里面还是没有小鹤双拼方案,而且还不支持自定义双拼方案,唉!

我抱着试试看的心情,查看了一下 iBus-pinyin 的相关文件,结果是:无任何和双拼配置相关的文件。无奈之下,我只能下了 iBus-pinyin 的源代码看看

apt-get source ibus-pinyin

意外地在在源码包 src 文件中找到了 DoublePinyinTable.h ,里面正是关于双拼方案的代码,我一直没法理解为什么不把双拼方案做在配置文件里面。我去了 Google Code 找到了 iBus-pinyin 的最新源码,再一次意外地发现,最新的 1.3.10 里面已经预设小鹤双拼方案,哈哈。

赶紧准备编译

./configure
make

竟然报错:

LookupTable.h: In member function ‘guint PY::LookupTable::orientation()’:
LookupTable.h:39: error: ‘ibus_lookup_table_get_orientation’ was not declared in this scope
LookupTable.h: In member function ‘void PY::LookupTable::setOrientation(gint)’:
LookupTable.h:50: error: ‘ibus_lookup_table_set_orientation’ was not declared in this scope

看了下源码, iBus-pinyin 的代码中 include 了一些 iBus 的头文件。而且这几个头文件,我已经安装了 libibus-dev 已经有了。于是下了最新版的 iBus 1.3.7 的源码一看,这个是新版本才有的新函数,看来如果不安装新版本的 iBus 即使利用最新版里面的文件通过了编译,使用也是有这个那个的问题。但是现在 Ubuntu 已经把 iBus 作为默认输入法框架了,针对系统做了优化整合,如果擅自通过非 Ubuntu 源内的安装包进行更新的话,有可能会出现问题,真是悲剧,看来还是得在 iBus-pinyin 1.2.99.20091211-1ubuntu1_i386 上面下功夫了。

DoublePinyinTable.h 里面放着的是支持的几个双拼方案中声母韵母的键盘映射。反正我不会用里面其他的双拼方案,我就挑了个和小鹤双拼最接近的自然码对应表下手,把自然码的映射换成小鹤的。

具体替换如下:

$ diff DoublePinyinTable.h Xiaohe/DoublePinyinTable.h
2c2
<     PINYIN_ID_VOID, // A
---
>     PINYIN_ID_ZERO, // A
6c6
<     PINYIN_ID_VOID, // E
---
>     PINYIN_ID_ZERO, // E
28c28
<     PINYIN_ID_VOID, // ;
---
>     PINYIN_ID_ZERO, // ;
60c60
<     PINYIN_ID_VOID, // A
---
>     PINYIN_ID_ZERO, // A
64c64
<     PINYIN_ID_VOID, // E
---
>     PINYIN_ID_ZERO, // E
90,92c90,92
<     { PINYIN_ID_OU,   PINYIN_ID_VOID }, // B
<     { PINYIN_ID_IAO,  PINYIN_ID_VOID }, // C
<     { PINYIN_ID_UANG, PINYIN_ID_IANG }, // D
---
>     { PINYIN_ID_IN,   PINYIN_ID_VOID }, // B
>     { PINYIN_ID_AO,   PINYIN_ID_VOID }, // C
>     { PINYIN_ID_AI,   PINYIN_ID_VOID }, // D
99,100c99,100
<     { PINYIN_ID_AO,   PINYIN_ID_VOID }, // K
<     { PINYIN_ID_AI,   PINYIN_ID_VOID }, // L
---
>     { PINYIN_ID_UAI,  PINYIN_ID_ING  }, // K
>     { PINYIN_ID_UANG, PINYIN_ID_IANG }, // L
102c102
<     { PINYIN_ID_IN,   PINYIN_ID_VOID }, // N
---
>     { PINYIN_ID_IAO,  PINYIN_ID_VOID }, // N
104c104
<     { PINYIN_ID_UN,   PINYIN_ID_VOID }, // P
---
>     { PINYIN_ID_IE,   PINYIN_ID_VOID }, // P
111,114c111,114
<     { PINYIN_ID_IA,   PINYIN_ID_UA   }, // W
<     { PINYIN_ID_IE,   PINYIN_ID_VOID }, // X
<     { PINYIN_ID_UAI,  PINYIN_ID_ING  }, // Y
<     { PINYIN_ID_EI,   PINYIN_ID_VOID }, // Z
---
>     { PINYIN_ID_EI,   PINYIN_ID_VOID }, // W
>     { PINYIN_ID_IA,   PINYIN_ID_UA   }, // X
>     { PINYIN_ID_UN,   PINYIN_ID_VOID }, // Y
>     { PINYIN_ID_OU,   PINYIN_ID_VOID }, // Z

改完后,马上试试吧。这会可不忙着马上编译。先看看 configure 文件里面的内容,发现它默认的文件夹和 Ubuntu 源安装用的文件夹不同。看来 configure 的时候需要加几个参数。

./configure --prefix=/usr --exec-prefix=/usr --libexecdir=/usr/lib/ibus-pinyin
make

编译通过后可别忙着安装,这是完全没有必要的。这套源码包是源里面最新版的,所以我们只需先安装源里面最新的 iBus-pinyin 先。

未安装 iBus-pinyin 的朋友只需

sudo apt-get install ibus-pinyin

就OK了。

已安装的则需要保证它是最新版本的。

sudo apt-get update
sudo apt-get upgrade

然后将刚刚我们修改了双拼方案编译出来的 iBus-pinyin 中的 ibus-engine-pinyin 覆盖掉系统中没有小鹤双拼方案的 ibus-engine-pinyin ,如果不放心的话就备份一下旧的(记得把 iBus-Daemon 关了,不然你是没法复制过去的,嚯嚯)。为了确保没有问题,记得修改一下用户组和用户。

killall ibus-daemon
sudo chown root:root ibus-engine-pinyin
cp /usr/lib/ibus-pinyin/ibus-engine-pinyin /usr/lib/ibus-pinyin/ibus-engine-pinyin_bak
cp ibus-engine-pinyin /usr/lib/ibus-pinyin/ibus-engine-pinyin
ibus-daemon &

这样子基本就OK了。哈哈!进入配置选择双拼,方案选择“自然码”(当然已经被替换成小鹤双拼方案了),开始使用我习惯的小鹤双拼方案。虽然还有不少不尽如人意的地方,不过至少能忍了

最近附上本文的一些相关数据,不保证文中一些方法在其他环境下适用。

  • 操作系统:Ubuntu 10.04
  • 内核:2.6.32-24-generic
  • iBus版本:1.2.0.20091215-1ubuntu4
  • iBus-pinyin版本:1.2.99.20091211-1ubuntu1
  • g++ gcc版本:(Ubuntu 4.4.3-4ubuntu5) 4.4.3

相关文件

对于输入法我只要可以暂时使用小鹤双拼方案就行了,所以直接把自然码替换成小鹤就OK了。相信我不少完美主义者会希望直接多了个小鹤的选项。

各位完美主义者们可以试试:直接在 DoublePinyinTable.h 添加了小鹤的映射数组,然后在 setup 文件夹中的界面文件 ibus-pinyin-preferences.ui 里面中增加一下小鹤的选择项,同时还需要把 po 文件夹中的各个语言包 po 文件中将小鹤选项的语言翻译添加进去,然后就OK了。当然如果用这种方法修改的,就不能用上面的替换法来做了,编译完后需要安装

sudo checkinstall

建议使用上面的 checkinstall ,通过这个命令安装后它会生成一个 deb 文件以备以后用来安装,如果安装失败的话它会回滚,以免残留垃圾文件。需要注意的是 checkinstall 需要另外安装一个包

sudo apt-get install checkinstall

先写到这吧。最后希望 iBus 能够早日支持自定义双拼方案,方便大众

You don't feel like leaving comments? Please leave your palm-print.
懒得留言?那留下您的掌印吧。
Categories: IT Tags: , , , ,
  1. August 29th, 2010 at 18:15 | #1

    虽然我也是程序员,但是我还是看不懂

  2. August 29th, 2010 at 20:30 | #2

    @小康
    自己试试就知道了,其实挺简单的!

  3. September 3rd, 2010 at 14:08 | #3

    @小康
    一样啊 呵呵

  4. September 8th, 2010 at 14:23 | #4

    草根,很厉害!第一次看见,很喜欢!

  1. No trackbacks yet.

:D 8) :down: 8O :!: :halo: :evil: :heart: :kiss: :lol: :money: :mrgreen: :x :| :pirate: :?: :oops: :roll: :P :( :) :o :up: :vangry: :twisted: ;) :? :cry:

也许您会觉得ReCAPTCHA验证码很繁琐,会认为他和其他所有的验证码一样让你厌烦。那请点击这里,您会了解到ReCAPTCHA为人类文化的传承做出了多大的贡献。请您也为人类知识的保存和传递也出一份力吧,谢谢!
 
    Posts Nav.