スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

入力ソースを設定するコマンドを作った

Mac OS Xの入力ソース(ことえりやGoogle日本語入力など)をCUIで設定(有効/無効/選択)できるコマンドを作った→https://github.com/minoki/InputSourceSelector

入力ソースをいじるには、Mac OS X 10.5以降であればCarbonのText Input Source Servicesを叩けばいい。入力ソースのID(例:com.apple.inputmethod.Kotoeri.Roman)から入力ソースを取得するにはTISCreateInputSourceListを呼び出す。この関数は名前の通り入力リストのリストを返すが、第一引数にプロパティリストを渡す事で入力ソースを絞り込む事ができる。帰ってきたCFArrayRefから入力ソース(TISInputSourceRef型)を取得しTISEnableInputSourceTISSelectInputSourceを呼び出せば、それぞれ入力ソースを有効化、選択できる。

プログラム中でTISCreateInputSourceListから帰ってきた入力ソースの配列を走査するのにFast Enumerationを使っているが、TISInputSourceRef型はObjective-Cのid型と互換性がないため、ループを

for (TISInputSourceRef inputSource in inputSources) {
    ...
}

と書くことはできない。しかし、__attribute__((NSObject))を使えばid互換の型として扱ってくれるようだ。

for (TISInputSourceRef __attribute__((NSObject)) inputSource in inputSources) {
    ...
}

さて、このコマンドの使い方だが、

$ InputSourceSelector list

と打てば入力ソースのIDと名前の一覧が表示される。list-enabledとすれば現在有効になっている入力ソース飲みが表示される。これで調べたIDに対して

$ InputSourceSelector enable (調べたID)

と打てばその入力ソースが有効化される(右上のメニューの入力ソース一覧に現れる)。また、

$ InputSourceSelector select (調べたID)

と打てばその入力ソースが現在の入力ソースとして選択される。

スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。