Skip to content

v2.0.3 · 修复试听画面不跟随、输入法自检误报

Choose a tag to compare

@ChickenD233 ChickenD233 released this 13 Sep 09:20
· 4 commits to main since this release

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。