受够了搜狗输入法。
弹窗广告铺天盖地,关都关不掉——关闭按钮小得跟蚂蚁似的,点歪了直接弹出一整个浏览器窗口。这还不算完,用着用着发现电脑上莫名其妙多了一堆根本没装过的软件:XX壁纸、XX浏览器、XX安全卫士……我保证不是我装的,我绝对没有点过任何"安装"按钮。搜狗在后台一声不吭就给你塞进来,跟小偷没什么两样。
这种流氓行径必须谴责。一个输入法而已,凭什么监听你的键盘、扫描你的硬盘、把你的输入习惯上传到它们服务器?凭什么弹广告、装全家桶?
于是就有了这个项目——一个极简的拼音输入法,开源,不需要联网,隐私完全可控。没有广告,没有后台,没有全家桶,更没有藏在角落里的"推荐安装"。核心代码一千行出头,无任何第三方库依赖,干净透明,每一行都看得见。
功能上也没含糊:支持全拼/简拼、模糊音(z/zh、c/ch、s/sh、n/l、f/h、en/eng、in/ing)、繁简体一键切换(2000+ 字符映射 + 词汇级消歧 + 两岸 IT 术语差异)、用户自定义词库、词频自动学习、DP 拼音分割(输入 haiyoumeiyou 自动拆成「还有没有」)、多皮肤配色、候选词数量可调……该有的都有。
一句话:我的输入法,我做主。
- 零联网: 不联网、不上传、不收集隐私
- 零广告: 没有弹窗,没有推广,永远不会有
- 零捆绑: 不安装任何第三方软件
- 代码可审计: 开源,核心代码一千余行,每个人都能看
- 全拼 / 简拼: 支持完整拼音和首字母缩写(
nh→ 你好) - DP 拼音分割: 输入长串拼音自动拆成词组(
haiyoumeiyou→ 还有没有) - 内置词库: 基于 rime-ice 词典,46,000+ 单字,540,000+ 词组,480,000+ 简拼
- 用户词库: 自学习,自动记录选词频率,越用越顺手
- 词频动态调整: 每次选择自动 +1 频率,下次优先显示
- 预设皮肤: 6 款配色(默认浅灰、简约白、深邃黑、护眼绿、暖米黄、清爽蓝)
- 自定义配色: 通过取色器自由选择主色调,自动生成整套配色
- 候选词数量: 5-9 个可调
- 字体大小: 12-36px 可调
- 横排 / 竖排: 候选框自由切换
- 微软雅黑: 设置界面统一使用微软雅黑字体
- 模糊音: 支持 7 组模糊音(z/zh、c/ch、s/sh、n/l、f/h、en/eng、in/ing)
- 繁简体转换: 2000+ 字符映射 + 180 词汇级消歧 + 40 两岸 IT 术语
- 一简对多繁智能消歧(如「发」→「發/髮」、「后」→「後/后」)
- 最长词匹配优先策略
- 智能拼音纠错: 自动识别常见拼写错误
- 中文标点: 自动转换
,。!?——「」 - 设置窗口: 纯 Win32 手写 UI,无资源文件依赖
- 用户词典管理: 可视化增删改查
- UIAutomation 光标检测: 精准定位文本输入光标,候选框绝不挡字
- PageUp / PageDown 翻页: 除了
-/=,也支持 PageUp/PageDown - ⚙ 设置按钮: 候选框上可直接点击齿轮图标打开设置
- Windows 7+
- Visual Studio 2012+
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
cd build && PinyinIME.exe在 VS2012 Developer Command Prompt 中:
cd D:\codes\github\InputMethod
build.bat编译产出一个 PinyinIME.exe,静态链接 CRT,无需安装任何运行时,拷贝到哪跑到哪。
- 运行
PinyinIME.exe - 按 右 Shift 切换中英文模式
- 中文模式下输入拼音:
- 按 空格 确认第一个候选
- 按 数字 1-9 选择对应候选
- 按 - / 或 PageUp / PageDown 翻页
- 按 Backspace 删除最后一个字母
- 按 Escape 清空输入
- 点击 ⚙ 图标打开设置
- 再按 右 Shift 切回英文模式
| 文件 | 行数 | 说明 |
|---|---|---|
main.cpp |
~1180 | 主程序:键盘钩子、拼音引擎、候选窗口、文本注入、UIA 光标检测、拼音分割 |
settings.h |
~870 | 设置系统:设置窗口 UI、皮肤管理、用户词典对话框 |
s2t_data.h |
~810 | 简繁转换:2000+ 字符映射 + 词汇消歧 + 两岸 IT 术语 |
dictionary.h |
~80 | 词库加载器:从 TSV 文件加载单字 + 词组 + 简拼 |
CMakeLists.txt |
~85 | CMake 构建脚本 |
build.bat |
~40 | 一键编译脚本 |
convert_rime_dicts.py |
- | Python 词典转换脚本:从 rime-ice 词库生成 PinyinIME 格式 |
rime-ice/ |
- | rime-ice 词库(git submodule) |
user.dict |
- | 用户自学习词库(运行时自动生成) |
┌───────────────────────────────────────────────────┐
│ WinMain (消息循环) │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ KeyboardHook │ │ CandidateWin │ │
│ │ WH_KEYBOARD_LL│ │ WS_POPUP │ │
│ │ + 键盘映射 │ │ + GDI 自绘 │ │
│ └──────┬───────┘ └──────▲───────┘ │
│ │ │ │
│ ┌──────▼──────────┐ ┌──┴──────────────────┐ │
│ │ PinyinEngine │ │ IUIAutomation │ │
│ │ + 410音节 │ │ + TextPattern2 │ │
│ │ + DP分词 │ │ + GetCaretRange │ │
│ │ + 模糊音 │ │ → 精准光标定位 │ │
│ │ + 词频学习 │ └─────────────────────┘ │
│ │ + 简繁转换 │ │
│ └─────────────────┘ │
│ ┌──────────────────┐ │
│ │ SettingsWindow │ │
│ │ + 皮肤/配色 │ │
│ │ + 用户词典管理 │ │
│ └──────────────────┘ │
└───────────────────────────────────────────────────┘
基于《简化字总表》三表体系:
- 表一 (~350 字):不作简化偏旁的简化字
- 表二 (~132 字 + 14 简化偏旁):可作简化偏旁的简化字
- 表三 (类推简化,1500+ 字):应用表二偏旁类推简化
转换策略:最长词匹配优先 → 单字映射回退,确保「一简对多繁」正确消歧。
词汇覆盖:
- 一简对多繁词组消歧 ~180 对(如 出发→出發 / 头发→頭髮)
- 两岸 IT 词汇差异 ~40 对(如 软件→軟體、鼠标→滑鼠、服务器→伺服器)
每次选择候选时:
- 该候选在用户词库中频率 +1
- 自动保存到
user.dict文件 - 下次输入相同拼音时,高频词优先显示
- 候选排序 = 系统词库基础频率 + 用户学习频率
- 全局键盘钩子(
WH_KEYBOARD_LL)需以管理员权限运行,否则在某些应用中无法正常输入 - 候选框使用 GDI 纯手工绘制,无任何 UI 框架依赖,无任何第三方库依赖
- 首次运行会在同目录生成
pinyin_config.ini(配置文件)和user.dict(用户词库) - UIAutomation 光标检测在 Chrome/Edge/VSCode/Office 等现代应用中工作良好,老旧程序回退到 Win32/MSAA 检测
MIT License
