2016-03-30 16 views
3

Klavye tuş bileşimleri için onaltılık kod sırasının oluşturulmasının yolunu anlamaya çalışıyorum. Bu yüzden iTerm2'nin iTerm2'nin "Send Hex Code" işlevini kullanarak tmux içinde çalışan bir vim oturumuna özel anahtarlar göndermek için kullanabilirim. Ancak, bu son derece kafa karıştırıcı hale geliyor. sabit olarak iTerm2 keymaps for tmuxBir tuş bileşimi için onaltılık kod sırasının bulunması

Yani ve bir başlangıç ​​noktası olarak ben CTRL-b0x02 altılı bir kod olarak temsil edilebilir olduğunu biliyoruz:

bu yazı ile başlamıştır.

bunu test ettik ve ben bu iTerm2 herhangi rastgele anahtara haritasına zaman, bunun CTRL-b

olarak tmux gönderilir görebilirsiniz Ama nasıl diğer anahtarın hex kodunu biliyoruz, işleri kombinasyonlar, örneğin SHIFT-F10 için hex kodu nedir? veya CTRL-F5? veya CTRL-m-Uzay?

burada bu soruya ilişkin bir soru daha sordum: Key escape sequences not working for tmux

cevap

4

Bunun için komut satırı aracını xxd kullanabilirsiniz. Bu STDIN gelen okur ve şöyle orijinal girdi yanında altıgen dökümü çıkarır:

$ echo -n "hello world" | xxd 
0000000: 6865 6c6c 6f20 776f 726c 64    hello world 

bilmek başka işe hile doğrudan bir kontrol karakteri girmek isterseniz, genellikle geçici bir "ham geçebilirsiniz olmasıdır modu "Ctrl-V (^V) tarafından anahtar/s önekini yaparak.

$ xxd 
^B 
0000000: 020a          .. 

: Örneğin, xxd çalıştırmak Ctrl-b temsil heks kodları, elde etmek için (görsel xxd 'nin çıkışından giriş ayırmak için), daha sonra Ctrl-d bir EOF göndermek için daha sonra Ctrl-v, Ctrl-b, Enter isabet çıkış şöyle yorumlanabilir:

  • birinci sütun (0000000) biz temsil ettiği, 20 bkz sonra
  • dengelenir ^B
  • yanında 0a (LF)
  • ve orijinal giriş heks çıkış Aranılan son sütunda (bu durumda noktalar gösterir görünür olmayan karakter)

Test F5 ve Shift- Linux üzerinde, tmux iç F5:

$ xxd 
^[[15~ 
^[[25~ 
0000000: 1b5b 3135 7e0a 1b5b 3235 7e0a   .[15~..[25~. 

Yani yorumlamak F5 - biz(a LF tarafından sonlandırıldı listelenmiş karakterlerin altıgen temsiller, ardından ESC (0x1b), bkz 423.210):

  • 5b, veya [sembol
  • 31 veya sayı 1
  • 35 veya 5 sayısı
  • 7e veya ~ sembol

Shift- F5 benzer şekilde yorumlanabilir, ANSI dizisi 15 yerine 25 kullanır.

Ayrıca tput komutunu da kullanabilirsiniz, aşağıdaki cevaba bakın: https://unix.stackexchange.com/a/53589

+0

Cevabınız için teşekkürler. Bunu şimdi test ediyorum. Benim meselem, dış dünyadan terminal dünyasına sağlıklı bir sinyal akışı alamıyorum. Örneğin, yukarıdaki durumda, iTerm2 içinde, xxd -p 'yi çalıştırdığımda ve sonra da' CT5-v 'yi ve ardından F5'i yaptım, '^ [[15 ~' ve bir hex kodu aldım. Ancak, CTRL-v'yi ve ardından CTRL-F5'i yaptığımda,^[[15 ~ 've bir hex. Yani tam olarak aynı sonuç. Bu gerçekten tuhaf mı? :( – symbolix

+0

OSX ana terminali içinde^^ [F5 'için [~ 15 ~ 've'^[SHIFT-F5' için [~ 25 ~ '' dır, ancak CTRL-F5 için hiçbir şey, aslında CTRL-F5 için 'Girdikten sonra'^M' aldım, bu yüzden bütün bu terminaller, kafa karıştırıcı olan klavyeli sinyalleri kendi yorumlama biçimlerine sahipler. – symbolix

İlgili konular