Macos 在OS X上以编程方式禁用环境光照传感器屏幕调光
我已经在内核代码repo中挖掘了好几天,但是我在任何地方都找不到这个 我想禁用/启用/检测许多高端Mac笔记本电脑所具有的基于环境光传感器的屏幕调光状态。这是通过显示控制面板中的“自动调整亮度”复选框激活的调光 请注意,我不是在谈论半暗设置,它会导致屏幕在睡觉前急剧变暗。我说的是在黑暗的房间里使屏幕变暗,在明亮的房间里使屏幕变亮的设置,这是不同的 如果有人能给我指出正确的方向,我会非常高兴。我假设它是在IOKit的某个地方处理的,可能是在处理屏幕亮度的传记中,或者是在IOKit/pwr_mgt的某个地方,但我就是找不到它 谢谢 编辑:我知道您可以通过使用AppleScript解决系统首选项来实现这一点。我在寻找真实的方法,如果存在的话。使用Macos 在OS X上以编程方式禁用环境光照传感器屏幕调光,macos,iokit,Macos,Iokit,我已经在内核代码repo中挖掘了好几天,但是我在任何地方都找不到这个 我想禁用/启用/检测许多高端Mac笔记本电脑所具有的基于环境光传感器的屏幕调光状态。这是通过显示控制面板中的“自动调整亮度”复选框激活的调光 请注意,我不是在谈论半暗设置,它会导致屏幕在睡觉前急剧变暗。我说的是在黑暗的房间里使屏幕变暗,在明亮的房间里使屏幕变亮的设置,这是不同的 如果有人能给我指出正确的方向,我会非常高兴。我假设它是在IOKit的某个地方处理的,可能是在处理屏幕亮度的传记中,或者是在IOKit/pwr_mgt的
默认值命令更改“自动调整亮度”设置:
defaults write com.apple.BezelServices dAuto -boolean false
defaults read com.apple.BezelServices dAuto
还可以使用defaults
命令检索当前设置:
defaults write com.apple.BezelServices dAuto -boolean false
defaults read com.apple.BezelServices dAuto
AppleScript等效文件:
do shell script "defaults write com.apple.BezelServices dAuto -boolean false"
使用true
启用该功能,使用false
禁用该功能。
您可能需要重新登录才能使更改生效。尝试在Mavericks上执行此操作对我来说不成功。经过一些研究,我发现您需要使用以下命令:
defaults write /Library/Preferences/com.apple.iokit.AmbientLightSensor "Automatic Display Enabled" -bool TRUE
我认为指定完整路径是必要的,否则它将默认为用户的库/首选项,这是不正确的。由于defaults
的工作方式,在终端的那个目录中也不起作用
不过,这不会更新系统首选项->显示中的勾选框。根据sé,这不是API。。但是有很多方法可以通过API控制launchd
sudo launchctl stop com.apple.AmbientDisplayAgent
sudo launchctl remove com.apple.AmbientDisplayAgent
Ta-Da发布此消息,因为它可能会帮助像我这样的人,他们已经禁用了环境光感应功能,但从睡眠中醒来时仍然发现他们的计算机变暗。事实证明,我还需要取消选中该框以“在使用电池电源时使显示器稍微变暗”
系统首选项>电池>在电池供电时稍微调暗显示屏
见下图:
苹果可能的复制品几乎没有开源,几乎没有新的驱动程序,大约是在英特尔转型后,所以你可能需要做一些调查来找到这些(私有)API。阿米特·辛格(Amit Singh)的老例子可能是一个很好的开始——尽管较新的Mac机型可能使用不同的驱动程序(我没有一款带有光传感器的机型,所以我不能告诉你)。您应该能够通过ioreg
或IORegistryExplorer
工具找到设备和驱动程序类。如果API调用已更改,您可能可以跟踪现有应用程序使用的IOService用户方法,例如系统首选项。谢谢,但这在我的MacBook Pro上不起作用。我想把它作为一个程序的一部分,不管怎样——我正在寻找一个API——所以注销/登录位也是一个交易破坏者。这过去是有效的,但现在显然不行了(我在macOS 10.14 Mojave上),这在macOS Mojave 10.14.3中仍然是最新的吗?