Tmux önekini bir Super'e nasıl bağlarım?


20

Ctrl+bÇok emacsbenzediğimi bile görüyorum ama konuyu anlıyorum. Başka bir akıllıca kullanmadığım bir tuşun tek bir tuşa bağlanıp bağlanamayacağını merak ediyorum. yani Super_L(sol pencereler tuşu olarak da bilinir. Neden xevbir terminalde Super_L başlatıldığını söylüyorum ve o tuşa basın)

Yanıtlar:


15

Super_LX, bir X keyfimidir. Tmux bir terminalde çalışır. Bir keyfiliği bir karakter dizisine dönüştürmek terminal emülatörünüze bağlıdır. Yani hem terminal öykünücünüzü hem de tmux'unuzu yapılandırmanız gerekir.

Tmux belgelerine bakıldığında, önek yalnızca isteğe bağlı değiştiriciyle bilinen bir anahtar adı olabilir. Eğer bir tuş kombinasyonuna tmux önek ayarlayabilirsiniz Yani diyelim ki, kullanmayan M-F12ve karakter dizisini göndermek için, terminal olsun M-F12bastığınızda Super_L. Biraz daha çalışmaya gerek (tmux kabul Klavyeniz muhtemelen yok bir anahtar kullanabilirsiniz F13yoluyla F20anahtar adları gibi ama Terminfo beyan edilmesi gerekir).

Terminal öykünücü tarafında, Super_Lanahtar dizisini \e\e[24~(for M-F12) veya \e[34~(for F20) ( \eçıkış karakteri nerede) oluşturacak şekilde ayarlamanız gerekir . Bunun nasıl yapılacağı terminal emülatörüne bağlıdır (ve bazıları bunu yapacak kadar yapılandırılamaz). Xterm ile X kaynakları üzerinden yapılır:

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

Super_LNormalde bir değiştirici olan bir engelle karşılaşabilirsiniz ve değiştirici olmayan bir anahtar gerektiğinde değiştirici anahtarlar her zaman çalışmaz. Super_LDeğiştirici olmak istemiyorsanız , değiştiricisini çıkarabilir veya fiziksel anahtar için (daha az kafa karıştırıcı bir şekilde) farklı bir tuş takımı kullanabilirsiniz. Bu, xmodmap (eski moda ve anlaşılması kolay), xkb (modern, kötü belgelenmiş, güçlü ve karmaşık yol) veya belki de masaüstü ortamınızın GUI yapılandırma aracı aracılığıyla yapılabilir.


bu sadece X'te işe yarar mı? örneğin X iletimi olmadan uzaktan sistemime girsem işe yaramaz.
xenoterracide

2
@xenoterracide: ya sorunuzu anlamıyorum ya da cevabımı anlamıyorsunuz. Super_Lbir X keysym olduğundan, muhtemelen bir yerde bir X sunucunuz var (Windows'tan giriş yapıyorsanız, anahtarı sol Windows anahtarını çağırırsınız). Tmux bir terminalde çalışır ve işlev tuşları kaçış dizilerine çevrilmiş olarak bayt olarak okur. Uzaktan oturum açma işlemi saydamdır, ssh sadece kaçış dizisini oluşturan baytları iletir.
Gilles 'SO- kötü olmayı bırak

1
Bunu Mac'te denedim ve başkalarına biraz zaman kazandırabilirim. Görünüşe göre iTerm2, F13-F20 göndermeyi desteklemiyor. Bkz code.google.com/p/iterm2/issues/detail?id=1630
balu

3

Yapamazsın. Bir tuşa Bağlama arayacak cmd_bind_key_parseişlevini dan cmd-bind-key.cbunun da kendiliğinden gelir (sonunda) çağrısı key_string_get_modifiersdan 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.cDeğiştirici tuş içeren #definebeyanları ve bu dosyadan elde ederiz:

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

Ancak yüzeyde, değiştirmek çok zor görünmüyor ; belki bir hafta sonu (ünlü son sözler;)) projesi?


3
burada bir adım eksik: tmux bir metin modu programıdır, X tuşlarını değil, tuş dizilerini okur. Yani hem terminal emülatörünü hem de tmux'u doğru şekilde yapılandırarak gerçekten mümkündür.
Gilles 'SO- kötü olmayı bırak'

2

Özel bir değiştirici anahtar için bir önek ayarlayamadım, ancak Metamity ile birlikte Gnome altında özel bir değiştirici anahtarla birlikte tmux bağlarını tanımlamayı başardım. Örneğin, geçerli panele sırasıyla yukarı ve aşağı gitmek için Mod4+ kve Mod4+ işaretlerini eşleştirmek jiçin:

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"

Bu, örneğin Windows anahtarı ile birlikte tmux bağlantılarına izin verir. Bu satırlar boyunca bir şey, genel klavye kısayollarını (Compiz, KWin, vb.) Tanımlamaya izin veren herhangi bir pencere yöneticisi için çalışır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.