写一个输入法引擎

螺壳输入法只管按键、候选窗和上屏,出什么候选交给引擎。一个文件夹、两个文件,就是一个引擎。

engine.json
{
  "protocol": 1,
  "name": "最小示例",
  "kind": "typing",
  "run": ["luoke-python", "engine.py"],
  "input_keys": "abcdefghijklmnopqrstuvwxyz"
}
engine.py
import json, sys

TABLE = {"ni": ["你", "呢"], "hao": ["好", "号"], "nihao": ["你好"]}

for line in sys.stdin:
    msg = json.loads(line)
    if msg.get("type") != "query":
        continue
    keys = msg["input"]
    cands = [{"text": t, "consume": n}
             for n in range(len(keys), 0, -1) for t in TABLE.get(keys[:n], [])]
    print(json.dumps({"type": "answer", "id": msg["id"],
                      "candidates": cands}, ensure_ascii=False), flush=True)

放进 ~/.luoke/ime/engines/,在输入法菜单里选它就能用。改了文件,下一个键就是新版本。

可以拿它做什么

五笔郑码注音粤拼

别的打法

各家双拼、形码,或者你自己发明的速记码。

日文假名颜文字LaTeX

别的语言和符号

假名、颜文字、数学符号,都可以做成一个引擎。

行云公司内部的项目代号

你自己的词库

一份公司术语表,或者你常用的专名。

引擎住在沙盒里。

不联网,要你点头才启用

第三方引擎连不了网,也用不了 GPU。装上以后不会自己启用,得你确认。

只写自己的文件夹

只能写自己的目录。钥匙串、密码、浏览器和邮件都读不到,螺壳记忆和输入法的设置也读不到。

要用模型,经螺壳

想按前文给候选打分、续写,就请螺壳(luoke-core)帮忙,不自己再装一份模型。

写好了,来投稿

好用的引擎,我们想让更多人用上。

去投稿