About this mod
Make SkyrimSE/AE supports IME(Input Method Editor). Mainly for Chinese players. Use ImGui + Win32 + IMM to do this.
- Requirements
- Permissions and credits
- Changelogs
A SKSE plugin that enables IME (Input Method Editor) support for SkyrimSE/AE, primarily aimed at Chinese players. This is achieved using ImGui, Win32, and IMM/TSF.
The mod essentially unlocks the OS IME, receiving and forwarding IME events and messages to the game. Consequently, it should also support other languages (such as Japanese, Korean, etc.). However, I'm uncertain if IME works with the same logic across different languages, so the composition and candidate windows for other languages may not function correctly.
SKSE 插件, 使 SkyrimSE/A E支持输入法(IME), 主要针对中国用户, 使用 ImGui + Win32 + IMM/TSF 实现。实际上mod只是解锁了系统的 IME, 并将其事件, 消息转发到游戏中, 因此, 应该支持韩语, 日语等输入法, 但是我 并不清楚其他语言的输入法如何工作, 因此其他语言的 composition 和 candidate 窗口可能不会正常工作.

Features
- Unlock System IME & Windows key;
- Render IME composition & candidate window by ImGui;
- ToolWindow(default F2 key) support sync and switch IME; Note: ToolWindow can pined in game, you can move it to right-bottom and pin it, just like os language bar;if you decrase Game Resolution, tool window may be can't found, To reset it position, you can go forward to Game install directory and delete file imgui.ini or the [Window][ToolWindow##SimpleIME] configuration section;
Why?
IME for the SkyrimSE game is unnecessary. But, if you installed SkyUI or other mods based on SkyUi/UIExtension, there may be a need to support Unicode characters. In one word, by the time you can: Search armor/spell/item/NPC with Unicode character in SkyUI(or other mods based on it).
基础游戏并不需要输入法, 但是如果安装了 SKyUI 或者其他任何基于游戏UI 的 mod, 可能会需要用来进行搜索。
简单来说:
使用此mod可以使得在 SkyUI以及任何基于游戏UI的mod支持unicode 字符输入。
Theme Config
Mod use ImThemes as theme provider(contains the themes.toml). Follow the ImThemes tutorial to add your self theme.
❗NOTE: YOU MUST PROVIDE THE themes.toml file.
Usage
- Use your os shortcut(in my case win + space) keys or the tool window (default key `F2`) to switch different IMEs.
- You must install your language font.
- check your input method's usage you using
- By config "Focus Manage" and choose "Temporary" to obtain the most compatibility with other mods
- 使用系统快捷键(win + 空格)或者ToolWindow (默认为 F2) 切换输入法切换不同的输入法
- 显而易见的, 必须安装具有中文支持的mod。
- 用法与系统的输入法相关
- 通过配置 "焦点管理" 并选择”临时“,以获取与其他 mod 的最大程度兼容。
The Focus means which window can receive keyboard message? If some mod modify game keyboard
setting and depend Windows message to work, you need to use "Temporary" focus manage to obtain compatibility
焦点是指哪个窗口可以接收键盘消息?如果某些模组修改了游戏键盘设置,并且依赖 Windows 消息才能工作,则需要使用“临时”焦点管理来获得兼容性。
How to implement?
- By default, game will lock the player keyboard input event. All other window can't receive any keyboard input event;
- Game window is a ANSI window. For some unicode character may can't receive(like emoji);
- In fact, you can Imagine this mod is a invisible input control and always capture keyboard focus.
- 默认情况下, 游戏会锁定键盘, 导致其他所有程序都无法读取键盘输入(也包括IME);
- 游戏窗口是 ANSI 窗口, 无法接受部分 unicode 字符(emoji)
- 实际上, mod 可以被认为是一个不可见的, 永远捕获键盘输入的输入框
Compatibility/Supports
- Should no compatibility issue. only hooks some functions that usually also hooked by other UI mod.
- May incompatibility with: sse-gui , must load after sse-gui;
- Supports SkyUi & all other mods based on it(like mod `WhereAreYou`) ;
- Not support other custom UI mod(dmenu, Modex). Because these mod has their self render & message handle logic, only if another mod support and load unicode font and handle `WM_CHAR` message.
- 应该不存在兼容性问题。仅挂接一些通常也由其他 UI 模组挂接的函数。
- 可能与 sse-gui不兼容
- 支持 SkyUI 和所有其他基于它的模组(如 `WhereAreYou` 模组);
- 不支持其他自定义 UI 模组(dmenu、Modex)。因为这些模块有自己的渲染和消息处理逻辑
Known Issue
- iFly can't listen english mode switch: iFly not send conversion mode message
For Other Mod Author
For other third-party mods, such as those implementing extended menus using ImGui, the simplest way to integrate with my IME mod is by invoking the AllowTextInput function:
void SosGui::AllowTextInput1(RE::ControlMap *controlMap, bool allow)
{
using func_t = decltype(&SosGui::AllowTextInput1);
REL::Relocation<func_t> func{RELOCATION_ID(67252, 68552)};
func(controlMap, allow);
}
This function effectively adds a text entry. Therefore, for ImGui implementations, you can utilize the ImGuiIO::WantTextInput field to determine when to call this function as input widgets gain or lose focus:
static bool fWantTextInput = false;
bool cWantTextInput = ImGui::GetIO().WantTextInput;
if (!fWantTextInput && cWantTextInput)
{
AllowTextInput(true);
}
else if (fWantTextInput && !cWantTextInput)
{
AllowTextInput(false);
}
fWantTextInput = cWantTextInput;
This approach ensures seamless compatibility between your mod's input handling and the IME mod's functionality.
Source Code
Github
Other
I'm a C++ & mod newcomer. So this mod may have some I not found bugs. If you meet a bug, report it, I will fix it quick soon.
By the way, the mod supports emoji input. However, the game font renderer is implemented by Scaleform GFX. In my Google results,
GFX SDK does not support emoji font. I found a GTA modder article about this: Our work on supporting emoji in Scaleform GFx
But, it's too complex......🥲
我是 C++ 和 mod 新手。因此这个 mod 可能有一些我没发现的错误。如果您发现错误, 请报告, 我会尽快修复。