(原) 影子输入法扩展:输入中文显示英文等

原创文章,请后转载,并注明出处。

使用影子输入法较长的时间,主要是它透明度高,可编辑。前两天看到一个XX输入法,输入时候可以显示对应的英文单词,于是想通过影子输入法来实现它。

下载即用,已含AutoHotkey

代码是AI写的,实现如下功能:

  1. 输入中文显示对应英文
  2. 输入字符播报
  3. 剪贴板文字翻译(中英均可)
  4. 翻译直接替换输入

以下相关文档也是AI写的。


影子输入法扩展功能说明

本项目在原版影子输入法(Yzime)基础上新增了一组扩展功能,核心实现位于 Yzime\Lib\YzExtend.ahk,相关设置集中在设置界面的 “扩展” 标签页。

运行环境要求:AutoHotkey v1(推荐 v1.1,32/64 位均可)。部分功能需要联网。


一、候选显示英文

开关:设置 → 扩展 → 勾选“候选显示英文”(即时生效)

  • 输入编码后,候选窗中每个字/词后面会附带对应的英文单词,方便快速查看。
  • 英文释义首次联网获取后会存入本地词库表(extend.e2c),同一词下次即时显示,无需再联网。
  • 选择英文:在候选状态下按 Shift + 数字键(如 Shift+1 选择第一个候选词的英文,Shift+0 对应第 10 个),选中的英文文本将直接上屏。
    • 注意:开启本功能后,候选状态下的 Shift+数字 被占用为“选择英文”,此时不再上屏 !@# 等符号;符号请在非候选状态下输入。
    • 若该候选词的英文释义尚未获取到(首次出现、还在联网查询中),按 Shift+数字 无效果。

二、选词发音

开关:设置 → 扩展 → 勾选“选词发音”

  • 选择字/词上屏后,自动朗读该词。
  • 采用“先上屏、后发音”的异步设计:发音不阻塞输入,连续快速选词时只朗读最后一次。
  • 相关设置项:
    • 发音语言:中文 / 英文——朗读候选附带的英文,还是朗读中文词本身。选“英文”时,若该词的英文释义尚未缓存(首次遇到),本次不发音。
    • 发音语速:-2 ~ 10,对应 SAPI 语音合成速率。
    • 发音保存到本地:勾选后,合成的语音会缓存为 WAV 文件(存于 Yzime\Data\TTS\),同一词再次发音时直接播放缓存,速度更快;取消勾选则不再读写本地缓存(旧文件需手动删除该目录清理)。
  • 首次运行会在后台预热语音引擎(约 3 秒),之后发音即时响应。

三、提示条停留

设置:设置 → 扩展 → “提示条停留”(秒)

  • 选词上屏后,候选提示条不再立即消失,而是继续停留所设秒数(0~10),便于继续查看候选内容。

四、剪贴板翻译(中英互译)

开关:设置 → 扩展 → 勾选“剪贴板翻译”(需要联网,使用有道翻译接口)

  • 复制文本后稍候,会在鼠标位置弹出翻译提示框,样式与候选窗一致:
    • 第一行:原: <被翻译的原文>(过长自动截断)
    • 第二行:译: <译文>
  • 自动识别语言方向:
    • 中文 → 英文:整句翻译。
    • 英文 → 中文:单个单词走词典接口;含空格的整句走句子翻译接口。
  • 支持长度上限约 500 字符;多行文本会自动归一化空白后再翻译。
  • 提示停留时间:设置 → 扩展 → “译提示停留”(1~30 秒)。

Ctrl+C+C 替换选中文本为译文

  1. 在可编辑的文本中选中一段文字并复制(第一次 Ctrl+C),等待译文提示出现;
  2. 保持选区不变,再次按 Ctrl+C(内容未变即视为第二次复制);
  3. 译文会自动粘贴,直接替换编辑器中选中的原文,提示框显示“译: …(已替换)”。

原理:将译文写入剪贴板后模拟一次 Ctrl+V,粘贴到当前选区。若目标应用不支持粘贴(如非编辑窗口),则仅剪贴板内容被替换为译文。替换动作有防回环保护,不会触发“译文再被翻译”的循环。

五、设置界面“扩展”标签页

设置窗口新增独立的 “扩展” 标签页,集中管理以上功能:

控件 说明
候选显示英文 开关,见第一节
选词发音 开关,见第二节
发音语言 中文 / 英文
提示条停留 选词后提示条停留秒数
发音语速 SAPI 语速 -2~10
剪贴板翻译 开关,见第四节
发音保存到本地 WAV 缓存开关
译提示停留 翻译提示框停留秒数
  • 勾选/修改即时生效,无需重启;关闭窗口时统一写入 Data\Yzime.ini,重开界面会回显已保存的值。

常见问题

  • 修改代码后不生效? 需要退出并重新运行 Yzime64.ahk(设置项本身即时生效,代码改动需重启)。
  • 没有发音? 确认系统装有对应语言的 SAPI 语音(Windows 一般自带“Microsoft Huihui / Microsoft Zira”等);查看 Yzime\Data\yzdbg.log 中 SPEAKINIT、VOICES 行确认引擎初始化情况。
  • 翻译无提示框? 确认已勾选“剪贴板翻译”且网络可达有道接口;可在 yzdbg.log 中查看 PROC / RUN / CLIPDONE 行定位问题。
  • Shift+数字打出符号而不是选英文? “候选显示英文”开启且处于候选状态时才会拦截 Shift+数字;非候选状态仍输入符号,属预期行为。