Perché questo applescript non ha effettivamente impostato il volume di input a zero?

5

Ho questo comando che costruisce uno script per silenziare il volume di input. Tuttavia, il volume di ingresso non è completamente disattivato. Sembra essere più vicino al 10% rispetto allo 0%.

osacompile -x -e 'tell application "System Events" to set volume input volume 0' -o ~/bin/mute_mic.scpt

Questo è strano, perché la barra di scorrimento è il più a sinistra possibile, ma come puoi vedere dall'immagine allegata, il suono si sta ancora registrando. Tuttavia, se uso il mouse per fare clic sul cursore a zero, in realtà esclude l'input.

Perché succede? Sto usando meleScript in modo improprio qui?

Possopersinoreplicarloconl'AppleScriptEditordibase,quindisochenonèunproblemaconlacompilation.

(Nota: inizialmente ho preso spunto per la soluzione a questo problema da risposta di questa domanda .)

    
posta kenny 03.10.2012 - 20:35
fonte

3 risposte

3

Per quanto posso dire, lo script funziona come previsto, il problema è nel codice di ingresso audio di OS X. Quando lo eseguo, il dispositivo di scorrimento passa allo 0%, verificato passando il mouse sul dispositivo di scorrimento finché non viene visualizzato il suggerimento:

Ècomesetrascinomanualmenteilcursoredelvolume.

Ilproblemaèapparentementeche"0%" in realtà non significa off , ma piuttosto una soglia molto bassa. In alcuni test rapidi, ho potuto registrare il suono del mio dito toccando il case del mio MacBook Pro vicino al microfono (sulla maggior parte delle macchine credo che sia attorno alla griglia dell'altoparlante destro) quando il volume era impostato su 0 . Potrei replicarlo indipendentemente dal fatto che io abbia impostato manualmente il cursore o tramite AppleScript. Sembrava essere abbastanza basso da non essere rilevato praticamente da qualsiasi altro suono, ma chiaramente il microfono non è veramente spento.

Per quanto ne so, non c'è modo di disattivare correttamente il microfono incorporato. Il meglio che posso suggerire è cambiare l'ingresso audio per usare la linea, se il tuo Mac è dotato di una linea in porta . Farlo tramite AppleScript richiede purtroppo alcuni script GUI, ma questo dovrebbe farlo ( fonte ):

tell application "System Preferences"
   activate
   set current pane to pane id "com.apple.preference.sound"
end tell
tell application "System Events"
   tell process "System Preferences"
       set frontmost to true
       --get properties of UI element of tab group of window "Sound"
       click radio button "input" of tab group of window "Sound"
       tell row 2 of table 1 of scroll area 1 of tab group 1 of window "Sound" to set selected to true
   end tell
end tell

Se hai più di due ingressi audio standard (Mic e Line In), potresti dover cambiare il numero in row 2 a seconda di quale sia appropriato, in base all'ordine nelle preferenze di Input.

    
risposta data 11.10.2012 - 20:52
fonte
1

Questo si basa sul pezzo di scripting della GUI di @robmathers e sulla mia domanda se è possibile "fare clic" sul dispositivo di scorrimento con applescript. Ho fatto un po 'di ricerche sulle azioni di AppleScript e dell'interfaccia utente e si scopre che può .

Questo usa lo scripting GUI che è triste, ma FUNZIONA.

tell application "System Events"
    set volume input volume 0
end tell
tell application "System Preferences"
    activate
    set current pane to pane id "com.apple.preference.sound"
end tell
tell application "System Events"
    tell process "System Preferences"
        set frontmost to true
        click radio button "input" of tab group 1 of window "Sound"
        perform action "AXDecrement" of slider 1 of group 2 of tab group 1 of window "Sound"
    end tell
end tell
tell application "System Preferences"
    quit
end tell

Ecco cosa sta succedendo in questo script:

  1. Imposta il volume di input su 0 - questo sposta il cursore completamente a sinistra
  2. "Fai clic" sul dispositivo di scorrimento per fare qualsiasi cosa del voodoo dietro le quinte che Apple abbia ritenuto necessario per "disattivare" la linea di input (questo è ridicolo)
  3. Esce dall'applicazione Preferenze di sistema.

Una cosa da notare: la finestra Preferenze audio non può essere già aperta prima di eseguire questo o il primo set volume input volume 0 non funziona.

È anche banale modificare lo script per riattivare l'audio (che soffre anche dello stesso problema). (Usa "AXIncrement" per l'azione)

Enormi oggetti di scena per @robmathers per avermi portato quanto necessario per capire questo ultimo pezzo. Aspetterò ancora di assegnare la taglia nel caso in cui qualcun altro abbia una soluzione più elegante, ma in caso contrario, è la sua per la presa.

    
risposta data 11.10.2012 - 22:27
fonte
0

Ora sembra esserci un'app per farlo zitto link

    
risposta data 17.02.2016 - 15:37
fonte

Leggi altre domande sui tag