2011-06-28 6 views
5

पर स्क्रीन रंगों को प्रोग्रामेटिक रूप से उलटा कैसे करें मैक पर चलाने के लिए मैं एक स्क्रिप्ट कैसे लिख सकता हूं जो स्क्रीन रंगों को बदल देता है?मैक

How to programmatically invert screen colors in Linux के समान, लेकिन दुर्भाग्यवश xcalib विंडोज और लिनक्स पर काम करता है लेकिन मैक नहीं जहां तक ​​मैं कह सकता हूं।

संपादित करें: मेरे पास आंशिक समाधान है। मैं एक तरह से अपनी सेटिंग्स के सभी डंप पाया पहले और स्क्रीन रंग inverting के बाद:

$ mkdir before && mkdir after && cd before 
$ for d in $(defaults domains | sed 's/,//g'); do defaults read $d > $d; done 
$ cd ../after 
$ # System Preferences > Universal Access > Display > White on Black 
$ for d in $(defaults domains | sed 's/,//g'); do defaults read $d > $d; done 
$ diff -r before after 
diff -r before/com.apple.CoreGraphics after/com.apple.CoreGraphics 
3c3 
<  DisplayUseInvertedPolarity = 0; 
--- 
>  DisplayUseInvertedPolarity = 1; 
diff -r before/com.apple.universalaccess after/com.apple.universalaccess 
5c5 
<  whiteOnBlack = 0; 
--- 
>  whiteOnBlack = 1; 

तो अब मुझे पता है कि सेटिंग स्क्रीन उलट लिए जिम्मेदार हैं। लेकिन जब मैं स्पष्ट कोशिश करता हूं,

$ defaults write com.apple.universalaccess whiteOnBlack -int 1 
$ defaults write com.apple.CoreGraphics DisplayUseInvertedPolarity -int 1 

कुछ भी नहीं होता है। संभवतया जो भी प्रोग्राम इन मानों का उपयोग करते हैं उन्हें पुनः लोड करने के लिए कहा जाना चाहिए (उदाहरण के लिए उदाहरण dotfiles उदाहरण लेने के लिए खोजक को मारने की आवश्यकता है)। लेकिन मुझे यकीन नहीं है कि वे कौन से ऐप्स होंगे, या फिर भी यह सही समाधान है या नहीं।

+0

क्यों आप ऐसा करना चाहते हैं? –

+0

कोडिंग के दौरान नियमित अंतराल पर अपनी स्क्रीन से देखने के लिए खुद को याद दिलाने के लिए। सुझाव? –

+0

मुझे लगता है कि विंडोसेवर प्रक्रिया को सेटिंग में बदलाव की सूचना देने के लिए एक झुकाव की आवश्यकता है, लेकिन मुझे नहीं पता कि कैसे। यदि आप वास्तव में विंडोसेवर को मार देते हैं, तो मुझे लगता है कि यह किसी भी जीयूआई ऐप्स को भी मार देगा। – JWWalker

उत्तर

4

एप्पल स्क्रिप्ट का यह टुकड़ा यह करना होगा:

tell application "System Events" 
    key code 28 using {control down, option down, command down} 
end tell 

यह नियंत्रण-विकल्प- Cmd-8 शॉर्टकट का उपयोग करता है (कीकोड 28 8 नंबर है)। आपको यह पता लगाना होगा कि आपको जो कुछ भी चाहिए उसे कॉल करें ...

+0

यह स्क्रिप्ट का आह्वान करते समय टाइपिंग कर रहा है, तो यह ग्लिच का कारण बनता प्रतीत होता है। क्या कोई ऐसा समाधान है जिसमें सिमुलेटिंग कीस्ट्रोक शामिल नहीं है? –

+0

क्षमा करें, मुझे नहीं पता ... मैक जीयूआई प्रोग्रामिंग के बारे में मुझे बहुत कुछ पता नहीं है। संभवतः यह कीबोर्ड शॉर्टकट कुछ अन्य अंतर्निहित कॉल को बुला रहा है, लेकिन मुझे नहीं पता। – spacemanaki

+1

इस काम के लिए आपके पास सिस्टम प्राथमिकताएं> सार्वभौमिक पहुंच> सहायक उपकरणों के लिए एक्सेस सक्षम करें बॉक्स में चेक बॉक्स होना चाहिए – roberthuttinger

1

आप इस स्निपेट को सही करने का प्रयास कर सकते हैं जो जीयूआई स्क्रिप्टिंग के साथ वर्तमान स्थिति लौटाता है। मान केवल पढ़ने के लिए प्रतीत होता है और इसे 1 या 0 विफल करने की कोशिश कर रहा है।

tell application "System Preferences" 
    launch 
    set current pane to pane "com.apple.preference.universalaccess" 
    tell application "System Events" 
     return value of checkbox "Invert colors" of window 1 of process "System Preferences" 
    end tell 
    quit 
end 
1
tell application "System Preferences" 
    activate 
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess" 
    tell application "System Events" to tell process "System Preferences" 
    click the checkbox "Invert colors" of window "Accessibility" 
    end tell 
end tell 
tell application "System Preferences" to quit