windows - Win32 कंसोल को एएनएसआई/वीटी 100 एस्केप अनुक्रमों को कैसे पहचानें?




terminal console-application (6)

Ansi.sys (system32 फ़ोल्डर में) एक "एमएसडीओएस ड्राइवर" है जो विंडोज एक्सपी, 2000 और एनटी के पुराने संस्करणों के हिस्से के रूप में प्रदान किया गया है। 2000 और XP में, यह system32 फ़ोल्डर में स्थित है (मुझे NT के पुराने संस्करणों की संरचना याद नहीं है)। प्रोग्राम जो डॉस उपप्रणाली में चलते हैं और मानक आउटपुट का उपयोग करते हैं, वे एएसएसआईएसवाईएस का उपयोग कर सकते हैं जैसे कि वे एमएसडीओएस पर चल सकते हैं।

Ansi.sys लोड करने के लिए, आपको कॉन्फ़िगरेशन में डिवाइस = या devicehigh = कमांड का उपयोग करना होगा, जैसा कि आप MSDOS में करेंगे। विंडोज एनटी 5 (2 के और एक्सपी) पर, डॉस सबसिस्टम की प्रत्येक प्रति को पीआईएफ / शॉर्टकट में एक अलग कॉन्फ़िगरेशन फ़ाइल दी जा सकती है ("उन्नत" बटन का उपयोग करें), और CONFIG.NT नामक एक डिफ़ॉल्ट फ़ाइल भी है (इसमें भी system32 फ़ोल्डर), जिसका उपयोग किया जाता है यदि पीआईएफ / शॉर्टकट एक विशेष कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट नहीं करता है।

जब ansi.sys सही ढंग से लोड हो जाता है, तो mem / d रिपोर्ट करेगा कि यह लोड हो गया है। एनटी के पुराने संस्करणों पर, आप ansi.sys लोड करने के लिए एक उचित डॉस पर्यावरण लोड कर सकते हैं और लोड करना होगा, और Ansi art प्रॉम्प्ट पर काम करेगा। Win 2K और XP पर, लोडिंग ansi.sys का आपके "सीएमडी प्रॉम्प्ट" पर कोई प्रभाव नहीं पड़ेगा क्योंकि सीएमडी एक डॉस प्रोग्राम नहीं है: यह 32 बिट विंडोज कंसोल प्रोग्राम है। WinXP पर, मुझे समझ में नहीं आता है, भले ही आप "command.com / p" का उपयोग करके कमांड.com की एक निश्चित प्रति लोड करते हैं, कमांड प्रॉम्प्ट उत्तर सक्षम नहीं होगा: शायद जब आप इसे ऐसा करते हैं लोड कमांड.com emulates?

किसी भी मामले में, जब आप कमांड डॉट कॉम के वास्तविक डॉस संस्करण का उपयोग करते हैं, तो लोड होने के बाद ansi सक्षम होता है: आप इसे इस तरह के उत्तर आर्ट कला के साथ उपयोग कर सकते हैं:

command /c type ansiart.ans

(यहां एक उदाहरण है: http://artscene.textfiles.com/ansi/artwork/beastie.ans )

CONFIG.NT (system32 फ़ोल्डर में) डिवाइस ड्राइवरों को लोड करने के लिए वाक्यविन्यास का एक उदाहरण है। आपको उस डिफ़ॉल्ट फ़ाइल को संपादित करने के लिए एक प्रशासक बनने की आवश्यकता होगी, या आप इसकी एक प्रति बना सकते हैं।

विन 2 के और एक्सपी पर, एमएसडीओएस के लिए डिफ़ॉल्ट "शॉर्टकट" एक पीआईएफ फ़ाइल है, न कि एलएनके फ़ाइल। यदि आप सीएमडी में .lnk फ़ाइल बनाते हैं, तो आप विशेष कॉन्फ़िगरेशन और ऑटोएक्सैक फ़ाइलों को सेट करने में सक्षम नहीं होंगे, यह डिफ़ॉल्ट CONFIG.NT का उपयोग करेगा। यदि आप केवल एक डॉस एप्लिकेशन के लिए एक विशेष कॉन्फ़िगरेशन फ़ाइल का उपयोग करना चाहते हैं, तो आप "एमएसडीओएस शॉर्टकट" की एक प्रति बना सकते हैं, या आप अपने विंडोज फ़ोल्डर में पाए गए "_default.pif" की एक प्रति बना सकते हैं।

मैं ncurses लाइब्रेरी का हल्का संस्करण बना रहा हूं। अब तक, यह VT100- संगत टर्मिनलों के साथ बहुत अच्छी तरह से काम करता है, लेकिन Win32 कंसोल \033 कोड को बचने के अनुक्रम की शुरुआत के रूप में पहचानने में विफल रहता है:

# include <stdio.h>
# include "term.h"

int main(void) {
  puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
  return 0;
}

सी कोड स्तर पर क्या करने की आवश्यकता है, ताकि ANSI.SYS ड्राइवर लोड हो और एएनएसआई / वीटी 100 एस्केप अनुक्रमों को पहचाना जा सके?



मैं व्यक्तिगत रूप से clink पसंद है। यह न केवल एएनएसआई कोड को संसाधित करता है, यह कई अन्य विशेषताओं को भी जोड़ता है ताकि विंडोज कंसोल बैश (इतिहास, रिवर्स हिस्ट्री सर्च, कीबोर्ड शॉर्टकट इत्यादि) जैसा व्यवहार करे:

  • बैश के रूप में एक ही पंक्ति संपादन (जीएनयू की रीडलाइन लाइब्रेरी से)।
  • सत्रों के बीच इतिहास दृढ़ता।
  • संदर्भ संवेदनशील समापन;
    • निष्पादन योग्य (और उपनाम)।
    • निर्देशिका आदेश।
    • पर्यावरण चर
    • थर्डपार्टी टूल्स; गिट, मर्कुरियल, एसवीएन, गो, और पी 4।
  • नया कीबोर्ड शॉर्टकट;
    • क्लिपबोर्ड से चिपकाएं ( Ctrl-V )।
    • वृद्धिशील इतिहास खोज ( Ctrl-R / Ctrl-S )।
    • शक्तिशाली पूर्णता ( टीएबी )।
    • पूर्ववत करें ( Ctrl-Z )।
    • स्वचालित "सीडी .." ( Ctrl-PgUp )।
    • पर्यावरण परिवर्तनीय विस्तार ( Ctrl-Alt-E )।
    • (कई और के लिए Alt-H दबाएं ...)
  • लुआ के साथ स्क्रिप्ट योग्य समापन।
  • रंगीन और पटकथात्मक संकेत।
  • " टर्मिनेट बैच जॉब? " प्रॉम्प्ट का ऑटो-जवाब देना।

यदि ANSICON स्वीकार्य नहीं है क्योंकि इसके लिए आपको सिस्टम पर कुछ इंस्टॉल करने की आवश्यकता है, तो अधिक हल्का समाधान जो एएनएसआई कोड को प्रासंगिक Win32 API कंसोल फ़ंक्शंस जैसे SetConsoleTextAttribute पार्स और अनुवाद करता है।

https://github.com/mattn/ansicolor-w32.c



शायद Ansicon मदद कर सकता है

बस अपनी विंडोज़ ओएस: 32 बिट या 64 बिट के आधार पर फ़ाइलों को डाउनलोड और निकालें

इसे इंस्टॉल करें: ansicon -i





ansi-escape