सिग्नल
सिग्नल एक ऐसा संदेश है जिसे आपने नाम देकर रख लिया: एक OSC संदेश, एक कच्चा UDP डेटाग्राम, एक HTTP रिक्वेस्ट या एक MQTT पब्लिश, अपने लक्ष्य के साथ। आप इसे एक बार बनाते हैं — सिग्नल स्क्रीन पर, या किसी दूसरी स्क्रीन से जो अभी भेजा उसे सहेजकर — और जब भी ज़रूरत हो उसे बाइट-दर-बाइट वही फिर भेजते हैं।
लाइब्रेरी एक JSON फ़ाइल है जिसे आप पढ़ सकते हैं, हाथ से संपादित कर सकते हैं, किसी दूसरी मशीन पर कॉपी कर सकते हैं या किसी प्रोजेक्ट के साथ कमिट कर सकते हैं। सिग्नल स्क्रीन इसे बाईं ओर फ़ोल्डरों के पेड़ के रूप में और दाईं ओर चुने गए सिग्नल के फ़ील्ड के रूप में दिखाती है।
सिग्नल क्या भेज सकता है
ट्रांसपोर्ट में किस्म चुनें। हर किस्म के अपने फ़ील्ड होते हैं:
| ट्रांसपोर्ट | फ़ील्ड | क्या बाहर जाता है |
|---|---|---|
| OSC | लक्ष्य host:port, OSC पता, आर्ग्युमेंट | एक नए UDP पोर्ट से, एक IP:port या host:port पर एक OSC संदेश। आर्ग्युमेंट प्रकारों के लिए OSC देखें। |
| UDP (रॉ) | लक्ष्य host:port, प्रकार (टेक्स्ट या Hex बाइट), पेलोड | ठीक इन बाइट वाला एक डेटाग्राम। टेक्स्ट जैसा लिखा है वैसा जाता है, बिना किसी टर्मिनेटर के; hex अंकों के जोड़े हैं जैसे de ad be ef (स्पेस और 0x प्रीफ़िक्स की अनुमति है)। |
| HTTP | मेथड, URL, टाइमआउट (ms), हेडर, प्रमाणीकरण, बॉडी | एक HTTP रिक्वेस्ट। देखें HTTP। |
| MQTT | ब्रोकर host:port, टॉपिक, QoS, retain, पेलोड | एक पब्लिश। देखें MQTT। |
हर सिग्नल में एक नाम, एक फ़ोल्डर और एक नोट भी होता है — यह क्या करवाना चाहिए और दूसरे सिरे पर क्या मेल खाना चाहिए।
OSC और UDP सिग्नल के लक्ष्य IP:port या host:port होते हैं (उदाहरण के लिए 127.0.0.1:9000); होस्ट नाम हर बार सिग्नल भेजते समय खोजा जाता है। MQTT सिग्नल का ब्रोकर host:port होता है; बिना पोर्ट के वह 1883 होता है।
जब आप सिग्नल की किस्म बदलते हैं, तो उसका संदेश उस किस्म के डिफ़ॉल्ट से फिर से शुरू होता है। केवल लक्ष्य बचता है, और वह भी केवल OSC और UDP (रॉ) के बीच, जहाँ लक्ष्य का वही अर्थ होता है।
सिग्नल भेजना
सिग्नल स्क्रीन से सिग्नल भेजने के लिए इनमें से कोई भी करें:
- उसे चुनें और भेजें दबाएँ।
- उसके फ़ील्ड में काम करते हुए Ctrl+Enter दबाएँ।
- पेड़ में उस पर डबल-क्लिक करें।
हर भेजाव कंसोल में एक पंक्ति लिखता है: क्या कहाँ गया, भेजे गए बाइट, या HTTP के लिए स्टेटस और लगा समय। विफलता (अस्वीकार किया गया कनेक्शन, न पहुँचने वाला होस्ट) वजह के साथ एक लाल पंक्ति होती है। अंतिम भेजाव का समय बटनों के बगल में दिखता है।
सिग्नल अपने प्रोटोकॉल की स्क्रीनों के उन्हीं कमांडों से बाहर जाता है, इसलिए इंस्पेक्टर उसे उसी टूल के नीचे सूचीबद्ध करता है जिसने भेजा, और दूसरा सिरा उसे आपके टाइप किए संदेश से अलग नहीं बता सकता।
हर किस्म कैसे भेजी जाती है:
| किस्म | कैसे बाहर जाती है |
|---|---|
| OSC | जैसे OSC स्क्रीन एक संदेश भेजती है। |
| UDP (रॉ) | लक्ष्य पर एक डेटाग्राम। |
| HTTP | जैसे HTTP स्क्रीन एक रिक्वेस्ट भेजती है, जब तक वहाँ कुकी रखें चालू है तब उसके कुकी जार के साथ। अस्वीकार किया गया कनेक्शन या टाइमआउट विफलता गिना जाता है, स्टेटस नहीं। |
| MQTT | जब तक MQTT स्क्रीन सिग्नल के ब्रोकर से जुड़ी है, उसी कनेक्शन पर, उसकी क्लाइंट id और क्रेडेंशियल के साथ। वरना — जुड़ी नहीं है, या किसी और ब्रोकर से जुड़ी है — Signal Lab इस एक पब्लिश के लिए सिग्नल के ब्रोकर से जुड़ता है, अपनी क्लाइंट id के साथ, बिना उपयोगकर्ता नाम के और क्लीन सेशन के साथ, फिर डिस्कनेक्ट हो जाता है। |
कनेक्शन सिग्नल के ब्रोकर का तब होता है जब होस्ट वही हो (केस को अनदेखा करके) और पोर्ट वही हो, जिसमें बिना पोर्ट लिखे ब्रोकर के लिए 1883 माना जाता है। नाम नहीं खोजे जाते: यहाँ localhost और 127.0.0.1 दो अलग ब्रोकर हैं, इसलिए जो सिग्नल एक को नाम देता है, वह दूसरे से बनाए गए कनेक्शन पर नहीं भेजा जाता।
TIP
MQTT सिग्नल कोई पासवर्ड नहीं रखता। जिस ब्रोकर को पासवर्ड चाहिए उस पर पब्लिश करने के लिए पहले MQTT स्क्रीन पर उस ब्रोकर से जुड़ें; फिर सिग्नल उसी कनेक्शन पर सवार हो जाता है।
किसी भी स्क्रीन से भेजना
पैलेट खोलने के लिए किसी भी स्क्रीन पर Ctrl+K दबाएँ, सिग्नल के नाम, फ़ोल्डर, लक्ष्य या संदेश के कुछ अक्षर टाइप करें, और Enter दबाएँ। पैलेट बंद हो जाता है और सिग्नल भेज दिया जाता है; आप उसी स्क्रीन पर रहते हैं जिसे देख रहे थे।
| कुंजी | क्या करती है |
|---|---|
| Ctrl+K | पैलेट खोलती है, या बंद करती है। |
| ↑ ↓ | चयन को हिलाती है। |
| Enter | चुना गया सिग्नल भेजती है। |
| Esc | बिना भेजे पैलेट बंद करती है। |
पैलेट अधिकतम 12 सिग्नल सूचीबद्ध करता है: जब आपने कुछ टाइप नहीं किया तो लाइब्रेरी के पहले 12, फिर जो मेल खाते हैं उनके पहले 12। किसी पंक्ति पर क्लिक उसे भेज देता है; बाहर क्लिक पैलेट बंद कर देता है।
सिग्नल बनाना
सिग्नल स्क्रीन पर
- वह फ़ोल्डर चुनें जिसमें सिग्नल रहना चाहिए (देखें मौजूदा फ़ोल्डर)।
- नया सिग्नल दबाएँ।
127.0.0.1:9000पर, पते/helloवाला एक नया OSC सिग्नल उस फ़ोल्डर में चुना हुआ आ जाता है। - नाम, ट्रांसपोर्ट और संदेश के फ़ील्ड बदलें।
हर बदलाव अपने आप सहेजा जाता है; इस स्क्रीन पर कोई सेव बटन नहीं है। जब तक लाइब्रेरी फ़ाइल पढ़ी नहीं जा सकती, कुछ भी सहेजा नहीं जाता और फ़ील्ड केवल-पढ़ने योग्य रहते हैं (देखें लाइब्रेरी फ़ाइल)।
डुप्लिकेट करें चुने गए सिग्नल के ठीक बाद एक कॉपी रखता है, उसके नाम के आगे · लगाकर। हटाएँ एक बार और पूछता है (हटाएँ?): दूसरा क्लिक उसे फ़ाइल से हटा देता है। उसका फ़ोल्डर रह जाता है, भले ही अब वह ख़ाली हो।
HTTP, OSC और MQTT स्क्रीन से
तीन स्क्रीनों का भेजने वाला हिस्सा — HTTP पर रिक्वेस्ट, OSC पर प्रेषक, MQTT पर पब्लिश — जो वह भेजेगा उसे सिग्नल के रूप में रख सकता है।
- संदेश सेट करें और उसे तब तक भेजें जब तक वह वैसा न करे जैसा आप चाहते हैं।
- सहेजें… दबाएँ (या स्क्रीन के उस हिस्से में Ctrl+S)। लाइब्रेरी में सहेजें डायलॉग खुलता है।
- नाम जाँचें: यह जो भेजा जा रहा है उससे सुझाया जाता है।
- कोई फ़ोल्डर चुनें या टाइप करें। पिछली बार उपयोग किया फ़ोल्डर भरा होता है;
Venue/Stageजैसा पथ जो अभी मौजूद नहीं है, बना दिया जाता है। - सहेजें दबाएँ।
इसके बाद स्क्रीन उस सिग्नल से जुड़ जाती है। बटनों के बगल की एक चिप बताती है कि वह कहाँ रहता है (❖ Folder / Name); सिग्नल स्क्रीन पर सिग्नल देखने के लिए उस पर क्लिक करें।
| आप देखते हैं | इसका अर्थ | आप क्या कर सकते हैं |
|---|---|---|
| ✓ सहेजा गया (धूसर) | लाइब्रेरी में ठीक वही है जो स्क्रीन भेजेगी। | सहेजने को कुछ नहीं। |
| सहेजें, और चिप पर बदला गया | स्क्रीन का संदेश सिग्नल से अलग है। | सहेजें या Ctrl+S स्क्रीन का संदेश उस सिग्नल में लिख देता है; उसका नाम, फ़ोल्डर और नोट वैसे ही रहते हैं। |
| इस रूप में सहेजें… | — | डायलॉग फिर खोलता है, सिग्नल के नाम और फ़ोल्डर से भरा हुआ, और एक नया सिग्नल सहेजता है। फिर स्क्रीन नए से जुड़ जाती है। |
तुलना संदेश को देखती है, यह नहीं कि वह कैसे लिखा है: JSON कुंजियों का क्रम और 32-बिट परिशुद्धता से आगे के OSC float के अंतिम अंक बदलाव नहीं गिने जाते।
HTTP और OSC स्क्रीन Signal Lab के फिर शुरू होने पर भी जुड़ाव रखती हैं; MQTT स्क्रीन इसे तब तक रखती है जब तक आप ऐप बंद नहीं करते।
WARNING
एक HTTP सिग्नल अपना प्रमाणीकरण — उपयोगकर्ता नाम और पासवर्ड, या टोकन — लाइब्रेरी फ़ाइल में सादे टेक्स्ट के रूप में रखता है। जो भी फ़ाइल पढ़ सकता है, वे पढ़ सकता है।
किसी सिग्नल को उसकी स्क्रीन में खोलना
चुने गए HTTP, OSC या MQTT सिग्नल पर एक बटन होता है जो उसे उसके प्रोटोकॉल की स्क्रीन (HTTP, OSC या MQTT) में खोलता है। स्क्रीन के फ़ील्ड सिग्नल से भर जाते हैं और स्क्रीन उससे जुड़ जाती है, जैसा ऊपर: वहाँ संपादित करें, भेजें, फिर सहेजें। कच्चे UDP सिग्नल की अपनी कोई स्क्रीन नहीं है।
किसी फ़्रेम या टॉपिक से
- इंस्पेक्टर में एक फ़्रेम चुनें और सिग्नल के रूप में सहेजें दबाएँ। एक डेटाग्राम उस फ़्रेम के ठीक बाइट वाला कच्चा UDP सिग्नल बन जाता है; एक MQTT पब्लिश वही ब्रोकर, टॉपिक, QoS, retain फ़्लैग और पेलोड वाला MQTT सिग्नल बन जाता है। दूसरे फ़्रेम सहेजे नहीं जा सकते।
- MQTT स्क्रीन पर एक टॉपिक चुनें और सिग्नल के रूप में सहेजें दबाएँ। आपको एक MQTT सिग्नल मिलता है जो उस टॉपिक का अंतिम मान, उसके QoS और retain फ़्लैग के साथ, उस ब्रोकर पर पब्लिश करता है जिससे आप जुड़े हैं।
दोनों कैप्चर किए गए फ़ोल्डर में जाते हैं और जो पकड़ा गया उसके नाम पर नामित होते हैं।
किसी प्रयोग में
जब आप किसी प्रयोग में कोई नोड जोड़ते हैं, तो नोड जोड़ें मेनू सहेजे गए सिग्नल के नीचे आपके सिग्नल भी सूचीबद्ध करता है। किसी को चुनने पर वही संदेश वाला एक OSC, HTTP, MQTT या UDP नोड जुड़ जाता है। hex पेलोड वाला कच्चा UDP सिग्नल नहीं दिया जाता: UDP नोड टेक्स्ट भेजता है। देखें नोड।
फ़ोल्डर
फ़ोल्डर / से जुड़े नामों का एक पथ है: API/Auth का अर्थ है API के अंदर Auth फ़ोल्डर। सिग्नल का फ़ोल्डर फ़ील्ड उसके फ़ोल्डर का पथ रखता है; ख़ाली का अर्थ शीर्ष स्तर (सबसे ऊपरी स्तर) है। फ़ील्ड छोड़ते समय नामों की सफ़ाई होती है और ख़ाली हिस्से हटा दिए जाते हैं, इसलिए API / Auth/ बन जाता है API/Auth।
फ़ोल्डर नाम से क्रमबद्ध होते हैं, संख्याएँ संख्यात्मक क्रम में (Cue 2, Cue 10 से पहले); सिग्नल फ़ाइल के क्रम में रहते हैं। हर फ़ोल्डर बताता है कि उसमें कितने सिग्नल हैं, उसके उप-फ़ोल्डर मिलाकर। ख़ाली फ़ोल्डर तब तक रखा जाता है जब तक आप उसे हटा नहीं देते।
मौजूदा फ़ोल्डर
जिस फ़ोल्डर पर आपने आख़िरी बार क्लिक किया, या जिस सिग्नल को चुना उसका फ़ोल्डर, वही मौजूदा होता है: नया सिग्नल और नया फ़ोल्डर चीज़ें वहीं रखते हैं। पेड़ के ऊपर की एक चिप उसका नाम लेती है; शीर्ष स्तर पर लौटने के लिए चिप पर क्लिक करें।
फ़ोल्डरों के साथ काम करना
| करने के लिए | यह करें |
|---|---|
| फ़ोल्डर बनाना | + नया फ़ोल्डर दबाएँ। यह मौजूदा फ़ोल्डर के अंदर बनता है, नया फ़ोल्डर नाम से (वह नाम लिए होने पर उसके आगे एक संख्या के साथ), और आप तुरंत उसका नाम बदलते हैं। |
| फ़ोल्डर खोलना या बंद करना | उस पर क्लिक करें, या फ़ोकस रहते → / ← दबाएँ। Signal Lab याद रखता है कि कौन-से फ़ोल्डर बंद हैं। |
| सबको खोलना या बंद करना | पेड़ के ऊपर के ⊞ और ⊟ बटन (सभी फ़ोल्डर खोलें, सभी फ़ोल्डर बंद करें)। |
| फ़ोल्डर का नाम बदलना | उस पर ✎ (फ़ोल्डर का नाम बदलें) या F2 दबाएँ, टाइप करें, फिर Enter; Esc रद्द कर देता है। |
| सिग्नल या फ़ोल्डर हिलाना | उसे किसी फ़ोल्डर पर, या शीर्ष स्तर के लिए पेड़ की ख़ाली जगह पर खींचें। |
| टाइप करके सिग्नल हिलाना | उसका फ़ोल्डर फ़ील्ड बदलें। |
| फ़ोल्डर हटाना | × (फ़ोल्डर हटाएँ) दबाएँ और फिर हटाएँ?, या उस पर दो बार Delete दबाएँ। |
नाम बदलने से दो फ़ोल्डर कभी नहीं मिलते: जिस नाम में / हो, या जो नाम किसी सहोदर फ़ोल्डर के पास पहले से हो, वह अस्वीकार कर दिया जाता है, और कंसोल ऐसा बताता है। किसी फ़ोल्डर को उसमें ही या उसके अंदर के किसी फ़ोल्डर में नहीं खींचा जा सकता। किसी फ़ोल्डर को ऐसे फ़ोल्डर में खींचने पर जिसमें पहले से उसी नाम का एक हो, दोनों मिल जाते हैं।
फ़ोल्डर हटाने से केवल फ़ोल्डर हटता है: उसके सिग्नल और उप-फ़ोल्डर एक स्तर ऊपर आ जाते हैं। कुछ भी मिटाया नहीं जाता।
सिग्नल ढूँढना
पेड़ के ऊपर नाम, फ़ोल्डर या लक्ष्य से फ़िल्टर करें में टाइप करें। यह नाम, फ़ोल्डर, नोट, लक्ष्य और संदेश से मेल खाता है। जब तक आप फ़िल्टर करते हैं, मेल वाला हर फ़ोल्डर खुला रहता है और बाकी छिपे रहते हैं।
शुरुआती सेट
जब Signal Lab को पहली बार कोई लाइब्रेरी फ़ाइल नहीं मिलती, तो वह नौ उदाहरण लिखता है, हर एक किसी ऐसी चीज़ के बारे में जिसमें ग़लती होना आसान है। उनके नाम और नोट उस समय की इंटरफ़ेस भाषा में लिखे जाते हैं; उसके बाद वे बदलने के लिए आपके हैं। उन सबका रुख़ इसी कंप्यूटर की ओर है।
| फ़ोल्डर | सिग्नल | भेजता है |
|---|---|---|
OSC | फ़ेडर मान | float 0.75 के साथ /fader/1, 127.0.0.1:9000 पर |
OSC | हर आर्ग्युमेंट प्रकार | int -7, float 1.5, string hi, bool true, int64 4294967296, double 0.125 और nil के साथ /types |
OSC | पहचानकर्ता और मान | स्ट्रिंग reader-1 और 04a1b2c3 के साथ /tag |
OSC | बिना आर्ग्युमेंट का ट्रिगर | बिना आर्ग्युमेंट के /cue/go |
MQTT | मान पब्लिश करें | 127.0.0.1:1883 पर lab/example/value को 1, QoS 0 |
MQTT | retained मान सेट करें | lab/example/config को night, QoS 1, retained |
MQTT | retained मान साफ़ करें | lab/example/config को एक ख़ाली retained पेलोड, QoS 1 |
HTTP | क्या सेवा चालू है? | GET http://127.0.0.1:8080/, टाइमआउट 4000 ms |
| रॉ | रॉ UDP बाइट | बाइट de ad be ef, 127.0.0.1:9000 पर |
शुरुआती सेट वापस पाने के लिए signals.json को हटाएँ या उसका नाम बदलें और फ़ाइल फिर से लोड करें दबाएँ: वहाँ कोई फ़ाइल न होने पर वह फिर से लिख दी जाती है।
लाइब्रेरी फ़ाइल
लाइब्रेरी डेटा फ़ोल्डर में signals.json है: डेस्कटॉप पर आपके होम फ़ोल्डर में Documents/SignalLab, या सर्वर का डेटा फ़ोल्डर (देखें फ़ाइलें)। पूरा पथ देखने के लिए पेड़ के नीचे की सिग्नल गिनती पर पॉइंटर रखें।
- अपने आप सहेजी जाती है। हर बदलाव आख़िरी बदलाव के 0.7 s बाद लिखा जाता है, पूरी फ़ाइल एक साथ, उसी फ़ोल्डर की एक अस्थायी फ़ाइल के ज़रिए जो फिर फ़ाइल की जगह ले लेती है — बीच में रुका लेखन पिछली फ़ाइल को बनाए रखता है। जब तक कोई लेखन प्रतीक्षा करता है, पेड़ का तल सहेजा जा रहा है… कहता है; फिर सहेजा गया। अभी भी प्रतीक्षारत लेखन किसी अपडेट के ऐप को फिर शुरू करने से पहले कर दिया जाता है।
- हाथ से संपादित। Signal Lab को पता नहीं चलता जब फ़ाइल उसके नीचे बदलती है। उसे संपादित करने, या किसी दूसरी मशीन की फ़ाइल से बदलने के बाद फ़ाइल फिर से लोड करें दबाएँ। रीलोड फ़ाइल को फिर पढ़ता है और उस बदलाव को गिरा देता है जो अभी लिखे जाने की प्रतीक्षा में था।
- टूटी रहते कभी नहीं बदली जाती। अगर फ़ाइल वैध JSON नहीं है, या सिग्नल लाइब्रेरी नहीं है, तो पेड़ फ़ाइल के पथ, पंक्ति और कॉलम के साथ त्रुटि दिखाता है, और कंसोल भी वही कहता है। फ़ाइल जैसी है वैसी ही छोड़ दी जाती है, और जब तक वह फिर नहीं पढ़ी जाती तब तक कुछ भी लाइब्रेरी नहीं लिखता: नया सिग्नल, सिग्नलों और फ़ोल्डरों का नाम बदलना, हिलाना और हटाना, खींचना, सिग्नल के फ़ील्ड, HTTP, OSC और MQTT स्क्रीनों पर सहेजें…, सहेजें और इस रूप में सहेजें…, और इंस्पेक्टर तथा MQTT स्क्रीन पर सिग्नल के रूप में सहेजें — सब बंद हैं, और उनका टिप बताता है कि क्या ग़लत है। फ़ाइल ठीक करें, या उसे हटाएँ, और फ़ाइल फिर से लोड करें दबाएँ: पढ़ी जाते ही सब कुछ फिर काम करने लगता है।
- ऐसी फ़ाइल जो ऐप चलते हुए टूट जाए। अगर आप फ़ाइल को कुछ अपठनीय बना दें और फिर ऐप कोई बदलाव सहेजे, तो सहेजना उसी त्रुटि के साथ अस्वीकार कर दिया जाता है, फ़ाइल वैसी ही छोड़ दी जाती है जैसी आपने बनाई, और ऐप तब तक लिखना बंद कर देता है जब तक आप उसे ठीक करके फ़ाइल फिर से लोड करें न दबाएँ। जिस फ़ाइल को आपने संपादित किया और वैध छोड़ा, वह ऐप के अगले सहेजने पर ऐप की सूची से बदल दी जाती है, जैसा ऊपर: पहले रीलोड करें।
फ़ाइल का एक छोटा उदाहरण:
{
"version": 2,
"signals": [
{
"id": "fader-value",
"name": "Fader value",
"group": "Venue/Stage",
"note": "Main fader of desk A.",
"body": {
"transport": "osc",
"target": "127.0.0.1:9000",
"address": "/fader/1",
"args": [{ "type": "float", "value": 0.75 }]
}
}
],
"folders": ["Venue/Stage", "Venue/Empty for now"]
}| कुंजी | क्या |
|---|---|
version | 2। संस्करण 1 की फ़ाइल (फ़ोल्डरों से पहले) वैसे ही पढ़ी जाती है, बिना ख़ाली फ़ोल्डरों के। |
signals[].id | सिग्नल बनते समय नाम से बनाया जाता है (fader-value, fader-value-2, …) और नाम बदलने से कभी नहीं बदलता। signallab fire इससे सिग्नल ढूँढता है। |
signals[].group | फ़ोल्डर का पथ; "" शीर्ष स्तर है। |
signals[].body | संदेश। transport osc, udp, http या mqtt होता है; बाकी कुंजियाँ उस किस्म के फ़ील्ड हैं। |
folders | हर फ़ोल्डर, ताकि ख़ाली भी रखा जाए। कोई न हो तो छोड़ दिया जाता है। जिस group को कोई प्रविष्टि सूचीबद्ध न करे, वह भी एक फ़ोल्डर है। |
कमांड लाइन से
signallab fire किसी लाइब्रेरी का सिग्नल भेजता है, ऐप के उन्हीं कमांडों के ज़रिए:
signallab fire "Fader value"
signallab fire fader-value --library ./show/signals.jsonयह सिग्नल को पहले उसकी id से ढूँढता है, फिर उसके नाम से, केस को अनदेखा करके। जब कई सिग्नलों का वह नाम हो, तो यह उनकी id बताता है और कुछ नहीं भेजता। --library के बिना यह ऐप की अपनी signals.json पढ़ता है; यह फ़ाइल कभी नहीं लिखता। देखें कमांड लाइन।
संबंधित
- इंस्पेक्टर — देखें कि कोई सिग्नल क्या भेजता है, और पकड़े गए फ़्रेम को सिग्नल के रूप में रखें।
- कीबोर्ड शॉर्टकट
- फ़ाइलें — डेटा फ़ोल्डर कहाँ है।