User:Alvinhochun/Localization/IME
See also: CORE-9080
IME stands for "Input Method Editor".
Contents
IME Systems
There are two systems for IME under Windows.
Input Method Manager (IMM)
See also: /IMM
IMM is a thing since Windows 95. Not sure about Windows 3.1, but who cares? :P For 95, 98, NT 4 and ME, it is only available in East Asian versions, but since 2000 it is available for all versions (but only when "East Asian language support" is installed via intl.cpl
.)
Throughout 95 and XP (and probably 2003 too), a tool called "通用輸入法編輯工具" (uimetool.exe
) (there are differences between versions, but I will mainly focus on the one on XP) is available for generating custom IMEs from text files containing input mappings.
These input methods are mainly DLL files renamed with file extension .ime
.
Windows 8 may have already blocked IMM IMEs, or at least in Windows store apps mode.
TODO: More
Active Input Method Manager (AIMM)
From MSDN [1]:
Active Input Method Manager (IMM) provides limited Asian character input support on non-Asian versions of Windows 95, Windows 98, and Microsoft Windows NT 4.0.
Also:
On Asian language versions of Microsoft Windows NT 4.0 and Windows 95 or later, Active IMM simply works as a wrapper to the native IMM system.
Text Services Frammework (TSF)
TSF (also called "Cicero") is the newer service for text input since XP (a redistributable seems to be available for 2000.) It is more than IMEs since it also support voice recognition and ink recognition input. It is implemented via COM.
In XP input.cpl
there are two options related to "advanced text services":
- Extend support of advanced text services to all programs - Appears to enable
system-wide TSF support instead of IMM. There appears to be a compatibility layer which allows IMM to be used via TSF,CUAS. TODO: Vertify? - Turn off advanced text services - Seems to disable TSF completely, but for unknown reasons the language bar is also disabled (as stated in the description) and there isn't any icons on the system tray which indicates the current keyboard layout (which is available in 2000). Though if you switch the layouts using keyboard shortcuts (Alt + Shift and Ctrl + Shift), you can still use different keyboard layouts and IMEs.
Since Vista, TSF is enabled system-wide. IMM IMEs can still be used though (probably via a compatibility layer similar to above, CUAS.)
A text service in TSF can be called TIP, which stands for Text Input Processor.
TSF in Vista has more functionality than TSF 1.0 in XP.
TODO: More
Cicero Unaware Application Support (CUAS)
CUAS is a compatibility layer for non TSF-aware applications to use TIPs. It is available since XP SP1, but seems to be disabled in XP x64 and Server 2003 in the way that there is no such option in input.cpl
.
Somehow related: Apparently, ImmDisableTextFrameService
is available in XP to disable TSF, but is removed in Vista.
TODO: More
IME Indicators
Before XP, the current keyboard layout or IME is indicated by a system tray icon. IMEs can create their own windows for more indicators (e.g. the status window for old IMEs, "language bar" of New Phonetic.)
Starting from XP, TSF hosts (is this accurate?) a Language Bar on the task bar (shell extension msutb.dll
, CLSID: 540D8A8B-1C3F-4E32-8132-530F6A502090
) to show the current keyboard or IME, and there is no longer an icon on the system tray. IMM input methods can still create their own windows, while TSF TIPs will integrate their options onto the Language Bar. (It may be possible for some IMM input methods to integrate onto the Language Bar, but it is not simple at all.) The Language Bar can be floating, or otherwise docked onto the taskbar where it can align to the right of the window list, left of the system tray.
Starting from 8, the indicator seems to have gone back to the system tray, with one icon indicating the current layout / IME, and another indicating the IME status (if any). I don't have Windows 8 ATM so I cannot really see it myself.
Relationship with MS Office
Various versions of Office has new IME versions bundled with them. It also seems that installing Office may change some part of the system-wide IME functionality, but I am not sure about that.
Certain versions are available for download separately:
- Office IME 2010 (supports XP SP3/2003 ~ 7/2008) https://www.microsoft.com/en-US/download/details.aspx?id=30390
- Office IME 2003 (supports 2000/XP/2003) https://www.microsoft.com/en-US/download/details.aspx?id=9801
ctfmon.exe
This process should be closely related to IMEs since XP. Killing it should stop IMEs from working properly under XP. However, on my current Windows 7 it is strangely not running so I cannot really tell. (It could be related to the fact that I installed Office 2013 and Office 2010, so I may need to check a fresh Windows 7 install.)
A Microsoft Support article [2] mentions that it comes with Office XP, and is for the Alternative User Input Text Input Processor (TIP) and the Microsoft Office Language Bar. However, when I am using XP SP3 with no updates and Office ctfmon.exe
is also here, so that might not be accurate.
Additional Resources
Windows 98 and 2003 DDK contains sample IMM IME code.
Two documents about IMM are included in the Windows 98 DDK (listed under See Also.)
immdev.h
is required for building IMM IMEs. (Win98 DDK seems to still have it combined with imm.h
though.)
References
See Also
- TSF writeup by MSPinyin dev (SC) http://blog.csdn.net/MSPinyin/article/details/6137709
- Installing IMEs (IMM and TSF) (SC) http://blog.csdn.net/mspinyin/article/details/6141599
- Win32 Multilingual IME Overview for IME Development (should be in 98 DDK, no direct link ATM)
- Win32 Multilingual IME Application Programming Interface (should be in 98 DDK, no direct link ATM)
- TSF Aware (MSDN Blog) (EN) http://blogs.msdn.com/b/tsfaware/
- IMM writeup - IME输入法编程心得 (SC) http://www.cnblogs.com/freedomshe/archive/2012/11/30/ime_learning.html
- IMM writeup - 我的win32 输入法编程心得 (SC) https://code.google.com/p/windows-config/wiki/Win32IME
- windows-chewing TSF blog entry (TC) http://pcmanx.blogspot.tw/2013/09/windows.html
- IMM writeup - 输入法(IME)实现原理 (SC) http://blog.sina.com.cn/s/blog_56a388c20100004u.html
- IMM - A Typing Program Sample based on Win32 Multilingual IME (EN) http://input.foruto.com/IME/Windows/IME_PROGRAMMING/IME/
- TSF - A Typing Program Sample based on TSF (Text Service Framework) (EN) http://input.foruto.com/IME/Windows/IME_PROGRAMMING/TSF/index.html
- Japanese IME Training (EN) http://wenku.baidu.com/view/7d9abe83e53a580216fcfe8f.html
- History of Windows Input Method - TSF を使う (1) - Windows Input Method の歴史 (JP) http://nyaruru.hatenablog.com/entry/20070309/p1
TODO: Sort and group things in a better way...