Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ChineseInputPlus
0.5.1 版中文输入:菜单输入框支持输入法组合、Ctrl+V 粘贴、去除强制大写;聊天框强制开启 IME,支持中/日/韩等任意输入法语言。
| Last updated | 6 hours ago |
| Total downloads | 32 |
| Total rating | 0 |
| Categories | Quality Of Life Client-side Server-side AI Generated Misc Mods |
| Dependency string | StarrySkyandYears-ChineseInputPlus-2.1.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
REPO Chinese Input Plus(原「聊天框可输入中文」的 0.5.1 重写版)
BepInEx 5 插件,解决 0.5.1 下菜单输入框(房间名、玩家名、存档名、密码)无法输入中文、不能粘贴、强制大写的问题。
---
0.5.1 变了什么,原版为什么不能用
| 位置 | 0.5.1 现状 | 原版 ChineseInput 1.0.0 |
|---|---|---|
| 聊天框 | 已换成 Input System 原生 IME:ChatManager.OnCompositionChange、compositionString、OnTextInput,还有原生 ChatPasteLogic(Ctrl+V) |
仍用旧版 Input.inputString 重写 ChatManager.Update,且 Prefix 返回 false 直接跳过游戏状态机 —— 在 0.5.1 上会把聊天顶坏(打不开/发不出) |
| 菜单输入框 | 仍用旧版 Input.inputString,不读 IME 组合串,且 upperOnly 强制大写 |
接管了 Update,思路正确,但把聊天的补丁一起带上了 |
| 输入框激活计时 | MenuManager.TextInputActive() 每帧刷新 0.1s 计时器 |
跳过原版 Update 时没有刷新 → 长按输入法组合时输入框可能被判为“无输入” |
---
本版做了什么
只处理菜单输入框,聊天完全交给游戏本体:
- 输入法组合显示:组合期间把
已有文本 + Input.compositionString显示到textCurrent,候选框跟随光标(Input.compositionCursorPos),并跳过原版 Update,避免拼音字母上屏; - 提交处理:组合结束的那一帧还原基础文本,交回原版把
Input.inputString里已提交的中文追加进去; - Ctrl+V 粘贴:自动去掉控制字符与换行,并遵守每个输入框自己的
maxLength; - 去掉强制大写:
upperOnly = false(Start 与每帧双重保险); - 不再抢聊天:
ChatManager一行不碰; - 输入框计时刷新:接管期间主动调用
MenuManager.TextInputActive(),长组合不会掉焦点; - 输入法按需开启:没有菜单输入框激活时自动
imeCompositionMode = Auto,避免和聊天输入法冲突。
启动日志会打印字段探测与聊天原生能力:
\[中文输入] 字段探测:textCurrent=OK, upperOnly=OK, maxLength=OK, textMain=OK, InputTextSet=OK, textInputActive=OK
\[中文输入] 聊天框原生支持:IME=True, 粘贴=True(本插件不接管聊天)。
字段缺失时对应功能自动跳过,不会刷异常。
---
2.1.0:聊天框输入法修复
0.5.1 的 ChatManager.BindKeyboard 只在 OnEnable / 键盘设备变化 时调用一次,那时聊天状态是 Inactive,于是 Keyboard.SetIMEEnabled(false);之后打开聊天框再也没人把 IME 打开 —— 聊天框打不出中文(以及日文、韩文等任何 IME 语言)。本插件之前还会在没有菜单输入框时把 Input.imeCompositionMode 重置为 Auto,进一步把聊天框的组合顶掉。
2.1.0 改为统一管理输入法状态:
| 状态 | 行为 |
|---|---|
| 菜单输入框激活 | 开 IME(旧版 imeCompositionMode = On + InputSystem SetIMEEnabled(true)) |
| 聊天框激活 | 同上,强制开 IME(修复聊天框无法组合) |
| 都不在输入 | 关 IME(Auto / SetIMEEnabled(false)) |
- 支持任意 IME 语言:走的是系统组合串与 Input System 的
onTextInput,不针对中文写死; - 配置
2. 输入 / 聊天框输入法支持(默认开)可单独关闭; - 聊天框的粘贴仍用游戏原生
ChatPasteLogic,本插件不接管聊天状态机。
安装
BepInEx/plugins/ChineseInputPlus/ChineseInputPlus.dll
依赖:BepInEx 5.4.21+;游戏 0.5.1。
配置
BepInEx/config/xingKong.ChineseInputPlus.cfg:
| 配置 | 默认 | 说明 |
|---|---|---|
1. 通用 / 启用 |
开 | 总开关(只影响菜单输入框) |
2. 输入 / 启用输入法组合 |
开 | 拼音/日文/韩文输入法组合与提交;关掉后只能粘贴 |
2. 输入 / Ctrl+V 粘贴 |
开 | 菜单输入框粘贴(自动清理换行/控制符) |
2. 输入 / 去掉强制大写 |
开 | 保留大小写,也是输入汉字的前提 |
---
验证方式
- 进游戏 → 大厅 → 修改房间名/玩家名;
- 切到中文输入法,输入拼音,应看到候选框跟随文本,组合期间不出现散落的拼音字母;
- 选词后应正确落到输入框;
Ctrl+V粘贴一段中文,应能完整粘贴且不超过长度上限。
如果选词后没有文字落下(少数输入法只在 composition 里给结果),把日志发我,我改成“提交帧取最后一帧 composition”的策略。
---
从源码构建
dotnet build ChineseInputPlus.csproj -c Release -p:RepoDir="D:\\steam\\steamapps\\common\\REPO"