User:Alvinhochun/Localization/IME

From ReactOS Wiki
Jump to: navigation, search

See also: CORE-9080

IME stands for "Input Method Editor".

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 Framework (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:

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

TODO: Sort and group things in a better way...