NoctType 是一个以 Rust 为核心的跨平台拼音输入法,支持 Windows、macOS、Linux、Android、iOS/iPadOS 和鸿蒙。
crates/ Rust 核心(所有平台共用)
nocttype-cli/ 命令行调试入口
nocttype-config/ 核心配置结构(TOML)
nocttype-core/ 输入会话、事件流、分页和提交状态
nocttype-dict/ 词库加载、精确查询、前缀查询、拼音切分
nocttype-engine/ 候选生成、排序、简拼、模糊音、用户频率加权
nocttype-ffi/ C ABI 封装,供各平台壳调用
nocttype-userdb/ 用户词库持久化
app/ 桌面端应用(Windows / macOS / Linux)
NoctType.Desktop/ Avalonia 设置、托盘、调试窗口
run.ps1 / run.sh 启动脚本
platforms/ 平台输入法壳(只负责接入系统框架,调用 FFI)
windows/
NoctType.Tsf/ Windows TSF 输入法 DLL
register-tsf.ps1 注册 TSF 输入法
unregister-tsf.ps1 卸载 TSF 输入法
shared/dictionaries/ 基础词库数据
third_party/ 第三方来源数据和授权文件
tools/ 词库构建工具
docs/ 架构和平台说明
- 拼音候选生成与频率排序
- 拼音音节切分与前缀候选
- 简拼支持(
nh→你好) - 模糊音(
z=zh,n=l等) - 用户词库与选词频率学习
- 自定义短语
- 候选分页与展开
- TOML 配置系统
- 平台中立的输入事件模型
cargo run -p nocttype-cli -- nihao
cargo run -p nocttype-cli -- --events space nihao
cargo run -p nocttype-cli -- --events next,select:1 baWindows PowerShell:
.\app\run.ps1桌面端当前提供:
- 托盘菜单
- 设置窗口
- 调试窗口
- 主题切换(跟随系统 / 浅色 / 暗色)
- 输入法方案切换(全拼 / 双拼 / 五笔入口)
Linux / macOS:
bash app/run.sh需要 Visual Studio Developer PowerShell:
msbuild platforms\windows\NoctType.Tsf\NoctType.Tsf.vcxproj /p:Configuration=Debug /p:Platform=x64
.\platforms\windows\register-tsf.ps1注册后在 Windows 设置 → 时间和语言 → 语言 → 中文 → 键盘中添加 NoctType。
路径:%APPDATA%\NoctType\settings.toml(Windows)或 ~/.config/nocttype/settings.toml(Linux)
[appearance]
theme = "auto" # auto / light / dark
[schema]
active = "pinyin" # pinyin / double_pinyin / wubi
[input]
enable_abbreviation = true
enable_prefix_candidates = true
enable_fuzzy_pinyin = true
fuzzy_rules = "z=zh,c=ch,s=sh,n=l,f=h,an=ang,en=eng,in=ing,ian=iang,uan=uang"
[candidate]
page_size = 9
prefix_candidate_limit = 64
[user_dict]
enable = true
[privacy]
learning_enabled = true格式:locale<TAB>reading<TAB>text<TAB>frequency<TAB>source
- 基础词库:
shared/dictionaries/base.tsv - 来源:AOSP PinyinIME(
third_party/aosp-pinyinime/)
cargo fmt --all
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo build --workspace见 AGENTS.md。Git 提交信息、代码注释、文档注释使用中文;crate 名称、API 名称、第三方项目名称保留英文。