IMBlocker
English Description
Overview
IMBlocker is a mod that aims to provide complete IME features for Minecraft as well as slightly improve your typing experience.
Features
The major features and platform compatiblity of the mod are as follows:
- Automatically set the IME state based on current input context.
- Monitor the chat input and automatically set the temporary English state if command syntax is detected.
- Make candidate window be able to follow the caret position.
- In-game rendering of IME content.
| Feature | Windows | macOS | Linux (X11) | Linux (Wayland) |
|---|---|---|---|---|
| Auto State-Switching | Supported | Supported | Supported | Supported |
| Command Auto-EN | Supported | Supported | Supported | Supported |
| Caret Tracking | Supported | Supported | Supported | 26.1+ or HDR Mod |
| IngameIME | Supported | Unsupported | Unsupported | Unsupported |
Note: We recommend enabling the ingame IME only if your input method has display issues in exclusive fullscreen, and this feature will still be optional after 26.3 (requires Cloth Config to enable).
Special Workarounds
This mod includes following platform-specific workarounds:
- Prevents non-character keys being leaked to the game while candidates showing on macOS/Linux (<26.3).
- Allows characters to be typed into the game after calling
SDL_StopTextInput.
Compatibility with Custom-GUI Mods
IMBlocker provides complete IME features for third-party text widgets through a unified focus management system and a generic abstraction layer for widgets, along with Mixin technology. Mods listed below feature the same level of IME enhancements as vanilla:
- Roughly Enough Items
- EMI
- Axiom
- Replay Mod
- FTB Library
- Meteor Client
- LibGui
- Reese's Sodium Options
- BlockUI
- SuperMartijn642's Core Lib
- Notes
- Essential Mod*
- Armourer's Workshop
- ModernUI
- LDLib2
*On Fabric, you need to extract the file named "essential-<32-bit code>.jar" from the root directory of its mod JAR and only put this file into your mod folder.
If the mod you are using is not listed here and its input widgets cannot activate the IME after gaining focus, please use screen whitelist as a temporary solution and give feedback.
What Does It Offer after 26.1?
TL;DR IMBlocker's focus tracking is virtually precise, which is essential for setting the IME state. Additionally, this mod provides many customizable options and compatibility with third-party widgets, which are not practical to implement in vanilla code.
IMPORTANT: This mod might be essential for all modpack players after 26.3, regardless of their language. The reason is that custom-implemented text input widgets cannot be recognized by vanilla to notify the SDL backend when focused, while SDL_StopTextInput blocks all character input. If you're the developer of this kind of mods, we recommend only implementing basic SDL_StartTextInput and SDL_StopTextInput stuff and conditionally disable them if IMBlocker is present. A typical implementation looks like this:
......
import com.mojang.blaze3d.platform.TextInputManager;
public class MyTextInputWidget {
......
public void setFocused(boolean isFocused) {
......
TextInputManager.onTextInputFocusChange(isFocused);
}
}
For further technical support, please contact us on Discord or Github.
概述
IMBlocker 是一个致力于为 Minecraft 提供完整输入法支持并根据场景增强输入体验的模组。
功能
本模组当前包含的主要功能及跨平台支持情况如下:
- 自动根据当前输入上下文调整输入法的激活状态;
- 监测聊天栏文本是否为命令格式并自动切换临时中英文状态;
- 令输入法候选框能够实时跟踪文本光标;
- 游戏内渲染输入法 UI。
| 功能序号 | Windows | macOS | Linux (X11) | Linux (Wayland) |
|---|---|---|---|---|
| 1 | 完全支持 | 完全支持 | 完全支持 | 完全支持 |
| 2 | 完全支持 | 完全支持 | 完全支持 | 完全支持 |
| 3 | 完全支持 | 完全支持 | 完全支持 | 26.1+ 或 HDR Mod |
| 4 | 完全支持 | 不支持 | 不支持 | 不支持 |
注意:游戏内输入法仅推荐在独占全屏模式下输入法自身 UI 有显示问题时启用,此功能在 26.3 以后仍会保留为可选项,需通过 Cloth Config 开启。
特殊修复
本模组当前主要包含以下特定平台问题的修复:
- 修复 macOS/Linux 下候选词显示时控制按键泄漏至游戏的问题(<26.3);
- 修复 SDL 后端下
SDL_StopTextInput导致无法输入任何字符的问题。
与自定义界面模组的兼容性
本模组使用定制焦点管理系统以及通用组件抽象层配合 Mixin 技术对第三方模组内的自定义文本组件提供完整的输入法支持,目前以下模组拥有与原版相同级别的输入法增强:
- Roughly Enough Items
- EMI
- Axiom
- Replay Mod
- FTB Library
- Meteor Client
- LibGui
- Reese's Sodium Options
- BlockUI
- SuperMartijn642's Core Lib
- Notes
- Essential Mod*
- Armourer's Workshop
- ModernUI
- LDLib2
*在 Fabric 下使用此模组时需要手动使用压缩软件将其 JAR 根目录下名为“essential-<32位序列码>”的文件提取到模组文件夹并移除原模组文件
如果您使用的模组未在此列出且其中的输入框无法在获得焦点后激活输入法,请先将屏幕白名单用作临时方案并进行反馈。
对于 26.1+ 版本的作用
简而言之,IMBlocker 拥有近乎完全精准的焦点管理策略,正确的焦点状态是能够正确设置输入法状态的必要条件。同时,本模组还提供多种原版不便实现的可定制选项以及大规模第三方组件的兼容性。
重要信息:从 26.3 开始,所有大型整合包玩家无论使用何种语言都可能需要安装此模组,因为 SDL 禁用输入法的实现会阻止所有字符的输入,这些自定义界面的模组中的文本组件会因为原版无法识别其焦点而无法通知 SDL 启用输入。若您是此类模组的开发者,我们推荐在检测到 IMBlocker 不 存在时仅在文本组件焦点发生变化时调用基本的 SDL_StartTextInput 和 SDL_StopTextInput 函数,典型实现示例如下:
......
import com.mojang.blaze3d.platform.TextInputManager;
public class MyTextInputWidget {
......
public void setFocused(boolean isFocused) {
......
TextInputManager.onTextInputFocusChange(isFocused);
}
}
更多技术支持请在 Discord 或 Github 上与我们联系。
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 | ||||
| 2d ago | 1 |
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- Forge:添加 LDLib2 的兼容层
- 与操作系统绑定的配置项现在仅在对应平台上可见
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- Forge:添加 LDLib2 的兼容层
- 与操作系统绑定的配置项现在仅在对应平台上可见
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- Forge:添加 LDLib2 的兼容层
- 与操作系统绑定的配置项现在仅在对应平台上可见
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- Forge:添加 LDLib2 的兼容层
- 与操作系统绑定的配置项现在仅在对应平台上可见
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
- 跟进适配最新快照版本
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
- 跟进适配最新快照版本
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升了输入法渲染层的兼容性
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升了输入法渲染层的兼容性
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升了输入法渲染层的兼容性
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- macOS: 修复预编辑字符可能残留显示的问题
- 提升了输入法渲染层的兼容性
- 提升游戏窗口注入类的优先级以保证缩放值及时同步
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - LDLib2:计算文本光标位置时考虑矩阵变换产生的偏移
- 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题,移除额外缩放配置
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - LDLib2:计算文本光标位置时考虑矩阵变换产生的偏移
- 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题,移除额外缩放配置
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/1.21.9-1.21.11/Changelog_History.md)
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- Linux (X11):已实现候选框跟踪文本光标
- macOS:已实现候选框跟踪文本光标
- macOS:现在预编辑字符可以在游戏内显示
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- 原生兼容 LDLib2 模组
- 增加命令前缀正则表达式配置,可以加入“/”以外的命令前缀
- Windows:修复初始焦点状态可能不正确的问题
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- 至此,本模组所有计划内功能已全部实现,正式进入长期维护阶段**
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- Linux (X11):已实现候选框跟踪文本光标
- macOS:已实现候选框跟踪文本光标
- macOS:现在预编辑字符可以在游戏内显示
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- 原生兼容 LDLib2 模组
- 增加命令前缀正则表达式配置,可以加入“/”以外的命令前缀
- Windows:修复初始焦点状态可能不正确的问题
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- 至此,本模组所有计划内功能已全部实现,正式进入长期维护阶段**
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- Linux (X11):已实现候选框跟踪文本光标
- macOS:已实现候选框跟踪文本光标
- macOS:现在预编辑字符可以在游戏内显示
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- 原生兼容 LDLib2 模组
- 增加命令前缀正则表达式配置,可以加入“/”以外的命令前缀
- Windows:修复初始焦点状态可能不正确的问题
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- 至此,本模组所有计划内功能已全部实现,正式进入长期维护阶段**
## 新功能
- Linux (X11):使用原生系统函数控制输入法状态,不再需要配置命令
- Linux (X11):已实现候选框跟踪文本光标
- macOS:已实现候选框跟踪文本光标
- macOS:现在预编辑字符可以在游戏内显示
- 为中州韵输入法新增
RIME英文状态实现方式,注意事项: - Windows:需要将输入法安装目录添加至
PATH - macOS:需要从 Github 安装最新的 nightly build
- Linux:仅支持 fcitx5-rime,**ibus-rime 不受支持**
- 原生兼容 LDLib2 模组
- 增加命令前缀正则表达式配置,可以加入“/”以外的命令前缀
- Windows:修复初始焦点状态可能不正确的问题
- macOS:现在
DISABLE_IM英文状态实现方式可正常输入字符 - 完全修复部分平台高 DPI 缩放下候选框坐标不正确的问题
- 略微提升文本光标位置的计算精度
- 模拟字符定位焦点现在以黑名单形式与屏幕关联
- Reese's Sodium Options 的支持版本调整为 2.2.0+
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/master/Changelog_History.md)
- 至此,本模组所有计划内功能已全部实现,正式进入长期维护阶段**
- Windows: 增加回退 26.1 以前的预编辑风格的配置项
- LDLib2: 文本光标跟踪适配近期引入的平滑字体渲染器
[历史更新日志](https://github.com/reserveword/IMBlocker/blob/26.1%2B/Changelog_History.md)