2012-09-02 17 views
10

पर प्रोग्रामेटिक रूप से परिवेश-प्रकाश संवेदक स्क्रीन को अक्षम करना अक्षम करें, मैं दिन के लिए कर्नेल कोड रेपो में चारों ओर खुदाई कर रहा हूं, लेकिन मुझे यह कहीं भी नहीं मिल रहा है।ओएस एक्स

मैं परिवेश-प्रकाश संवेदक आधारित स्क्रीन की स्थिति को अक्षम/सक्षम/पहचानना चाहता हूं, जिसमें बहुत से उच्च अंत मैक लैपटॉप हैं। यह डिमिंग है जो प्रदर्शन नियंत्रण कक्ष में "स्वचालित रूप से चमक समायोजित करें" चेकबॉक्स द्वारा सक्रिय है।

ध्यान दें कि मैं नहीं आधा सेटिंग के बारे में बात कर रहा हूं जो स्क्रीन को नींद से पहले नाटकीय रूप से मंद कर देता है। मैं सेटिंग के बारे में बात कर रहा हूं जो स्क्रीन को अंधेरे कमरे में मंद करता है और इसे हल्के कमरे में चमकता है, जो अलग है।

यदि कोई मुझे सही दिशा में इंगित कर सकता है तो मैं बहुत अच्छा होगा। मुझे लगता है कि इसे कहीं IOKit में संभाला जाता है, शायद या तो IOGraphics जहां स्क्रीन चमक को संभाला जाता है, या कहीं IOKit/pwr_mgt में, लेकिन मुझे बस यह नहीं मिल रहा है।

धन्यवाद

संपादित करें: मुझे पता है तुम एक तरह से AppleScript के साथ सिस्टम प्राथमिकताएं संबोधित करके यह कर सकते हैं। यदि यह अस्तित्व में है, तो मैं असली तरीके की तलाश में हूं।

+1

संभव डुप्लिकेट [मैक पर सेंसर से डेटा प्राप्त करने पर कोई नमूना कोड?] (http://stackoverflow.com/questions/4628547/any- नमूना-code-on-getting-data-from-sensors-on-mac) –

+1

ऐप्पल शायद ही कभी किसी भी नए ड्राइवर को खुले तौर पर सोर्सिंग नहीं कर रहा है, लगभग इंटेल संक्रमण, इसलिए आपको इन (निजी) एपीआई को खोजने के लिए शायद कुछ सुस्त करने की आवश्यकता होगी। अमित सिंह का पुराना उदाहरण शायद एक अच्छी शुरुआत है - मैक के नए मॉडल एक अलग ड्राइवर का उपयोग कर सकते हैं, हालांकि (मेरे पास हल्के सेंसर वाला मॉडल नहीं है, इसलिए मैं आपको नहीं बता सका)। आपको 'ioreg' या' IORegistryExplorer' टूल के माध्यम से डिवाइस और ड्राइवर वर्ग को ढूंढने में सक्षम होना चाहिए। यदि एपीआई कॉल बदल गए हैं, तो आप सिस्टम प्राथमिकताओं जैसे मौजूदा ऐप्स द्वारा उपयोग की जाने वाली 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

धन्यवाद, लेकिन यह मेरे मैकबुक प्रो पर काम नहीं कर रहा है। मैं इसे किसी प्रोग्राम के हिस्से के रूप में करना चाहता हूं, वैसे भी - मैं एक एपीआई की तलाश में हूं - इसलिए लॉग आउट/बिट एक सौदा ब्रेकर भी है। – 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

टा दा!