2011-01-11 7 views
13

मैक ओएस एक्स में टर्मिनल ऐप से एसएसएच के माध्यम से एक डेस्कटॉप चल रहे सिग्विन से कनेक्ट कर रहा हूं। मैंने पहले ही सिग्विन पक्ष पर स्क्रीन शुरू कर दी है और एसएसएच सत्र में उससे कनेक्ट कर सकते हैं। इसके अलावा, मैं .screenrc फ़ाइल में निम्न है:एसएसएच के माध्यम से कनेक्ट करते समय मुझे सिग्विन में gnu स्क्रीन में स्क्रीन स्विच करने के लिए F1-F12 कुंजी कैसे प्राप्त करें?

bindkey -k k1 select 1 # F1 = screen 1 
bindkey -k k2 select 2 # F2 = screen 2 
bindkey -k k3 select 3 # F3 = screen 3 
bindkey -k k4 select 4 # F4 = screen 4 
bindkey -k k5 select 5 # F5 = screen 5 
bindkey -k k6 select 6 # F6 = screen 6 
bindkey -k k7 select 7 # F7 = screen 7 
bindkey -k k8 select 8 # F8 = screen 8 
bindkey -k k9 select 9 # F9 = screen 9 
bindkey -k F1 prev  # F11 = prev 
bindkey -k F2 next  # F12 = next 

हालांकि, जब मैं स्क्रीन में एकाधिक विंडो शुरू करने और समारोह चाबियाँ के माध्यम से उनके बीच स्विच करने का प्रयास, सभी मैं एक बीप है।

मैंने $ TERM (उदा। Ansi, cygwin, xterm-color, vt100) के लिए विभिन्न सेटिंग्स की कोशिश की है और वे वास्तव में कुछ भी प्रभावित नहीं करते हैं।

मैंने सत्यापित किया है कि टर्मिनल ऐप वास्तव में फ़ंक्शन कुंजी के लिए एस्केप अनुक्रम भेज रहा है जिसे मैं उम्मीद कर रहा हूं और मेरा बैश खोल (स्क्रीन के अंदर चल रहा है) इसे प्राप्त कर रहा है। उदाहरण के लिए, एफ 1 के लिए, यह भेजता है निम्नलिखित (hexdump एक पर्ल स्क्रिप्ट मैं ने लिखा है कि binmode और हेक्साडेसिमल/ascii डंप के रूप में यह उत्पादन में STDIN लेता है):

% hexdump 
[press F1 and then hit ^D to terminate input] 
00000000: 1b4f50        .OP 

तो चीजों को सही ढंग से काम कर रहे थे, मैं ' टी को लगता है कि बैश को एस्केप अनुक्रम प्राप्त करना चाहिए क्योंकि स्क्रीन को इसे पकड़ा जाना चाहिए था और उसे कमांड में बदलना चाहिए था।

मैं काम करने के लिए फ़ंक्शन कुंजियां कैसे प्राप्त करूं?

+1

प्रोग्रामिंग नहीं। – leppie

+5

एफएक्यू कहता है: "आमतौर पर प्रोग्रामर द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर टूल"। मेरे द्वारा वर्णित टूल मेरे लिए प्रासंगिक प्रतीत होते हैं। – Mikey

उत्तर

4

प्रयोग का एक बड़ा सौदा के साथ, मैं इसे अपने .screenrc को निम्नलिखित लाइनों को जोड़कर काम करने के लिए प्राप्त करने में सक्षम था:

terminfo * k1=\EOP 
terminfo * k2=\EOQ 
terminfo * k3=\EOR 
terminfo * k4=\EOS 
terminfo * k5=\E[15~ 
terminfo * k6=\E[17~ 
terminfo * k7=\E[18~ 
terminfo * k8=\E[19~ 
terminfo * k9=\E[20~ 
terminfo * F1=\E[23~ 
terminfo * F2=\E[24~ 
+0

यह अच्छा होगा अगर आपने इस समाधान पर आने वाली विधि को दिखाया। यह मेरे लिए काम नहीं करता है। – PonyEars

+1

मुझे इसे स्पष्ट रूप से याद नहीं है क्योंकि यह कुछ साल पहले था। इसका हिस्सा चाबियों के लिए टर्मिनल नामों को जानने के साथ करना था (उदाहरण के लिए के 1, के 2, इत्यादि) और इसका हिस्सा यह जानने के साथ करना था कि जब आप एफ 1, एफ 2 इत्यादि दबाते हैं तो आपका टर्मिनल ट्रांसमिट करता है मैं सक्षम था बैश खोल में "पढ़ने" चलाकर और फिर F1, F2, आदि को मारकर बाद में पता लगाने के लिए, उदाहरण के लिए, जब मैं पढ़ता हूं और F1 दबाता हूं, तो मैंने यह देखा: '% ^ [ओपी ' – Mikey

+0

बैश में, यदि आप ब्याज की फ़ंक्शन कुंजी के बाद Ctrl-V दबाते हैं, तो आप कमांड लाइन पर मुद्रित उपरोक्त कोड देखेंगे। इस तरह आप कोड पाते हैं। शायद यह एक 'रीडलाइन' सुविधा है? –

16

आप एक अधिक विचित्र सेटअप है, तो (जैसे विंडोज -> पुट्टी - > लिनक्स) जहां मानक bindkey -k समाधान ठीक से काम नहीं करता, तो आप showkey आदेश का उपयोग कर सकते हैं:

showkey -a 

कुंजी कोड के लिए कीस्ट्रोक्स से मानचित्रण खोजने के लिए।

bindkey "^[[11~" select 1 
bindkey "^[[12~" select 2 
bindkey "^[[13~" select 3 
bindkey "^[[14~" select 4 
bindkey "^[[15~" select 5 
bindkey "^[[17~" select 6 
bindkey "^[[18~" select 7 
bindkey "^[[19~" select 8 
bindkey "^[[20~" select 9 
bindkey "^[[21~" select 10 
bindkey "^[[23~" select 11 
bindkey "^[[24~" select 12 
+0

मेरे पास mobaxterm का उपयोग करके एक समान "अजीब" सेटअप है। सबसे पहले मैंने f11 के लिए mobaxterm शॉर्टकट अक्षम कर दिया था और फिर भी मेरे पास अभी भी F10 bindkey -k Fx के साथ काम नहीं कर रहा था (F1 F11 है, F2 F12 है लेकिन F0 काम नहीं करता है, शायद यह हेक्साडेसिमल है)। वैसे भी मैंने एफ 10 के लिए सही बाइंडकी मान प्राप्त करने के लिए आपके समाधान का उपयोग किया। धन्यवाद। – th3penguinwhisperer

0

मैं MacOS पर iTerm उपयोग कर रहा हूँ: मेरे विशेष मामले में, ~/.screenrc में इन डाल चाल किया था। यह मेरे लिए काम करता है:

terminfo * F1=^[OP 
terminfo * F2=^[OQ 

bindkey -k F1 prev 
bindkey -k F2 next 

इन 4 लाइनों को अपने .screenrc में रखें।

उत्तर माइकी के उत्तर से प्रेरित उत्तर।

संबंधित मुद्दे