トグル方式でTouch Bar表示項目の入れ替えを行うAppleScript

  1. 主題
    トグル方式でTouch Bar表示項目の入れ替えを行うAppleScriptについて述べる。(特にBar Noneとの併用を念頭に置く)

  2. 背景
    筆者はMacBook Pro 2018 15インチモデルを使っている。このMacに乗り換え(2018.08.17)てすぐ、謎の現象としてTwitterに記録していたことがあった。短期間のうちにそれは、左側Shiftキーを押すときに、意図せずTouch Bar上のEscに触れていることが原因だと推定するに至った。
    以来、Twitterを振り返れば、Touch Barに対する悪口雑言は枚挙にいとまがない。しかし約めて言えば、意図しない誤操作はキーボード右側でも発生した。そう、意図せずsiriを呼び出してしまうアレなどである。
    しかしながら、恥ずかしながらでもあるが、一応は開発者の端くれであるのにも関わらず、文句を付けるだけで、今日まで具体的な改善策は生み出さなかった。
    そこに現れたのがBar Noneである。ただ、このAppleに対する挑戦状とも受け取り得る小さなユーティリティは、真剣にTouch Barの動作を止める(正確にはfnキーを押さないと有効にならなくする)
    ところで、fnキーはTouch Barの機能入れ替えキーでもある。矛盾しているようだが、ここで本来使いたいTouch Barの機能があったときに、fnキーを押して使おうとしても永遠に出会えないというジレンマが生じることになる。
    出会えない機能に出会うには、システム環境設定を操作してキーボードペインを開き、Touch Barに表示する項目:fnキーを押して:の右横にあるプルダウンメニューから好みのものを選べば良い。だが、それすら自分でやるのは面倒だという超モノグサ党のために、本AppleScriptはある。(笑)

  3. AppleScript
    スクリプトを以下に示す。

                property fnMode : "Appコントロール" --スクリプト終了後も値を保持させる
    
                if fnMode is "F1F2" then
    
                    --システム環境設定のキーボードペインを開く
                    tell application "System Preferences"
                        launch
                        activate
                        set the current pane to pane id "com.apple.preference.keyboard"
    
                        --get the name of every anchor of pane id "com.apple.preference.keyboard"
    
                        reveal (first anchor of current pane whose name is "keyboardTab")
                    end tell
    
                    delay 0.5 --"正しくないインデックス"エラー回避
    
                    --System Events経由でシステム環境設定を操作
                    tell application "System Events" to tell process "System Preferences"
    
                        --Touch Barに表示する項目のプルダウン設定
                        tell pop up button 2 of tab group 1 of window 1
                            click
                            click menu item 1 of menu 1 --Appコントロール
                        end tell
    
                        --Fnキーを押してのプルダウン設定(予備)
                        (*
                        tell pop up button 3 of tab group 1 of window 1
                            click
                            click menu item 2 of menu 1 --F1,F2などのキー
                        end tell
                        *)
    
                    end tell
    
                    tell application "System Preferences" to quit
    
                    set fnMode to "Appコントロール" --トグルなので、設定名を入れ替え
    
                else if fnMode is "Appコントロール" then
    
                    --システム環境設定のキーボードペインを開く
                    tell application "System Preferences"
                        launch
                        activate
    
                        set the current pane to pane id "com.apple.preference.keyboard"
    
                        --get the name of every anchor of pane id "com.apple.preference.keyboard"
    
                        reveal (first anchor of current pane whose name is "keyboardTab")
                    end tell
    
                    delay 0.5 --"正しくないインデックス"エラー回避
    
                    --System Events経由でシステム環境設定を操作
                    tell application "System Events" to tell process "System Preferences"
    
                        --Touch Barに表示する項目のプルダウン設定
                        tell pop up button 2 of tab group 1 of window 1
                            click
                            click menu item 3 of menu 1 --F1, F2などのキー
                        end tell
    
                        --Fnキーを押してのプルダウン設定(予備)
                        (*
                        tell pop up button 3 of tab group 1 of window 1
                            click
                            click menu item 1 of menu 1 --Appコントロールを表示
                        end tell
                        *)
    
                    end tell
    
                    tell application "System Preferences" to quit
    
                    set fnMode to "F1F2" --トグルなので、設定名を入れ替え
    
                end if
            

    上記スクリプトをScriptEditorで開く(注)

    (注)リンクを開くと、2段階の確認ダイアログが表示される。(下図)

    ScriptEditorを開く確認ダイアログ


    Script作成確認ダイアログ

    最初に開くのは、ScriptEditorを開くかどうかを確認するダイアログ。次に開くのはスクリプトの開発元が不明であることを警告するダイアログである。後者のダイアログについて、筆者を信頼するかしないかはお任せするが、このAppleScriptが危険なものか判断できない人は使わないで戴きたい。

    なお、本スクリプトをmacOS Mojave以降で実行するには、システム環境設定とSystem Eventsの2つに対するアクセス権が必要である。

    システム環境設定の操作許可ダイアログ


    System Eventsの操作許可ダイアログ

  4. スクリプトメニュー(おまけ)
    筆者は本スクリプトをメニューバーからアクセスできるようにスクリプトメニューを稼働させている。そのやり方についておさらいして置く。

    スクリプトメニューを稼働させるには、下図の通り、スクリプトエディタの一般環境設定にあるメニューバーにスクリプトメニューを表示チェックボックスをオンにすれば良い。

    スクリプトエディタの一般環境設定

    また、スクリプトを入れるフォルダは、下図の通り、ユーザ・スクリプト・フォルダを開く操作を行うことにより、フォルダがあれば、そのフォルダが開き、なければ作られる。ちなみに作られる場所はホームディレクトリ直下のライブラリフォルダ内である。

    スクリプトフォルダの作成

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL