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

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

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

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

$ stty erase x
$ cat -
aaaaaaaaaax

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

이것이 터미널 에뮬레이터의 기능입니까? 그들은 stty erase어떤 캐릭터를 "속이고" 찾나요 ?

답변1

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

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

관련 정보