diff --git a/app/Helpers/Audio.cs b/app/Helpers/Audio.cs new file mode 100644 index 00000000..aa1b4911 --- /dev/null +++ b/app/Helpers/Audio.cs @@ -0,0 +1,29 @@ +using NAudio.CoreAudioApi; + +namespace GHelper.Helpers +{ + internal class Audio + { + public static bool ToggleMute() + { + using (var enumerator = new MMDeviceEnumerator()) + { + var commDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Communications); + var consoleDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Console); + var mmDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia); + + bool status = !commDevice.AudioEndpointVolume.Mute; + + commDevice.AudioEndpointVolume.Mute = status; + consoleDevice.AudioEndpointVolume.Mute = status; + mmDevice.AudioEndpointVolume.Mute = status; + + Logger.WriteLine(commDevice.ToString() + ":" + status); + Logger.WriteLine(consoleDevice.ToString() + ":" + status); + Logger.WriteLine(mmDevice.ToString() + ":" + status); + + return status; + } + } + } +} diff --git a/app/Input/InputDispatcher.cs b/app/Input/InputDispatcher.cs index f07667a1..a61b6ba2 100644 --- a/app/Input/InputDispatcher.cs +++ b/app/Input/InputDispatcher.cs @@ -296,13 +296,8 @@ namespace GHelper.Input ToggleFnLock(); break; case "micmute": - using (var enumerator = new MMDeviceEnumerator()) - { - var commDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Communications); - bool muteStatus = !commDevice.AudioEndpointVolume.Mute; - commDevice.AudioEndpointVolume.Mute = muteStatus; - Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone); - } + bool muteStatus = Audio.ToggleMute(); + Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone); break; case "brightness_up": HandleOptimizationEvent(32);