ASCII 문자도 ANSI 제어 코드도 실제로는 CTRL + 이라는 것을 정의하지 않습니다.
그러나 ASCII 제어 문자 0-31 (공식적으로 NUL에서 US까지의 이름이 있음)은 인쇄 가능한 문자 64-95의 "제어 버전"으로 전통적으로 매핑됩니다. 따라서 0은 ^, 1은^A, 2는^B 등입니다.
ASCII 및 control character 위키 피 디아 페이지에 대한 자세한 정보를 제공합니다.
그래서^A는 1이고,^E 한편 제
이다
CTRL은 + 와 CTRL + E 될 것 라인의 시작과 커서 제어 키의 끝에 꽤 보편적 인 커서.
그들은 그렇게 보편적이지 않습니다. 이것들은 많은 유닉스 터미널 에뮬레이터와 유닉스 기반의 GUI 응용 프로그램 (그리고 CLI 편집 라이브러리 인 libreadline
과 텍스트 위젯 Qt
과 같은 것들)이 관습에 따라 지원하는 "기본 이맥스 제어 키"의 일부입니다. 그러나 DOS 프롬프트 나 Microsoft Word에서^A를 누르면 줄의 시작 부분으로 이동하지 않습니다.
ANSI 호환 터미널에^A 또는^E를 보내는 것만으로 커서가 줄의 시작 또는 끝으로 이동하지 않을 수도 있습니다. 이를 제대로 수행하려면 실제로 해당 ANSI 제어 시퀀스를 보내야합니다. Wikipedia's과 같은 ANSI 이스케이프 코드 목록은 사용 가능한 항목을 표시합니다.
불행히도, 거기에 은 당신이하려는 일에 정답이 아닙니다. ANSI는 전체 80x25 (또는 무엇이든) 화면을 액세스 가능한 것으로 취급하고, 그 안에 무언가가있는 문자 위치와 비어있는 문자 위치를 구별하지 않습니다. 따라서 "열의 끝"으로 이동할 수는 없습니다. 단, "열 79"를 의미하는 것이 아닙니다.
그리고 찾고있는 것이 0 및 79 열로 이동하는 경우 CHA
명령 ('\x1b[0G'
및 '\x1b[79G'
)을 사용하면 쉽습니다. 그러나 모든 ANSI 터미널이이를 지원하지는 않습니다. 특히, DOS ANSI.SYS와 그것과 호환되도록 만들어진 것은 그것을 무시할 것입니다.
'A'-0x40' a.k.a.'0x01' ... – twalberg
어떤 종류의 시리얼 장치입니까? ANSI 이스케이프, 또는'readline' 스타일 편집 등을 지원한다고 생각하는 이유는 무엇입니까? 또는 사용자 입력을 직렬 장치 등으로 보내기 전에 편집하려고합니까? – abarnert