2013-02-21 69 views
8

मैंने एक थंडरबॉल्ट केबल का उपयोग करके एक आईमैक में एमबीए संलग्न किया है। आईमैक पर सीएमडी + एफ 2 दबाकर लक्ष्य प्रदर्शन मोड को एमएमए के लिए आईएमएसी के रूप में उपयोग करने में सक्षम बनाता है। क्या किसी के पास जानकारी है कि प्रोग्राम को प्रोग्राम को ट्रिगर कैसे करें?प्रोग्रामेटिक रूप से लक्ष्य प्रदर्शन मोड कैसे दर्ज करें?

मेरा पहला दृष्टिकोण एक CGEventPostkCGHIDEventTap

CGEventRef f2CommandDown = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, YES); 
CGEventSetFlags(f2CommandDown, kCGEventFlagMaskCommand); 
CGEventRef f2CommandUp = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, NO); 
CGEventPost(kCGHIDEventTap, f2CommandDown); 
CGEventPost(kCGHIDEventTap, f2CommandUp); 

कि काम नहीं करता है करने के लिए भेजने के लिए किया गया था। यह सब एक त्रुटि "बीप" है। (रूट उपयोगकर्ता के रूप में भी चलाने की कोशिश की)। मुझे लगता है, kCGHIDEventTap सिर्फ गलत लक्ष्य है और सीएमडी + एफ 2 ओएस के उच्च स्तर (उर्फ। "कहीं कहीं) में रह सकता है

कुछ कुंजी-ईवेंट कैप्चरिंग कोड चलाना सीएमडी + एफ 2 के लिए कुछ भी नहीं दिखाता है।

क्या किसी के पास इशारा है? अग्रिम में धन्यवाद!

+0

मैं एक डॉलर से अधिक शर्त लगाता हूं कि कीप्रेस कभी भी विंडो सर्वर पर नहीं जा रहा है, इसलिए हाँ, 'केसीएचआईडीएंडेंट टैप' बहुत देर हो चुकी है। आपको [IOKit] (http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/AccessingHardware/AH_Intro/AH_Intro.html%23/) पर एक कदम पीछे देखना होगा। मुझे लगता है कि एक [IOHIDManager] (http://developer.apple.com/library/mac/#documentation/IOKit/Reference/IOHIDManager_header_reference/Reference/reference।एचटीएमएल) आपको इन कीप्रेसों के _notified_ होने की अनुमति देगा, लेकिन अगर आप कर्नेल एक्सटेंशन बनाये बिना नकली कर सकते हैं तो मुझे आश्चर्य होगा। –

+0

यह भी देखें: http://www.cocoabuilder.com/archive/cocoa/166322-eject-key-code.html –

उत्तर

3

तरह कुंजी दबाव ट्रिगर मैं एक परियोजना है कि यह करता है शुरू कर दिया है, अर्थात् आईमैक पर नजर रखने और स्वचालित रूप से लक्षित प्रदर्शन मोड और टॉगल को गति प्रदान एक मैकबुक कनेक्ट होने पर ब्लूटूथ बंद करें। आप इसे https://github.com/duanefields/VirtualKVM से डाउनलोड कर सकते हैं। मैं कुंजी को ट्रिगर करने के लिए ऐप्पलस्क्रिप्ट का उपयोग कर रहा हूं।

+0

ओह, आदमी, तुम चट्टान! यह वही है जो मैं खोज रहा था! – artspb

+0

यह आश्चर्यजनक है! धन्यवाद – Jimmy

0

सोच रहा था कि क्या आपने कभी यह पता लगाया है। एकमात्र समाधान मैंने देखा है एक पूर्ण स्क्रीन खिड़की चल रहा है और इस

http://bogner.sh/2013/07/os-x-how-to-use-an-imac-as-monitor/#comment-50925

+0

एक कर्नेल एक्सटेंशन संभवतः नौकरी कर सकता है लेकिन मुझे अभी तक इतना नहीं मिला है क्योंकि इसके लिए बहुत अधिक शोध है मैं थोड़ा परीक्षण कर रहा था। – Boris

0

असल में आप osascript का उपयोग करके प्रोग्राम के बिना आसानी से ऐसा कर सकते हैं।

osascript -e 'tell application "System Events" to key code 144 using command down' 

लेकिन जब आप केबल प्लग करते हैं तो यह स्वचालित रूप से ऐसा नहीं करेगा।

यदि आप एक ब्लूटूथ कीबोर्ड और ट्रैकपैड का भी उपयोग करना चाहते हैं, तो आप उन्हें आईमैक पर अस्थायी रूप से ब्लूटूथ अक्षम करने के लिए ब्लूयूटिल का उपयोग करके मैकबुक पर स्विच कर सकते हैं ताकि मैकबुक कीबोर्ड और ट्रैकपैड को पकड़ सके। जब भी आप लक्ष्य प्रदर्शन मोड से बाहर निकलना चाहते हैं, तो बस मेरी मैकबुक पर ब्लूटूथ बंद करें और आईमैक के लिए कीबोर्ड और ट्रैकपैड से पुनः कनेक्ट करने के लिए कुछ सेकंड प्रतीक्षा करें।

अपने आईमैक पर, एक फ़ाइल ~/bin/लक्ष्य-प्रदर्शन-मोड में नीचे स्क्रिप्ट रखा, और चलाने के `chmod + x ~/bin/लक्ष्य-प्रदर्शन मोड

फिर अपने आईमैक पर

, में एक टर्म विंडो, कमांड के रूप में लक्ष्य-प्रदर्शन-मोड चलाएं। यदि आपकी मैकबुक पर ब्लूटूथ सक्षम है, और यह पहले से ही आपके कीबोर्ड और ट्रैकपैड को जानता है, तो यह उनसे कनेक्ट होगा। या ब्लूटूथ प्राथमिकताएं खोलें और प्रत्येक डिवाइस को ढूंढें और "कनेक्ट करें" (मैकबुक के अंतर्निर्मित कीबोर्ड और ट्रैकपैड का उपयोग करके)।

#! /usr/bin/env bash 

# Enter target-display mode with a macbook connected by cable; 
# then, temporarily turn off bluetooth so the macbook can the 
# bluetooth keyboard, trackpad and other devices that are currently 
# connected to the imac. 
# 
# Later, turn bluetooth back on so the imac can later reconnect to it's 
# bluetooth devices. 
# 
# To exit target display mode, turn off bluetooth on the macbook and 
# disconnect the cable. After a few seconds, the imac will reconnect to 
# the keyboard and trackpad. 
# 
osascript -e 'tell application "System Events" to key code 144 using command down' 
sleep 5 
(
/usr/local/bin/blueutil off 
sleep 60 
/usr/local/bin/blueutil on 
) & 

ध्यान दें कि स्क्रिप्ट मोड़ 60 सेकंड तक प्रतीक्षा करता है और फिर आईमैक पर ब्लूटूथ वापस चालू करता है। यह वास्तव में महत्वपूर्ण है कि आपके पास कोई अन्य कीबोर्ड या हार्ड-वायर्ड माउस न हो। यदि ब्लूटूथ बंद रहता है, तो आप ssh, या रीबूटिंग के बिना उन्हें पुनः कनेक्ट नहीं कर पाएंगे।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^