找回密码
 初始化身份识别芯片
搜索
查看: 87|回复: 1

Fast Rendering(快速渲染)中文输入mod+补丁

[复制链接]

势力巨擘

滑稽

发表于 1 小时前 | 显示全部楼层 |阅读模式
原创Mod发布
快速渲染中文输入 1.0 / ID:FR_imefix
基于FR线程的中文输入mod,以及补丁版本
AI 生成代码
Mod作者: 神话的机枪射手
Mod类别: 功能
Mod适用版本: 0.98 
Mod更新时间: 2026-10-29
可安全移除: 是
依赖Mod: 其它 
其它依赖Mod: Fast_Rendering(快速渲染)
冲突Mod:
Mod下载地址:
网盘提取码 / 解压密码:
中文输入修复(FR)v1.0.0
给 Fast Rendering(FR) 渲染线程下的 Starsector 窗口补上中文输入。
没有 FR 不会运行
工作原理
  • mod 加载后另起线程,按进程号找到类名为 LWJGL、客户区最大的顶层窗口(即 FR 的游戏窗口)。
  • 用 SetWindowLongPtrW(GWLP_WNDPROC) 子类化窗口,原窗口过程照常链式调用。
  • 收到 WM_IME_COMPOSITION 且带 GCS_RESULTSTR 时,用 ImmGetCompositionStringW 取出上屏字符串。
  • 把字符串写入剪贴板,SetForegroundWindow 后模拟一次 Ctrl+V,再恢复剪贴板内容。
已知限制
  • 粘贴瞬间会短暂占用剪贴板(约 0.3 秒),随后恢复原内容;这 0.3 秒内如果别的程序写剪贴板,可能被覆盖。
  • 依赖目标输入框支持 Ctrl+V 粘贴。Starsector 标准文本框、LunaLib 文本框通常支持;极少数自绘输入框若拦截 Ctrl+V 可能无效。
  • 候选词窗口由输入法自己画(搜狗/微软拼音),本 mod 不做候选框。
  • 仅 Windows;仅对 FR 创建的窗口生效。
  • 游戏或 FR 大版本更新后,窗口线程模型或文本框行为可能变化,需要重新适配。

兼容性
跟其他中文输入mod冲突
许可证
本 mod 自己的代码以 Unlicense(公共领域)发布,见 LICENSE。 随包分发的 JNA 5.14.0 为 Apache-2.0 / LGPL-2.1 双许可,见 THIRD_PARTY.md。

以及一个不需要使用粘贴直接使用FR线程的补丁版本

中文输入独立补丁(Fast Rendering 专用)v1.0.0

这是什么
一个只修中文输入的小补丁,给已经能正常开 Fast Rendering(FR)的 Starsector 用。
原理
FR 把游戏窗口建在渲染线程 Thread-N-FR-Render 上,而 Windows 的输入法消息只会发到这个窗口线程。
本补丁做三件事:
  • 用 JNA 子类化真正的游戏窗口(不是 Swing 启动器),在渲染线程上处理 WM_IME_*;
  • 从 WM_IME_COMPOSITION 里用 ImmGetCompositionStringW(GCS_RESULTSTR) 取出已确认的文字;
  • 在 FR 的 com.genir.renderer.overrides.Sync.update(Z)V(游戏线程每帧调用)开头注入 ImeLayer.drain(),把文字写进当前获得焦点的 TextFieldAPI。
另外会在渲染线程做一次 COM STA 初始化(OleInitialize),避免搜狗等 TSF 输入法在 MSCTF.dll 里闪退。
安装
  • 确认 FR 已经能用:启动参数里有 -javaagent:fr.agent.jar,fr.jar 在 classpath 里。
  • 把 ime-agent.jar 和 jna-5.14.0.jar 复制到 starsector-core\。
  • 在启动参数文件(*.vmparams)里,紧跟 FR 的 -javaagent 之后加一行:
    -javaagent:ime-agent.jar
  • 启动游戏。

顺序很重要:fr.agent.jar 必须先加载,本补丁才能接管它建出来的窗口。
关闭 / 卸载
  • 临时关闭:加 -Dfixagent.imepoc=false;
  • 完全卸载:删掉上面两行参数,删除 ime-agent.jar、jna-5.14.0.jar 即可。
日志
starsector-core\fixagent-ime.log(UTF-8,单次运行最多 4 MB)。正常启动应看到:

[ime-poc-attach] imepoc starting, version=1.0.0 pid=...
[ime-poc-attach] subclassed hwnd=... oldProc=...
[Thread-6-FR-Render] wndproc msg=WM_IME_COMPOSITION ...
[Thread-6-FR-Render] RESULTSTR='你好' (queue=1)
[Thread-3] applied '你好' chars=2/2 ok=true text='你好'

控制台(-Dfixagent.imepoc.debug=true 时)还会打印 [imefix] sync drain hook: 1 等安装信息。
已知限制
  • 已确认的文字追加到文本框末尾,不是光标处;
  • 候选框由输入法自己画,没有和输入框对齐;
  • 只支持游戏标准的 TextFieldAPI 输入框,个别 mod 自绘的输入框可能不生效;
  • 依赖 FR 的 Sync.update(Z)V,FR 大版本升级后可能失效,需要重新适配。
本补丁会做什么
  • 磁盘上:只新增 ime-agent.jar、jna-5.14.0.jar 和一行 -javaagent 参数;
  • 运行时:通过 Java Agent 在内存里给 FR 的 Sync 和 TextFieldAPI 实现类插入少量字节码,不写回磁盘;
  • 在渲染线程调用 OleInitialize / CoInitializeEx(STA);
  • 不联网,不读写游戏目录以外的文件。

许可证
  • 本补丁代码:Unlicense(公共领域);
  • JNA 5.14.0:Apache-2.0 / LGPL-2.1;
  • 内含 ASM 9.1(BSD-3-Clause)的类文件。

补丁和mod使用一个就行,不要重复安装

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

势力巨擘

发表于 半小时前 | 显示全部楼层
诶我记得最新的快速渲染是1.0.5?
哈哈,觉得眼熟?这样的场景,此时此刻正头疼着每一个舰长。
下一个可能就是你!除非,你能做出人生中最重要的决定。(一阵慷慨激昂的音乐)
向所有人证明,你有追求大一统英仙座的决心和勇气!
加入左径/海盗/余晖。享受0%关税的贸易!享受不需要依赖船员的无人舰!把中立探险队当做油料补给!
成为走私犯!成为....余晖走狗!成为......英仙座赏金传奇(被悬赏的)!
*滑块验证:

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2026-10-29 18:20

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio | IP地址位置数据由纯真CZ88提供支持

快速回复 返回顶部 返回列表