मैं सुपर में tmux उपसर्ग कैसे बाँधूँ?


20

मुझे भी Ctrl+bबहुत लगता हैemacs पसंद है लेकिन मुझे बात समझ में आ रही है। मैं सोच रहा था कि क्या मैं इसे एक कुंजी के एक कुंजीपट में बाँध सकता हूँ जो अन्य बुद्धिमान उपयोग नहीं है? अर्थात् Super_L(बाएं विंडो कुंजी के रूप में भी जाना जाता है। क्योंकि मैं कहता हूं कि Super_L xevएक टर्मिनल में शुरू करें और उस कुंजी को दबाएं)

जवाबों:


15

Super_Lएक एक्स किरीम है। Tmux एक टर्मिनल में चलता है। यह आपके टर्मिनल एमुलेटर पर निर्भर है कि किसिम को कैरेक्टर सीक्वेंस में तब्दील करें। तो आपको अपने टर्मिनल एमुलेटर और tmux दोनों को कॉन्फ़िगर करना होगा।

Tmux प्रलेखन को देखते हुए, उपसर्ग केवल एक वैकल्पिक संशोधक के साथ एक जाना माना नाम हो सकता है। तो आप tmux उपसर्ग को एक महत्वपूर्ण संयोजन में सेट कर सकते हैं जिसका आप उपयोग नहीं करते हैं, कहते हैं M-F12, और अपने टर्मिनल को प्राप्त करें ताकि M-F12आप प्रेस के लिए वर्ण अनुक्रम भेज सकें Super_L। थोड़े और काम के साथ, आप एक कुंजी का उपयोग कर सकते हैं जो आपके कीबोर्ड में नहीं है (tmux के F13माध्यम से स्वीकार करता हैF20 प्रमुख नाम के रूप में है, लेकिन वे terminfo में घोषित किया जाना है)।

टर्मिनल एमुलेटर की ओर, आपको Super_Lकुंजी अनुक्रम \e\e[24~(के लिए M-F12) या \e[34~(के लिए F20) (जहां \eभागने का चरित्र है) उत्पन्न करने की व्यवस्था करनी होगी । यह कैसे करना है टर्मिनल एमुलेटर पर निर्भर करता है (और कुछ इसे करने के लिए पर्याप्त रूप से कॉन्फ़िगर करने योग्य नहीं हैं)। एक्सटर्म के साथ, यह एक्स संसाधनों के माध्यम से किया जाता है:

! Make Super_L act as Meta+F12
XTerm.VT100.translations:       #override \
    <Key>Super_L:  string("\033\033[24~")

आप एक रोड़ा को मार सकते हैं जो Super_Lआम तौर पर एक संशोधक होता है, और एक गैर-संशोधक की आवश्यकता होने पर संशोधक कुंजी हमेशा काम नहीं करती है। यदि आप Super_Lएक संशोधक नहीं बनना चाहते हैं , तो आप इसके संशोधक को दूर ले जा सकते हैं, या (कम उलझन में) भौतिक कुंजी के लिए एक अलग कीसम का उपयोग कर सकते हैं। यह xmodmap (पुराने जमाने और समझने में सरल), xkb (आधुनिक, खराब-प्रलेखित, शक्तिशाली और जटिल तरीके से), या शायद आपके डेस्कटॉप वातावरण के GUI कॉन्फ़िगरेशन टूल के माध्यम से किया जा सकता है।


क्या यह केवल X में काम करेगा? उदाहरण के लिए, अगर मैंने अपने सिस्टम में दूर से एक्स के बिना गोलाबारी की तो यह काम नहीं करेगा।
xenoterracide

2
@xenoterracide: या तो मैं आपके प्रश्न को नहीं समझता या आप मेरे उत्तर को नहीं समझते हैं। Super_Lएक एक्स कीरिम है, इसलिए आपके पास शायद एक एक्स सर्वर कहीं है (यदि आप विंडोज से लॉग इन कर रहे थे, तो मुझे लगता है कि आप कुंजी को बाएं विंडोज कुंजी कहेंगे)। Tmux एक टर्मिनल में चलता है, और इसके इनपुट को बाइट्स के रूप में पढ़ता है, जिसमें फंक्शन कीज़ को एस्केप सीक्वेंस में अनुवाद किया जाता है। एक दूरस्थ लॉगिन पारदर्शी है, ssh सिर्फ उन बाइट्स को प्रसारित करता है जो भागने के क्रम को बनाते हैं।
गिलेस एसओ- बुराई को रोकना '

1
बस एक मैक पर यह कोशिश की और मैं दूसरों को कुछ समय बचा सकता हूं। ऐसा लगता है कि iTerm2 F13-F20 भेजने का समर्थन नहीं करता है। कोड देखें। http://www.p/iterm2/issues/detail
id

3

आप नहीं कर सकते। एक प्रमुख बाइंडिंग फोन करेगा cmd_bind_key_parseसमारोह से cmd-bind-key.cजो बारी में होगा (अंततः) कॉल key_string_get_modifiersसे key-string.c:

/* Find modifiers. */
105     int
106     key_string_get_modifiers(const char **string)
107     {
108         int modifiers;
109         
110         modifiers = 0;
111         while (((*string)[0] != '\0') && (*string)[1] == '-') {
112             switch ((*string)[0]) {
113                 case 'C':
114                 case 'c':
115                 modifiers |= KEYC_CTRL;
116                 break;
117                 case 'M':
118                 case 'm':
119                 modifiers |= KEYC_ESCAPE;
120                 break;
121                 case 'S':
122                 case 's':
123                 modifiers |= KEYC_SHIFT;
124                 break;
125             }
126             *string += 2;
127         }
128         return (modifiers);
129     } 

tmux.cसंशोधक कुंजी शामिल #defineघोषणाओं और उस फ़ाइल से हमने:

106     /* Key modifier bits. */
107     #define KEYC_ESCAPE 0x2000
108     #define KEYC_CTRL 0x4000
109     #define KEYC_SHIFT 0x8000
110     #define KEYC_PREFIX 0x10000 

हालांकि सतह पर, यह संशोधित करने के लिए बहुत मुश्किल नहीं दिखता है ; शायद एक सप्ताहांत (प्रसिद्ध अंतिम शब्द?)) परियोजना?


3
आप यहां एक कदम याद कर रहे हैं: tmux एक टेक्स्ट मोड प्रोग्राम है, यह कुंजी क्रम पढ़ता है, न कि एक्स की-जिम। तो यह वास्तव में संभव है, टर्मिनल एमुलेटर और tmux दोनों को ठीक से कॉन्फ़िगर करके।
गाइल्स का SO-

2

मैं एक कस्टम संशोधक कुंजी के लिए एक उपसर्ग सेट करने में सक्षम नहीं हुआ हूं, लेकिन मैंने मेटा के साथ संयोजन में Gnome के तहत एक कस्टम संशोधक कुंजी के साथ संयोजन में tmux बाइंडिंग को परिभाषित करने का प्रबंधन किया। उदाहरण के लिए, वर्तमान पैनल को क्रमशः ऊपर और नीचे ले जाने के लिए Mod4+ kऔर Mod4+ मैप jकरने के लिए:

gconftool-2 --set /apps/metacity/keybinding_commands/command_1 --type string "tmux select-pane -D"
gconftool-2 --set /apps/metacity/keybinding_commands/command_2 --type string "tmux select-pane -U"
gconftool-2 --set /apps/metacity/global_keybindings/run_command_1 --type string "<Mod4>j"
gconftool-2 --set /apps/metacity/global_keybindings/run_command_2 --type string "<Mod4>k"

यह विंडोज कुंजी के उदाहरण के साथ संयोजन में tmux बाइंडिंग के लिए अनुमति देता है। उन पंक्तियों के साथ कुछ किसी भी विंडो प्रबंधक के लिए काम करता है जो वैश्विक कीबोर्ड शॉर्टकट (कॉम्पिज़, केविन, आदि) को परिभाषित करने की अनुमति देता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.