« OrcaController オルコン | トップページ | サーバマシンのアップグレード »

2024年12月 2日 (月)

IME on/off の切換 - その2

im-select のおかげで、IME on/off の切換ができるようになったのであるが、process builder で /usr/local/bin/im-select を実行するという方法での対応であった。つまり、切換が発生するたびに、コマンドをディスクから読みこんで、メモリに展開して、実行して、終了するというのを繰り返すわけで、あまり効率がよいとは言えない方法であった。

もっとよい方法はないかと考えていた時、ふと、im-select を改造して IME 切換サーバとして常駐させて、そこに切換メッセージを送ることで、IME を切り替えさせればよいのではないかと思いついた。そうすれば、いちいちディスクから読みこんで、メモリに展開して云々というプロセスを全部省略できる。

im-select は Objective-C で書かれていたが、どうせならナウい Swift で書こうと思って、Swift で、レベルの低い常駐プログラム TISServer (TextInputSources Server) を書いた。これは、標準入力を待機して、J が来たら日本語、K が来たらカタカナ、R が来たら英字に切り替えるという、いかにもシロウトくさいプログラムだ。これを OpenDolphin から process builder で立ち上げて、IME 切換をさせてみた。

im-select を呼び出す方法だと、呼び出しに 10 msec くらいかかっていたものが、TISServer 法だと、標準出力に出力するだけなので、かかる時間は検出限界以下となった。

« OrcaController オルコン | トップページ | サーバマシンのアップグレード »

OpenDolphin」カテゴリの記事