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