내가 이해한 바로는 터미널 에뮬레이터에 문자를 입력하면 "반향"되기 때문에 나타나는 것입니다. 우리는 터미널이 양방향 채널을 통해 컴퓨터와 통신하는 별도의 장치라고 상상하며, 입력된 각 키는 화면을 즉시 업데이트하지 않고 컴퓨터에서 다시 전송되는 대로 나타납니다.
내 질문은 백스페이스 키나 "지우기"로 설정된 키가 stty
화면의 문자를 지우는 것처럼 보일 수 있다는 것입니다. 만약 xterm
내가한다면
$ stty erase x
$ cat -
aaaaaaaaaax
마지막으로 입력한 내용이 x
마지막 내용을 삭제하는 것 같습니다 . 그러나 이것이 컴퓨터와 별개로 실제 터미널이라면 그 문자가 무엇인지 a
알 방법이 없습니다 . stty erase
이 동작을 얻을 것으로 예상되는 유일한 방법은 지우기 문자가 ^H
에코되고 터미널이 이를 커서 앞의 문자를 지우라고 지시하는 특수 제어 문자로 해석하는 것입니다.
이것이 터미널 에뮬레이터의 기능입니까? 그들은 stty erase
어떤 캐릭터를 "속이고" 찾나요 ?
답변1
터미널 에뮬레이터는 이 x
문자를 보내고 터미널 드라이버는 이 문자가 삭제 문자로 구성되었음을 발견합니다. 따라서 시뮬레이터로 다시 에코하는 대신 이전 문자(예: 백스페이스-스페이스-백스페이스)를 지우는 적절한 시퀀스를 보냅니다.
문자 지우기가 로 설정되어 있어도 Backspace단순히 에코만 하면 입력한 내용이 실제로 지워지지는 않습니다. 문자가 터미널로 전송 되면 BS
커서가 한 문자 왼쪽으로 이동하고 지워지지 않습니다. 따라서 터미널 드라이버는 이를 지우고 커서를 해당 위치에 유지하기 위해 추가 스페이스-백스페이스 키를 보내야 합니다.