在OS X上编程禁用环境光传感器屏幕调暗。

11

我已经在内核代码库中搜寻了几天,但就是找不到。

我想禁用/启用/检测基于环境光传感器的屏幕自动调节亮度功能,这个功能在许多高端 Mac 笔记本电脑上都有。这个功能是通过“显示”控制面板中的“自动调节亮度”复选框激活的。

请注意,我不是在讨论 halfdim 设置,该设置会在屏幕进入睡眠模式之前使屏幕显著变暗。我在谈论的是在暗房间中调暗屏幕,在亮房间中升亮屏幕的设置,这是不同的。

如果有人能给我指个方向,我将不胜感激。我猜它可能是在 IOKit 中的某个地方处理的,可能是 IOGraphics 处理屏幕亮度的地方,或者是在 IOKit/pwr_mgt 的某个地方,但我就是找不到。

谢谢

编辑:我知道您可以通过使用 AppleScript 来解决此问题。我正在寻找真正的方式,如果存在的话。


1
可能是从Mac传感器获取数据的任何示例代码?的重复问题。 - jscs
1
自从英特尔转型以来,苹果几乎没有开源任何新的驱动程序,所以你可能需要进行一些侦查才能找到这些(私有)API。阿米特·辛格的旧例子可能是一个好的起点 - 虽然较新的 Mac 型号可能使用不同的驱动程序(我没有带光传感器的型号,所以无法告诉你)。你应该能够通过 ioregIORegistryExplorer 工具找到设备和驱动程序类。如果 API 调用发生了变化,你可以追踪现有应用程序使用的 IOService 用户方法,比如系统偏好设置。 - pmdj
4个回答

6

这不是一个API,严格来说.. 但有很多方法可以通过API控制launchd

sudo launchctl stop com.apple.AmbientDisplayAgent

sudo launchctl remove com.apple.AmbientDisplayAgent

大功告成!


5

我曾尝试在Mavericks上进行此操作,但未成功。经过一些研究,我发现您需要使用以下命令:

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

我相信指定完整路径是必要的,否则它会默认到用户的“Library/Preferences”,这是不正确的。在终端中进入该目录也行不通,因为defaults的工作方式。

然而,这并不会更新“系统偏好设置”->“显示器”的复选框。


在macOS Mojave 10.14.3中,这个还是最新的吗? - gr4nt3d

1

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

defaults write com.apple.BezelServices dAuto -boolean false

同时,可以使用defaults命令检索当前设置:

defaults read com.apple.BezelServices dAuto

AppleScript 等效:

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

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


谢谢,但这在我的MacBook Pro上不起作用。 无论如何,我想将其作为程序的一部分来完成 - 我正在寻找一个API - 因此注销/登录部分也是必须的。 - peterjb
这曾经可以工作,但显然现在不行了(我使用的是macOS 10.14 Mojave) - dentarg

1
发布这篇文章是为了帮助那些像我一样已经禁用环境光感应但仍然发现计算机在从睡眠中唤醒时变暗的人。结果我还需要取消勾选“在电池供电时轻微降低显示屏亮度”的框。

系统偏好设置 > 电池 > 在电池供电时轻微降低显示屏亮度

请参见下面的图像:

uncheck auto dim on battery


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接