2012-09-02 8 views
10

Sto scavando nel repository del codice del kernel per giorni, ma non riesco a trovarlo da nessuna parte.Disattiva programmaticamente lo schermo del sensore di luminosità ambientale su OS X

Voglio disabilitare/abilitare/rilevare lo stato del dimmer basato sul sensore di luce ambientale che molti dei laptop Mac di fascia più alta hanno. Questo è l'attenuazione attivata dalla casella di controllo "Regolazione automatica luminosità" nel pannello di controllo Display.

Nota che sono NON parlando dell'impostazione halfdim che fa sì che lo schermo si attenui drasticamente prima di dormire. Sto parlando dell'impostazione che attenua lo schermo nelle stanze buie e le illumina in stanze luminose, il che è diverso.

Se qualcuno può indicarmi la giusta direzione, sarei molto bravo. Presumo che sia gestito da qualche parte in IOKit, probabilmente IOGraphics in cui viene gestita la luminosità dello schermo, o da qualche parte in IOKit/pwr_mgt, ma non riesco proprio a trovarlo.

Grazie

Edit: So che è possibile tipo di farlo questo indirizzando Preferenze di Sistema con AppleScript. Sto cercando il modo reale, se esiste.

+1

possibile duplicato di [Qualsiasi codice di esempio su come ottenere dati dai sensori su Mac?] (http://stackoverflow.com/questions/4628547/any-sample-code-on-getting-data-from-sensors-on-mac) –

+1

Apple non è stato open-sourcing quasi nessun nuovo driver, circa dal la transizione Intel, quindi probabilmente dovrai fare un po 'di ricerche per trovare queste API (private). Il vecchio esempio di Amit Singh è probabilmente un buon inizio - i nuovi modelli di Mac potrebbero utilizzare un driver diverso, anche se (non ho un modello con sensore di luce, quindi non potrei dirtelo). Dovresti essere in grado di trovare il dispositivo e la classe del driver tramite gli strumenti 'ioreg' o' IORegistryExplorer'. Se le chiamate all'API sono state modificate, è probabilmente possibile rintracciare i metodi utente IOService utilizzati dalle app esistenti, come Preferenze di Sistema. – pmdj

+0

Eventuali aggiornamenti su questo? – Indolering

risposta

1

cambiare la "regola automaticamente la luminosità" impostazione usando il comando defaults:

defaults write com.apple.BezelServices dAuto -boolean false 

recuperare anche l'impostazione corrente utilizzando il comando defaults:

defaults read com.apple.BezelServices dAuto 

AppleScript equivalente:

do shell script "defaults write com.apple.BezelServices dAuto -boolean false" 

Utilizzare true per abilitare e false per disabilitare la funzione.
Potrebbe essere necessario eseguire nuovamente l'accesso per rendere effettive le modifiche.

+0

Grazie, ma questo non funziona sul mio MacBook Pro. Voglio farlo come parte di un programma, comunque - sto cercando un'API - quindi anche il logout/in bit è un rompicapo. – peterjb

3

Provare a fare questo su Mavericks non ha avuto successo per me. Dopo alcune ricerche ho scoperto è necessario utilizzare il seguente comando:

defaults write /Library/Preferences/com.apple.iokit.AmbientLightSensor "Automatic Display Enabled" -bool TRUE 

Credo specificando il percorso completo è necessario altrimenti sarebbe di default per Library/Preferences dell'utente che non è corretto. Essere in quella directory in Terminale non funziona a causa del modo in cui funziona defaults.

Questo non aggiorna la casella di spunta in Preferenze di Sistema -> Visualizza però.

2

Questa non è un'API, per sé .. ma ci sono molti modi per controllare launchdtramite un API.

sudo launchctl stop com.apple.AmbientDisplayAgent

sudo launchctl remove com.apple.AmbientDisplayAgent

Ta Da!