2019年2月26日火曜日

VoiceoverからAppleScriptを実行して、Macの操作を効率かさせる(基礎編)


MacのVoiceoverには「コマンダー」という便利な機能が用意されています。これはテンキー・キーボードのキー操作やトラックパッドのジェスチャにVoiceoverのコマンドを割り当てて呼び出せる機能です。Voiceoverのキー操作はやや複雑で数も多いため、よく使うコマンドをコマンダーに登録しておくと作業効率がアップします。

ただコマンダーに登録できるのは基本的にVoiceoverコマンドのみ。アプリケーションのショートカットキーなどを割り当てることはできません。せっかくVoiceoverコマンドを省力化できても、アプリケーションの操作が煩雑だと有難味も半減です。

実はVoiceoverのコマンダーには、macOSに標準搭載されているスクリプト言語「AppleScript」のスクリプトを登録して実行することができるのです。つまりショートカットキー操作のスクリプトを作成しておけば、コマンダーからアプリケーションの操作が実現するのです。

ここではAppleScriptを用いてVoiceoverのコマンダーからキー操作を実行する基本的な方法を解説します。


「キーを押す」AppleScriptを書いてみる


ではまず、Voiceoverから呼び出すAppleScriptを作成します。
Macの「アプリケーション」>「ユーティリティ」フォルダの中に「スクリプトエディタ」というアプリがあるので、これを起動します。スクリプトを記述するエディタのウィンドウが開くはずです。開かない場合は「Command + N」を押します。

ではここに「キーを押す」というスクリプトを記述しましょう。
もっともシンプルなスクリプトはこんな感じ。

tell application "System Events"
key code 11
end tell

このスクリプトを実行すると現在アクティブになっているアプリケーションに対して、「B」のキー入力を行います。
「11」が「B」キーに対応するキーコード。キーコードは以下のページから調べることができます。


また修飾キーを併用する場合はこのように記載します。

tell application "System Events"
key code 45 using {command down, shift down}
end tell

この例では「Command + Shift + N」を実行します。
修飾キーの指定は「option」「command」「control」「shift」となります。ショートカットキー操作を実行する場合はこの書式が基本となります。
複数のキー操作を順番に実行することもできます。

tell application "System Events"
key code 126
delay 0.5
key code 17 using {command down, shift down}
end tell

この例ではまず「上矢印」を押し、一拍置いて「Command + Shift + T」を実行します。「Twitterrific」でタイムラインを次々翻訳して読む、という感じですね。

スクリプトが書けたら、名前を付けてスクリプト形式で保存しておきます。スクリプトの名前は、処理内容がわかるようなものにしておくと後々わかりやすくなります。


コマンダーにスクリプトを登録する


作成したAppleScriptをVoiceoverから実行できるようにします。
「VO + F8」を押してVoiceOverユーティリティを開いたら、まず「一般」を選択して「AppleScriptによるVoiceOverの制御を許可」にチェックを入れます。

続いてVoiceoverユーティリティの「コマンダー」を選択します。ここではテンキーコマンダーを例にしますが、もちろんキーボードコマンダーやトラックパッドコマンダーからでも同様に実行可能です。
「テンキー」タブを選択し、AppleScriptを実行するキーの「コマンド」メニューを開いたら「カスタムコマンド」>「AppleScriptスクリプトを実行」の順に開き、先ほど保存しておいたスクリプトを選択しましょう。これで準備は完了です。

あとはテンキーコマンダーをオン(VO + Clear)して設定したキーを押せばスクリプトが実行されます。
初回実行時にセキュリティ警告通知がポップアップするので、ダイアログのガイドに従ってシステム環境設定を開き、「セキュリティとプライバシー」>「プライバシー」>「アクセシビリティ」のリストにある「scrod」にチェックを入れます。この設定を行わないとAppleScriptからキー操作が実行できません。

なおスクリプトエディタでは「Command + R」でスクリプトを即座に実行することができます。動作を試行錯誤しながらスクリプトを書くのに便利ですが、この場合も上記のプライバシー設定に「スクリプトエディタ」を追加してチェックを入れておく必要があります。


一部挙動が怪しいけど、可能性は無限大


至極簡単ですが、VoiceoverからAppleScriptを実行する手順でした。
キーストローク処理だけでも、使ってみるとかなり便利だし作業効率がアップします。本当はコマンダーにキーストロークを直接登録できるといいんですけどね。

ただ一部のアプリでVoiceoverからスクリプトを実行するとVoiceoverの操作ができなくなることがあったり、ちょっと処理が鈍いなどきになることもありました。その辺りは今後の研究課題です。まだAppleScript初心者なもので。

とはいえAppleScriptをマスターすれば、Macの大概の操作を自動化することができるので、応用次第ではVoiceoverでのMac操作がさらに便利になるでしょう。本格的にAppleScriptを学習するなら以下のページがとても役立つはず。もちろん日本語で解説しているページもたくさんあります。


一歩上を目指したいVoiceover使いのMacユーザーさん、ぜひAppleScriptにチャレンジしてみてはいかがでしょうか。
便利なスクリプトを作成したら、ぜひ教えてください。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

ひとまずブログを統一します

BloggerがVoiceoverで非常にアクセスしにくくなってしまったため、しばらくはMac関係の記事も メインのブログ にエントリーすることにしました。ブログの切り替えが非常に難しいんですよ。 改善されればまたこちらにもエントリーするかもしれませんが。 よろしくお願いします。