ASCII 제어 코드 키 입력

ASCII 제어 코드 키 입력

좋아, 최근에 제어 키 입력과 ASCII 제어 코드 사이의 대응 관계를 깨달았습니다. 예를 들어 ^D는 EOT가 ASCII 코드 4이고 D가 알파벳의 네 번째 문자이기 때문에 EOT 문자를 보냅니다. 십진수 26자리를 초과하는 문자(예: ESC, FS, GS, RS 및 US)에 대한 키 입력이 무엇인지 알고 싶습니다. Esc 키가 ESC 문자를 전송합니까? Telnet에서 쉘로의 기본 ^] 키 입력 이스케이프는 어떻습니까? ESC 문자를 보내나요?

주제에 맞지 않는다면 사과드립니다. 다른 데 놓을 곳을 찾을 수가 없어요.

답변1

다른 제어 문자의 키 입력은 다음과 같습니다.

^[ - Escape
^\ - File Separator
^] - Group Separator
^^ - Record Separator
^_ - Unit Separator

telnet대화형 인터페이스의 이스케이프 문자로 그룹 구분 기호를 사용합니다. 이스케이프 문자는 터미널 응용 프로그램에서 자주 사용되기 때문에 일반적으로 텔넷 연결의 원격 끝으로 전송됩니다.

답변2

귀하의 편지를 사용하기 ascii(7)위해 Linux에서 여러 줄을 읽어 보면 다음과 같은 사실을 ^D발견했습니다.

   004   4     04    EOT (end of transmission)   104   68    44    D

그런 다음 ^]동일한 대응을 사용하십시오.

   035   29    1D    GS  (group separator)       135   93    5D    ]

터미널을 원시 모드로 전환하고 키의 16진수 코드를 인쇄한 후 다음에서 16진수 코드를 찾아 이를 확인할 수도 있습니다 ascii(7).

perl -MTerm::ReadKey -e 'warn "PID $$\n"; $SIG{TERM}=sub {ReadMode 0; exit};' \
  -e 'ReadMode 4; while ($k=ReadKey(0)) { printf "%02x\n", ord $k }'

답변3

키보드가 ASCII 코드를 키보드 포트에 직접 전송하는 경우 Control과 문자 키 및 기타 6개의 키를 누르면 ASCII 제어 코드가 생성됩니다. IBM 유형 마이크로프로세서에서 키보드는 스캔 코드를 생성하고 BIOS 또는 운영 체제는 이러한 코드와 적절한 ASCII 코드(컨트롤 또는 그래픽)를 애플리케이션에 보고합니다.

답변4

죄송합니다. 이전 게시물이 좋은 답변이 아니었습니다. 적어도 Linux에서는 ESC 키가 Ctrl-[와 동일한 ASCII 코드를 보고하고 Enter는 Ctrl-M과 동일합니다. 백스페이스의 경우 Ctrl-?(DEL)이 보고되고 Ctrl-Backspace의 경우 Ctrl-H(BS)가 보고되지만 동일한 작업을 수행합니다. 삭제 키의 경우 ANSI 이스케이프 시퀀스가 ​​보고됩니다.

관련 정보