.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...를 매핑하는 효과가 있습니다.

관련 정보