2012-09-02 108 views
10

我在内核代码回购中一直在寻找好几天,但我无法在任何地方找到它。在OS X上以编程方式禁用环境光线传感器屏幕调光

我想要禁用/启用/检测许多高端Mac笔记本电脑的基于环境光线传感器的屏幕调光状态。这是由显示控制面板中的“自动调整亮度”复选框激活的调光。

请注意,我是不是谈论halfdim设置,导致屏幕在睡眠前急剧昏暗。我正在谈论的是在黑暗房间中调暗屏幕的设置,并在明亮的房间中对其进行调光,这是不同的。

如果任何人甚至可以指出我在正确的方向我会很好。我认为它是在IOKit的某处处理的,可能是IOGraphics屏幕亮度处理,或者是IOKit/pwr_mgt中的某处,但我找不到它。

感谢

编辑:我知道你可以通过处理系统偏好设置使用AppleScript那种做这个。我正在寻找真正的方法,如果它存在。

+1

[在Mac上从传感器获取数据的任何示例代码的可能重复?](http://stackoverflow.com/questions/4628547/any-sample-code-on-getting-data-from-sensors-on-mac) –

+1

苹果公司几乎没有开放任何新的驱动程序,大约英特尔转型,所以你可能需要做一些调查才能找到这些(私人)API。阿米特辛格的老例子可能是一个好的开始 - 新的Mac模型可能会使用不同的驱动程序,但(我没有带光传感器的模型,所以我不能告诉你)。您应该能够通过'ioreg'或'IORegistryExplorer'工具找到设备和驱动程序类。如果API调用已更改,则可以跟踪现有应用程序使用的IOService用户方法,例如系统偏好设置。 – pmdj

+0

这方面的更新? – Indolering

回答

1

更改 “自动调节亮度” 使用defaults命令设置:

defaults read com.apple.BezelServices dAuto 

的AppleScript相当于:

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

defaults write com.apple.BezelServices dAuto -boolean false 

使用defaults命令也检索当前的设置

使用true启用和false禁用该功能。
您可能需要重新登录才能使更改生效。

+0

谢谢,但这不适用于我的MacBook Pro。我想把它作为一个程序的一部分,无论如何 - 我正在寻找一个API - 所以注销/注入也是一个交易断路器。 – peterjb

3

试图在小牛队这样做对我来说是不成功的。一些研究我发现后,您需要使用下面的命令:

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

我相信指定的完整路径,否则需要将默认为用户的库/首选项是不正确。由于defaults的工作方式,终端中的该目录不起作用。

虽然这不会更新系统偏好设置 - >显示中的复选框。

2

这不是一个API,本身 ..但也有很多方式通过API控制launchd

sudo launchctl stop com.apple.AmbientDisplayAgent

sudo launchctl remove com.apple.AmbientDisplayAgent

ただ!