キーボード配列変更(qwerty, Dvorak)をApplescriptでGUIスクリプティングを用いて自動化する。
はじめに
Macはデスクトップ上で行っている作業のほとんどをAppleScriptで自動化できる。AppleScriptをサポートしていないアプリケーションや特定の操作でも、GUIスクリプティングを用いれば、AppleScriptで自動化できる。
GUIスクリプティングを用いて、キーボードの配列を変更した。あまり需要はないと思うが、他で見かけないので記事にした。
環境
macOS ver11.3
AppleScript 2.7
準備
キーボードの配列変更を手作業(マウス操作)で行うときは、"システム環境設定" -> "キーボード" -> "入力ソース" -> "英字のレイアウト" と進み、ポップアップメニューから"ABC (qwerty配列)"、"Dvorak"、その他を選ぶ。
この手作業を自動化する。
コード
最初にdisplay dialog
で"abc (qwerty)"、"Dvorak"、"キャンセル"を選ぶ。
"キャンセル"を選択した場合、そこでプログラムが中断される。
tell application "System Events"
display dialog "選択してください" buttons {"ABC", "Dvorak", "キャンセル"} cancel button "キャンセル"
set theKeyMap to button returned of result
tell application "System Preferences" to quit
delay 1
tell application "System Preferences" to activate
tell application process "System Preferences"
repeat
if exists (window "システム環境設定") then
exit repeat
end if
end repeat
end tell
tell button "キーボード" of scroll area 1 of window "システム環境設定" of application process "System Preferences" to click
tell application process "System Preferences"
repeat
if exists (window "キーボード") then
exit repeat
end if
end repeat
end tell
tell radio button "入力ソース" of tab group 1 of window "キーボード" of application process "System Preferences" to click
tell pop up button 6 of scroll area 2 of splitter group 1 of group 2 of tab group 1 of window "キーボード" of application process "System Preferences" to click
if (theKeyMap is "ABC") then
tell menu item "ABC" of menu 1 of pop up button 6 of scroll area 2 of splitter group 1 of group 2 of tab group 1 of window "キーボード" of application process "System Preferences" to click
else
tell menu item "Dvorak" of menu 1 of pop up button 6 of scroll area 2 of splitter group 1 of group 2 of tab group 1 of window "キーボード" of application process "System Preferences" to click
end if
end tell
以下は実際に動作させたgif動画
"ABC"を選択した場合、"Dvorak"を選択した場合、"キャンセル"を選択した場合を順に行っている。
考察
GUIスクリプティングのコードは、OSのアップデートなどでGUIが変わると動かなくなることがある。
GUIスクリプトを行うのには、GUI部品の階層構造を調べる必要がある。その方法は、他のwebページで多数解説があるが、各層毎にevery UI element
を利用して部品を調べ、総当たり的に調べる方法であり、かなり手間がかかる。実際には慣れてくると、部品の名前を見ればだいたい予想がつくようになるが、それでも手間が相当かかる。
さらに、GUIボタンをクリックすると新しいウィンドウが出現するような、動的にGUI部品が変化する場合もあり、この場合もGUI部品の解析にはかなり手間がかがる。
上記にて、UI部品の一覧を取得し、目的の部品に一気に到達できるような方法が望ましい。それはまた別の機会に述べることにする。
Author And Source
この問題について(キーボード配列変更(qwerty, Dvorak)をApplescriptでGUIスクリプティングを用いて自動化する。), 我々は、より多くの情報をここで見つけました https://qiita.com/BlackCat_617/items/a0df46bac1abd21b3dda著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .