सक्रिय या अगली विंडो पर फ़ोकस ले जाने के लिए एपस्क्रिप्ट


1

मैं एक "कमांड-टैब" शैली सेटअप को लागू करने की कोशिश कर रहा हूं जो केवल एक विशिष्ट स्थान के भीतर काम करता है। अधिकांश ऐप के लिए, "Ctrl-F4" जो "सक्रिय या अगली विंडो पर ध्यान केंद्रित करता है" सही ढंग से काम करता है, लेकिन ईमैक्स / एक्वामाक्स के लिए ऐसा नहीं होता है (जैसा कि ऐप द्वारा कीपर को अवशोषित किया जाता है)। (सिस्टम वरीयताएँ-> कीबोर्ड-> शॉर्टकट-> कीबोर्ड इस विकल्प को सूचीबद्ध करता है)। मैं चाहता हूं कि मैं उन खिड़कियों के बीच जाऊं जिन्हें मैंने अंतरिक्ष में व्यवस्थित किया है, अर्थात मेरी आर स्क्रिप्ट, एक्स 11 में प्लॉट और पीएनजी / पीडीएफ प्रारूप में।

मैं Fastscripts या Keypress पर अन्य ऐप्स के साथ एक मनमाना एप्सस्क्रिप्ट चला सकता हूं। इसलिए मैं दो विकल्प देखता हूं:

  1. सीधे विंडो मैनेजर को बताएं कि वह बिना कीपर से गुजरे, फोकस को पूरा करें
  2. सक्रिय विंडो के रूप में एक्वामाक्स के लिए एक कीप का उपयोग करें लेकिन जाँच करें। एक्वामेक्स खोजने पर, वर्तमान स्थान में प्रक्रियाओं की एक सूची प्राप्त करें और अगले एक पर जाएं। (एक्वामैक्स की जाँच करना बुद्धिमानी लगती है क्योंकि डिफ़ॉल्ट व्यवहार इस लुकअप की तुलना में तेज़ होता है)

इन व्यवहारों के लिए खोज करना मुश्किल है, और applescripts प्रलेखन एक नौसिखिया के लिए बीजान्टिन है, इसलिए मैं नहीं देखता कि उनमें से किसी एक को कैसे प्राप्त किया जाए।

जवाबों:


1

यह देखें कि सिस्टम ईवेंट के साथ इनवॉइस करना emacs / aquamacs के दायरे को ओवरराइड नहीं करता है।

tell application "System Events" to key code 48 using {command down}

अगर वह अभी भी मदद नहीं करता है, तो आप इसके लिए फंस सकते हैं:

tell application "System Events"
    set theName to name of the first process whose frontmost is true
    if theName contains "emacs" then
        set frontmost of item -2 of (every process whose visible is true) to true
    else
        key code 48 using {command down}
    end if
end tell

यह बहुत मददगार है, बहुत-बहुत धन्यवाद। सिस्टम इवेंट को फंसाने के लिए वास्तव में आवश्यक है। दुर्भाग्य से, यहां तक ​​कि यह काफी काम नहीं करता है क्योंकि सी-एफ 4 आपको नियंत्रण कुंजी को दबाकर सभी खिड़कियों के माध्यम से चक्र करने की अनुमति देता है, जबकि पाठ्यक्रम की यह एप्लायस्क्रिप्ट कार्यान्वयन केवल एक बार कीपर करता है। सभी खिड़कियों के माध्यम से साइकिल चलाना असंभव बना, केवल दो के बीच स्विच करना। मुझे डर लगने लगा है कि इस कार्यशीलता को लागू करने के लिए एक महत्वपूर्ण राशि की आवश्यकता होगी!
डैनियल लॉसन

मैं आपकी ज़रूरतों को नहीं समझ सकता, पूरी तरह से, तब। क्या आप दो से अधिक के माध्यम से साइकिल चलाना चाहते हैं? क्या वे समान संख्या में ऐप्स से हैं? आपके पास एक स्क्रिप्ट हो सकती है, जो ऐप्स के बीच चक्र करती है, प्रत्येक को बदले में सक्रिय करती है।
jweaks

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

इसलिए, एप्सिलस्क्रिप्ट समाधान ने मेरी अंतर्निहित समस्या को हल नहीं किया है, लेकिन मैं अब इसे हल कर सकता हूं। एप्लिकेशन हाइपरस्विच ( bahoom.com/hyperswitch ) वह विकल्प रखता है जो मुझे विकल्प-टैब में चाहिए था।
डैनियल लॉसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.