Applescriptで句読点切り替えの自動化
最終更新日:20191009
ミッション
- 句読点切り替えがめんどくさいから自動化したい.
動機
- 論文を書くときは「,.」なのだけど,日常生活では「,。」を使う.いちいち設定押して切り替えるのがめんどくさいから,スクリプト化+Better Touch Toolでワンタッチ切り替えしよう.
参考ページ
- 通常用と論文用の句読点入力スタイルを一発で切り替えるに記載されていたスクリプトをほぼそのまま使っていたけれど,なぜか突然起動しなくなるため,初心者なりに構造を理解することに.
- AppleScript のサンプルコードで基本を理解.
- AppleScriptでサウンド設定を自動化も参考にしながら,理解に努めたのでその記録.エラー吐く状況が特定できたので,結局コードはほぼ変えなかったです.
- UI elementってなんぞやってことで参考にしたページ:AppleScriptでUI Elementsをリストで取得して使う方法
スクリプト
- 通常用と論文用の句読点入力スタイルを一発で切り替えるに記載していただいたコードほぼそのまま,参照番号を変更し,「、。」から「,.」としただけです.あとはUI elementの起動については省略しました.
tell application "System Preferences" set current pane to pane "com.apple.preference.keyboard" reveal anchor "InputSources" of pane "com.apple.preference.keyboard" end tell tell application "System Events" if not UI elements enabled then set UI element enableld to true end if tell tab group 1 of window 1 of application process "System Preferences" every UI element tell table 1 of scroll area 1 select item 1 of (every row whose (name of UI element 1 is "日本語")) end tell tell pop up button 4 of scroll area 2 click tell menu 1 if selected of menu item 2 then click menu item 4 else click menu item 2 end if end tell end tell end tell end tell
- 構造としては非常に簡単で,
- System Preferences.appを起動して,キーボード設定の画面を表示させ,
- System Events.appを起動して,所定の処理を指示する.このときUI elementを参照しているとのこと.これでUIが変わっても適切に参照してくれるそうな,多分.
- これについてAutomataでスクリプトをアプリケーションとして保存したのち,Better Touch Toolでワンタッチで起動するようにした(とりあえず「^ + .」で起動するようにしました).
- しかし何度か調子に乗って高速で切り替えていると,「正しくなインデックスです」とエラーを返されます....どうやらコードに問題はなく,何かの拍子に検索欄に「.」などが入るとそうなるみたい.まあそこまで頻繁にスイッチするわけではないからいいのか...
20191009追記:catalinaでUI elementの構造が変わったので,微調整.オリジナリティが出たぜ,万歳!
- tell ディレクトリ深層 of ひとつ上 of ひとつ上 of …ってやっていけばよかったのね.
- その都度UI elementでリストを取得していくのがポイント.めんどいけど,これは応用できる! qiita.com
tell application "System Preferences" set current pane to pane id "com.apple.preference.keyboard" reveal anchor "InputSources" of pane id "com.apple.preference.keyboard" end tell tell application "System Events" tell splitter group 1 of group 2 of tab group 1 of window "キーボード" of application process "System Preferences" tell table 1 of scroll area 1 select item 1 of (every row whose (name of UI element 1 is "日本語")) end tell tell pop up button 4 of scroll area 2 click tell menu 1 if selected of menu item 2 then click menu item 4 else click menu item 2 end if end tell end tell end tell end tell
関係ない(ある?)けど追記
- 本ブログはMarkdown記法で書いてATOMのプレビュー内でHTMLとしてコピーしてから貼り付けています. Markdownで書いてHTMLに変換してブログ投稿する人(俺)に嬉しいMarkdownエディタ作ったとかでもしてくれますね.
windowsは以下
ソリューション
lablabkun.hatenablog.com スクリプト化するまでもなかったぜ. ショートカットキーにあてがえばいいだけだね.自分は,ctrl+F1で切り替えるようにした. なんだかんだ拡張性が高くていいね,windows.ただキーボードショートカットが,依然としていまひとつ慣れない…
Windowsの場合はこちら
ミッション
句読点の切り替えを一発で行う.
ソリューション
lablabkun.hatenablog.com スクリプト化するまでもなかったぜ. ショートカットキーにあてがえばいいだけだね.自分は,ctrl+F1で切り替えるようにした. なんだかんだ拡張性が高くていいね,windows.ただキーボードショートカットが,依然としていまひとつ慣れない…