pm以前にMacの日本語入力プログラム(ことえり)をコントロールするプラグインを公開したのですが,使用しているAPIがチョット古いので,作り直すことにしました。ServiceというAPIで入力サービスを読み書きしていました。このAPIは,入力モードの切り替えだけでなく,インストールやアンインストールなど,システム環境設定レベルの強力なことができるものです。英数モードを強制したい場合,英数を除く入力モードを無効にし,その時点で有効なアスキー互換モード(U.Sとか英数とか)を直接指定するようなローレベルの操作をします。ContextというAPIを使用しました。こちらは,いろいろな入力メソッドが開発されることを想定し,プロトコル(共通のメソッド名)やイベント通知からなる抽象的でハイレベルなコマンド体系になっています。モードの切り替えは「日本語・ことえり・ひらがな」などとダイレクトに指定するのではなく,入力が想定されている「ロケール」のリストを渡すようになっています。デフォルトは「ロケールなし」であり,システムで有効にされている入力モードすべて使用できる状態です。「日本語」ロケールを限定すれば,日本語に必要のないモードが選択不可になります。英数モードを強制するには,専用のロケールを指定します。古いプラグインは,ローレベルの直接的なAPIであるためか,メニューバー・キーボート・タッチバーの同期が外れることがありました。新しいプラグインは,システムのサービスに問い合わせる間接的な呼び出しなので,そういったことが起きないようです。