용어집

Terminfo
Termapi.svg

Termfo는 프로그램이 디스플레이 단말기를 디바이스에 의존하지 않고 사용할 수 있도록 하는 라이브러리데이터베이스입니다.Mary Ann Horton은 1981-1982년[1]termcap에 대한 개선으로 최초의 termfo 라이브러리를 구현했습니다.개선점에는 다음이 포함됩니다.

  • 저장된 단말기의 [citation needed]설명에 보다 빠르게 접근할 수 있습니다.
  • 더 길고 이해하기 쉬운 터미널 기능 이름 및
  • 단말기로 전송되는 문자열에 대한 일반 표현 평가.

Termfo는 UNIX System V Release 2에 포함되었으며, 곧 Termcap(BSD가 계속 사용)[2]이 아닌 System V에서 선호하는 형태의 터미널 기술이 되었습니다.이는 1982-1984년 Pavel Curtis에 의해 pcurs에서 모방되었으며, Mary Horton의 [3]수정 사항을 적용하거나 통합한 다른 UNIX 구현에서도 사용할 수 있었습니다.자세한 것은,[4] 1986년 12월부터의 뉴스 그룹의 투고를 참조해 주세요.

용어 데이터베이스는 수백 개의 다른 표시 단말기의 기능을 기술할 수 있습니다.이것에 의해, 단말의 타입에 관계없이, 외부 프로그램이 문자 베이스의 디스플레이 출력을 가질 수 있습니다.

설정에는 다음과 같은 것이 있습니다.

  • 화면상의 행수
  • 흑백 모드, 컬러 억제
  • 비프음 대신 보이는 벨 사용

데이터 모델

Termfo 데이터베이스는 단말기에 대한1개 이상의 설명으로 구성됩니다.

인덱스

각 설명에는 단말기의 표준 이름이 포함되어야 합니다.또, 단말기의 이름의 에일리어스를 1개 이상 포함할 수도 있습니다.표준 이름 또는 에일리어스는 라이브러리가 termfo 데이터베이스를 검색하는 키입니다.

데이터 값

설명에는 일반적인 이름을 가진 기능이 하나 이상 포함되어 있습니다.기능에는 부울, 숫자문자열이 있습니다.Termfo 라이브러리에는 각 기능 이름에 대해 미리 정해진 유형이 있습니다.다음 구문을 사용하여 각 기능의 유형을 확인합니다.

  • 문자열 기능에는 기능 이름과 값 사이에 "="가 있습니다.
  • 숫자 기능에는 기능 이름과 값 사이에 "#"이 있습니다.
  • 부울 기능에는 관련된 값이 없습니다(지정된 경우 항상 true입니다).

termfo를 사용하는 응용 프로그램은 각 기능의 유형을 인식하고 기능 이름이 미리 정의된 유형의 기능 중 하나에 해당하는 경우에만 정상적으로 반환되는 라이브러리 호출을 사용하여 termfo 데이터베이스에서 기능 값을 가져옵니다.

termcap과 마찬가지로 일부 문자열 기능은 키보드의 특수 키를 눌러 호스트로 전송될 수 있는 이스케이프 시퀀스를 나타냅니다.그 외의 기능은, 애플리케이션이 단말기에 송신할 가능성이 있는 문자열을 나타냅니다.후자의 경우 termfo 라이브러리는 (termcap 라이브러리와 마찬가지로) 어플리케이션 파라미터를 전송되는 문자열에 치환하기 위해 기능합니다.이러한 함수는 SGR(Select Graphic Rendition)과 같은 옵션 파라미터를 가진 제어 시퀀스에 대해 전송되는 문자 수를 최소화하는 데 주로 사용되는 스택 기반 식 파서를 제공합니다.반면 termcap 라이브러리는 대부분의 터미널에서 유용한 제한된 작업 세트를 제공합니다.

계층

termfo 설명은 어떤 설명의 내용을 다른 설명에 포함시키거나 포함된 설명에서 기능을 억제하거나 기능을 덮어쓰거나 추가함으로써 구성할 수 있습니다.어떤 스토리지 모델을 사용하든 termfo 라이브러리는 독립 실행형 도구(tic 등)를 사용하여 컴파일된 데이터를 사용하여 요청된 설명에서 터미널 설명을 반환합니다.

스토리지 모델

Termfo 데이터는 바이너리 파일로 저장되므로 termcap보다 수정이 용이하지 않습니다.데이터는 저장된 파일에서 termfo 라이브러리를 통해 가져올 수 있습니다.데이터 자체는 각각 부울, 숫자 및 문자열 기능에 대한 테이블로 구성됩니다.이것은 Mary Horton이 고안한 스킴으로,[5] 사용 가능한 이름에 관한 몇 가지 차이점을 제외하고 대부분의 termfo 구현에서 사용됩니다.X/Open은 컴파일된 터미널 설명의 형식을 지정하지 않았습니다.실제로 일반적인 tic 유틸리티나 infocmp [6][7]유틸리티에 대해서는 언급하지 않았습니다.컴파일된 termfo 엔트리에는 각 기능이 할당되어 있는 테이블 내의 인덱스를 식별하는 메타데이터가 포함되어 있지 않기 때문에 구현 간에 반드시 호환성이 있는 것은 아닙니다.그러나 대부분의 구현은 동일한 전체 테이블 구조(헤더 및 데이터 항목 크기 포함)를 사용하기 때문에 특정 구현의 데이터를 읽을 수 있는 맞춤형 용어집을 자동으로 구축할 수 있습니다.예를 들어 ncurs는 다른 몇 가지 [8]구현의 termfo 데이터와 일치하도록 구축할 수 있습니다.

디렉토리 트리

termfo 라이브러리의 최초 구현(가장 일반적인 구현)은 디렉토리 계층에서 데이터를 가져옵니다.패스명의 1개의 컴포넌트로서 단말 기술명의 이름의 첫 번째 문자를 사용하고, 취득하는 파일의 이름으로서 단말 기술명을 사용함으로써, 통상, termfo 라이브러리는 큰 termcap 파일의 검색을 웃돈다.[citation needed]

해시 데이터베이스

termfo의 일부 구현은 터미널 설명을 해시 데이터베이스에 저장합니다(: 버클리 DB 버전 1.85).[9][10]여기에는 표준 엔트리를 가리키는 에일리어스와 터미널 기능의 데이터를 포함하는 표준 엔트리의 두 가지 유형의 레코드가 저장됩니다.

제한 및 확장

오픈 그룹은 소스 파일에만 [11][12]적용되는 termfo(최소 보증값) 제한을 문서화합니다.다음 중 두 가지가 특히 중요합니다.

  • 터미널 에일리어스의 경우 최대 14자
  • 수량의 경우 최대 32,767

14 문자의 제한은 파일 이름을 나타내는 매우 오래된 파일 시스템을 대상으로 합니다.이러한 파일 시스템은 일반적으로 구식이지만, 이러한 제한은 1980년대 후반부터 문서화되어 그 이후로 검토되지 않았습니다.

32,767의 제한은 부호 있는2의 보완 16비트 값의 양수 값입니다.termfo 엔트리는 취소 또는 부재 값을 나타내기 위해 음수를 사용할 수 있습니다.

termcap과 달리 termfo에는 소스 표현과 컴파일 표현이 모두 있습니다.컴파일된 표현에 대한 제한은 지정되지 않았습니다.그러나 대부분의 구현에서는 컴파일된 엔트리의 크기가 4,096바이트를 초과할 수 없다는 을 tic(터미널 정보 컴파일러)의 설명서에 기재하고 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Horton, Mark. "The New Curses and Terminfo Package". USENIX Conference Proceedings. Boston, MA: USENIX. Summer 1982: 79–91.
  2. ^ "fa.info-terms mailing list comments on termcap/terminfo in 1985".
  3. ^ "pcurses shar file from 1986 showing change history". Archived from the original on 2007-09-27.
  4. ^ "pcurses complete posting".
  5. ^ Thomas E. Dickey (December 17, 2006). "term - format of compiled term file".
  6. ^ "X/Open Curses, Issue 4 Version 2 — Reference Pages". The Open Group. 1997.
  7. ^ "Commands & Utilities Issue 5 — Reference Pages". The Open Group. 1997.
  8. ^ Thomas E. Dickey (October 12, 2002). "Announcing ncurses 5.3".
  9. ^ Todd C. Miller (1999). "OpenBSD read_bsd_terminfo.c module".
  10. ^ Thomas E. Dickey (December 17, 2006). "Announcing ncurses 5.6".
  11. ^ 대부분의 경우 X/OpenOpen Software Foundation과 합병하여 The Open Group을 형성하기 전에 이루어졌기 때문에 X/Open이라고 하는 소스가 많습니다.
  12. ^ "Terminfo Source Format (ENHANCED CURSES) — Minimum Guaranteed Limits". The Open Group. 1997.

외부 링크