Alt+Delete를 사용하여 텍스트를 삭제하려고 할 때 터미널에 출력되는 내용은 정확히 무엇입니까?

Alt+Delete를 사용하여 텍스트를 삭제하려고 할 때 터미널에 출력되는 내용은 정확히 무엇입니까?

Alt+Backspace는 터미널에서 작동하는데, 이로 인해 실수로 Alt+Delete를 시도한 다음 ~실제로 무슨 일이 벌어지고 있는 걸까요?

답변1

인식할 수 없는 스캔 코드의 잔재입니다.

키보드의 버튼은 어떤 버튼을 눌렀는지 나타내기 위해 하나 이상의 바이트를 보냅니다. 이러한 바이트는 키보드 드라이버에 의해 일부 변환을 거쳐 결국 애플리케이션(이 경우 터미널)에 의해 캡처됩니다. 애플리케이션은 이 바이트 세트가 어떤 단축키인지 식별하고 적절한 조치를 취합니다. 응용 프로그램은 인식되지 않는 경우 이러한 문자열을 무시하는 경우가 많으며, 그렇지 않으면 "이상한 동작"이 발생할 수 있습니다.

어떤 버튼이나 버튼 조합을 실행하여 어떤 바이트를 얻을 수 있는지 알아보세요 cat /dev/tty. 드라이버가 이를 애플리케이션에 보고하면 각 버튼에 대한 기호 세트가 인쇄됩니다.

특정 버튼 조합에 대해 어떤 기호 조합이 전송되는지 알고 나면 응용 프로그램의 구성 파일로 이동하여 이를 추가하거나 응용 프로그램에 다른 단축키 문자 집합이 필요한 경우 수정할 수 있습니다.

역사 전반에 걸쳐 서로 다른 키보드를 사용하는 다양한 물리적 터미널로 인해 논리적으로 동일한 키에 대해 가능한 스캔 코드의 변형이 많이 있습니다. 그래서 데이터베이스가 terminfo탄생했습니다. 실제 터미널(물리적 터미널)에 대해 많은 것을 알고 있으며 어떤 키 조합에 대해 어떤 문자열을 보낼지 알고 있습니다. 터미널에 새 단축키를 가르치려면 자신만의 terminfo 항목을 작성하고 TERM환경 변수를 사용하여 선택해야 합니다.

단일 기호만 표시된다는 사실은 ~현재 터미널과 현재 용어가 키보드 드라이버가 터미널로 보내는 부분 문자열을 어떻게든 인식하고 처리하고 나머지 시퀀스를 인쇄한다는 것을 의미합니다.

관련 정보