Sets the mic's own hardware mute (USB Audio SET_CUR mute on feature unit 6, via IDeviceTopology/IAudioMute) when it appears, and follows its 05 10 xx HID mute reports to keep the Windows endpoint mute in step. Includes build/install/uninstall scripts and a read-only HID listener. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
1.5 KiB
PowerShell
27 lines
1.5 KiB
PowerShell
# Builds QuadCastMuteSync, copies it to the install folder and runs it at every logon.
|
|
# No admin rights needed: the task runs as the current user.
|
|
# The default folder is outside AppData on purpose: when run from an MSIX-packaged app
|
|
# (such as some terminals), writes to AppData are redirected and Task Scheduler can't see them.
|
|
param([string]$InstallDir = (Join-Path $env:USERPROFILE 'QuadCastMuteSync'))
|
|
$ErrorActionPreference = 'Stop'
|
|
$TaskName = 'QuadCastMuteSync'
|
|
$dest = $InstallDir
|
|
$exe = Join-Path $dest 'QuadCastMuteSync.exe'
|
|
|
|
& (Join-Path $PSScriptRoot 'build.ps1')
|
|
|
|
Get-Process QuadCastMuteSync -ErrorAction SilentlyContinue | Stop-Process -Force
|
|
New-Item -ItemType Directory -Force $dest | Out-Null
|
|
Copy-Item (Join-Path $PSScriptRoot 'bin\QuadCastMuteSync.exe') $exe -Force
|
|
|
|
$action = New-ScheduledTaskAction -Execute $exe -Argument 'run'
|
|
$trigger = New-ScheduledTaskTrigger -AtLogOn -User "$env:USERDOMAIN\$env:USERNAME"
|
|
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries `
|
|
-ExecutionTimeLimit ([TimeSpan]::Zero) -MultipleInstances IgnoreNew `
|
|
-RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1)
|
|
Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Settings $settings `
|
|
-Description 'Mutes the HyperX QuadCast S at logon and keeps Windows mic mute in sync with it.' -Force | Out-Null
|
|
|
|
Start-ScheduledTask -TaskName $TaskName
|
|
Write-Host "Installed to $dest and registered logon task '$TaskName' (started now)."
|