v2.0.3 · 修复试听画面不跟随、输入法自检误报
v2.0.3 · 修复试听画面不跟随、输入法自检误报
修复:试听时卷帘画面跟不上声音
现象:声音正常往前走,卷帘的画面却不跟着走,播放头很快跑出可视范围。
进度条右边的时间数字和声音是对得上的 —— 问题只在画面。
原因:卷帘的自动跟随只在 Roll.IsPlaying = true 时才生效,
而这个标志只在演奏分支里设置过,试听分支从来没设。所以试听时视口一次都不滚动。
改法:试听开始设 IsPlaying = true,停止时按当前是否在演奏复位。
附带对齐。 卷帘的时间轴比谱面末音长一点(末尾留了右键加音的余量),
而试听时钟走的是谱面时间。两者原来按同一个比例画,播放头会带约 2% 的偏差,
越到后面越明显。现在试听开始时按「谱面末音 ÷ 卷帘总长」换算一次,播放头与音符严格对齐。
修复:输入法自检误报
现象:键盘布局是中文、但按 Shift 切到英文时,自检打叉。其实这个状态按键是直达游戏的。
原因:旧实现只看键盘布局的 LANGID,是中文/日文就一律判不通过。
但「布局」和「输入法当前是中文还是英文」是两件事。
改法:布局是中日韩时,再读输入法的真实状态。
| 状态 | 结果 |
|---|---|
| 输入法关着 | 通过(英文直通) |
| 输入法开着但英文/半角模式 | 通过,并显示「简体中文布局已切英文模式,按键直达」 |
| 输入法开着且中文/假名状态 | 不通过,提示按 Shift 或 Ctrl+空格 切英文 |
| 读不到状态 | 仍然提醒确认,但不假装知道结果 |
开关状态用 WM_IME_CONTROL / IMC_GETOPENSTATUS 跨进程查询(最可靠,不依赖本进程的输入法上下文),
失败再退回 ImmGetContext。
验证
- 输入法判定:38 项用例全通过。覆盖简中/繁中/日文/韩文 ×(开+英文模式 / 关 / 开+中文模式 /
读不到转换模式 / 读不到开关状态),以及英文布局。 - 本机实测:布局 0x0804(简体中文)+ 英文模式 → 通过,界面显示绿灯与新文案。
- 缺音修复与 MIDI 设备接入的回归全部重跑:漏音 0、零时长按键 0、与 v2.0.1 基线 15 组时序完全一致。
下载
HarpAutoPlayer-win-x64.zip。解压后双击 HarpAutoPlayer.exe。单文件,不需要安装 .NET。