जब आप किसी दिए गए कुंजी को दबाते हैं तो आपके टर्मिनल द्वारा भेजे गए वर्णों के अनुक्रम होते हैं। सेश के साथ कुछ भी करने या पढ़ने के लिए कुछ भी नहीं है, लेकिन आप जानना चाहेंगे कि किसी दिए गए कुंजी या कुंजी संयोजन के वर्णों का क्रम क्या है यदि आप 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
।