터미널 에뮬레이터에 지우기 문자를 입력하면 디스플레이가 어떻게 업데이트됩니까?

터미널 에뮬레이터에 지우기 문자를 입력하면 디스플레이가 어떻게 업데이트됩니까?

내가 이해하는 바에 따르면, 터미널 에뮬레이터에 문자를 입력할 때 문자가 "반향"되기 때문에 나타납니다. 우리는 터미널이 양방향 채널을 통해 컴퓨터와 통신하는 별도의 장치이고 입력된 각 키가 화면을 즉시 업데이트하지 않고 컴퓨터에서 다시 전송될 때 나타나는 것으로 상상합니다.

stty내 질문은 백스페이스 키 또는 로 "지우기"로 설정된 키가 화면에서 문자를 지우는 것처럼 보일 수 있는 방법입니다 . 만약 내가 xterm한다면

$ stty erase x
$ cat -
aaaaaaaaaax

마지막 x으로 입력하면 마지막 a. 그러나 이것이 컴퓨터와 별개의 실제 터미널이라면 그 캐릭터가 무엇인지 알 수 있는 방법이 전혀 없을 것입니다 stty erase. 이 동작을 얻을 것으로 예상되는 유일한 방법은 지우기 문자가 ^H에코되어 터미널에서 이를 커서 앞의 문자를 지우라고 지시하는 특수 제어 문자로 해석하는 것입니다.

이것이 "속임수"를 하고 캐릭터가 무엇인지 찾아보는 터미널 에뮬레이터의 특징입니까 stty erase?

답변1

터미널 에뮬레이터는 x문자를 보내고 터미널 드라이버는 이것이 삭제 문자로 구성되었음을 확인합니다. 따라서 에뮬레이터로 다시 에코하는 대신 이전 문자를 지우는 적절한 시퀀스(예: 백스페이스-스페이스-백스페이스)를 보냅니다.

지우기 문자가 로 설정된 경우에도 Backspace단순히 에코하면 입력한 내용이 실제로 지워지지 않습니다. 문자가 터미널로 전송 되면 BS커서가 한 문자 왼쪽으로 이동하고 지워지지 않습니다. 따라서 터미널 드라이버는 이를 지우고 커서를 해당 위치에 두기 위해 추가 스페이스 백스페이스를 보내야 합니다.

관련 정보