.screenrcキーバインディング^ @ aがctrl + spaceにマップされるのはなぜですか?

.screenrcキーバインディング^ @ aがctrl + spaceにマップされるのはなぜですか?

私の.screenrcには次のセクションがあります。

# Change command key to ctrl+space
escape ^@a

見つからないフォーラムでこの魔法の呪文を見つけました。 Ctrl + Spaceを押して画面コマンドを呼び出すと、新しいウィンドウが作成されるか、ctrl+space c最後のウィンドウに切り替わります。など。ctrl+space ctrl+cctrl+space spacectrl+space ctrl+space

これは、行の先頭で端末機能を除いてctrl+a、入力しやすく、標準のキーバインディングと競合しない問題を回避するのに役立ちます。

なぜそしてどのように機能するのかを説明できる人はいますか?私は検索しましたhttps://www.gnu.org/software/screen/manual/screen.htmlこのキャラクターへの参照が@見つかりません。

答え1

多くの端末プログラム(すべてのプログラムではない)の場合、control-SPACEはASCII 00文字(NUL)を送信します。

たとえば、od -cxcontrol-SPACE、RETURN、control_D と入力すると、次のような出力が表示されます。

% od -cx
^@
0000000  \0  \n
           0a00
0000002

Control-@もNUL文字です(@はASCII 64なので、control-@はASCII 00です)。

したがって、画面内でcontrol-@をマッピングすると、端末がcontrol-SPACEを処理する方法のため、control-SPACE ...をマッピングする効果があります。

関連情報