Bei meinem Soundkartentreiber kann man einstellen, dass die Musik auf den Lautsprechern abgespielt wird, Skype aber immer über das Headset kommt. Die entsprechenden Einstellungen im Realtek HD-Audio-Manager sehen so aus:
Das Problem dabei ist allerdings, dass ich jedesmal diese Einstellung ändern muss, wenn ich spätabends meine Musik über das Headset hören will. Ist doch ziemlich umständlich auf Dauer.
Jetzt habe ich das Programm SSD — Set Sound Device on Win7 gefunden, was es ermöglicht, die Soundausgabe (auch per Kommandozeile) umzuschalten:
Praktischerweise legt das Programm bei der ersten Auswahl im Programmverzeichnis (das beschreibbar sein muss) passende Verknüpfungen an, um nur die Lautsprecher oder nur das Headset einzuschalten.
Das ist zwar ok, aber ich wollte das schon per Tastendruck machen. Also hab ichs mal mit Autohotkey probiert. Herausgekommen ist dieser Schnipsel, den ich ich meine Standardtastaturdatei gepackt habe:
Browser_Search::
if ls_an = 0
run, c:\Users\Michael\Anwendungen\SSD\SSD.exe 1
ls_an = 1
if ls_an = 1
run, c:\Users\Michael\Anwendungen\SSD\SSD.exe 2
ls_an = 0
return
Ich gehe mal wieder durch:
Browser_Search::
Bei mir schaltet die „Suche“-Taste auf der Tastatur das Ausgabegerät um, weil ich diese Taste nie benutze.
if ls_an = 0
Um unterscheiden zu können, ob die Lautsprecher oder das Headset läuft habe ich die Variable „ls_an“ (Lautsprecher an?), die ich auf 1 setze, wenn die Lautsprecher laufen oder auf 0 wenn die Töne aus dem Headset kommen. Hier wird abgefragt, ob das Headset läuft.
run, c:\Users\Michael\Anwendungen\SSD\SSD.exe 1
Da festgestellt wurde, dass die Lautsprecher nicht tönen, werden sie hier eingeschaltet. Die 1 hinter ssd.exe ist in diesem Fall die Nummer des Audioausgabegeräts, wie es in der Systemsteuerung steht.
ls_an = 1
Jetzt wird noch der Status von „ls_an“ auf 1 gesetzt. Weiter gehts mit
if ls_an = 1
run, c:\Users\Michael\Anwendungen\SSDS\SSD.exe 2
ls_an = 0
return
Wieder fast die gleiche Abfrage, nur mit dem Unterschied, dass „ls_an“ diesmal abgefragt wird, ob die Lautsprecher schon an sind. Dann wird die Ausgabe auf das Headset geschaltet.
Ich weiß nicht, ob man das mit Autohotkey noch eleganter lösen kann, aber es ist eine Lösung mit der ich leben kann.
Update: Nachdem ich das Script jetzt einige Zeit ausprobiert habe, erscheint es mir sinnvoller, jedes Ausgabegerät mit einer Taste zu belegen, denn die Umschalterei funktioniert oft nicht. Dann bleiben Überreste des Programms im Tray hängen. Also sehen meine AHK-Schnipsel jetzt so aus:
Browser_Refresh::
run, c:\Users\Michael\Anwendungen\SSDS\SSD.exe 1
return
Browser_Search::
run, c:\Users\Michael\Anwendungen\SSDS\SSD.exe 2
return
Beide Tasten liegen auf der Tastatur nebeneinander. Damit ichs nicht vergesse, habe ich mir einen Aufkleber über den Tasten auf die Tastatur geklebt, auf den ich beide Symbole aufgemalt habe. Das funktioniert jetzt einwandfrei.
Update vom 15.05.2013: Nachdem ich Windows 8 jetzt rund ein halbes Jahr am laufen habe und SSD immer öfter schmerzlich vermisst habe (weil es nur bis Windows 7 funktionierte), habe ich mich mal an den Quellcode gesetzt und das Programm auch zu Windows 8 kompatibel gemacht.