Files
msime-windows/windows
fanlusky 37550e6cc0 fix(windows): Caps Lock 开启时切换为英文标点模式
#771 在 Caps Lock 下把空闲时的标点键直接交给宿主,但不改标点状态,
悬浮工具栏和语言栏仍显示中文标点;它还绕过了「始终中文」标点锁定,
用户也无法在 Caps Lock 下手动改回中文标点。

改为让 Caps Lock 参与「标点跟随中英文模式」的规则:开启时标点切到英文,
关闭时按当前中英文模式重算。标点锁定仍然优先,手动切换不经过这条规则,
因此 Caps Lock 下仍可用 Ctrl+. 或工具栏改回中文标点。按键路径和 Server
的 CapsLockChanged 广播都会触发同步,只在 Caps Lock 状态真正变化时重算,
重复上报不会冲掉手动切换。延迟按键队列的影子标点状态同步更新。
2026-10-11 00:46:52 +08:00
..

windows —— TSF 文本服务

水杉输入法在 Windows 上的前端:一个纯 TSF 方案的文本服务 DLL,注入宿主进程,负责按键预判、焦点与线程归属、composition 的 edit session 写入,以及与 Server 之间的命名管道协议。候选窗、工具栏、设置页和实际的候选计算都在 ../server/,本目录只做宿主适配。

产品介绍、安装和功能说明见仓库根目录的 README;本目录的代码地图、TSF/COM 硬约定和改动要求见 AGENTS.md。

构建

从仓库根目录配置,源码目录是本目录:

cmake -S windows -B windows/build -A x64 `
  -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" `
  -DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build windows/build --config Release --parallel
ctest --test-dir windows/build -C Release --output-on-failure

Win32 用 -A Win32 和 x86-windows-static;安装包两种架构都要。scripts/ 下是本机开发用的生成、构建、注册和签名脚本,从本目录运行。

引擎契约来自 ../engine/contracts/,是本仓的目录,普通检出就有。TSF 只引用这些头文件,不链接引擎运行库。