水杉输入法

MSIME · WebAssembly

不用安装,
在浏览器里打中文

水杉输入法的 Rust 引擎编译成 WebAssembly,就运行在这个页面里。全拼、双拼、五笔,整句联想,完全离线,输入的内容不会离开你的设备。

立即试用 查看接入代码

4
输入方案:全拼、小鹤、自然码、五笔
0
加载后的网络请求,断网也能打字
16 MB
首次下载,之后由浏览器缓存
GPL-3.0
开源,引擎与桌面版相同

打开完整演示,查看接入代码 ↗

试一试
正在加载引擎…

点这里直接打字,比如 woshizhongguoren 再按空格

看它打字
空格上屏,数字键或鼠标选字,- = 翻页,← → 移动高亮,单按 Shift 切换中英文

接入代码

按上面选中的选项生成,复制即可用。

引擎

SDK
–
方案
–
下载
–
编译 wasm
–
导入词库
–
创建会话
–
wasm 内存
–
上一次按键
–

最新一帧 MsimeFrame

打字后,这里显示引擎返回的每一帧。

按键

和桌面版的操作一致。attachInput 和 keyFromEvent 已经处理好这些按键,接入时不用再写。

空格上屏高亮的候选
1 – 9选当前页对应的候选
- =上一页、下一页;不在组字时打出这两个符号
↑ ↓ PgUp PgDn翻页
← →在当前页里移动高亮
Enter把拼音原样上屏
Esc取消组字
Backspace删一个字母;加 Ctrl 或 Alt 删一个词
Shift单按切换中英文;按住 Shift 打的大写字母直接上屏
, . ?中文模式下自动转成全角标点

常见问题

为什么有时候需要把系统输入法切换到英文?

浏览器会先把可编辑元素(<textarea>、<input>)上的按键交给系统输入法。访客开着系统的中文输入法时,按键会先被它接走,水杉拿不到。用 attachInput 挂在文本框上时,需要访客切到英文输入;像这个页面一样用一个看不见的密码框接收按键、自己画输入区,就不受系统输入法影响:浏览器在密码框里会停用系统输入法。

输入的内容会被上传吗?

不会。引擎、词库和整句模型都下载到浏览器里,在 Web Worker 中运行,转换过程不访问任何服务器。页面加载完以后断网也能继续打字。

需要下载多少数据?

全拼和双拼约 16 MB(不下载整句模型约 12 MB),五笔约 8 MB,只下载当前方案用到的文件。浏览器会缓存这些文件,再次打开基本不用重新下载。

手机能用吗?

引擎能在手机浏览器里运行,但它处理的是实体键盘的按键,手机的屏幕键盘不会发出这些按键事件,所以需要连接实体键盘。

支持哪些浏览器?

需要 WebAssembly、模块 Worker 和 DecompressionStream:Chrome / Edge 80 及以上、Firefox 114 及以上、Safari 16.4 及以上。页面设置了内容安全策略(CSP)时,script-src 要允许 'wasm-unsafe-eval'。

可以用在商业网站里吗?

@msime/web-engine 以 GPL-3.0-only 发布,使用时需要遵守 GPL 的条款。词库、模型和第三方组件的许可见包内的 assets/NOTICE.md,部署时请一并发布。

完全离线

引擎、词库和整句模型都在浏览器的 Web Worker 里运行。没有服务器参与转换,输入的内容不会被上传。

和桌面版同一个引擎

与 macOS、Linux、Android、iOS、HarmonyOS 版共用一套 Rust 输入引擎,同样的词库,同样的候选排序。

部署到任意静态托管

以 npm 包 @msime/web-engine 发布,GitHub Pages、Vercel、Cloudflare Pages / Workers 都能直接托管,也能从 jsDelivr CDN 引用。