2012-09-02 112 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

ただ!