免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1099 | 回复: 0
打印 上一主题 下一主题

Fix SeaMonkey/Firefox 与紫光拼音输入法的兼容问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-06 14:55 |只看该作者 |倒序浏览

                    
Fix SeaMonkey/Firefox 与紫光拼音输入法的兼容问题
[color="#ff0000"]Update: 原来这里提供的 firefox binary 是用 VC 7.1 编译的, 有人反映说退出时有时候会有错误. 因此现在重新用 vc 6 编译了一下. 下面的连接已更新. Thanks. 03/07/2006
这个问题在 Gecko 1.8 出来后就一直存在了. 主要原因是 Gecko 1.8 的 nsWindow.cpp 中的 nsWindow::OnKeyDown
方法为了兼容几个日文的输入法改了一大堆. 最后变成了这样: 只要有+-/*\.,=;`'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
这些键 WM_KEYDOWN 了,
不管是否后续会有 WM_CHAR 或者 WM_IME_CHAR, 都会产生一个NS_KEY_PRESS event. 本来也是很正常的事.
可是紫光偏偏在中文输入模式下按 01234567890;',./`-=\
这些键的时候在该产生的 WM_KEYDOWN, WM_CHAR, WM_KEYUP 序列之前还会有一个 WM_KEYDOWN, WM_KEYUP 序列.
对于通常的程序这不构成问题, 这一对消息会被 ignore 的. 但是在 Gecko 1.8 这里就出问题了, 这一对消息产生了一个额外的
NS_KEY_PRESS event, 于是我们就可以看到一下输入两个符号的现象了.
严格说来, 很难说这是谁的问题. Windows 也不存在一个标准说怎么样的 WM 序列才是正确的. 反正就是不兼容了. 紫光没有源码,
所以只好来改 Gecko 了.
fix 很简单:
bash-2.05b$ diff -u widget/src/windows/nsWindow.cpp
widget/src/windows/nsWindow.cpp.orig
--- widget/src/windows/nsWindow.cpp     2006-02-10 11:22:20.000000000 +0800
+++ widget/src/windows/nsWindow.cpp.orig        2006-02-10 11:24:30.000000000
+0800
@@ -3578,7 +3578,7 @@
       }
   }
-  if (asciiKey && !(gotMsg && msg.message == WM_KEYUP))
+  if (asciiKey)
     DispatchKeyEvent(NS_KEY_PRESS, asciiKey, 0, aKeyData, extraFlags);
   else
     DispatchKeyEvent(NS_KEY_PRESS, 0, virtualKeyCode, aKeyData, extraFlags);
这里有编译好的 binary:
For SeaMonkey 1.0:   
gkwidget.zip
解压后的 gkwidget.dll, 放到 系统盘\Program Files\Common
Files\mozilla.org\GRE\1.8.0.1_xxxxx\components\ 下覆盖同名文件.
For FireFox 1.5.0.1:   
firefox.zip
解压后的 firefox.exe 直接覆盖 Firefox 安装目录下的同名文件即可.
有什么问题或者建议请 mail 到 holly.lee
(at) gmail.com. Thanks for support.
.
还得做个声明. 这里提供 binary 只是为了方便大家, 我并不想 fork 也不想做 distribution. Mozilla
那帮人是否会 merge 进去我也并不关心. 所以请勿对格式或者文件或者下载或者别的什么横挑鼻子竖挑眼. 妈的国内就是有这么一帮从没见他们
contribute 过代码却成天以卫道士自居的人. 自以为是开源英雄了? 笑话. 老子 contribute to open source
projects 的时候估计他们还没上小学吧.
一笑.
原文地址:http://www.jsfsoft.com/temp/Fix.html
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7367/showart_96040.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP