Hello, I have been fooling around with JSA for MacOS and have written a sound output changer program. I am attaching the code below so that perhaps it might be of use.
Note, because of some code way down in the program the only output devices that this program will switch to are "Jonathan's AirPods" and Internal speaker" you can probably figure how to change these if you can get the code to compile. Also note that VoiceOver AppleScript and allowing UI Scripting for the saved application will probably be required. This appears to work in the last three versions of MacOS. It does require that "Script Editor" is set to Javascript and not AppleScript and I would recommend when saving that you save as an application. —code below — "use script"; var app = Application( "System Preferences"), preferencesActive = app.running(), sound = app.panes[ "com.apple.preference.sound"], sndOutputAnchor = sound.anchors.byName("output"); if (preferencesActive) { var actPane = app.currentPane() ; preferencesActive = actPane ? actPane : "True" } ; // Real the output paine of the sound pane of System Preferences. app.activate(); sndOutputAnchor.reveal(); delay(.5); // wait half a sec to make sure pane is available. var appFrontWindow = Application("System Events").applicationProcesses[app.name()].windows[0], devices = appFrontWindow.tabGroups[0].scrollAreas[0].tables[0], inactiveOutputs = devices.rows.whose({selected: "False"}), c; for(var i = 0, j = inactiveOutputs.length ; i < j ; i++) { ; c =inactiveOutputs[i]; if ( c.uiElements[0].class() === 'textField') { // skip empty rows var name, type ; [name, value ] = c.uiElements.value(); // if (name.in(["Internal Speakers", "Jonathan’s AirPods"].) ) { if ((name === "Jonathan’s AirPods" ) || (name === "Internal Speakers")) { Application("VoiceOver").output( name + " will now be the output"); delay(.75); c.select(); break; } } } //Now somewhat restore System Preferences to former state. if (! preferencesActive ) { app.quit(); } else { preferencesActive.reveal() } —- Best wishes, Jonathan Cohn -- The following information is important for all members of the Mac Visionaries list. If you have any questions or concerns about the running of this list, or if you feel that a member's post is inappropriate, please contact the owners or moderators directly rather than posting on the list itself. Your Mac Visionaries list moderator is Mark Taylor. You can reach mark at: macvisionaries+modera...@googlegroups.com and your owner is Cara Quinn - you can reach Cara at caraqu...@caraquinn.com The archives for this list can be searched at: http://www.mail-archive.com/macvisionaries@googlegroups.com/ --- You received this message because you are subscribed to the Google Groups "MacVisionaries" group. To unsubscribe from this group and stop receiving emails from it, send an email to macvisionaries+unsubscr...@googlegroups.com. To post to this group, send email to macvisionaries@googlegroups.com. Visit this group at https://groups.google.com/group/macvisionaries. For more options, visit https://groups.google.com/d/optout.