2011-11-20 12 views
6

मुझे अपने कोको ऐप में ग्लोबल हॉट कुंजी इनपुट बॉक्स बनाने की आवश्यकता है।मैक कोको ऐप में शॉर्टकट कुंजी इनपुट कैसे कार्यान्वित करें?

मुझे शॉर्टकट रिकॉर्डर के बारे में पता है, लेकिन यह एक बहुत पुराना समाधान है। इसमें कार्बन का उपयोग करके लागू किए गए हिस्से हैं, जिन्हें हटा दिया गया है, और यदि मैं इसका उपयोग करता हूं तो मैं अपने ऐप को मैक ऐप स्टोर पर प्रकाशित नहीं कर सकता।

क्या कोई उपयोग करने में आसान आधुनिक समाधान है? क्या कोई मुझे अपने आप इसे बनाने का तरीका दे सकता है (मुझे नहीं पता कि कहां से शुरू करना है)?

+1

कार्बन को हटाया नहीं गया है, केवल जीयूआई भागों। –

उत्तर

14

एक आधुनिक ढांचे ओएस एक्स 10.7+ में वैश्विक शॉर्टकट लागू करने के लिए MASShortcut नामित नहीं है।

+4

(है कि वह बनाया) <- नहीं वहाँ कुछ भी गलत नहीं है कि इसके साथ, लेकिन पारदर्शी होना चाहिए – cwRichardKim

+0

क्या यह केवल उन शॉर्टकट्स के लिए काम करता है जो पहले से ही अन्य ऐप्स में मौजूद नहीं हैं? मुझे शॉर्टकट पंजीकृत करने में समस्याएं हैं, उनमें से एक मैंने एक और ऐप में लागू किया है। इसके अलावा यदि मैं डिफ़ॉल्ट शॉर्टकट बदलता हूं तो यह काम नहीं करता है और कुंजी जो कि संशोधक कुंजी नहीं है, मेरा चल रहा है, जबकि किसी भी ऐप में काम नहीं कर रहा है। मैं cmd ​​+ c और alt + cmd + v पकड़ना चाहता हूं –

13

मैक ओएस एक्स 10.6 और उच्च में, आप तरीकों +addGlobalMonitorForEventsMatchingMask:handler: और +addLocalMonitorForEventsMatchingMask:handler:NSEvent वर्ग से परिभाषित कर सकते हैं। Monitoring Events निम्न जानकारी की रिपोर्ट करता है:

स्थानीय और वैश्विक ईवेंट मॉनीटर परस्पर अनन्य हैं। उदाहरण के लिए, वैश्विक मॉनीटर उस एप्लिकेशन की ईवेंट स्ट्रीम का निरीक्षण नहीं करता है जिसमें इसे इंस्टॉल किया गया है। स्थानीय घटना मॉनिटर केवल अपने आवेदन की घटना धारा को देखता है। "वर्तमान" एप्लिकेशन सहित सभी अनुप्रयोगों की घटनाओं की निगरानी करने के लिए, आपको ईवेंट मॉनीटर दोनों इंस्टॉल करना होगा।

उस पृष्ठ में दिखाया गया कोड स्थानीय ईवेंट मॉनीटर के लिए है, लेकिन वैश्विक ईवेंट मॉनिटर के लिए कोड समान है; NSEvent की विधि को किस बदलाव में शामिल किया गया है।

_eventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask: 
     (NSLeftMouseDownMask | NSRightMouseDownMask | NSOtherMouseDownMask | NSKeyDownMask) 
     handler:^(NSEvent *incomingEvent) { 
    NSEvent *result = incomingEvent; 
    NSWindow *targetWindowForEvent = [incomingEvent window]; 
    if (targetWindowForEvent != _window) { 
     [self _closeAndSendAction:NO]; 
    } else if ([incomingEvent type] == NSKeyDown) { 
     if ([incomingEvent keyCode] == 53) { 
      // Escape 
      [self _closeAndSendAction:NO]; 
      result = nil; // Don't process the event 
     } else if ([incomingEvent keyCode] == 36) { 
      // Enter 
      [self _closeAndSendAction:YES]; 
      result = nil; 
     } 
    } 
    return result; 
}]; 

एक बार पर नजर रखने के लिए अब जरूरी नहीं है, तो आप इसे निम्नलिखित कोड का उपयोग कर निकालें:

[NSEvent removeMonitor:_eventMonitor]; 
+0

हालांकि यह काम करेगा, यह कठिन तरीका है। इसके लिए कार्बन इवेंट मैनेजर का एपीआई अभी भी समर्थित है और सरल और आसान है, और इसके लिए दो तिहाई पार्टी कोको रैपर इसे और भी आसान बनाते हैं। –

+4

यह महत्वपूर्ण घटनाओं के लिए काम नहीं करता है जब तक ऐप पहुंच के लिए विश्वसनीय नहीं है –

+0

वैश्विक मॉनिटर काम नहीं करता है, स्थानीय रूप से मुझे इसे नीचे की ओर सुनने के लिए मिला है। लेकिन मुझे लगता है कि लोग वैश्विक गर्म कुंजी की तलाश में हैं :)। – Rabiees

10

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

इनमें से एक कार्बन घटनाक्रम हॉटकी एपीआई है। आप निश्चित रूप से एनएसईवेंट की घटना-मॉनिटर विधियों का उपयोग करके सभी घटनाओं के माध्यम से जा सकते हैं, लेकिन यह अनावश्यक काम है। कार्बन घटनाक्रम हॉटकी एपीआई अभी भी समर्थित है और बहुत आसान है - आप बस इसे बताएं कि आप किस कुंजी से मेल खाना चाहते हैं और कुंजी दबाए जाने पर क्या कॉल करना है। और वहां कोको रैपर जैसे डीडीएचओटीके हैं जो इसे और भी आसान बनाते हैं।

+0

धन्यवाद, पीटर! लेकिन मुझे पता है कि कैसे हॉटकी रजिस्टर करें। यह मेरे लिए आसान है। मैं उपयोगकर्ता से चाबियाँ रिकॉर्ड करना चाहता हूं, इसलिए मुझे अपनी वरीयता विंडो में "हॉट की एनएसटीक्स्टफिल्ड" जैसे कुछ को लागू करने की आवश्यकता है। –

+0

@VictorShcherbakov: शॉर्टकट रिकार्डर अभी भी ऐसा करने का सबसे अच्छा तरीका है जिसे मैं जानता हूं। यह कम से कम ट्रंक संस्करण में 64-बिट संगत होना चाहिए। http://code.google.com/p/shortcutrecorder/ –

+0

शॉर्टकट्रेकॉर्डर (डेमो एप्लिकेशन) मेरे लिए शेर + xcode4 पर काम नहीं कर रहा है। इसलिए मैं अभी भी अन्य इनपुट क्षेत्र shortcutrecorder – cyphunk

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