存档

作者存档

Google Reader added Search!

2007年9月7日 没有评论

Nice feature, really.

标签:

Mozilla Leak Monitor

2007年9月6日 没有评论
标签:

TabIMSwitch 1.1.0.32

2007年9月4日 1 条评论

一边骂微软的输入法标准,一边还要继续完成我一直想做的几个feature,其中之一就是能够更加细致的控制输入法的状态,类似半角/全角的东西。

因为上文所说的原因,所以最后用了IMM,虽然功能不够多,而且不保证能够完全的控制微软拼音和日文Natural IME,但是基本上够用了。

接下来打算研究一下TSF,似乎有点意思。

标签:

标准太多是复杂的根源

2007年8月31日 没有评论

有感于微软的文字输入法的标准:

Windows 95/98/NT4: Advanced Input Method Manager
Windows 95-XP: IMM
Windows XP以上: Text Services Framework

Windows 2000兼容Windows 98的IMM架构,也有有限的TSF支持。
Windows XP下面默认使用的是TSF,IMM仍然可用,但是功能有限。

Vista下面?不知道,也许和XP差不多。

而且,TSF基于COM,如果我要用了这个模型的话,这可真是个大杂烩了。

也许搞定了之后,我可以有机会弄清楚当XPCOM和COM并存,程序会变成什么样子。

困惑

标签:

笔记本修复

2007年8月29日 1 条评论

最后还是找了一个电脑城的地方修了,灯管有一头烧掉了,换了一根灯管,¥160,保3个月。
在我的监视下面换的,看起来其他部件没有被换。
而且看到他们拆液晶屏的方式,根本没我想象的那么麻烦。

不过似乎还有点问题,屏幕下方比上方亮。
用某高工的话说,这叫做漏光(其实我当时听成了走光)。
也不算什么大不了问题,凑合着用吧。

标签:

笔记本屏幕挂掉了……

2007年8月28日 2 条评论

也许是所谓的高压板坏了,据说高压板换一个100块钱左右,但是去哪里换呢?去电脑城的话,看到众多的上当经历,比如笔记本被拆掉,配件被换掉之类的,已经不敢去了。打电话问DELL的技术支持,答案是让DELL修的话,肯定要把整个屏换掉,结果就是要1k左右的屏,加上数百元的邮寄费。

真tmd黑。

怎么办呢?难道要换一台机器?

标签:

再贴一次星运

2007年8月27日 6 条评论

2007/08/27 水瓶座 Aquarius (01/20 – 02/18)

⊙综合运势:★★★★
⊙爱情运势:★★★
⊙工作状况:★★★★
⊙理财投资:★★★
⊙健康指数:72%
⊙商谈指数:83%
⊙Lucky Color:黄色
⊙Lucky Number:1 
⊙速配星座:双子座

某商谈顺利通过,哦也。

不过笔记本挂了,似乎液晶屏有问题。

BTW:我其实不相信星运的,嗯。

标签:

Raymond Chen的简介

2007年8月26日 1 条评论

先推荐一下本月的TechNet Magzine文章:The Known DLLs Balancing Act。

请注意文章结束的地方,最后一行,关于Reymond Chen的介绍:

He has no idea what his T-shirt size is anymore.

标签:

曾经是……

2007年8月26日 1 条评论

今天偶然转到某人的live space上面看看,发现对于我的评价是:

曾经是有理想、有道德、有文化、有纪律的四有好青年……

我现在不是了么……

标签:

被微软的输入法打败了

2007年8月22日 1 条评论

在做TabIMSwitch的新版本的时候,彻底被微软的输入法体系搞郁闷了。

我现在有两个可用的Windows XP系统,一个是我的笔记本,XP Pro 中文版,一个是公司的机器,XP Pro英文版,两台机器都单独装了微软拼音2003(公司因为Office是英文,默认不带微软拼音;笔记本因为不愿用盗版,所以只装了Viewer,也要单独装微软拼音)。本来这个应该非常常见的情况,可是在测试TabIMSwitch的时候被彻底的搞郁闷了。

这个新版本的目的主要是为了解决smth上面有网友提出说不希望自动添加英文Locale。之前我做了一个TabIMSwitch 1.1.0.1的内部版本,这个在我的中文系统上面工作的很好。但是网友回复说仍然不能工作,后来调查之后发现可能是因为英文系统的缘故。然后果然在公司的英文XP上面重现了出来。从目前的情况来看,可能的结果就是在英文XP系统上面带有的微软拼音2003都无法支持,如果不想自动添加英文Locale的话。

造成这个问题的原因很有意思,说起来应该从TabIMSwitch的工作方式开始。

TabIMSwitch的工作机理很简单:TabIMSwitch由两个主要的部分,一个是前端的content\firefoxOverlay.xul及其带有的一批js文件,另一个就是用C++写成的XPCOM组件,位于src\tabimswitch目录下面。两者之间通过Firefox的XPConnect机制联系。XPCOM最初做的很简单,只是封装了一下Windows的KeyboardLayout的系列函数。当Firefox启动之后,会自动加载XPCOM组件和前端的xul文件,并且在xul当中进行必要的消息的hook。当TabIMSwitch发现当前的标签页发生了变化的时候,就会获取到Firefox当前的输入法状态,并将其存入到一个列表当中,然后从这个列表当中获取即将切换到的标签页的输入法(以前保存下来的),并且将其设置成Firefox的当前输入法。

问题在于,微软关于输入法的说明非常的零散,不过基本上围绕在Keyboard Layout和IME两节当中。根据文档的描述,微软拼音输入法和“中文-美式键盘”之间的区别就在于它们是不同的Keyboard Layout。因此,只要存下来这个Keyboard Layout就OK了。TabIMSwitch 1.0.*系列也是这么实现的。

但是就是这种简单的实现在英文版XP+微软拼音输入法上面不工作,经过跟踪之后发现,原因竟然在于,在这种环境下面微软拼音和“中文-美式键盘”之间是完全相同的:无论通过GetKeyboardLayout函数还是GetKeyboardLayoutName函数,得到的都是相同的Keyboard Layout。当时在1.0.*系列当中为了解决这个问题,就自动Load了一个04090409的Keyboard Layout,也就是“英文-美式键盘”,来避免和微软拼音的冲突。所以就有了前面网友提出的那个问题。

后来考虑是不是可以通过IME接口来对输入法进行更加细致的控制,结果非常无奈:似乎对于IME接口来说,微软拼音和“中文-美式键盘”也是相同的。我找到了微软MSDN当中提供的一个sample,揭示了IME接口的使用方式。但是就使这个示例程序,在我的英文XP下面也歇菜了。

目前只能说:完全被微软自己的两个东西搞疯掉了。

标签: