分类: LINUX
2010-03-27 16:28:30
说是在某些情况下,是因为我在两个机器上一个可以正常使用一个却不可以,不太确定是不是程序版本的问题,不过我现在可以通过关闭这个叫做 preedit
的东西来解决这个问题。原本因该像 SCIM 那样可以有一个选项选择关闭的,不过 ibus 的选项面板里还没有加入这个选项,于是我就直接暴力地修改一下好了,打开/usr/share/ibus-pinyin/engine/pinyin.py
,找到 update_preedit
函数的定义:
def update_preedit(self, preedit_string, preedit_attrs, cursor_pos, visible): if preedit_attrs == None: preedit_attrs = ibus.AttrList() attr = ibus.AttributeUnderline(ibus.ATTR_UNDERLINE_SINGLE, 0, len(preedit_string)) preedit_attrs.append(attr) super(PinYinEngine, self).update_preedit_text(ibus.Text(preedit_string, preedit_attrs), cursor_pos, visible)
废掉它,比如,在第一行加一个 return
或者把最后一行的 super
调用注释掉。保存之后在 ibus 的托盘图标那里选择 restart 就可以了。
不过这样的暴力修改也是有一些副作用的,因为 ibus-pinyin 对于不合法的拼音片段并不会在面板上显示出来,比如 i
,关闭 preedit 之后在中文状态下输入 i
看不到任何反馈,不过这几乎不影响使用,而且我觉得这似乎是 ibus-pinyin 在显示的设计上需要修改的地方,对于一些习惯直接输入单词再回车上屏的人估计就不太方便了。
总的来说,ibus-pinyin 还是一个不错的输入法的,希望能好好发展,争取让 Linux 下的输入法不要再和 Windows 下差距那么大。