在OS X上以编程方式禁用环境光传感器屏幕调光

pet*_*rjb 10 macos iokit

我已经在内核代码回购中挖掘了好几天,但我无法在任何地方找到它.

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

请注意,我不是在谈论halfdim设置,导致屏幕在睡眠前显着变暗.我说的是在黑暗的房间里调暗屏幕并在明亮的房间里照亮它的设置,这是不同的.

如果有人能指出我正确的方向,我会很高兴.我认为它是在IOKit的某个地方处理的,可能是处理屏幕亮度的IOGraphics,或IOKit/pwr_mgt中的某处,但我找不到它.

谢谢

编辑:我知道您可以通过使用AppleScript解决系统首选项来实现此目的.我正在寻找真正的方式,如果它存在的话.

Ale*_*ray 6

根据 s\xc3\xa9,这不是一个 API ..但是有很多方法可以launchd 通过 API进行控制。

\n\n

sudo launchctl stop com.apple.AmbientDisplayAgent

\n\n

sudo launchctl remove com.apple.AmbientDisplayAgent

\n\n

哒哒!

\n


Oli*_*tin 5

尝试在小牛队上这样做对我来说没有成功。经过一番研究,我发现您需要使用以下命令:

defaults write /Library/Preferences/com.apple.iokit.AmbientLightSensor "Automatic Display Enabled" -bool TRUE
Run Code Online (Sandbox Code Playgroud)

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

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


Ann*_*nne 1

使用以下命令更改“自动调整亮度”设置defaults

defaults write com.apple.BezelServices dAuto -boolean false
Run Code Online (Sandbox Code Playgroud)

还可以使用以下命令检索当前设置defaults

defaults read com.apple.BezelServices dAuto
Run Code Online (Sandbox Code Playgroud)

AppleScript 等效项:

do shell script "defaults write com.apple.BezelServices dAuto -boolean false"
Run Code Online (Sandbox Code Playgroud)

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