जब आप किसी दिए गए कुंजी को दबाते हैं तो आपके टर्मिनल द्वारा भेजे गए वर्णों के अनुक्रम होते हैं। सेश के साथ कुछ भी करने या पढ़ने के लिए कुछ भी नहीं है, लेकिन आप जानना चाहेंगे कि किसी दिए गए कुंजी या कुंजी संयोजन के वर्णों का क्रम क्या है यदि आप readlineकिसी दिए गए कुंजी प्रेस पर कुछ करने के लिए कॉन्फ़िगर करना चाहते हैं ।
जब आप Aकुंजी दबाते हैं, तो आम तौर पर टर्मिनल a(0x61) वर्ण भेजते हैं । यदि आप दबाते हैं <Ctrl-I>या <Tab>, तो आम तौर पर या (0x9) के ^Iरूप में भी जाना जाने वाला चरित्र भेजें । समारोह और नेविगेशन कुंजी के अधिकांश आम तौर पर उस के साथ शुरू होता वर्णों के अनुक्रम भेज (नियंत्रण [), भी रूप में जाना जाता है या (0x1b, 033 अष्टाधारी), लेकिन सही अनुक्रम टर्मिनल के लिए टर्मिनल से भिन्न होता है।TAB\t^[ESC\e
यह जानने का सबसे अच्छा तरीका है कि आपके टर्मिनल के लिए कुंजी या कुंजी संयोजन क्या भेजता है, इसे चलाया जाता है sed -n lऔर Enterकीबोर्ड पर इसके बाद टाइप किया जाता है । फिर आपको कुछ इस तरह दिखाई देगा:
$ sed -n l
^[[1;5A
\033[1;5A$
पहली लाइन echoटर्मिनल डिवाइस द्वारा किए गए स्थानीय टर्मिनल के कारण होती है (यह विश्वसनीय नहीं हो सकता है क्योंकि टर्मिनल डिवाइस सेटिंग्स इसे प्रभावित करेगी)।
दूसरी लाइन आउटपुट है sed। इसमें $शामिल नहीं होना है, यह केवल आपको यह दिखाने के लिए है कि लाइन का अंत कहां है।
ऊपर है कि इसका मतलब है कि Ctrl-Up(जो मैं दबाया है) 6 अक्षर भेजने ESC, [, 1, ;, 5और A(0x1b 0x5b 0x31 0x3b 0x35 0x41)
terminfoडेटाबेस टर्मिनलों के एक नंबर (आधार पर के लिए आम चाबियों का एक नंबर के लिए दृश्यों की एक संख्या रिकॉर्ड $TERMमूल्य)।
उदाहरण के लिए:
TERM=rxvt tput kdch1 | sed -n l
आपको बताएगा rxvtकि Deleteकुंजी दबाने पर कौन सा एस्केप अनुक्रम भेजा जाता है ।
आप यह देख सकते हैं कि आपके वर्तमान टर्मिनल के साथ दिए गए अनुक्रम के साथ कौन सी कुंजी मेल खाती है infocmp(यहाँ ncursesइन्फोकम्प मानकर)
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
कुंजी संयोजन की तरह डेटाबेस Ctrl-Upमें संबंधित प्रविष्टियां नहीं होती हैं terminfo, इसलिए यह पता लगाने के लिए कि वे क्या भेजते हैं, या तो संबंधित टर्मिनल के लिए स्रोत या प्रलेखन पढ़ें या इसे sed -n lऊपर वर्णित विधि के साथ आज़माएं ।
bind -p।