Con un poco de experimentación en el guión de Arthur Hammer, descubrí que las líneas set deviceselected to "xyz"
parecen ser solo comentarios visuales mientras que en Script Editor & No parece ser parte de la funcionalidad real.
El cambio real parece ser solo entre 2 líneas elegidas en el Panel de control; por lo tanto, si solo necesita cambiar entre 2 salidas, puede usar los números de las filas.
En este ejemplo, los he levantado para que sean variables, por lo que no es necesario profundizar en el script para cambiar las líneas requeridas ...
Como tiene más de 2 salidas, la primera vez que lo cambie no necesariamente irá desde / hacia el dispositivo correcto, sino después.
Por ejemplo, si desea cambiar entre las salidas 3 y amp; 4, sin embargo, se seleccionó 2 actualmente, el primer cambio sería de "no 3" en lugar de "es 3" [espero que entienda esa explicación complicada]
(*
Applescript to toggle between two sound outputs by Line number, ¬
as they appear in the Sound Control Panel. Based on code by ¬
Arthur Hammer http://apple.stackexchange.com/a/209434/85275
*)
set outputA to 3 --change this to the actual 'line number' of your first desired output
set outputB to 4 --change this to the actual 'line number' of your second desired output
--the rest of the script will use these vales as a switch
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.sound"
end tell
tell application "System Events"
tell application process "System Preferences"
repeat until exists tab group 1 of window "Sound"
end repeat
tell tab group 1 of window "Sound"
click radio button "Output"
if (selected of row outputA of table 1 of scroll area 1) then
set selected of row outputB of table 1 of scroll area 1 to true
else
set selected of row outputA of table 1 of scroll area 1 to true
end if
end tell
end tell
end tell
--tell application "System Preferences" to quit
--remove the comment '--' tag above to make the control panel quit afterwards, leave for testing.
Tal vez una pequeña aclaración pictórica: usar el script anterior con outputA = 3 & outputB = 4, ahora puedo cambiar entre Digital Out & TonePort UX2.
Una nota más: los números de línea no tienen que ser consecutivos, simplemente podría cambiar entre Altavoces Internos y amp; TonePort utilizando las líneas 1 y amp; 4.