外からの操作
エディタなどのほかのプログラムから、動いている Kanaemi のモードを調べたり、変えたり、変わったときに知らせを受け取ったりできます。たとえば、Vim で挿入モードを抜けたら ABC モードに戻す、といったことができます。
対象は、そのときフォーカスのある入力欄です。
設定ファイル に、待つポートを書きます。書かなければ、Kanaemi は外からの操作を待ちません。
[control]port = 50123- 1 から 65535 までの整数で書きます。上の番号は例です。使っていないポートを選んでください。
- Kanaemi は
127.0.0.1のそのポートだけで待ちます。ほかのマシンからはつなげません。 - そのポートで待てないとき(ほかのプログラムが使っているなど)は、ログに残し、待たずに動き続けます。
TCP でつなぎ、1 行に 1 つの JSON のオブジェクトを UTF-8 で送りあいます。行末は LF です。1 つの接続で、要求をいくつでも送れます。
| 要求 | 答え |
|---|---|
{"op": "get-mode"} |
今のモード({"mode": "kana"}) |
{"op": "set-mode", "mode": "abc"} |
モードを変え、変えたあとのモードを答える |
{"op": "watch-mode"} |
今のモードを答え、以後、モードが変わるたびに知らせる |
モードの名前は kana か abc です。要求に id(数か文字列)を付けると、答えに同じ id が付きます。
$ nc 127.0.0.1 50123{"id": 1, "op": "get-mode"}{"id": 1, "mode": "kana"}{"id": 2, "op": "set-mode", "mode": "abc"}{"id": 2, "mode": "abc"}モードを変える
Section titled “モードを変える”- 今と同じモードにするときは、何もしません。何度送っても結果は同じです。
abcにすると、打っている途中のものは確定します(読みはかなのまま、候補は選んでいるもの)。- パスワード欄は
abcのまま変わりません。kanaにしようとしても、答えはabcです。 - 外から変えたときは、モードの表示 を出しません。
watch-mode を送った接続には、フォーカスのある入力欄のモードが変わるたびに知らせを送ります。利用者が切り替えたとき、外から変えたとき、フォーカスがほかの入力欄に移ったときのどれでも送ります。
{"event": "mode", "mode": "abc"}Kanaemi を使っている入力欄からフォーカスが外れたときは、"mode": null を送ります。知らせは、接続が切れるまで続きます。
うまくいかないとき
Section titled “うまくいかないとき”答えの代わりに、error にわけを入れて返します。接続は切りません。
{"id": 3, "error": "no-field", "message": "…"}error |
わけ |
|---|---|
no-field |
Kanaemi を使っている入力欄にフォーカスがない |
bad-request |
op を知らない、mode の名前を知らない |
JSON のオブジェクトとして読めない行が来たら、答えずに接続を切ります。