멀티바이트 이스케이프 시퀀스의 최대 길이는 얼마입니까?

멀티바이트 이스케이프 시퀀스의 최대 길이는 얼마입니까?
  • ESC보내세요. \x1b그렇습니다1바이트:실제 이스케이프 문자입니다.

  • Page Up보내세요. \x1b[H그렇습니다3바이트.

  • F2보내세요. \x1b[OQ그렇습니다4 바이트.

  • F5보내세요. \x1b[15~그렇습니다5바이트.

그 중 하나의 최대 길이는 얼마입니까? 이것이 어딘가에 문서화되어 있습니까?

답변1

미리 정의된 길이 제한 없음제어 순서. OP는 예제로 보낸 몇 가지 문자열을 제공했습니다.특수 키, 기록됨XTerm 제어 순서.

xterm은 다음과 같이 수정자 코드가 추가될 수 있는 가능한 키 코드 목록으로 시작합니다.Alt 및 Meta 키부분. 길이 차트가 없습니다. 이 작업의 한 가지 복잡한 문제는 수천 개의 가능한 키보드 배열을 만들기 위해 함께 작동하는 여러 리소스 설정이 있다는 것입니다. 이들 모두를 설명하는 대신 xterm 터미널 설명은 사용자 정의 함수를 포함하여 일련의 terminfo 빌딩 블록(이름에 "+" 포함)으로 표시됩니다.수정됨키(예: control, shift등).

  • 이것xterm의 용어 정보페이지에는 이러한 항목이 나열됩니다(스크립트로 생성됨).
  • 빌딩 블록의 크기는 대부분의 구현에서 가정되는 컴파일된 terminfo의 4096바이트 제한에 맞게 제한됩니다.
  • 저주터미널 데이터베이스이러한 빌딩 블록의 하위 집합이 나열됩니다.
  • 그것도 기록한다사용자 정의 기능xterm 항목에서 사용되는 키는 문서화된 것보다 더 많은 가능한 키가 있다는 점에 유의하세요.

일부 다른 터미널은 xterm 체계를 구현하지만 특정 조합에서만 구현됩니다. 그래서 이것들을 열거하기가 더 쉬울 것입니다. 어떤 의미에서는 "미리 정의"되어 있습니다.

그러나 특수 키가 유일한 제어 시퀀스 유형은 아닙니다. ECMA-48 형식을 사용하는 이러한 터미널은 호스트에서 전송된 제어 시퀀스를 받아들입니다. 일반적으로 숫자 또는 문자열 인수를 허용합니다.

  • xterm은 65535보다 큰 숫자를 무시하므로 이를 숫자에 대한 제한으로 생각할 수 있습니다.숫자(단, 터미널에 따라 다릅니다.)
  • 제어 시퀀스에는 숫자 매개변수가 얼마든지 포함될 수 있습니다. 예를 들어, xterm은 256색 팔레트의 256색 각각을 변경하는 제어 시퀀스를 허용합니다. 이는 몇 킬로바이트입니다(상한은 추정 가능). 제어 시퀀스 파서에는 언제든지 여러 숫자가 필요하지 않습니다.
  • 문자열 매개변수의 길이에는 미리 정의된 제한이 없습니다(예: 창 제목 설정).

마찬가지로 다른 터미널 에뮬레이터에서는 허용되는 제어 시퀀스의 길이에 대해 자체 제한을 사용할 수 있습니다.

관련 정보