Curses 라이브러리
curses 라이브러리는 터미널 유형과 관계 없이 터미널 표시장치를 조작할 수 있는 일련의 함수를 제공합니다. curses 라이브러리는 색상을 지원합니다. 그러나 복수 바이트 문자는 지원하지 않습니다. curses 문서의 문자에 대한 모든 참조사항은 단일 바이트 문자를 사용합니다.
이 문서에서는 curses 라이브러리를 curses라고 합니다.
curses 프로그래밍의 기본은 윈도우 데이터 구조입니다. 이 구조를 사용하면 터미널 표시장치에서 데이터를 조작할 수 있습니다. 전체 터미널 표시장치를 하나의 큰 윈도우로 처리하도록 curses에 지시하거나 해당 표시장치에서 복수의 윈도우를 작성할 수 있습니다. 윈도우는 크기가 다르고 서로 중첩될 수 있습니다. 일반적인 curses 애플리케이션에는 하나의 큰 윈도우와 하나의 부속 윈도우가 있습니다.
터미널 표시장치의 각 윈도우에는 고유한 윈도우 데이터 구조가 있습니다. 이 구조는 표시장치에 있는 크기 및 위치와 같은 윈도우에 대한 상태 정보를 보유합니다. Curses는 윈도우 데이터 구조를 사용하여 명령어를 수행하는 데 필요한 관련 정보를 확보합니다.
용어
curses로 프로그래밍할 때 다음 용어에 익숙해야 합니다.
| 기간 | 정의 |
|---|---|
| 현재 문자 | 현재 논리적 커서가 놓인 문자 |
| 현재 행 | 현재 논리적 커서가 놓인 행 |
| curscr | curses에서 제공한 가상 디폴트 윈도우. curscr(현재 화면)는 현재 터미널의 외부 표시장치에 표시되는 사항을 내부적으로 표시합니다. curscr을 수정하지 마십시오. |
| DISPLAY | 워크스테이션과 연결된 물리적 표시장치 |
| 논리적 커서 | 각 윈도우 내에서 커서 위치. 윈도우 데이터 구조는 논리적 커서의 위치를 계속 추적합니다. |
| 채우기(pad) | 채우기는 화면 크기에 제한을 받지 않는 윈도우입니다. |
| 물리적 커서 | 표시장치에 표시되는 커서. 워크스테이션은 이 커서를 사용하여 표시에 작성합니다. 표시당 하나의 물리적 커서만 있습니다. |
| 화면 | 전체 표시장치를 채우는 윈도우. 화면은 stdscr과 동시적입니다. |
| stdscr | 전체 표시장치를 표시하는 curses에서 제공한 가상 디폴트 윈도우(표준 화면) |
| window | C 데이터 구조에 대한 포인터 및 표시장치의 해당 데이터 구조 그래픽 표시. 윈도우는 표시장치의 전체 또는 일부분이 임의 시점에서 어떻게 보이는지 표현하는 2차원 배열로 생각할 수 있습니다. |
이름 지정 규칙
단일 curses 서브루틴에는 둘 이상의 버전이 있을 수 있습니다. 복수 버전이 있는 Curses 서브루틴은 별도의 버전을 식별하는 특정 이름 지정 규칙을 따릅니다. 이 규칙은 표준 curses 서브루틴에 접두어를 추가하고 서브루틴에 필요한 인수 또는 서브루틴이 호출될 때 수행할 조치를 식별합니다. 여러 curses 서브루틴 이름 버전에서 다음 접두어를 사용합니다.
| 접두부 | 설명 |
|---|---|
| w | 윈도우 인수가 필요한 서브루틴을 식별합니다. |
| p | 채우기 인수가 필요한 서브루틴을 식별합니다. |
| mv | 처음으로 프로그램 제공 좌표로 이동하는 서브루틴을 식별합니다. |
curses 서브루틴에 복수 버전이 있고 이전 접두어 중 하나도 포함하지 않는 경우 curses 디폴트 윈도우 stdscr(표준 스크린)이 사용됩니다. stdscr을 사용하는 서브루틴의 대부분은 #define문을 사용하여 /usr/include/curses.h 파일에서 작성된 매크로입니다. 프리프로세서는 컴파일 시 이 문을 대체합니다. 따라서 이 매크로는 컴파일된 어셈블러 코드, 추적, 디버그 프로그램 또는 curses 소스 코드에 표시되지 않습니다.
curses 서브루틴에 단일 버전만 있는 경우 stdscr을 사용할 필요가 없습니다. 예를 들어, printw 서브루틴은 stdscr로 문자열을 인쇄합니다. wprintw 서브루틴은 window 인수를 제공하여 고유의 윈도우에 문자열을 인쇄합니다. mvprintw 서브루틴은 지정된 좌표를 stdscr로 이동한 다음 printw 서브루틴과 동일한 기능을 수행합니다. 마찬가지로, mvwprintw 서브루틴은 지정된 좌표를 지정된 윈도우로 이동한 다음 wprintw 서브루틴과 동일한 기능을 수행합니다.
curses 프로그램의 구조
일반적으로 curses 프로그램에는 다음 진행사항이 있습니다.
- curses 시작
- 색상 지원 확인(선택적)
- 색상 시작(선택적)
- 하나 이상의 윈도우 작성
- 윈도우 조작
- 하나 이상의 윈도우 영구 삭제
- curses 정지
일부 단계는 선택적이므로 프로그램이 이 진행사항을 정확히 따를 필요는 없습니다.
리턴 값
몇 가지 예외사항과 함께 모든 curses 서브루틴은 정수값 ERR 또는 정수값 OK를 리턴합니다. 이 규약을 따르지 않는 서브루틴이 적절히 표시되어 있습니다. 포인터를 리턴하는 서브루틴은 항상 널(null) 포인터나 오류를 리턴합니다.