外观里行内预编辑与候选窗预编辑各加一个「双拼显示转换后的全拼」开关,默认关闭。 开启后在双拼方案下:行内原始按键显示不带分词符号的全拼,拼音分词显示带分词符号的 全拼;候选窗显示带分词符号的全拼。 - 引擎新增 get_shuangpin_preedit_forms,同时给出原串切分与全拼切分,不受 shuangpin_preedit_mode 影响。 - 原始按键样式下 TSF 不等 Server 回包,开关开启且为双拼时 Server 下发的实际样式 改为 pinyin,回包里再按用户样式去掉分词符号;换方案时重新下发。 - 转换后字母数与按键不再对应,Server 在预编辑末尾附光标映射表 (engine/contracts/preedit_caret_map.h),DLL 用它定位光标和处理方向键, 无表或长度不符时回落到原有字母映射。
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 只引用这些头文件,不链接引擎运行库。