|
fcitx输入法很好,尤其是现在的svn最新版,已经修正了大多数问题,而且系统托盘图标也起作用了。
但是,一个非常非常郁闷的问题就 是在openoffice里面掉字。
不知道yuking为什么不修正这个问题,现在情况虽然好点,但是偶尔出现的掉字现象让人感觉像吃了 一个苍蝇。
究其原因,在ime.c里面,键盘事件的处理方式上,fcitx对于普通输入字符处理KeyRelease事件我觉得不妥。
比 如scim和ibus,他们在处理输入字符的事件时,均做如下处理:如果是普通的字符(keycode在32-126之间),处理keypress而乎略 keyrelease。
而openoffice掉字,就是由keyrelease引起的。
所以,我修改了一下源代码,把 普通字符的KeyRelease处理逻辑整个去掉
用了一会,发现还可以,在Openoffice里面已经很难遇到掉字现象了
所 以,发上来,共享之。
补丁内容:
- diff -aur fcitx-svn/src/ime.c fcitx-svn.new/src/ime.c
- --- fcitx-svn/src/ime.c 2009-05-16 21:24:18.257935370 +0800
- +++ fcitx-svn.new/src/ime.c 2009-05-18 16:33:13.500898670 +0800
- @@ -335,7 +335,9 @@
- #ifdef _DEBUG
- printf ("KeyRelease=%d iKeyState=%d KEYCODE=%d iKey=%d\n", (call_data->event.type == KeyRelease), iKeyState, kev->keycode, iKey);
- #endif
- -
- + if ((iKey >= 32 ) && (iKey <= 126) && (call_data->event.type == KeyRelease)) {
- + return;
- + }
- if (call_data->event.type == KeyRelease) {
- if (ConnectIDGetState (call_data->connect_id) != IS_CLOSED) {
- if ((kev->time - lastKeyPressedTime) < 500 && (!bIsDoInputOnly)) {
复制代码
或者从附件下载。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|