2012-09-02 9 views
10

He estado hurgando en el repositorio de código del kernel durante días, pero no puedo encontrarlo en ninguna parte.Deshabilitar la atenuación de la pantalla del sensor de luz ambiental mediante programación en OS X

Quiero deshabilitar/habilitar/detectar el estado de la atenuación de la pantalla basada en el sensor de luz ambiental que tienen muchas de las computadoras portátiles Mac de mayor nivel. Esta es la atenuación que se activa mediante la casilla "Ajustar brillo automáticamente" en el panel de control de Pantalla.

Tenga en cuenta que estoy NO hablando de la configuración halfdim que hace que la pantalla se atenúe dramáticamente justo antes de que duerma. Estoy hablando de la configuración que atenúa la pantalla en las habitaciones oscuras y la ilumina en las salas iluminadas, lo cual es diferente.

Si alguien puede señalarme en la dirección correcta, me gustaría. Supongo que se maneja en algún lugar de IOKit, probablemente en IOGraphics, donde se maneja el brillo de la pantalla, o en algún lugar de IOKit/pwr_mgt, pero no puedo encontrarlo.

Gracias

Editar: Sé que usted puede hacer esto tipo de esta abordando Preferencias del sistema con AppleScript. Estoy buscando el camino real, si existe.

+1

posible duplicado de [¿Cualquier código de muestra para obtener datos de sensores en Mac?] (http://stackoverflow.com/questions/4628547/any-sample-code-on-getting-data-from-sensors-on-mac) –

+1

Apple no ha sido de código abierto casi ningún controlador nuevo, aproximadamente desde la transición de Intel, por lo que probablemente necesites investigar para encontrar estas API (privadas). El antiguo ejemplo de Amit Singh es probablemente un buen comienzo; sin embargo, los modelos más nuevos de Mac pueden usar un controlador diferente (no tengo un modelo con sensor de luz, así que no podría decírtelo). Debería poder encontrar el dispositivo y la clase de controlador a través de las herramientas 'ioreg' o' IORegistryExplorer'. Si las llamadas a la API han cambiado, probablemente pueda rastrear los métodos de usuario de IOService utilizados por las aplicaciones existentes, como las Preferencias del Sistema. – pmdj

+0

¿Alguna actualización sobre esto? – Indolering

Respuesta

1

cambiar el "ajusta automáticamente el brillo" usando el comando defaults:

defaults write com.apple.BezelServices dAuto -boolean false 

también recuperar la configuración actual usando el comando defaults:

defaults read com.apple.BezelServices dAuto 

AppleScript equivalente:

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

Use true para habilitar y false para deshabilitar la función.
Es posible que deba volver a iniciar sesión para que los cambios surtan efecto.

+0

Gracias, pero esto no funciona en mi MacBook Pro. Quiero hacer esto como parte de un programa, de todos modos, estoy buscando una API, por lo que el bit de salida también es un factor decisivo. – peterjb

3

Tratando de hacer esto en Mavericks no tuvo éxito para mí. Después de algunas investigaciones he descubierto es necesario utilizar el siguiente comando:

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

Creo que especifica la ruta completa es necesario de lo contrario dejaría de pagar a Biblioteca/Preferencias del usuario lo cual es incorrecto. Estar en ese directorio en Terminal tampoco funciona debido a la forma en que funciona defaults.

Esto no actualiza la casilla de verificación en Preferencias del Sistema -> Muestra sin embargo.

2

Esto no es una API, per sé .. pero hay muchos maneras de controlar launchdtravés de una API.

sudo launchctl stop com.apple.AmbientDisplayAgent

sudo launchctl remove com.apple.AmbientDisplayAgent

TA DA!

Cuestiones relacionadas