日々適当

hibitekitou

今年の目標:入力ソースの切り替えをOS標準に…と思ったけど撤回

mac |2022-01-02

古くからのMacユーザは Command + Space での入力ソースの切り替えをおこなっているわけですが、近頃のmacOSではデフォルトではそれがControl + Space に変わってます。けど、それは不便とCommand + Spaceに切り替えて使っていたわけですけど、在宅勤務中に利用するツールSplashtop Businessがリモート先の入力ソースの日本語⇄英語切り替えでのCommand + Spaceが機能しないため、微妙にストレスが溜まるわけです。

リモート以外では慣れ親しんだCommand + Spaceがいいのはいうまでも無いのだけど、OS標準ということもあり、ここいらでControl + Spaceへの移行をした方がいいのでは無いかと思った次第。

そんなふうに考えてリモート元と先の設定を変更してみたのですけど、あれれ?、やっぱりうまく動かない(リモート先はBigSur、リモート元はMonterey)。Control + Spaceするとリモート元の入力ソースが変わるだけで、リモート先に影響を及ぼすことができません。

Splashtop Businessを最前面のアプリにしているときにリモート元の入力ソースの切り替えのショートカットをオフにすればいいのか?と思ってやってみたら、Control + Spaceがリモート先で動作し、試しにCommand + Spaceに設定を戻してみたら、同様に動作するではありませんか。

つまりうまく動かないのはこのショートカット実行ではリモート元への影響が優先されてしまうためで、Command だとかControlだとかは関係なかったということです。ってことで、Control + Spaceの設定にすることは撤回し、Command + Spaceに戻します。

問題を改善するための手段としては、ある特定のアプリを最前面にしているとき、入力ソースの切り替えのショートカットをオフにし、最前面から外れたらそのショートカットをオンにすることを実現する方法となりますが、何かないですかね?

この設定自体はcom.apple.symbolichotkeysに書かれているらしいです。それでここを直接書き換えることも defaults write コマンドを使うことで可能らしい。

参考:システム環境設定をターミナル(defaultsコマンド)から設定する方法(Mission Control) [OTTANXYZ]

このページによると、システム環境設定のキーボードショートカット「前の入力ソースを選択」をオンにするコマンドは

defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 60 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>32</integer><integer>49</integer><integer>1048576</integer></array><key>type</key><string>standard</string></dict></dict>"

ということです。ちなみに、parametersに書かれた三つの値の最後の1048576の部分は修飾キーにあたり、1048576がCommandキーに相当し、Optionキーが524288になるそうです。だから、Command + Option はその二つの数字を足して1572864となるそうです。
でenabledのtrue部分をfalseにするとオフになるはずです。

defaults read com.apple.symbolichotkeys AppleSymbolicHotKeys

これでcom.apple.symbolichotkeysに書かれたパラーメタを見ることができるけど、確かにオフにするコマンドを発行すると、該当ファイルにはオフだよって情報が書き込まれたらしいことが確認できます。けど、それが反映されない。

defaults writeコマンドで書き換えたら、その設定を再読み込みさせる必要があるのですね。で、何に対してそれをしてあげればいいんでしょ? と思ってググるとこちらの掲示板

/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u

を実行するとよさそうだよ、って書いてありました。
確かに、falseになるdefaultsコマンドを投げてて上記コマンドを実行すると Command + Space は動かなくなり、trueになるdefaultコマンド後に上記コマンドを実行すると Command + Space は動作します。

ということで、これを組み合わせてAppleScriptで最前面のアプリが何かを監視してあげれば目的の事ができるようになりましょうか?

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。