错误 + 错误 = ?

在奇葩的Linux输入法世界里面呢,经常上演着这样的事情。

被程序不幸没有做正确的行为。

但是有办法可以walkaround,但这个walkaround又可能导致另一个没有做正确事情的程序出问题。

于是 ╮(╯_╰)╭ 。

来讲两个故事。

首先是WPS和Opera的故事。

XIM 有两种 Style,On The Spot 和 Over The Spot,前者不可以光标跟随,后者可以(当然这只是Qt自己的实现的问题)。我在考虑了很多人用 Fcitx 的以前都手动设置过环境变量强制用了xim,于是虽然 Fcitx 可以支持 On The Spot,不过默认没有开启(程序选择Style的时候优先选择 On The Spot,其次是Over The Spot)。

于是假设来了两个程序,Opera和WPS,Opera不幸只能在On The Spot下光标跟随,WPS由于多数发行版的Qt是4.8的,无法使用系统的IM Module,于是只能fallback到xim。那么Fcitx的这个默认设置就只能导致Opera不能光标跟随,WPS可以 ╮(╯_╰)╭

其次是Sublime和Thunar的故事。

有个人先给我汇报了一个Bug:“当fcitx启动时,在thunar里不能使用字母直接跳到相关的文件夹或是文件名上。实际上,只有打开thunar,什么也不按,直接按字母能跳到相关名字的文件上,但当点击鼠标或是进入下一级目录,就不能用了。”

研究了一下发现这应该是gtk所有list view类的搜索共同的问题……于是我很快发现应该判断当前是否获得了焦点,以决定让IM Module是否处理输入法的按键。

然后于是我 Push 了代码。

http://code.google.com/p/fcitx/source/detail?r=11784e514dd3d1654481bdf12bd1e368832229c4

后来 Sublime 这破玩意出来了(闭源的Gtk程序,感觉这辈子没见过几个……),由于刚刚说过的那个Bug,反而导致Fcitx可以在里面输入,但是修复之后就变得不可以了。(老实讲我后来gdb attach进去手动改掉某个bool变量测试发现果然就变得可以输入了,以证明我发现的原因是正确的……)

再回来抱怨两句Sublime,这玩意闭源就不说了,唯一能够获得支持的只有个论坛,关键这论坛还他妈要发信给某个邮箱才能获得邀请码注册,您防Spam能换个友好点的方式吗?老子好不容易注册了然后发帖了还没人鸟我,我擦!再加上这破玩意是闭源的,老子连替他擦屁股的方法都没有。

===========================================

只要微笑就可以了……

===========================================

P.S. 这故事要讲下去还有很多后续

比如LibreOffice和Firefox的故事等等等等。

只想在最后重复一下我的原则。

1、当能同时Walkaround两者时,我会选择Walkaround两者。例如LibreOffice里面的历史悠久的掉键,在换成IM Module之后可以得到Fix的话,那我就不会使用会让firefox产生一个小问题的Walkaround。

2、当不能同时Walkaround两者时,我会选择我认为比较重要的那方Walkaround。例如前文说的那两个。

3、我基本不会使用针对某个程序特别的hack,除非我认为这个程序非常重要,例如在代码里面判断当前程序是不是sublime我是不会做的。

=-=-=-=-=
Powered by Blogilo

This entry was posted in fcitx development and tagged . Bookmark the permalink.

8 Responses to 错误 + 错误 = ?

  1. Pingback: OpenSUSE (Linux) 下安装 Sublime Text | 钉子の次元

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.