ä¸€è¾¹éª‚å¾®è½¯çš„è¾“å…¥æ³•æ ‡å‡†ï¼Œä¸€è¾¹è¿˜è¦ç»§ç»å®Œæˆæˆ‘一直想åšçš„å‡ ä¸ªfeature,其ä¸ä¹‹ä¸€å°±æ˜¯èƒ½å¤Ÿæ›´åŠ 细致的控制输入法的状æ€ï¼Œç±»ä¼¼åŠè§’/全角的东西。
å› ä¸ºä¸Šæ–‡æ‰€è¯´çš„åŽŸå› ï¼Œæ‰€ä»¥æœ€åŽç”¨äº†IMM,虽然功能ä¸å¤Ÿå¤šï¼Œè€Œä¸”ä¸ä¿è¯èƒ½å¤Ÿå®Œå…¨çš„控制微软拼音和日文Natural IME,但是基本上够用了。
接下æ¥æ‰“ç®—ç ”ç©¶ä¸€ä¸‹TSF,似乎有点æ„æ€ã€‚
标签:
有感于微软的文å—è¾“å…¥æ³•çš„æ ‡å‡†ï¼š
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并å˜ï¼Œç¨‹åºä¼šå˜æˆä»€ä¹ˆæ ·å。
标签:
在åš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下é¢ä¹Ÿæ‡èœäº†ã€‚
ç›®å‰åªèƒ½è¯´ï¼šå®Œå…¨è¢«å¾®è½¯è‡ªå·±çš„两个东西æžç–¯æŽ‰äº†ã€‚
标签:
TabIMSwitch被收录在addons.mozine.cn上é¢äº†ã€‚
http://addons.mozine.cn/firefox/610/
昨天被管ç†å‘˜æ·»åŠ 进去的,今天已ç»æœ‰äº†73下载é‡ï¼Œå’Œä¹‹å‰åœ¨googlecode上é¢çš„累积é‡å·®ä¸å¤šã€‚
hoho
标签:
接下æ¥å¯¹äºŽTabIMSwitch还有一些东西需è¦å®žçŽ°ï¼Œä¸€äº›æ˜¯çŽ°åœ¨ä¸å…·æœ‰çš„功能,一些是现在已知的一些问题。
- 计划当ä¸å 有很é‡è¦çš„比é‡çš„一个特性还没有实现:当焦点转æ¢åˆ°åœ°å€æ çš„æ—¶å€™ï¼Œæ— è®ºå½“å‰çš„输入法是什么,都需è¦è½¬æ¢æˆè‹±æ–‡è¾“入法。
- ç›®å‰ç¼ºå°‘å¿…è¦çš„垃圾回收机制,å¯èƒ½ä¼šæœ‰è½»å¾®çš„内å˜æ³„露(多少呢?大概打开一个tab页åå‡ ä¸ªå—节),需è¦åŠ 上。
- 需è¦ç”³è¯·ä¸€ä¸ªåˆé€‚的地方åšæ›´æ–°ã€‚(XPIå¯ä»¥æœ‰ä¸€ä¸ªâ€œæ›´æ–°URLâ€çš„选项,目å‰æŒ‡åˆ°äº†ä¸€ä¸ªä¸å˜åœ¨çš„地方)。
- 我很懒,所以希望å¯ä»¥æ ¹æ®URLçš„pattern(æ£åˆ™è¡¨è¾¾å¼æˆ–者通é…符)æ¥è‡ªåŠ¨å¯ç”¨æˆ–者ç¦ç”¨è¾“入法。(这个å¯èƒ½è¦äº›åŠŸå¤«å®žçŽ°ï¼‰ã€‚
大体上能够想得到的就这么多。还有就是找一个托管的地方把代ç 放上去,æ£åœ¨è€ƒè™‘sourceforge还是google code……
update:
最åŽé€‰å®šä½¿ç”¨Google Codeï¼ŒåŽŸå› ä¹‹ä¸€æ˜¯æœ‰äººè¯´Google Codeèµ·æ¥æ¯”较容易,ä¸åƒsourceforge需è¦å¡«ä¸€å¤§å †çš„è¡¨æ ¼ï¼›åŽŸå› ä¹‹äºŒæ˜¯å¯¹äºŽGoogle的好感。
TabIMSwitch将使用BSD Lisenceå‘布,ä¸ä½¿ç”¨GPLçš„åŽŸå› å¯ä»¥å†™ä¸€ç¯‡å¾ˆé•¿çš„blog,这里地方太å°ï¼Œå†™ä¸ä¸‹ã€‚
项目主页:http://tabimswitch.googlecode.com
我期望当ä¸çš„å°ä¸œè¥¿ç»ˆäºŽå¯ä»¥å·¥ä½œäº†ï¼Œå› 为目å‰åªåœ¨æˆ‘çš„XP SP2+FF2.0上é¢æµ‹è¯•é€šè¿‡ï¼Œè€Œä¸”我的两个FF版本一个干净的什么都没有,一个æ’件æˆå †ï¼Œä¸æ•¢ä¿è¯å…¼å®¹æ€§ï¼Œå…ˆæš‚时带ç€ä¸€ä¸ªAlpha好了。用Firefox并且在Windows下é¢çš„朋å‹ä»¬å¸®æˆ‘测试一下。
å¦‚æžœä½ å·²ç»åœ¨ä½¿ç”¨Firefox了,å¯ä»¥ç‚¹å‡»å®‰è£…æ’件。安装并é‡å¯Firefox之åŽï¼Œåœ¨åœ°å€æ 输入
chrome://tabimswitch/content/testing.xul
然åŽå›žè½¦ï¼Œä¼šçœ‹åˆ°ä¸€ä¸ªå¾ˆç®€å•çš„页é¢ï¼Œè¿™ä¸ªé¡µé¢æ˜¯ç”¨æ¥æ£€æµ‹åŽå°çš„模å—是å¦æ£ç¡®çš„注册给了Firefox。点击上é¢çš„“Show currentâ€ï¼Œå¦‚果弹出æ¥è¿™æ ·ä¸€ä¸ªçª—å£ï¼Œé‚£ä¹ˆè¡¨æ˜Žè¿™ä¸ªä¸œè¥¿åŸºæœ¬å¯ä»¥workHTMLäº†ï¼Œå¦‚æžœä½ ç¢°å·§å’Œæˆ‘ä¸€æ ·åœ¨ç”¨å¾®è½¯æ‹¼éŸ³ï¼Œç‚¹ç‚¹å¦å¤–两个试试看好了。
接下æ¥ä½ 需è¦åšçš„,就是尽情的在å„ä¸ªæ ‡ç¾é¡µä¹‹é—´åˆ‡æ¢ï¼Œç„¶åŽæ„Ÿå—一下ä¸åŒçš„æ ‡ç¾é¡µèƒ½å¤Ÿå…·æœ‰ä¸åŒçš„输入法的好处å§ã€‚
如果é‡åˆ°ä»€ä¹ˆbug,或者有什么新的建议,在这里留言,或者å‘信到下é¢ä¸¤ä¸ªé‚®ç®±ï¼š
zhangc AT ustc.edu
ftofficer.zhangc AT gmail.com
åžƒåœ¾é‚®ä»¶å¾ˆå¤šï¼Œæ‰€ä»¥æ ‡é¢˜è¦å®¹æ˜“ç†è§£ä¸€ç‚¹â€¦â€¦
OK,这也算是我曾ç»å†™è¿‡çš„帖åçš„åŽç»å§ã€‚
标签: