【プラグイン】日本語入力プログラムの切り替え(更新)
3 posters
【プラグイン】日本語入力プログラムの切り替え(更新)
以前にMacの日本語入力プログラム(ことえり)をコントロールするプラグインを公開したのですが,使用しているAPIがチョット古いので,作り直すことにしました。
解説
古いプラグインは,Text Input ServiceというAPIで入力サービスを読み書きしていました。このAPIは,入力モードの切り替えだけでなく,インストールやアンインストールなど,システム環境設定レベルの強力なことができるものです。たとえば,英数モードを強制したい場合,英数を除く入力モードを無効にし,その時点で有効なアスキー互換モード(U.Sとか英数とか)を直接指定するようなローレベルの操作をします。
新しいプラグインでは,Text Input ContextというAPIを使用しました。こちらは,いろいろな入力メソッドが開発されることを想定し,プロトコル(共通のメソッド名)やイベント通知からなる抽象的でハイレベルなコマンド体系になっています。モードの切り替えは「日本語・ことえり・ひらがな」などとダイレクトに指定するのではなく,入力が想定されている「ロケール」のリストを渡すようになっています。デフォルトは「ロケールなし」であり,システムで有効にされている入力モードすべて使用できる状態です。「日本語」ロケールを限定すれば,日本語に必要のないモードが選択不可になります。英数モードを強制するには,専用のロケールを指定します。
古いプラグインは,ローレベルの直接的なAPIであるためか,メニューバー・キーボート・タッチバーの同期が外れることがありました。新しいプラグインは,システムのサービスに問い合わせる間接的な呼び出しなので,そういったことが起きないようです。
https://miyako.github.io/2019/06/27/4d-plugin-text-input-context.html
解説
古いプラグインは,Text Input ServiceというAPIで入力サービスを読み書きしていました。このAPIは,入力モードの切り替えだけでなく,インストールやアンインストールなど,システム環境設定レベルの強力なことができるものです。たとえば,英数モードを強制したい場合,英数を除く入力モードを無効にし,その時点で有効なアスキー互換モード(U.Sとか英数とか)を直接指定するようなローレベルの操作をします。
新しいプラグインでは,Text Input ContextというAPIを使用しました。こちらは,いろいろな入力メソッドが開発されることを想定し,プロトコル(共通のメソッド名)やイベント通知からなる抽象的でハイレベルなコマンド体系になっています。モードの切り替えは「日本語・ことえり・ひらがな」などとダイレクトに指定するのではなく,入力が想定されている「ロケール」のリストを渡すようになっています。デフォルトは「ロケールなし」であり,システムで有効にされている入力モードすべて使用できる状態です。「日本語」ロケールを限定すれば,日本語に必要のないモードが選択不可になります。英数モードを強制するには,専用のロケールを指定します。
古いプラグインは,ローレベルの直接的なAPIであるためか,メニューバー・キーボート・タッチバーの同期が外れることがありました。新しいプラグインは,システムのサービスに問い合わせる間接的な呼び出しなので,そういったことが起きないようです。
https://miyako.github.io/2019/06/27/4d-plugin-text-input-context.html
miyako- 投稿数 : 487
登録日 : 2016/07/05
Re: 【プラグイン】日本語入力プログラムの切り替え(更新)
いつの間にか,動かなくなっていたみたいですね・
Appleのメインスレッドチェッカーを参考に,APIの呼び出しを書き直してみました。
https://github.com/miyako/4d-plugin-text-input-context/releases/tag/2.1.0
Appleのメインスレッドチェッカーを参考に,APIの呼び出しを書き直してみました。
https://github.com/miyako/4d-plugin-text-input-context/releases/tag/2.1.0
miyako- 投稿数 : 487
登録日 : 2016/07/05
Re: 【プラグイン】日本語入力プログラムの切り替え(更新)
Input sources listはコレクション型を返します。
https://github.com/miyako/4d-plugin-text-input-context/blob/master/text-input-context/manifest.json
なので,4D v16 R6以降でないとダメです。
https://doc.4d.com/4Dv17/4D/17.4/Collections.201-4881814.ja.html
https://github.com/miyako/4d-plugin-text-input-context/blob/master/text-input-context/manifest.json
なので,4D v16 R6以降でないとダメです。
https://doc.4d.com/4Dv17/4D/17.4/Collections.201-4881814.ja.html
miyako- 投稿数 : 487
登録日 : 2016/07/05
Re: 【プラグイン】日本語入力プログラムの切り替え(更新)
完全に保証外ですが,コマンドを絶対に使用しないのであれば,
manifest.json
を改造して,C(コレクション)とか J(オブジェクト)のところを別の型にしたらどうでしょう?
(削除すると序列がずれるので危ないです)
クラッシュしても知りませんけど・・・
manifest.json
を改造して,C(コレクション)とか J(オブジェクト)のところを別の型にしたらどうでしょう?
(削除すると序列がずれるので危ないです)
クラッシュしても知りませんけど・・・
miyako- 投稿数 : 487
登録日 : 2016/07/05
Re: 【プラグイン】日本語入力プログラムの切り替え(更新)
ありがとうございます。
Tに変えたらエラーメッセージ無しに起動できるようになりました。本チャン環境にてテストしてみたいと思います。miyako wrote:manifest.jsonを改造して,C(コレクション)とか J(オブジェクト)のところを別の型にしたらどうでしょう?
osaru- 投稿数 : 67
登録日 : 2017/08/14
Re: 【プラグイン】日本語入力プログラムの切り替え(更新)
MacOS 10.9.5(Mavericks)4D v16.6環境で正常にIME制御稼働することを確認しました。ありがとうございました。
osaru- 投稿数 : 67
登録日 : 2017/08/14
Similar topics
» 【プラグイン】標準コマンドで処理できないキー入力を検出する
» 【プラグイン】めかぶ v2
» 【プラグイン】OCR
» 【プラグイン】ファイルやフォルダーの番号を取得する
» 【プラグイン】CITRIX環境でクライアントユーザー名を取得する
» 【プラグイン】めかぶ v2
» 【プラグイン】OCR
» 【プラグイン】ファイルやフォルダーの番号を取得する
» 【プラグイン】CITRIX環境でクライアントユーザー名を取得する
Permissions in this forum:
返信投稿: 不可