AppleScriptStudio(AppleScriptではなくAppleScriptStudioです。念のため)で作ってみましたが、私の能力では実用に達しませんでした。私としても、もったいないので、載せておきます。
Interface BuilderでFile's OwnerからidleとlaunchedをONにしてください。
ビルドしてログイン項目に登録してください。
何故、実用にならないと判断したかと言いますとシステム環境設定サウンドがずっと起動していないとエラーが出ます。エラーが出るだけで、動いてはいるのですが、エラーがうざいです。
delayがそこら中、入っていますが当方では、どれが必要でどれが不要か判断しきれませんでした。同一コードなのにXcodeのビルドで何故かエラーが出るときと出ないときがありました。
property SoundDev1 : "Built" (*起動したときにシステム環境設定 サウンド 出力タブの内蔵出力の名前を記録する変数*)
on idle (*ここからend idleまでがヘッドフォンの接続を監視します。*)
tell application "System Events"
tell process "System Preferences"
delay 0.5
set SoundDev2 to get value of text field 1 of row 2 of table 1 of scroll area 1 of tab group 1 of window "サウンド" (*接続しているサウンドデバイスの数によって「row 2」の部分が変わります。何も接続していない方は恐らく「row 1」です*)
end tell
end tell
try
if (SoundDev1 = "内蔵スピーカー") and (SoundDev2 = "ヘッドフォン") then
tell application "System Events"
tell process "System Preferences"
tell value indicator 1 of slider "主音量:" of group 1 of window "サウンド"
set value to 0.3
end tell
end tell
end tell
set SoundDev1 to "ヘッドフォン"
quit
end if
on error
display dialog "Error"
end try
return 40 (*確認する感覚です。単位は、秒*)
end idle
on launched theObject (*起動時に変数SoundDev1に内蔵出力が何か記録します。*)
tell application "Finder"
activate
open document file "Sound.prefPane" of folder "PreferencePanes" of folder "Library" of folder "System" of startup disk
end tell
delay 0.5
tell application "System Events"
tell process "System Preferences"
delay 0.5
set SoundDev1 to get value of text field 1 of row 2 of table 1 of scroll area 1 of tab group 1 of window "サウンド" (*接続しているサウンドデバイスの数によって「row 2」の部分が変わります。何も接続していない方は恐らく「row 1」です*)
delay 0.5
end tell
end tell
end launched
このメッセージは次により編集されています: ni_ki 重要な書込を忘れてました。「このスクリプトを動かして損害が出ても保証できません」自己責任でお願いします。ごめんなさい。