From a71803fe87b7d473bcc36c0dc3dcb09ef344e0da Mon Sep 17 00:00:00 2001 From: c2k Date: Mon, 24 Aug 2026 21:52:49 -0600 Subject: [PATCH 1/2] Fix mute state not changing when camera is on When camera was on, the deck's mute button was stuck in the muted state. This was caused by GetStatus() looking for the word "unmute" which was being found anytime the camera was on because of an additional control that stated "Unmuted" when the mic was on. Fixed by adding " mic" to the end of the search strings. --- src/FreeTeamsDeck/Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/FreeTeamsDeck/Program.cs b/src/FreeTeamsDeck/Program.cs index 1c7c67b..4684494 100644 --- a/src/FreeTeamsDeck/Program.cs +++ b/src/FreeTeamsDeck/Program.cs @@ -307,8 +307,8 @@ public static TeamsStatus GetStatus() return new(false, null, null); var names = GetNamedControls(call.Root).Select(item => Normalize(item.Name)).ToArray(); - bool? muted = names.Any(name => name.Contains("unmute")) ? true : - names.Any(name => IsMatch(name, "mute")) ? false : null; + bool? muted = names.Any(name => name.Contains("unmute mic")) ? true : + names.Any(name => IsMatch(name, "mute mic")) ? false : null; bool? cameraOn = names.Any(name => name.Contains("turn camera off")) ? true : names.Any(name => name.Contains("turn camera on")) ? false : null; return new(true, muted, cameraOn); From 83a4730ea05e6364af2cf8bf8e69e9ec425e5c40 Mon Sep 17 00:00:00 2001 From: c2k Date: Tue, 25 Aug 2026 16:15:47 -0600 Subject: [PATCH 2/2] Fix InCall state always returning True The InCall state was always returning True apparently because of a fallback to using ScoreTitle and anything greater than 0. This removes that fallback and changes the controls it looks for to be mic related (this could be tweaked if needed, but I think it's safe to say most meetings or calls would have a mic.) It previously using leave. hang up, & end call was keeping the mic and camera buttons from working during the meeting join window. --- src/FreeTeamsDeck/Program.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/FreeTeamsDeck/Program.cs b/src/FreeTeamsDeck/Program.cs index 4684494..9d4a8bc 100644 --- a/src/FreeTeamsDeck/Program.cs +++ b/src/FreeTeamsDeck/Program.cs @@ -432,13 +432,11 @@ private static bool IsSelected(AutomationElement element) foreach (var window in windows) { var names = GetNamedControls(window.Root).Select(item => Normalize(item.Name)).ToArray(); - if (names.Any(name => IsMatch(name, "leave") || name.Contains("hang up") || name.Contains("end call"))) + if (names.Any(name => name.Contains("mute mic") || name.Contains("unmute mic"))) return window; } - return windows - .OrderByDescending(window => ScoreTitle(window.Title)) - .FirstOrDefault(window => ScoreTitle(window.Title) > 0); + return null; } private static List GetTeamsWindows()