2016-03-30 12 views
3

キーボードキーの組み合わせの16進コードシーケンスを生成する方法を理解しようとしています。だから私はiTerm2の "Send Hex Code"機能を使ってiTerm2の中にあるtmuxの中で動作するvimセッションに特定のキーを送ることができます。しかし、これは非常に混乱してきています。キー組み合わせの16進コードシーケンスの検索

私はこの記事で開始しました:iTerm2 keymaps for tmux

ので、定数として、私はCTRL-b0x02の進コードとして表すことができることを知っているの出発点として。

私がいることをテストしている、そしてそれは、私は、これはiTerm2で任意のランダムなキーにマッピングするとき、私はCTRL-b

としてtmuxのために送られていることがわかりますしかし、どのように私は他のキーの進コードを知っていますか、動作しますSHIFT-F10の16進コードとは何ですか?またはCTRL-F5?またはCTRL-m-Space?

私はここで、この質問に関連した別の質問をしています Key escape sequences not working for tmux

答えて

4

あなたは、このためのコマンドラインツールxxdを使用することができます。それはSTDINから読み取って、そのように、元の入力と一緒に進ダンプを出力します

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

知っているもう一つの便利なトリックあなたが直接制御文字を入力したい場合、あなたは多くの場合、一時的な「生に切り替えることができるということですキーの先頭にCtrl-V^V)をつけて「モード」にします。

$ xxd 
^B 
0000000: 020a          .. 

:例えば、Ctrl-bを表す16進コードを取得xxdを実行するために、EOFを送信するCtrl-d次いで、その後Ctrl-b、次いでEnter(視覚xxd「sからの出力を入力を分離するために)、Ctrl-vを打ちます出力はそうのように解釈することができる。

  • 最初の列(0000000
  • オフセットされ、我々は、を表し20を参照^B
  • 次ある0aLF
  • 、我々は元の入力は、六角出力に対応する参照最後の列に(この場合はドットが示す非可視文字)

テストF5とSHIFT- tmuxの内側Linux上でF5、:

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

だから、F5を解釈する - 私たちは(LFで終了し、列挙された文字の進表現に続いて、ESC(0x1b)を参照してください):

  • 5b、または[シンボル
  • 31、又は数1
  • 35、又は数5
  • 7e、又は〜シンボル

SHIFT- F5も同様に解釈できますが、ANSIシーケンスでは15の代わりに25が使用されます。

tputコマンドを使用することもできます。次の回答を参照してください。https://unix.stackexchange.com/a/53589

+0

お返事ありがとうございます。私は今これをテストしています。私の問題は、私が外界からターミナルワールドへの健全な信号の流れを得ていないことです。例えば、上記の場合、iTerm2の中で、 'xxd -p'を実行し、' CTRL-v'の後に 'F5'を実行すると'^[[15〜 'と16進コードを取得します。しかし、 'CTRL-v'に続いて' CTRL-F5'を実行すると、 '^ [[15〜'と16進数を取得します。だからまったく同じ結果。これは本当に奇妙ですか? OSXネイティブ端末の中で – symbolix

+0

が '^ [[15〜' 'F5'と'^[[25〜 'SHIFT-F5'では' CTRL-F5'ではなく 'CTRL-F5 '私は'^M'を入力してしまったので、これらすべての端末にキーボード信号を解釈する独自の方法があるように思えますが、これは混乱します。 – symbolix

関連する問題