TERMINFO(5)

명칭
terminfo - 단말 케이파비리티의 데이타베이스

서식
/usr/share/misc/terminfo/*/*

해설
terminfo (은)는 단말의 특성을 기술하는 데이타베이스이며, nvi(1), rogue(1) 등의 화면을 활용한 프로그램이나 curses(3X) 등의 프로그램 라이브러리에 의해 사용됩니다. terminfo (은)는, 단말이 가지는 케이파비리티의 집합을 주어 화면 조작을 어떻게 해 실시할까를 지정해, 필요한 패딩이나 초기화 순차 순서를 지정하는 것으로, 단말의 특성을 기술합니다.

terminfo 의 엔트리는,`, '로 단락지어진 필드의 열로부터 됩니다 (필드내의 콤마는 backslash로 이스케이프 하는지, \072 라고 씁니다). `, 'separator의 뒤의 공백은 무시됩니다. 각 단말을 나타내는 최초의 엔트리는, 단말을 나타내는 것으로서 알려져 있는 이름을 지정합니다. 이름을 복수 지정할 때는 `|'로 단락짓습니다. 최초의 이름은, 그 단말의 것으로 해 가장 잘 알려진 생략형을 줍니다. 마지막 이름에는, 그 단말을 식별 가능한 한의 긴 이름을 지정해야 합니다. 그것들 이외의 이름은, 같은 단말을 가리키는 별명이라고 보여집니다. 마지막 것 이외의 이름은, 모두 영소문자로부터 되어, 공백이 포함되어 있어 안됩니다. 마지막 이름에는, 읽기 쉽게 하기 위해서 대문자나 공백을 포함해도 상관하지 않습니다.

단말명 (마지막 장황한 것은 제외하다)은, 이하의 약속에 따라 붙여 주세요. 이름의 기본 부분을, 단말을 구성하는 하드웨어의 특징적 부분으로부터 이름 붙입니다 (``hp2621''와 같이). 이 이름에는 하이픈을 포함해서는 안됩니다. 모드나, 유저의 설정이 나타나는 부분에 대해서는, 기본명의 뒤에, 하이픈과 모드의 접미말 붙여 나타내 주세요. 예를 들면, vt100 의 132 자리수 모드는 vt100-w 와 같이 됩니다. 사용할 수 있는 곳(중)이 있으면, 이하의 접미말을 사용해 주세요.

접미사의미례
-nn | 화면의 행수 | aaa-60
-np | 화면 기억 페이지수 | c100-4p
-am | 자동 마진부 (통상 이것이 디폴트) | vt100-am
-m | 흑백 모드; 색을 억제 | ansi-m
-mc | 마법의 쿠키; 하이라이트 때의 공백 | wy30-mc
-na | 커서 키 없음 (국소적으로 세운다) | c100-na
-nam | 자동 마진 없음 | vt100-nam
-nl | 스테이터스행 없음 | att4415-nl
-ns | 스테이터스행 없음 | hp2626-ns
-rv | 반전 표시 | c100-rv
-s | 스테이터스행 있어 | vt100-s
-vb | beep 대신에 가시 벨을 사용 | wy370-vb
-w | 대폭 모드 (> 80 자리수, 통상 132 자리수) | vt100-w

단말의 명명 규칙에 대해 한층 더 알고 싶을 때는 term(7) 의 메뉴얼을 참조해 주세요.

  케이파비리티
이하는 terminfo 의 기술 블록에 포함되어 terminfo 를 사용하는 코드를 사용할 수 있다 케이파비리티의 완전한 겉(표)입니다. 겉(표)의 각 행의 의미는 다음과 같습니다. variable 는 (terminfo 레벨의) 프로그래머가 케이파비리티를 사용할 경우에 이용하는 이름입니다. capname 는, 데이타베이스의 텍스트 중(안)에서 이용하는 단축명으로, 데이타베이스를 갱신하는 인간이 이용하는 이름입니다. 가능한 경우는 항상, capname 는 ANSI X3. 64-1979 표준 표준 (현재 ECMA-48 에 교체되고 있습니다만, 거기서도 동일한 혹은 매우 잘 닮은 이름을 사용하고 있습니다)와 동일 혹은 유사한 것을 선택해 있습니다. 그 의미도, 그 표준에서의 규정에 합치하도록(듯이) 되어 있습니다. termcap code 는 고전적인 termcap 케이파비리티의 이름입니다 (몇개의 케이파비리티는 새로운 것으로, 그 이름은 termcap 에 유래하지 않습니다).

케이파비리티의 이름의 길이에는, 정해진 상한은 없습니다. 다만, 이름을 짧게 해, 원시 파일에 탭을 사용해 cap (을)를 예쁘게 늘어놓을 수 있도록(듯이), 비공식이면서 상한 5 캐릭터의 제한이 이미 채용되고 있습니다. 마지막으로, 설명에서는 케이파비리티의 의미를 전하려고 합니다. 설명안에는 이하와 같은 코드가 있는 경우가 있습니다.

(P) 패딩이 지정 가능한 것을 나타냅니다.

#[1-9]
    설명 중(안)에서는, 캐릭터 라인이 (#i)로서 주어지는 인수로서 tparm 를 개입시켜 건네받는 것을 나타냅니다.

(P*)
    영향을 받는 행수에 패딩이 비례하는 것을 나타냅니다.

(#i)
    제 i 번째의 파라미터를 나타냅니다.

이하는 브르뭠케이파비리티입니다.
variable | cap- | TCap | 설명
불리언 값 | name | Code
auto_left_margin | bw | bw | cub1 는 자리수 0 으로부터 마지막 자리수로 돈다
auto_right_margin | am | am | 자동 마진 기능을 가진다
back_color_erase | bce | ut | 화면을 배경색으로 소거한다
can_change | ccc | cc | 기존의 색을 재정의 가능
ceol_standout_glitch | xhp | xs | 강조 출력은 덧쓰기로 소거되지 않는다 (hp)
col_addr_glitch | xhpa | YA | hpa/mhpa 에서는 정방향만 이동 가능
cpi_changes_res | cpix | YF | 캐릭터 핀치를 바꾸면(자) 해상도가 바뀐다
cr_cancels_micro_mode | crxm | YB | cr 를 사용하면(자) 마이크로 모드가 오프가 된다
dest_tabs_magic_smso | xt | xt | 탭은 파괴적, 강조 캐릭터의 동작이 기묘 (t1061)
eat_newline_glitch | xenl | xn | 80 자리수부터 후의 개행은 무시된다 (concept)
erase_overstrike | eo | eo | 공백의 겹침 치는 것으로 소거 가능
generic_type | gn | gn | 일반적인 회선 타입
hard_copy | hc | hc | 하드 카피 단말
hard_cursor | chts | HC | 커서가 보기 나쁘다
has_meta_key | km | km | 메타키를 가진다 (누르면(자) 제 8 비트가 세트 된다)
has_print_wheel | daisy | YC | 캐릭터 세트를 변경하는데 일손이 필요한 프린터
has_status_line | hs | hs | 특별한 스테이터스행을 가진다
hue_lightness_saturation | hls | hl | 단말은 HLS 색표기만 사용 (Tektronix)
insert_null_glitch | in | in | 삽입 모드로 널 캐릭터를 구별한다
lpi_changes_res | lpix | YG | 행 피치를 바꾸면(자) 해상도가 바뀐다
memory_above | da | da | 화면에서(보다) 위의 묘화가 보관 유지된다
memory_below | db | db | 화면에서(보다) 아래의 묘화가 보관 유지된다
move_insert_mode | mir | mi | 삽입 모드로 안전하게 커서 이동 가능
move_standout_mode | msgr | ms | 강조 모드로 안전하게 커서 이동 가능
needs_xon_xoff | nxon | nx | 패딩 기능이 일하지 않는다. xon/xoff 제어가 필요
no_esc_ctlc | xsb | xb | beehive 단말 (f1=escape, f2=ctrl C)
no_pad_char | npc | NP | 패딩 캐릭터가 존재하지 않는다
non_dest_scroll_region | ndscr | ND | 스크롤 area가 비파괴적
non_rev_rmcup | nrrmc | NR | smcup 는 rmcup 의 동작을 반전하지 않는다
over_strike | os | os | 단말은 거듭하고 치는 것 가능
prtr_silent | mc5i | 5i | 프린터 출력은 화면에 에코 하지 않는다
row_addr_glitch | xvpa | YD | vpa/mvpa 에서는 정방향에게만 이동 가능
semi_auto_right_margin | sam | YE | 최종자리수로 출력하면(자) cr 동작을 한다
status_line_esc_ok | eslok | es | 스테이터스행상에서 이스케이프 가능
tilde_glitch | hz | hz | ~ 표시 불가 (hazeltine 단말)
transparent_underline | ul | ul | 밑줄부 캐릭터는 덧쓰기한다
xon_xoff | xon | xo | 단말은 xon/xoff 핸드 쉐이크를 실시한다
이하는 수치 케이파비리티입니다.
variable | cap- | TCap | 설명
수치 | name | Code
columns | cols | co | 1 행의 자리수
init_tabs | it | it | 탭의 초기설정은 # 개의 공백마다
label_height | lh | lh | label 1 개의 행수
label_width | lw | lw | label 1 개의 자리수
lines | lines | li | 화면 또는 페이지의 행수
lines_of_memory | lm | lm | lines 의 값이상의 경우 메모리의 행수. 0 하행수가 가변인 것을 나타낸다
magic_cookie_glitch | xmc | sg | smso 나 rmso 로 화면에 남는 공백수
max_attributes | ma | ma | 단말이 조합해 처리할 수 있는 속성수의 최대치
max_colors | colors | Co | 화면상의 최대 색 가지수
max_pairs | pairs | pa | 화면상의 색페어의 최대치
maximum_windows | wnum | MW | 정의 가능한 윈도우수의 최대치
no_color_video | ncv | NC | 색첨부에서는 사용할 수 없는 비디오 속성
num_labels | nlab | Nl | 화면상의 label수
padding_baud_rate | pb | pb | 패딩이 필요한 최저 보 속도
virtual_terminal | vt | vt | 가상 화면 번호 (CB/unix)
width_status_line | wsl | ws | 스테이터스행의 자리수
이하의 수치 케이파비리티는, SVr4. 0 의 term 구조체에 존재하고 있습니다만, 메뉴얼에는 아직도 설명이 없습니다. SVr4 로 프린터에 대응하기 위해서 받아들여졌습니다.
variable | cap- | TCap | 설명
수치 | name | Code
bit_image_entwining | bitwin | Yo | 각 비트 이미지행에 대한 패스의 수
bit_image_type | bitype | Yp | 비트 이미지 디바이스의 타입
buffer_capacity | bufsz | Ya | 인자전에 버퍼링 가능한 바이트수
buttons | btns | BT | 마우스의 버튼수
dot_horz_spacing | spinh | Yc | 1 인치 근처의 닷수에서의 수평 방향의 닷 간격
dot_vert_spacing | spinv | Yb | 1 인치 근처의 핀수에서의 수직 방향의 핀 간격
max_micro_address | maddr | Yd | micro_..._address 에서의 최대치
max_micro_jump | mjump | Ye | parm_..._micro 에서의 최대치
micro_col_size | mcs | Yf | 마이크로 모드에서의 캐릭터 스텝 사이즈
micro_line_size | mls | Yg | 마이크로 모드에서의 행 스텝 사이즈
number_of_pins | npins | Yh | 프린트 헤드의 핀수
output_res_char | orc | Yi | 1 행 당의 유니트수에서의 수평 해상도
output_res_horz_inch | orhi | Yk | 1 인치 근처의 유니트수에서의 수평 해상도
output_res_line | orl | Yj | 1 행 당의 유니트수에서의 수직 해상도
output_res_vert_inch | orvi | Yl | 1 인치 근처의 유니트수에서의 수직 해상도
print_rate | cps | Ym | 1 초 쯤의 캐릭터수에서의 인자 속도
wide_char_size | widcs | Yn | 배폭모드에서의 캐릭터 스텝 사이즈
이하는 캐릭터 라인 케이파비리티입니다.
variable | cap- | TCap | 설명
캐릭터 라인 | name | Code
acs_chars | acsc | ac | 도형 캐릭터 세트의 조, vt100 에 근거한다
back_tab | cbt | bt | 후퇴 탭 (P)
bell | bel | bl | 가청 시그널 (벨) (P)
carriage_return | cr | cr | 복귀 캐릭터 (P*) (P*)
change_char_pitch | cpi | ZA | 1 인치 근처의 캐릭터수를 # 1 으로 변경
change_line_pitch | lpi | ZB | 1 인치 근처의 행수를 #1 로 변경
change_res_horz | chr | ZC | 수평 해상도를 #1 로 변경
change_res_vert | cvr | ZD | 수직 해상도를 #1 로 변경
change_scroll_region | csr | cs | area를 행 #1 으로부터 행 #2 까지 변경 (P)
char_padding | rmp | rP | ip 와 같지만 삽입 모드 이외로 사용
clear_all_tabs | tbc | ct | 탭 설정을 모두 클리어 (P)
clear_margins | mgc | MC | 좌우의 소프트 마진을 클리어
clear_screen | clear | cl | 화면을 클리어 해, 커서를 홈에 이동 (P*)
clr_bol | el1 | cb | 행선지두까지 클리어
clr_eol | el | ce | 줄 끝까지 클리어 (P)
clr_eos | ed | cd | 화면말까지 클리어 (P*)
column_address | hpa | ch | 수평 절대 위치 #1 (P)
command_character | cmdch | CC | 단말이 prototype로 설정 가능한 명령 캐릭터 !?
create_window | cwin | CW | 윈도우 #1 를 #2,#3 로부터 #4,#5 까지와 정의
cursor_address | cup | cm | 행 #1 형 #2 에 이동
cursor_down | cud1 | do | 1 행 하에 이동
cursor_home | home | ho | 커서를 홈에 이동 (cup 가 없는 경우)
cursor_invisible | civis | vi | 커서를 안보이게 한다
cursor_left | cub1 | le | 커서를 1 공백분좌에 이동
cursor_mem_address | mrcup | CM | 메모리 상대의 커서 위치 지정이며, 행 #1 렬 #2 에 이동
cursor_normal | cnorm | ve | 커서를 통상 표시로 한다 (civis/cvvis 를 바탕으로 되돌린다)
cursor_right | cuf1 | nd | 비파괴 공백 (1 공백분우에 이동)
cursor_to_ll | ll | ll | 맨 마지막 줄의 최초의 자리수 (cup 가 없는 경우)
cursor_up | cuu1 | up | 1 행 상에
cursor_visible | cvvis | vs | 커서를 잘 보이도록 한다
define_char | defc | ZE | 캐릭터를 정의
delete_character | dch1 | dc | 캐릭터를 삭제 (P*)
delete_line | dl1 | dl | 행을 삭제 (P*)
dial_phone | dial | DI | 번호 #1 에 다이얼 한다
dis_status_line | dsl | ds | 스테이터스행을 무효로 한다
display_clock | dclk | DK | (#1,#2)에 시계를 표시한다
down_half_line | hd | hd | 반행하에
ena_acs | enacs | eA | 다른 캐릭터 세트를 유효하게 한다
enter_alt_charset_mode | smacs | as | 다른 캐릭터 세트를 개시 (P)
enter_am_mode | smam | SA | 자동 마진 온
enter_blink_mode | blink | mb | 점멸 모드 온
enter_bold_mode | bold | md | bold (더욱 밝다) 모드 온
enter_ca_mode | smcup | ti | cup 를 이용한 프로그램을 개시하는 캐릭터 라인
enter_delete_mode | smdc | dm | 삭제 모드 개시
enter_dim_mode | dim | mh | 반휘도 모드 온
enter_doublewide_mode | swidm | ZF | 배폭모드 개시
enter_draft_quality | sdrfq | ZG | 드래프트 인자 모드 개시
enter_insert_mode | smir | im | 삽입 모드 개시
enter_italics_mode | sitm | ZH | 이탤릭 모드 개시
enter_leftward_mode | slm | ZI | 좌향 이동 모드 개시
enter_micro_mode | smicm | ZJ | 마이크로 이동 모드 개시
enter_near_letter_quality | snlq | ZK | NLQ 인자 모드 개시
enter_normal_quality | snrmq | ZL | 통상 품질 인자 모드 개시
enter_protected_mode | prot | mp | 보호 모드 온
enter_reverse_mode | rev | mr | 반전 표시 모드 온
enter_secure_mode | invis | mk | 공백 모드 온 (캐릭터가 안보인다)
enter_shadow_mode | sshm | ZM | 그림자 프린트 모드 개시
enter_standout_mode | smso | so | 강조 모드 개시
enter_subscript_mode | ssubm | ZN | 첨자 모드 개시
enter_superscript_mode | ssupm | ZO | 슈퍼 스크립트 모드 개시
enter_underline_mode | smul | us | 밑줄 모드 개시
enter_upward_mode | sum | ZP | 오름새 이동 모드 개시
enter_xon_mode | smxon | SX | xon/xoff 핸드 쉐이크 온
erase_chars | ech | ec | #1 개의 캐릭터를 소거 (P)
exit_alt_charset_mode | rmacs | ae | 다른 캐릭터 세트 종료 (P)
exit_am_mode | rmam | RA | 자동 마진 오프
exit_attribute_mode | sgr0 | me | 전속성 오프
exit_ca_mode | rmcup | te | cup 를 이용한 프로그램을 종료하는 캐릭터 라인
exit_delete_mode | rmdc | ed | 삭제 모드 종료
exit_doublewide_mode | rwidm | ZQ | 배폭모드 종료
exit_insert_mode | rmir | ei | 삽입 모드 종료
exit_italics_mode | ritm | ZR | 이탤릭 모드 종료
exit_leftward_mode | rlm | ZS | 좌향 이동 모드 종료
exit_micro_mode | rmicm | ZT | 마이크로 이동 모드 종료
exit_shadow_mode | rshm | ZU | 그림자 프린트 모드 종료
exit_standout_mode | rmso | se | 강조 모드 종료
exit_subscript_mode | rsubm | ZV | 첨자 모드 종료
exit_superscript_mode | rsupm | ZW | 슈퍼 스크립트 모드 종료
exit_underline_mode | rmul | ue | 밑줄 모드 종료
exit_upward_mode | rum | ZX | 오름새 이동 모드 종료
exit_xon_mode | rmxon | RX | xon/xoff 핸드 쉐이크 오프
fixed_pause | pause | PA | 2-3 초 기다린다
flash_hook | hook | fh | 스윗치 훅을 플래시
flash_screen | flash | vb | 가시 벨 (커서는 이동하지 않는다)
form_feed | ff | ff | 하드 카피 단말에서의 페이지 배출 (P*)
from_status_line | fsl | fs | 스테이터스행으로부터의 복귀
goto_window | wingo | WG | 윈도우 #1 에 이동
hangup | hup | HU | 전화를 끊는다
init_1string | is1 | i1 | 초기화 캐릭터 라인
init_2string | is2 | is | 초기화 캐릭터 라인
init_3string | is3 | i3 | 초기화 캐릭터 라인
init_file | if | if | 초기화 파일의 이름
init_prog | iprog | iP | 초기화 프로그램의 패스명
initialize_color | initc | Ic | 색 #1 을 (#2,#3,#4)에 초기화
initialize_pair | initp | Ip | 색페어 #1 를 fg=(#2,#3,#4), bg=(#5,#6,#7)에 초기화
insert_character | ich1 | ic | 캐릭터의 삽입 (P)
insert_line | il1 | al | 행의 삽입 (P*)
insert_padding | ip | ip | 캐릭터 삽입의 뒤에 패딩을 삽입
key_a1 | ka1 | K1 | 키패드의 좌상 키
key_a3 | ka3 | K3 | 키패드의 우상 키
key_b2 | kb2 | K2 | 키패드의 중앙 키
key_backspace | kbs | kb | backspace 키
key_beg | kbeg | @1 | begin 키
key_btab | kcbt | kB | back-tab 키
key_c1 | kc1 | K4 | 키패드의 좌하 키
key_c3 | kc3 | K5 | 키패드의 우하 키
key_cancel | kcan | @2 | cancel 키
key_catab | ktbc | ka | clear-all-tabs 키
key_clear | kclr | kC | clear-screen 키, 또는 erase 키
key_close | kclo | @3 | close 키
key_command | kcmd | @4 | command 키
key_copy | kcpy | @5 | copy 키
key_create | kcrt | @6 | create 키
key_ctab | kctab | kt | clear-tab 키
key_dc | kdch1 | kD | delete-character 키
key_dl | kdl1 | kL | delete-line 키
key_down | kcud1 | kd | down-arrow 키
key_eic | krmir | kM | 삽입 모드로 rmir 나 smir 가 송출하는 데이터
key_end | kend | @7 | end 키
key_enter | kent | @8 | enter/send 키
key_eol | kel | kE | clear-to-end-of-line 키
key_eos | ked | kS | clear-to-end-of-screen 키
key_exit | kext | @9 | exit 키
key_f0 | kf0 | k0 | F0 function key
key_f1 | kf1 | k1 | F1 function key
key_f10 | kf10 | k; | F10 function key
key_f11 | kf11 | F1 | F11 function key
key_f12 | kf12 | F2 | F12 function key
key_f13 | kf13 | F3 | F13 function key
key_f14 | kf14 | F4 | F14 function key
key_f15 | kf15 | F5 | F15 function key
key_f16 | kf16 | F6 | F16 function key
key_f17 | kf17 | F7 | F17 function key
key_f18 | kf18 | F8 | F18 function key
key_f19 | kf19 | F9 | F19 function key
key_f2 | kf2 | k2 | F2 function key
key_f20 | kf20 | FA | F20 function key
key_f21 | kf21 | FB | F21 function key
key_f22 | kf22 | FC | F22 function key
key_f23 | kf23 | FD | F23 function key
key_f24 | kf24 | FE | F24 function key
key_f25 | kf25 | FF | F25 function key
key_f26 | kf26 | FG | F26 function key
key_f27 | kf27 | FH | F27 function key
key_f28 | kf28 | FI | F28 function key
key_f29 | kf29 | FJ | F29 function key
key_f3 | kf3 | k3 | F3 function key
key_f30 | kf30 | FK | F30 function key
key_f31 | kf31 | FL | F31 function key
key_f32 | kf32 | FM | F32 function key
key_f33 | kf33 | FN | F33 function key
key_f34 | kf34 | FO | F34 function key
key_f35 | kf35 | FP | F35 function key
key_f36 | kf36 | FQ | F36 function key
key_f37 | kf37 | FR | F37 function key
key_f38 | kf38 | FS | F38 function key
key_f39 | kf39 | FT | F39 function key
key_f4 | kf4 | k4 | F4 function key
key_f40 | kf40 | FU | F40 function key
key_f41 | kf41 | FV | F41 function key
key_f42 | kf42 | FW | F42 function key
key_f43 | kf43 | FX | F43 function key
key_f44 | kf44 | FY | F44 function key
key_f45 | kf45 | FZ | F45 function key
key_f46 | kf46 | Fa | F46 function key
key_f47 | kf47 | Fb | F47 function key
key_f48 | kf48 | Fc | F48 function key
key_f49 | kf49 | Fd | F49 function key
key_f5 | kf5 | k5 | F5 function key
key_f50 | kf50 | Fe | F50 function key
key_f51 | kf51 | Ff | F51 function key
key_f52 | kf52 | Fg | F52 function key
key_f53 | kf53 | Fh | F53 function key
key_f54 | kf54 | Fi | F54 function key
key_f55 | kf55 | Fj | F55 function key
key_f56 | kf56 | Fk | F56 function key
key_f57 | kf57 | Fl | F57 function key
key_f58 | kf58 | Fm | F58 function key
key_f59 | kf59 | Fn | F59 function key
key_f6 | kf6 | k6 | F6 function key
key_f60 | kf60 | Fo | F60 function key
key_f61 | kf61 | Fp | F61 function key
key_f62 | kf62 | Fq | F62 function key
key_f63 | kf63 | Fr | F63 function key
key_f7 | kf7 | k7 | F7 function key
key_f8 | kf8 | k8 | F8 function key
key_f9 | kf9 | k9 | F9 function key
key_find | kfnd | @0 | find 키
key_help | khlp | %1 | help 키
key_home | khome | kh | home 키
key_ic | kich1 | kI | insert-character 키
key_il | kil1 | kA | insert-line 키
key_left | kcub1 | kl | left-arrow 키
key_ll | kll | kH | lower-left 키 (home down)
key_mark | kmrk | %2 | mark 키
key_message | kmsg | %3 | message 키
key_move | kmov | %4 | move 키
key_next | knxt | %5 | next 키
key_npage | knp | kN | next-page 키
key_open | kopn | %6 | open 키
key_options | kopt | %7 | options 키
key_ppage | kpp | kP | previous-page 키
key_previous | kprv | %8 | previous 키
key_print | kprt | %9 | print 키
key_redo | krdo | %0 | redo 키
key_reference | kref | &1 | reference 키
key_refresh | krfr | &2 | refresh 키
key_replace | krpl | &3 | replace 키
key_restart | krst | &4 | restart 키
key_resume | kres | &5 | resume 키
key_right | kcuf1 | kr | right-arrow 키
key_save | ksav | &6 | save 키
key_sbeg | kBEG | &9 | 쉬프트 상태의 begin 키
key_scancel | kCAN | &0 | 쉬프트 상태의 cancel 키
key_scommand | kCMD | *1 | 쉬프트 상태의 command 키
key_scopy | kCPY | *2 | 쉬프트 상태의 copy 키
key_screate | kCRT | *3 | 쉬프트 상태의 create 키
key_sdc | kDC | *4 | 쉬프트 상태의 delete-character 키
key_sdl | kDL | *5 | 쉬프트 상태의 delete-line 키
key_select | kslt | *6 | select 키
key_send | kEND | *7 | 쉬프트 상태의 end 키
key_seol | kEOL | *8 | 쉬프트 상태의 clear-to-end-of-line 키
key_sexit | kEXT | *9 | 쉬프트 상태의 exit 키
key_sf | kind | kF | scroll-forward 키
key_sfind | kFND | *0 | 쉬프트 상태의 find 키
key_shelp | kHLP | #1 | 쉬프트 상태의 help 키
key_shome | kHOM | #2 | 쉬프트 상태의 home 키
key_sic | kIC | #3 | 쉬프트 상태의 insert-character 키
key_sleft | kLFT | #4 | 쉬프트 상태의 left-arrow 키
key_smessage | kMSG | %a | 쉬프트 상태의 message 키
key_smove | kMOV | %b | 쉬프트 상태의 move 키
key_snext | kNXT | %c | 쉬프트 상태의 next 키
key_soptions | kOPT | %d | 쉬프트 상태의 options 키
key_sprevious | kPRV | %e | 쉬프트 상태의 previous 키
key_sprint | kPRT | %f | 쉬프트 상태의 print 키
key_sr | kri | kR | scroll-backward 키
key_sredo | kRDO | %g | 쉬프트 상태의 redo 키
key_sreplace | kRPL | %h | 쉬프트 상태의 replace 키
key_sright | kRIT | %i | 쉬프트 상태의 right-arrow 키
key_srsume | kRES | %j | 쉬프트 상태의 resume 키
key_ssave | kSAV | ! 1 | 쉬프트 상태의 save 키
key_ssuspend | kSPD | ! 2 | 쉬프트 상태의 suspend 키
key_stab | khts | kT | set-tab 키
key_sundo | kUND | ! 3 | 쉬프트 상태의 undo 키
key_suspend | kspd | &7 | suspend 키
key_undo | kund | &8 | undo 키
key_up | kcuu1 | ku | up-arrow 키
keypad_local | rmkx | ke | 'keyboard_transmit'모드로부터 빠진다
keypad_xmit | smkx | ks | 'keyboard_transmit'모드에 들어간다
lab_f0 | lf0 | l0 | f0 가 아닌 경우, function key f0 의 label
lab_f1 | lf1 | l1 | f1 가 아닌 경우, function key f1 의 label
lab_f10 | lf10 | la | f10 가 아닌 경우, function key f10 의 label
lab_f2 | lf2 | l2 | f2 가 아닌 경우, function key f2 의 label
lab_f3 | lf3 | l3 | f3 가 아닌 경우, function key f3 의 label
lab_f4 | lf4 | l4 | f4 가 아닌 경우, function key f4 의 label
lab_f5 | lf5 | l5 | f5 가 아닌 경우, function key f5 의 label
lab_f6 | lf6 | l6 | f6 가 아닌 경우, function key f6 의 label
lab_f7 | lf7 | l7 | f7 가 아닌 경우, function key f7 의 label
lab_f8 | lf8 | l8 | f8 가 아닌 경우, function key f8 의 label
lab_f9 | lf9 | l9 | f9 가 아닌 경우, function key f9 의 label
label_format | fln | Lf | label 포맷
label_off | rmln | LF | 소프트 label 오프
label_on | smln | LO | 소프트 label 온
meta_off | rmm | mo | 메타모드오후
meta_on | smm | mm | 메타모드온 (8 번째의 비트 온)
micro_column_address | mhpa | ZY | 마이크로 모드의 column_address
micro_down | mcud1 | ZZ | 마이크로 모드의 cursor_down
micro_left | mcub1 | Za | 마이크로 모드의 cursor_left
micro_right | mcuf1 | Zb | 마이크로 모드의 cursor_right
micro_row_address | mvpa | Zc | 마이크로 모드의 row_address #1
micro_up | mcuu1 | Zd | 마이크로 모드의 cursor_up
newline | nel | nw | 개행 (cr 의 뒤에 lf 가 온다)
order_of_pins | porder | Ze | 소프트웨어 비트를 인자 헤드 핀에 일치시킨다
orig_colors | oc | oc | 모든 색페어를 본래의 것으로 한다
orig_pair | op | op | 디폴트의 페어를 본래의 값으로 한다
pad_char | pad | pc | 패딩 캐릭터 (눌 이외)
parm_dch | dch | DC | #1 캐릭터를 삭제 (P*)
parm_delete_line | dl | DL | #1 행을 삭제 (P*)
parm_down_cursor | cud | DO | #1 행하에 (P*)
parm_down_micro | mcud | Zf | 마이크로 모드의 parm_down_cursor
parm_ich | ich | IC | #1 캐릭터를 삽입 (P*)
parm_index | indn | SF | #1 행의 전진 스크롤 (P)
parm_insert_line | il | AL | #1 행을 삽입 (P*)
parm_left_cursor | cub | LE | 왼쪽에 #1 캐릭터분 이동 (P)
parm_left_micro | mcub | Zg | 마이크로 모드의 parm_left_cursor
parm_right_cursor | cuf | RI | 오른쪽에 #1 캐릭터분 이동 (P*)
parm_right_micro | mcuf | Zh | 마이크로 모드의 parm_right_cursor
parm_rindex | rin | SR | #1 행의 후퇴 스크롤 (P)
parm_up_cursor | cuu | UP | #1 행상에 (P*)
parm_up_micro | mcuu | Zi | 마이크로 모드의 parm_up_cursor
pkey_key | pfkey | pk | function key #1 의 타건캐릭터 라인을 #2 로 한다
pkey_local | pfloc | pl | function key #1 의 실행 캐릭터 라인을 #2 로 한다
pkey_xmit | pfx | px | function key #1 의 송신 캐릭터 라인을 #2 로 한다
plab_norm | pln | pn | label #1 에 캐릭터 라인 #2 을 표시
print_screen | mc0 | ps | 화면의 내용을 인자한다
prtr_non | mc5p | pO | #1 바이트만 프린터를 온으로 한다
prtr_off | mc4 | pf | 프린터를 오프로 한다
prtr_on | mc5 | po | 프린터를 온으로 한다
pulse | pulse | PU | 펄스 다이얼을 선택
quick_dial | qdial | QD | 확인없이 전화번호 #1 에 다이얼 한다
remove_clock | rmclk | RC | 시계를 삭제
repeat_char | rep | rp | 캐릭터 #1 를 #2 회 반복한다 (P*)
req_for_input | rfi | RF | (pty 용으로) 다음의 입력 몬지를 보낸다
reset_1string | rs1 | r1 | 리셋트 캐릭터 라인
reset_2string | rs2 | r2 | 리셋트 캐릭터 라인
reset_3string | rs3 | r3 | 리셋트 캐릭터 라인
reset_file | rf | rf | 리셋트 파일의 이름
restore_cursor | rc | rc | 마지막 save_cursor 의 위치에 커서를 되돌린다
row_address | vpa | cv | 수직 절대 위치 #1 (P)
save_cursor | sc | sc | 현재의 커서 위치를 보존 (P)
scroll_forward | ind | sf | 텍스트를 위에 스크롤 (P)
scroll_reverse | ri | sr | 텍스트를 아래에 스크롤 (P)
select_char_set | scs | Zj | 캐릭터 세트 #1 의 선택
set_attributes | sgr | sa | 비디오 속성을 #1-#9 에 정의 (PG9)
set_background | setb | Sb | 배경색을 #1 로 설정
set_bottom_margin | smgb | Zk | 하 마진을 현재행으로 설정
set_bottom_margin_parm | smgbp | Zl | 하 마진을 #1 행목이나 아래로부터 #2 행 본다
set_clock | sclk | SC | 시계를 #1 시 #2 분 #3 초로 설정
set_color_pair | scp | sp | 현재의 색페어를 #1 로 설정
set_foreground | setf | Sf | 전경색을 #1 로 설정
set_left_margin | smgl | ML | 왼쪽 소프트 마진을 현재자리수로 설정
set_left_margin_parm | smglp | Zm | 왼쪽 ( 오른쪽) 마진을 자리수 #1 (#2)로 설정
set_right_margin | smgr | MR | 오른쪽 소프트 마진을 현재자리수로 설정
set_right_margin_parm | smgrp | Zn | 오른쪽 마진을 자리수 #1 로 설정
set_tab | hts | st | 전행의 탭을 현재의 자리수로 설정
set_top_margin | smgt | Zo | 상 마진을 현재행으로 설정
set_top_margin_parm | smgtp | Zp | 상 (하) 마진을 행 #1 (#2)으로 설정
set_window | wind | wi | 현재의 윈도우를 행 #1-#2, 자리수 #3-#4 로 한다
start_bit_image | sbim | Zq | 비트 이미지 그래픽 인자의 개시
start_char_set_def | scsd | Zr | 캐릭터 세트 정의의 개시
stop_bit_image | rbim | Zs | 비트 이미지 그래픽 인자의 종료
stop_char_set_def | rcsd | Zt | 캐릭터 세트 정의의 종료
subscript_characters | subcs | Zu | 첨자가 될 수 있는 캐릭터의 리스트
superscript_characters | supcs | Zv | 슈퍼 스크립트가 될 수 있는 캐릭터의 리스트
tab | ht | ta | 다음의 8 캐릭터 분의 하드웨어 tab stop에의 탭 캐릭터
these_cause_cr | docr | Zw | 이러한 캐릭터 중 몇개의 인자는 CR 를 일으킨다
to_status_line | tsl | ts | 스테이터스행의 열 #1 에 이동
tone | tone | TO | 터치 톤 다이얼을 선택
underline_char | uc | uc | 캐릭터 1 개(살)에 밑줄을 붙여 다음의 캐릭터에 이동
up_half_line | hu | hu | 반행상에
user0 | u0 | u0 | 유저 캐릭터 라인 #0
user1 | u1 | u1 | 유저 캐릭터 라인 #1
user2 | u2 | u2 | 유저 캐릭터 라인 #2
user3 | u3 | u3 | 유저 캐릭터 라인 #3
user4 | u4 | u4 | 유저 캐릭터 라인 #4
user5 | u5 | u5 | 유저 캐릭터 라인 #5
user6 | u6 | u6 | 유저 캐릭터 라인 #6
user7 | u7 | u7 | 유저 캐릭터 라인 #7
user8 | u8 | u8 | 유저 캐릭터 라인 #8
user9 | u9 | u9 | 유저 캐릭터 라인 #9
wait_tone | wait | WA | 다이얼 톤을 기다린다
xoff_character | xoffc | XF | XOFF 캐릭터
xon_character | xonc | XN | XON 캐릭터
zero_motion | zerom | Zx | 다음의 캐릭터 표시를 이동 없음으로 실시한다
이하의 캐릭터 라인 케이파비리티는, SVr4. 0 의 term 구조체에 존재하고 있습니다만, 메뉴얼로 아직도 설명이 이루어지고 있지 않습니다.
variable | cap- | TCap | 설명
캐릭터 라인 | name | Code
alt_scancode_esc | scesa | S8 | 스캔 코드 에뮬레이션을 위한 다른 이스케이프 캐릭터
bit_image_carriage_return | bicr | Yv | 동일행의 선두에 이동
bit_image_newline | binel | Zz | 비트 이미지의 다음의 행에 이동
bit_image_repeat | birep | Xy | 비트 이미지 셀 #1 을 #2 회 반복한다
char_set_names | csnm | Zy | 캐릭터 세트명의 리스트
code_set_init | csin | ci | 복수 코드 세트의 초기화 순차 순서
color_names | colornm | Yw | 색 #1 에 이름을 준다
define_bit_image_region | defbi | Yx | 구형의 비트 이미지 area를 정의
device_type | devt | dv | 언어/코드 세트 서포트의 지정
display_pc_char | dispc | S1 | PC 캐릭터 #1 를 표시
end_bit_image_region | endbi | Yy | 비트 이미지 area의 종료
enter_pc_charset_mode | smpch | S2 | PC 캐릭터 표시 모드 개시
enter_scancode_mode | smsc | S4 | PC 스캔 코드 모드 개시
exit_pc_charset_mode | rmpch | S3 | PC 캐릭터 표시 모드 종료
exit_scancode_mode | rmsc | S5 | PC 스캔 코드 모드 종료
get_mouse | getm | Gm | curses 가 버튼 이벤트를 취득해야 할. 파라미터 #1 는 문서화되어 있지 않다
key_mouse | kmous | Km | 마우스 이벤트가 일어났다
mouse_info | minfo | Mi | 마우스 상태의 정보
pc_term_options | pctrm | S6 | PC 단말 옵션
pkey_plab | pfxl | xl | function key #1 에 캐릭터 라인 #2 을 송신시키고 캐릭터 라인 #3 을 표시시킨다
req_mouse_pos | reqmp | RQ | 마우스 위치의 요구
scancode_escape | scesc | S7 | 스캔 코드 에뮬레이션을 위한 이스케이프
set0_des_seq | s0ds | s0 | 코드 세트 0 에 쉬프트 (EUC 세트 0, ASCII)
set1_des_seq | s1ds | s1 | 코드 세트 1 에 쉬프트
set2_des_seq | s2ds | s2 | 코드 세트 2 에 쉬프트
set3_des_seq | s3ds | s3 | 코드 세트 3 에 쉬프트
set_a_background | setab | AB | ANSI escape sequence를 사용해 배경색을 #1 로 설정
set_a_foreground | setaf | AF | ANSI escape sequence를 사용해 전경색을 #1 로 설정
set_color_band | setcolor | Yz | ribbon의 색을 #1 로 변경
set_lr_margin | smglr | ML | 좌우 양마진을 #1,#2 로 설정
set_page_length | slines | YZ | 페이지장을 #1 행으로 설정
set_tb_margin | smgtb | MT | 상하 양마진을 #1,#2 로 설정
XSI Curses 표준에서는 이하의 것이 추가되고 있습니다. 그것들은, 예를 들면, Solaris 2.5 나 IRIX 6. x 등, 4.1 이후의 버젼의 System V 의, curses 의 것입니다. 그러한 ncurses termcap 명은 날조했습니다. XSI Curses 표준에 따르면(자), termcap 명은 없습니다. 컴파일 된 terminfo 엔트리가 이것들을 사용하고 있으면, SVr4. 1 이후의 System V terminfo 엔트리란 binary level compatibility는 아닐지도 모릅니다. 조심해 주세요!
variable | cap- | TCap | 설명
캐릭터 라인 | name | Code
enter_horizontal_hl_mode | ehhlm | Xh | 수평 하이라이트 모드에 들어간다
enter_left_hl_mode | elhlm | Xl | 왼쪽 하이라이트 모드에 들어간다
enter_low_hl_mode | elohlm | Xo | 하 하이라이트 모드에 들어간다
enter_right_hl_mode | erhlm | Xr | 오른쪽 하이라이트 모드에 들어간다
enter_top_hl_mode | ethlm | Xt | 상 하이라이트 모드에 들어간다
enter_vertical_hl_mode | evhlm | Xv | 수직 하이라이트 모드에 들어간다
set_a_attributes | sgr1 | sA | 비디오 속성의 2 번째의 조를 #1-#6 과 정의
set_pglen_inch | slength | sL | 페이지장을 100 분의 #1 인치로 설정

  엔트리의 예

이하의 엔트리는, ANSI 표준 단말을 기술한 것입니다만, 현대적인 단말의 terminfo 엔트리가 전형적으로는 어느 같은가를 나타내고 있습니다.

ansi|ansi/pc-term compatible with color,
        mc5i,
        colors#8, ncv#3, pairs#64,
        cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
        cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
        ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
        ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
        kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kf1=\E[M, kf10=\E[V,
        kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P,
        kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
        kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
        op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
        rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E) B, s2ds=\E*B,
        s3ds=\E+B, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        setb=\E[4%? %p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
        setf=\E[3%? %p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
        sgr=\E[0;10%? %p1%t;7%;%? %p2%t;4%;%? %p3%t;7%;%? %p4%t;5%;%? %p6%t;1%;%? %p7%t;8%;%? %p8%t;11%;%? %p9%t;12%;m,
        sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
        u8=\E[? %[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,

2 행 째이후의 행선지두에 공백류 캐릭터를 두는 것으로, 엔트리를 복수행으로 나누어 계속 하고 쓸 수가 있습니다. 행선지두에 ``#''를 두는 것으로 코멘트를 포함할 수가 있습니다. terminfo 의 케이파비리티에는, 3 개의 형태가 있습니다. 브르뭠케이파비리티는, 그 단말이 있는 특성을 가지고 있는지 어떤지를 나타냅니다. 수치 케이파비리티는, 그 단말의 크기나, 지연의 크기를 지정합니다. 캐릭터 라인 케이파비리티는, 단말이 있는 기능을 실행시킬 때에 이용하는 순차 순서를 지정합니다.

  케이파비리티의 형태

모든 케이파비리티에는 이름이 있습니다. 예를 들면, ANSI 표준 단말이 자동 마진 (즉, 행의 구석에 도달하면 자동적으로 복귀 개행이 이루어지는 것)(을)를 가지는 것은 케이파비리티 am 로 나타내집니다. 따라서 ansi 의 기술은 am 를 포함합니다. 수치 케이파비리티의 뒤에는 캐릭터 `#'가 계속되어, 그리고 정의 값이 계속됩니다. cols 는, 그 단말의 자리수를 나타내고 있어 ansi 에서는, 이 값은 `80'인 것을 나타냅니다. 수치 케이파비리티의 값은, 프로그램 언어 C 의 규약을 사용해 10 진수, 8 진수, 16 진수로 줄 수가 있습니다 (예를 들면, 255, 0377, 0 xff, 0xFF).

마지막으로, 캐릭터 라인 케이파비리티는, el (줄 끝까지 소거하는 순차 순서)등의 같게, 2 캐릭터의 코드와`='와 그 앞의 `, '까지의 사이의 캐릭터 라인으로 나타내집니다.

캐릭터 라인 케이파비리티 중(안)에서, 캐릭터의 encode를 간단하게 하기 위해서, 몇개(살) 인가의 escape sequence를 이용할 수 있습니다. \E 와 \e 는 함께, ESCAPE 캐릭터에 MAP 됩니다. ^x 는 임의의 적절한 x 에 관해서 control-x 에 MAP 됩니다. \n \l \r \t \b \f \s 는 각각, 개행, 라인 피드, 복귀, 탭, 백 스페이스, form feed, 공백에 MAP 됩니다. 그 외에, \^ 는 ^ 에, \\ 는 \ 에, \, 는 콤마에, \: 는 : 에, \0 는 널 캐릭터에 MAP 됩니다. (\0 는 \200 를 생성합니다. 이것은 캐릭터 라인을 종단 하지 않습니다만, 대부분의 단말에서는 CS7 가 지정되어 있으므로, 널 캐릭터와 같은 거동을 가리키기 때문입니다. stty(1)를 참조해 주세요) 마지막으로, \ 의 뒤에 8 진 3 자리수의 수를 지정해 캐릭터를 나타낼 수도 있습니다.

밀리 세컨드 단위의 지연은, el=\EK$<5> 와 같이, 캐릭터 라인 케이파비리티의 어느 장소에서도 $<..> 의 브랙킷으로 둘러싸 둘 수가 있습니다. 이 지연을 주기 위한 패딩은, 함수 tputs 하지만 실시합니다. 지연은 1/10 의 정밀도의 수일 필요가 있습니다. 접미말 `*', '/' 또는 그 양쪽 모두가 붙어 있을지도 모릅니다. `*'는 패딩을 그 처리로 영향을 받는 행의 행수에 비례시킬 필요가 있는 것, 그리고 그 총계는 영향을 받는 1 단위 당의 필요 패딩에 의해 정해지는 것을 나타냅니다. (캐릭터 삽입의 경우, 승수는 영향을 받는다 행 의 수입니다. ) 통상, 디바이스에 xon 케이파비리티가 있으면, 패딩은 권고적인 물건입니다. 코스트 계산에는 사용됩니다만 지연을 일으키지 않습니다. `/'접미말은 패딩이 필수의 것임을 나타내, flow control를 나타낸다 xon 가 있는 디바이스에 대해서도 지정된 밀리 세컨드 단위의 지연을 강제합니다.

어느 케이파비리티를 comment out하지 않으면 안 되는 경우가 있습니다. 그러한 경우는, 케이파비리티명의 전에 피리어드를 두어 주세요. 위의 예의 2 번째의 ind 하지만 그 예입니다.

  컴파일 된 기술의 읽기

환경 변수 TERMINFO 가 설정되어 있으면, 그것은 작업중의 기술을 컴파일 한 것을 포함한 디렉토리의 패스명으로 해석됩니다. 그 디렉토리만을 찾습니다.

TERMINFO 가 설정되어 있지 않으면, ncurses 판의 terminfo 읽기 코드는 그 대신에 디렉토리 $HOME/.terminfo 로부터 컴파일 된 기술을 찾습니다. 거기서 찾아내는데 실패해, 환경 변수 TERMINFO_DIRS 가 설정되어 있으면, 변수의 내용을 코론으로 단락지어진 찾아야 할 디렉토리의 리스트라고 해석합니다 (하늘의 엔트리는 /usr/share/misc/terminfo 를 찾는 명령로서 해석됩니다). TERMINFO_DIRS 디렉토리의 어느 것에도 기술이 발견되지 않으면, 읽기는 실패합니다.

TERMINFO 도 TERMINFO_DIRS 도 설정되어 있지 않으면, 마지막에 시도되는 장소는 시스템의 terminfo 디렉토리 /usr/share/misc/terminfo 입니다.

($HOME/.terminfo 탐색도 TERMINFO_DIRS 확장도 표준의 System V terminfo/curses 에서는 서포트되고 있지 않습니다. )

  단말 기술의 준비

여기에서는, 어떻게 해 단말의 기술을 준비할까의 개략을 설명합니다. 좀 더 도 효율적인 방식은, terminfo 의 안에 있는 유사한 단말의 기술을 흉내내 작성하는 것입니다. vi 등의 스크린 에디터에 써 하는 도중의 기술을 사용하게 해 봐, 그 기술이 올바른지 어떤지를 체크하면서, 기술을 서서히 만들어내 가는 것입니다. 통상의 것과 너무 동떨어진 단말의 경우, terminfo 파일의 기술 능력의 결함, 혹은 테스트 프로그램의 화면 조작의 코드의 버그가 밝혀질지도 모르기 때문에, 거기에는 주의해 주세요.

(단말 메이커가 문서에 써 주지 않은 경우에) 행의 오른쪽 삽입때의 패딩을 얻으려면 , 큰 파일을 9600 보로 편집해, 화면안(정도)만큼으로 16 행정도를 삭제하고 나서, `u'키를 몇차례 재빠르게 연타한다고 하는 어려운 테스트를 행 와 좋을 것입니다. 단말이 질겅질겅이 된다면, 보통은, 좀 더 패딩이 필요하다면 말하는 것입니다. 캐릭터 삽입에 대해서도 비슷한 테스트를 실시할 수가 있습니다.

  기본적인 케이파비리티

단말의 각 행의 자리수는 수치형 케이파비리티 cols 로 지정합니다. 단말이 CRT 의 경우, 화면의 행수는 케이파비리티 lines 로 지정합니다. 커서가 오른쪽 마진에 이르렀을 때에 다음의 행의 좌단으로 도는 경우, 케이파비리티 am 를 지정할 필요가 있습니다. 단말이, 화면 소거 후 커서를 홈 포지션에 가지고 갈 수가 있는 경우, 그 기능은 캐릭터 라인 케이파비리티 clear 로 지정합니다. 단말이 (있는 캐릭터를 위에 출력했을 때에 그 자리소를 소거하는 것이 아니라) 거듭하고 쳐 하는 경우, 케이파비리티 os 를 지정할 필요가 있습니다. 인자 단말로, 소프트 카피 장치를 가지지 않는 경우, hc (와)과 os (을)를 지정합니다. (os (은)는, 하드 카피 단말이나, APL 단말 뿐만이 아니라, TEKTRONIX 4010 시리즈와 같은 스토리지 스코프관단말에도 적용됩니다. ) 현재의 행의 좌단에 커서를 이동시키는 코드가 존재하는 경우, 그것을 cr 그리고 지정합니다. (통상, 이것은 복귀 캐릭터, 즉 control M 가 됩니다. ) 가청 시그널 (벨, beep음등)을 생성하는 코드가 있는 경우, 그것을 bel 그리고 지정합니다.

커서를 (백 스페이스와 같이) 1 포지션만 왼쪽에 이동시킨다 코드가 있는 경우, 그것은 cub1 그리고 지정합니다. 같이 오른쪽에의 이동, 위에의 이동, 아래에의 이동은 각각, cuf1, cuu1, cud1 그리고 지정합니다. 이러한 국소적 커서 이동 기능은, 통과하는 장소의 텍스트를 변경하는 것으로 있어 되지 않습니다. 예를 들어, 공백 캐릭터는 그 아래의 텍스트를 소거해 버린다 모아 두어 보통은 `cuf1= '와는 지정하지 않습니다.

여기서 지극히 중요한 일로서 terminfo 에 encode 된 국소적 커서 이동은, CRT 단말의 좌단 및 상단에서는 정의되지 않는다고 하는 것입니다. 프로그램은, bw 의 지정이 없는 한, 좌단으로 백 스페이스를 출력하려고 해서는 안됩니다. 또, 화면상단으로, 위로 이동하려고는 안됩니다. 텍스트를 위에 스크롤 하기 위해서는, 프로그램은 화면 왼쪽 하단 모서리에 커서를 이동시켜, ind (index) 캐릭터 라인을 송출해 주세요.

텍스트를 아래에 스크롤 하려면 , 프로그램은 화면 좌상구석에 커서를 이동시켜, ri (reverse index) 캐릭터 라인을 송출해 주세요. 캐릭터 라인 ind (와)과 ri 의 거동은, 각각 먼저 말한 화면구석에 커서가 없는 경우에는 정의되고 있지 않습니다.

스크롤 순차 순서의 파라미터 첨부 버젼은, indn (와)과 rin 그리고, 이것들은, 스크롤 하는 행수를 지정하는 파라미터를 1 개 취하는 것을 제외해 ind (이)나 ri 라고 같은 거동을 나타냅니다. 이것들도, 커서가 적절한 화면단에 존재하지 않는 경우의 거동은 정의되지 않습니다.

케이파비리티 am 는, 우단에서 텍스트가 출력되어도 커서가 우단에 계속 머무는지 어떤지 를 나타냅니다. 다만, 이 거동은 최종자리수에서의 cuf1 의 거동에는 반드시 적용되지 않습니다. 좌단으로부터의 국소적 이동으로 정의된 것은, bw 하지만 지정되어 있는 경우에, 좌단으로부터의 cub1 하지만 1 개(살)전의 행의 우단으로 이동한다고 하는 것 뿐입니다. bw 하지만 지정되어 있지 않은 경우, 이 효과는 정의되지 않습니다. 이것은, 예를 들면, 화면의 구석을 따라 상자를 그릴 때 편리한 것입니다. 단말이 자동 마진 기능을 바꾸고 가능한 경우, terminfo 파일에서는, 통상은 그 기능은 온 상태, 즉 am 이라고 상정합니다. 단말이 다음의 행의 선두자리수로 이동하는 명령을 가지는 경우, 그 커멘드를 nel (newline)(으)로 지정할 수가 있습니다. 이 명령이, 현재행의 나머지의 부분을 소거할지 어떨지는 관계 없습니다. 그러니까, 단말이, cr (이)나 lf (을)를 가지지 않는 경우에서도, 동작한다 nel (을)를 만드는 것은 가능하겠지요.

지금까지 소개한 케이파비리티로, 하드 카피 단말이나,“유리의 tty” 단말을 기술하기에는 충분합니다. 여기서, model 33 teletype 는,

	3|tty33|tty|model 33 teletype,
	bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,

(와)과 기술됩니다. 한편, Lear Siegler 사의 ADM-3 는,

	adm3|3|lsi adm3,
	am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
	ind=^J, lines#24,

(와)과 기술됩니다.

  파라미터화 된 캐릭터 라인

커서 위치 설정 등, 파라미터를 필요로 하는 캐릭터 라인은, printf(3S) 바람의 이스케이프 %x 를 포함한 파라미터화 캐릭터 라인 케이파비리티를 이용해 기술합니다. 예를 들면, 커서 위치를 지정한다 cup 케이파비리티는, 이동처의 행과 자리수를 지정하는 2 개의 파라미터를 줄 필요가 있습니다. (행과 자리수는 0 으로부터 세어 유저로 보이는 물리 화면을 참조합니다. 눈에 보이지 않는다 메모리 부분은 참조하지 않습니다. ) 단말이 메모리 상대의 커서 위치 지정 기능을 가지는 경우, 이것은 mrcup 그리고 나타냅니다.

파라미터 인도 기구에서는, 스택과 그것을 조작하는 특별한 % 코드를 이용합니다. 통상은, 순차 순서는 파라미터를 1 개 스택에 푸쉬 해, 그것을 있는 형식에서 출력합니다. 좀 더 복잡한 조작이 필요한 일도 자주 있습니다.

% 코드에는 이하의 의미가 있습니다.

	%%	`%'를 출력한다
	%[[:]flags][width[.precision]][doxXs]
		printf 에서의 같게, 플래그는 [-+#] 과 스페이스
	%c	printf()의 %c 과 같이, pop()를 표시한다
	%s	printf()의 %s 과 같이, pop()를 표시한다
	%p[1-9]	i 번째의 파라미터를 푸쉬 한다
	%P[a-z]	pop()를 동적 변수 [a-z] 로 설정한다
	%g[a-z]	동적 변수 [a-z] 를 푸쉬 한다
	%P[A-Z]	pop()를 정적 변수 [a-z] 로 설정한다
	%g[A-Z]	정적 변수 [a-z] 를 푸쉬 한다
	%'c'캐릭터 정수 c
	%{nn}	정수 정수 nn
	%l	strlen(pop)를 푸쉬 한다
	%+ %- %* %/ %m
		산술 연산 (%m 는 잉여): push(pop() op pop())
	%& %| %^	비트 연산: push(pop() op pop())
	%= %> %<	논리 연산: push(pop() op pop())
	%A, %O	논리 and 조작과 논리 or 조작 (조건 절용)
	%!  %~	단항 연산 push(op pop())
	%i	최초의 2 파라미터에 1 을 더한다 (ANSI 단말용)
	%?  expr %t thenpart %e elsepart %;
		if-then-else, %e elsepart 는 옵션.
		else-if 는 Algol 68 풍으로 지정 가능:
		%?  c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
		ci 는 조건절, bi 는 본체.

2항연산은, 통상의 순서로 나란해질 수 있었던 오퍼랜드에 대해서 후치형식에서 지정합니다. 예를 들면, x-5 를 얻으려면 ,"%gx%{5}%-" 를 지정합니다. 이스케이프 된 캐릭터 라인을 평가하는 동안 %P 변수와 %g 변수는 존속합니다.

HP2645 의 예를 생각해 봅시다. 이것으로 3 행 12 자리수에 이동시키려면 , \E&a12c03Y 에 6 밀리 세컨드의 패딩을 송출할 필요가 있습니다. 여기서 행과 자리수가 거꾸로 되고 있는 것, 행, 자리수와도 2 자리수로 출력되고 있는 것에 주의해 주세요. 이 단말의 cup 케이파비리티는,“cup=6\E&%p2%2dc%p1%2dY” 됩니다.

Microterm ACT-IV 는, ^T 의 뒤에 현재의 행과 자리수를, 어느쪽이나 단지 바이너리치로 보낼 필요가 있습니다만, “cup=^T%p1%c%p2%c” 가 됩니다. “%c” 를 사용하는 단말은, 커서를 전방으로 되돌리는 것 (cub1)와 화면상에서 1 행 상에 커서를 이동시키는 것 (cuu1)가 할 수 있을 필요가 있습니다. 이것은, 시스템이 변경하거나 묵살하거나 할 가능성이 있기 (위해)때문에, \n, ^D, \r 를 확실히 송신할 수 있다고는 할 수 없기 때문입니다. (terminfo 를 취급하는 프로그램 라이브러리 routine는, 탭이 결코 전개되지 않게 단말 모드를 설정합니다. 그러니까 \t 는 확실히 송신할 수 있습니다. 이것은 Ann Arbor 4080 에서는 중요한 일을 알 수 있고 있습니다. )

마지막 예는 LSI ADM-3a 입니다. 이것은 행과 자리수를 공백 캐릭터로부터의 오프셋(offset)로 나타냅니다. 그러니까,“cup=\E=%p1%' '%+%c%p2%' '%+%c” 가 됩니다. `\E='를 송출한 후, 최초의 파라미터를 푸쉬 해, 공백 캐릭터의 ASCII 치 (32)를 (을)를 푸쉬 해, 그것들을 더해 (이전의 2 개의 값 대신에 그 화를 스택에 푸쉬 할 수) 얻은 값을 캐릭터로서 출력합니다. 그 후, 2 번째의 파라미터에 대해서도 같은 처리를 실시합니다. 스택을 사용하는 것으로, 게다가 복잡한 계산도 가능합니다.

  커서 이동

커서를 고속으로 홈 포지션 (화면의 좌상구석)에 이동시키는 방법을 가진다 단말의 경우, 이것을 home 로 지정할 수가 있습니다. 같이 고속으로 왼쪽 하단 모서리에 이동시키는 방법을 가지는 경우도 ll 로 지정할 수가 있습니다. 단말에 따라서는, 홈 포지션으로부터 cuu1 를 사용해 위로 이동한다 일로 이 동작이 가능한 경우도 있습니다만, 프로그램은 (ll로 그렇게 지정하지 않는 한) 자신으로부터 그렇게 해서는 안 되게 되어 있습니다. 이것은, 홈 포지션으로부터 위로 이동했다 경우의 동작에 대해, 프로그램은 일절 상정할 수 없기 때문입니다. 홈 포지션은 위치 지정 (0,0), 즉, 메모리가 아니고, 화면의 좌상구석과 동일한 것에 주의해 주세요. (이기 때문에, HP 단말의 \EH 의 순차 순서는 home (으)로서 사용할 수 없습니다. )

단말이 행이나 자리수의 절대 커서 위치 지정 기능을 가지는 경우, 단일 파라미터를 취한다 케이파비리티 hpa (수평 절대 위치)(와)과 vpa (수직 절대 위치)(으)로 지정합니다. (hp2645 와 같이) 일반적인 2 파라미터의 순차 순서보다 이러한 (분)편이 짧아지는 경우가 가끔 있어, 그 경우, cup 보다 그것들을 사용할 가능성이 있습니다. 파라미터화 된 국소 이동 기능 (예를 들면, n 형우에 이동한다)가 존재하는 경우, 이것들은, 몇개(살) 이동하는지를 지정한다 파라미터를 1 개 가진다 cud, cub, cuf, cuu (을)를 사용해 지정할 수가 있습니다. 이것들은 주로, TEKTRONIX 4025 와 같이 단말이 cup (을)를 가지지 않는 경우에 유익합니다.

이러한 케이파비리티를 사용하는 프로그램을 실행할 때에, 단말을 특수한 모드로 할 필요가 있는 경우, 이 모드에 들어가는 코드와 나오는 코드를 각각 smcup 와 rmcup 로 지정할 수가 있습니다. 이런 사태가 생기는 경우로서 예를 들면 Concept 와 같이, 복수 페이지의 메모리를 가지는 단말이 있습니다. 화면 상대 지정을 가지지 않고, 메모리 상대의 커서 위치 지정 기능 밖에 가지지 않는다 이 단말의 경우, 화면의 크기의 윈도우 1 매를 단말에 고정으로 할당해 커서 위치 지정을 적절히 할 수 있도록(듯이) 하지 않으면 안됩니다. 이 케이파비리티는 TEKTRONIX 4025 에서도 사용되고 있습니다. 이쪽에서는, smcup 그리고, terminfo 로 사용하는 명령 캐릭터를 설정해 있습니다. rmcup 순차 순서가 출력된 후에, smcup 순차 순서가 화면을 (rmcup 를 출력하기 전 상태에) 회복하지 않다면, nrrmc 를 지정해 주세요.

  area 소거

단말이 커서를 움직이지 않고 , 현재 위치로부터 행의 말단까지 소거 가능한 경우, 이것을 el 로 지정해야 합니다. 단말이 커서를 움직이지 않고 , 행의 선두로부터 현재 위치를 포함해 현재 위치까지 소거 가능한 경우, 이것을 el1 로 지정해야 합니다. 단말이 현재 위치에서 화면의 끝까지를 소거 가능한 경우, 이것을 ed 로 지정해야 합니다. ed 하행의 제 1 자리수로부터 실시하는 경우만 정의됩니다. (이기 때문에, 착실한 ed 하지만 이용할 수 없는 경우에서도, 대량의 행 삭제 리퀘스트를 사용해 시뮬레이트 가능합니다. )

  행의 삽입/삭제와 수직 이동

커서가 있는 행의 전에 공백행을 신규에 만들 수가 있는 단말의 경우, 이것을 il1 로 지정해야 합니다. 이것은, 행의 선두 위치에서만 행해집니다. 작성 후, 커서는 새롭게 할 수 있던 공백행에 놓여질 필요가 있습니다. 단말이 커서가 있는 행을 삭제할 수 있는 경우, 이것을 dl1 로 지정해야 합니다. 이 기능은 삭제되는 행의 선두에서만 행해집니다. il1 (와)과 dl1 의 변종으로, 삽입/삭제하는 행수를 나타내는 파라미터를 1 개 취하는 것은, il (와)과 dl (으)로 지정할 수 있습니다.

(vt100 와 같이) 스크롤 area를 설정 가능한 단말의 경우, area 설정 명령을 csr 케이파비리티를 이용해 지정 가능합니다. 이 케이파비리티는 2 개의 파라미터, 스크롤 area의 선두행과 맨 마지막 줄, 을 취합니다. 곤란한 일에, 이 명령 실행 후의 커서 위치는 정의되지 않습니다.

적절한 area에 csr (을)를 이용하는 것으로 행의 삽입/삭제의 효과를 얻는 것이 가능합니다. sc (와)과 rc (커서의 보존과 회복) 명령은, 합성한 삽입/삭제 캐릭터 라인이 커서를 움직이지 않는 것을 프로텍션하기에는 유용하겠지요. (ncurses(3X) 프로그램 라이브러리는 자동적으로 이 합성을 실시하므로, csr 로 삽입/삭제 캐릭터 라인을 엔트리용으로 만들 필요는 없는 것에 주의해 주세요. )

삽입과 삭제를 구성하는 이제(벌써) 1 개의 방법은, (HP-700/90 시리즈에는 삽입/삭제는 있습니다만, 이 시리즈와 같은) 몇개의 단말에 있는 메모리록크 기능과 index 를 조합해 사용하는 것입니다.

착실한 행 삽입/삭제 명령을 가지지 않는 단말로, 화면의 최상단 혹은 최하단으로 행을 삽입하는 경우, ri 혹은 ind (을)를 사용해 실시할 수도 있습니다. 착실한 행 삽입/삭제 명령을 가지는 경우에서도, 이것들을 사용하는 (분)편이 빠른 경우가 많습니다.

스크롤 하는 각 윈도우가 실질적으로 화면대의 캔버스상의 뷰포트로 있다면, 불리언 값 non_dest_scroll_region 를 설정해야 합니다. 이 케이파비리티를 테스트하기 위해서는, 화면의 중앙에 스크롤 area를 만들어, 최하행에 무엇인가를 써, area의 맨 위에 커서를 움직여, ri 를 실시한 후 dl1 나 ind 를 실시해 주세요. ri 로 area아래로 스크롤 해 사라진 데이터가, 다시 나타난다면, 스크롤은 비파괴적입니다. System V Curses 와 XSI Curses 는 ind, ri, indn, rin 가 파괴적 스크롤을 시뮬레이션 하는 것을 기대합니다. 이것이 사실이 아닌 한 csr 를 정의하지 않도록 문서에는 설명서가 있습니다. 이 curses 의 실장은 보다 관대해, ndstr 가 정의되고 있으면 스크롤의 뒤에 명시적으로 소거를 실시합니다.

메모리의 일부에, 모든 명령이 영향을 주는 윈도우를 정의하는 것이 할 수 있는 단말의 경우, 그것은, 파라미터화 캐릭터 라인 wind 그리고 지정해야 합니다. 메모리중에서의 개시행, 종료행, 개시자리수, 종료자리수를 나타내는 4 파라미터는, 이 차례로 줍니다.

위쪽의 표시 메모리를 보관 유지할 수 있는 단말의 경우, da 케이파비리티를 지정해야 합니다. 아래 쪽의 표시 메모리를 보관 유지할 수 있는 경우, db 를 지정해야 합니다. 이것들은, 행 삭제나 스크롤에 의해, 화면 최하단에 비공백행이 올라 오는 것, 및, ri 에 의한 역스크롤에 의해 비공백행이 내려 오는 것을 나타냅니다.

  캐릭터의 삽입/삭제

terminfo 그리고 기술 가능한 캐릭터의 삽입/삭제에 관해서, 기본적으로는 2 종류의 지능 단말기 가 있습니다. 무엇보다 표준적인 캐릭터 삽입/삭제 기능은, 현재행의 캐릭터만이 영향을 받아 쉬프트 한 캐릭터는 일체가 되어 이동해 행단으로 사라져 가는 것입니다. 그 외의 단말, 예를 들면 Concept 100 이나 Perkin Elmer Owl 와 같은 것의 경우, 표시 출력된 공백과 그렇지 않은 공백과의 사이에 구별이 있습니다. 삽입/삭제에 동반하는 쉬프트는 화면상의 표시 출력되어 있지 않은 공백 에 대해서만 적용되어 각각 공백의 소멸, 혹은 표시 출력되어 있지 않은 공백 2 개(살)이 됩니다. 자신이 가지고 있는 단말이 어느 쪽의 타입인지를 조사하려면 , 화면을 소거하고 나서, 커서 이동을 이용해 텍스트를 2 개소로 나누어 출력합니다. “abc” 와 “def” 의 사이에 (공백 캐릭터가 아니고) 국소적 커서 이동을 이용해 “abc def” 를 출력해 주세요. 그 후, 커서를 “abc” 의 전에 이동시켜, 단말을 삽입 모드로 합니다. 캐릭터를 박으면(자), 행의 나머지가 일체가 되어 쉬프트 해 행의 구석에서 캐릭터가 넘쳐 흐름 떨어져 간다면, 이 단말은 표시 출력된 공백과 그렇지 않은 공백을 구별하지 않습니다. “abc” 가 쉬프트 해 “def” 에 해당되어 그 후는 그것들이 함께 행의 구석으로 나아가, 다음의 행까지 진행된다면, 이 단말은 2 번째의 타입의 것으로 “insert null” 를 나타내는 케이파비리티 in 를 지정해야 합니다. 논리적이게는, 이것들은 다른 속성 (삽입 모드가 1 행이나 복수행인가, 및, 표시 출력되어 있지 않은 공백을 특별 취급 하는지 아닌지)입니다만, 삽입 모드를 이 속성 1 개(살)로 기술할 수 없는 단말에, 지금까지 뵈었던 적은 없습니다.

terminfo 에서는, 삽입 모드를 가지는 단말도, 현재행 위에서 장소를 비우는 짧다 순차 순서를 보내는 단말도, 양쪽 모두 기술할 수가 있습니다. 삽입 모드에 들어가는 순차 순서는 smir 로 지정해 주세요. 삽입 모드로부터 나오는 순차 순서는 rmir 로 지정해 주세요. 삽입하고 싶은 캐릭터의 직전에, 어느 순차 순서를 송출할 필요가 있는 경우는 ich1 로 지정해 주세요. 착실한 삽입 모드를 가지는 단말의 대부분에서는, ich1 를 지정할 것은 없을 것입니다. 한편, 화면상에서 장소를 비운다 순차 순서를 보내는 단말의 경우는, ich1 를 지정해야 합니다.

양쪽 모두 가지는 단말의 경우, 통상은 ich1 보다 삽입 모드가 바람직할 것입니다. 기술적으로는, 실제로 양쪽 모두를 조합해 사용할 필요가 있는 경우 이외는, 양쪽 모두 동시에 지정해야 하지는 않습니다. 따라서, 양쪽 모두 있으면(자) curses 를 사용하지 않는다 어플리케이션안에는 혼란하는 것이 있습니다. 그 징조는, 삽입을 사용했다 갱신때에 캐릭터가 이중이 되는 것입니다. 이 요구는 현재는 드뭅니다. 대부분의 ich 순차 순서는 그 전에 smir 를 필요하다고는 하지 않고, 대부분의 smir 삽입 모드는 각 캐릭터의 전에 ich1 를 필요하다고는 하지 않습니다. 따라서, 새로운 curses 는 실제로 이것이 진실하다고 가정해, rmir/smir 나 ich/ich1 의 어느 쪽인지 한편 (양쪽 모두에서는 없습니다)를 적절한 것으로 간주해 이용합니다. 만약, 양쪽 모두를 필요로 하는 만큼 낡은 단말의 엔트리를, 새로운 curses 로 사용하기 위해서(때문에) 쓸 필요가 있다면, ich1 에 rmir/smir 순차 순서를 포함해 주세요.

삽입 후의 패딩이 필요한 경우, ip (캐릭터 라인 옵션)에 필요한 밀리 세컨드의 수를 지정해 주세요. 그 외의 순차 순서로 캐릭터 1 캐릭터를 삽입 후에 송출한다 필요가 있는 것을, 함께 ip 로 지정할 수도 있습니다. 「삽입 모드」에 들어가, 한편 삽입하는 캐릭터 마다 있는 코드를 붙여 송출할 필요가 있는 단말의 경우, smir/rmir (와)과 ich1 (을)를 양쪽 모두 지정해 주세요. 그렇게 하는 것으로, 그것들이 사용되게 됩니다. ich 케이파비리티는 파라미터 n 1 개(살)을 취해, 이것은 ich1 의 동작을 n 회 반복합니다.

삽입 모드가 아닐 때, 캐릭터 입력동안에 패딩이 필요하면, rmp 에 밀리 세컨드의 패딩의 수를 지정해 주세요.

삽입 모드의 도중에 같은 행의 캐릭터를 삭제하기 위해서, 커서를 움직일 필요가 있다 경우가 있습니다 (예를 들면, 삽입 위치의 뒤에 탭이 있는 경우). 삽입 모드에 들어간채로 커서를 이동시킬 수가 있는 경우, 이러한 경우의 삽입을 고속으로 실시하기 위해서(때문에), 케이파비리티 mir 를 지정할 수가 있습니다. mir 를 생략 해도, 영향을 받는 것은 속도만입니다. 단말에 따라서는 (유명한 Datamedia 의 아레라든지) 삽입 모드의 동작 방법의 차이에 의해 mir 를 지정해선 안 되는 것이 있습니다.

마지막으로, 캐릭터 1 캐릭터의 삭제용으로서 dch1 (을)를, n 캐릭터 삭제용으로서 파라미터 n 1 개(살)을 취한다 dch (을)를, 그리고 smdc 와 rmdc 를 각각 삭제 모드에 들어간다 순차 순서와 거기에서 나오는 순차 순서로서 주는 것으로 삭제 모드 ( dch1 하지만 동작하기 위해서, 단말이 들어가 있지 않으면 안 되는 모드)를 지정하는 것이 할 수 있습니다.

n 캐릭터를 삭제한다 (커서를 이동시키지 않고 공백을 n 개출력하는 것으로 동등의 처리) 유익의 명령은, 파라미터를 1 개 취한다 ech (을)를 사용해 지정할 수가 있습니다.

  하이라이트·밑줄·가시 벨

단말이 1 개 또는 그 이상의 표시 속성을 가지는 경우, 이것들을 나타내는 방법으로서 달랐다 방식이 몇개인가 있습니다. 에러 메세지나 다른 종류의 주의를 끄는 메세지에 적절한, 충분히 콘트라스트가 높게 눈에 띄는 형식으로부터 1 개, 강조 모드 를 선택해야 합니다. (선택한다면, 반전 표시에 반휘도를 더한 것, 혹은 단지 반전만이 좋을 것입니다. ) 강조 모드에 들어가는 순차 순서, 나오는 순차 순서는 각각 smso 와 rmso 로 지정합니다. TVI 912 나 Teleray 1061 과 같이, 강조 모드에의 출입에 의해 화면에 공백이 1 개(살) 2 개(살) 남는 경우, xmc 를 지정해 공백이 몇 개 남을까를 가르쳐야 합니다.

밑줄인 나무를 개시하는 코드, 종료하는 코드는, 각각 smul 와 rmul 로 지정합니다. Microterm Mime 와 같이, 현재 위치의 캐릭터에 밑줄을 그어, 공백 1 개(살)분 커서를 오른쪽으로 이동하는 코드를 가지는 단말의 경우, 그 코드를 uc 로 지정할 수가 있습니다.

그 외 여러가지의 강조 모드에 들어가는 케이파비리티에는, blink (점멸) bold (bold 혹은 더욱 밝다) dim (어두운 것도 깔고는 반휘도) invis (공백 혹은 안보이는 텍스트) prot (보호 상태) rev (반전 표시) sgr0 ( 모든 속성 모드를 오프로 한다) smacs (다른 캐릭터 세트 모드에 들어간다) and rmacs (다른 캐릭터 세트 모드로부터 나온다)(이)가 포함됩니다. 이러한 모드의 어떤 것이나 1 개를 온으로 했을 경우에, 다른 모드가 오프가 되는 경우도 있고, 안 되는 경우도 있습니다.

모드의 임의의 편성을 설정하는 순차 순서가 존재하는 경우, 그것을 9 개의 파라미터를 가진다 sgr (속성의 설정)(으)로 지정합니다. 파라미터의 각각은, 0 이나 비 0 의 값을 받아, 대응하는 속성이 온인가 오프인지를 나타냅니다. 9 개의 파라미터란, 순서에, 강조, 밑줄, 반전 표시, 점멸, 어두운 표시, bold, 공백, 보호, 다른 캐릭터 세트입니다. 반드시 모든 모드가 sgr 에 의해 서포트되고 있을 필요는 없습니다. 독립한 속성 명령이 존재하는 것만으로 상관하지 않습니다.

예를 들면, DEC vt220 는 이하의 모드의 대부분을 서포트합니다.

tparm 파라미터 속성 에스케이프시엔스
none | 없음 | \E[0m
p1 | 강조 | \E[0;1;7m
p2 | 밑줄 | \E[0;4m
p3 | 반전 표시 | \E[0;7m
p4 | 점멸 | \E[0;5m
p5 | 어두운 표시 이용할 수 없습니다
p6 | bold | \E[0;1m
p7 | 불가시 | \E[0;8m
p8 | 보호 사용되고 있지 않습니다
p9 | 별의 캐릭터 세트 | ^O (오프) ^N (온)

각 모드가 동작중인지 어떤지를 재빠르게 결정할 방법이 없기 때문에, escape sequence를 동작중의 모드를 모두 오프로 하는 것으로 시작합니다. 강조는 반전과 bold의 편성으로 되어 있습니다. 보호 모드는 호스트의 소거로부터 화면의 캐릭터를 보호하므로, sgr 에서는 보통은 사용되지 않습니다만, vt220 단말에는 보호 모드가 있습니다. 다른 캐릭터 세트 모드는, 오프나 온 등에 의해서 ^O 또는 ^N 이다고 하는 점으로 다릅니다. 전모드를 온으로 하는 순차 순서는 \E[0;1;4;5;7;8m^N 입니다.

몇개의 순차 순서는 다른 모드에 공통입니다. 예를 들면,;7 은, p1 나 p3 가 진일 때, 즉 강조나 반전 모드가 온 때에 출력됩니다.

위의 순차 순서를 의존관계(dependencies)와 아울러 남기는 곳(중) 없게 쓰면(자) 다음과 같이 됩니다.

순차 순서 출력되는 경우 | terminfo 에의 번역
\E[0 | 항상 | \E[0
;1 | p1 또는 p6 때 | %? %p1%p6%|%t;1%;
;4 | p2 때 | %? %p2%|%t;4%;
;5 | p4 때 | %? %p4%|%t;5%;
;7 | p1 또는 p3 때 | %? %p1%p3%|%t;7%;
;8 | p7 때 | %? %p7%|%t;8%;
m | 항상 | m
^N 또는 ^O | p9 가 진이라면 ^N 그렇지 않으면 ^O | %? %p9%t^N%e^O%;

이것을 모두 함께 sgr 순차 순서에 담으면(자) 다음과 같이 됩니다.

    sgr=\E[0%? %p1%p6%|%t;1%;%? %p2%t;4%;%? %p1%p3%|%t;7%;
        %? %p4%t;5%;%? %p7%t;8%;m%? %p9%t\016%e\017%;,

sgr 를 설정하면(자), sgr0 도 설정할 필요가 있는 것을 잊지 말아 주세요.

「마법의 쿠키 (magic cookie)」 (xmc) (을)를 가지는 단말에서는, 모드 설정 순차 순서를 수신하면(자) 특수한 「쿠키」라고에서도 불러야 할 쓰레기를 화면에 남깁니다. 이 단말에서는, 모드 설정 순차 순서는, 각 캐릭터에 여분의 비트를 갖게하는 것이 아니라, 표시 알고리즘 그 자체에 영향을 줍니다. HP 2621 등이 같은 단말에서는, 다음의 행에 이동하거나 커서의 위치 지정을 했을 때에 강조 모드로부터 마음대로 빠져 나와 버립니다. 강조 모드를 이용하는 프로그램은, 강조 모드에서의 이동이 안전한 것을 나타낸다 msgr 케이파비리티의 지정이 없는 경우에는, 커서를 이동시키거나 개행 캐릭터를 송출하기 전에 강조 모드로부터 탈출해야 합니다.

에러 발생을 무음으로 (벨 대신에) 통지하기 위해(때문에), 화면을 플래시 시킨다 방법이 제공되고 있는 단말의 경우, 그것을 flash 로 지정할 수 있습니다. 이것은 커서를 이동시켜 되지 않습니다.

커서가 최하행에 없을 때에 통상 상태 이상으로 보기 쉽게 한다 (예를 들면, 점멸하지 않는다 밑줄 커서를, 보다 찾아내기 쉬운 블록 커서나 점멸 밑줄 커서로 한다) 필요가 있는 경우, 그 순차 순서를 cvvis 그리고 지정해 주세요. 커서를 완전하게 안보이게 하는 방법이 있는 경우, 그것을 civis 그리고 지정해 주세요. 이러한 모드의 효과를 지우는 순차 순서로서 케이파비리티 cnorm (을)를 지정해야 합니다.

비록 겹침 치는 것이 아니다고 해도, (특수한 코드없이) 밑줄 캐릭터를 올바르고 생성할 수 있는 단말의 경우, 케이파비리티 ul 를 지정해야 합니다. 캐릭터를 다른 캐릭터에 거듭하고 쳐 하면(자) 양쪽 모두의 캐릭터가 화면에 남는다면, 케이파비리티 os 를 지정해 주세요. 겹침 치는 것이 공백 캐릭터로 소거 가능한 경우, eo 를 지정해 그것을 분명하게 해 두어야 합니다.

  키패드와 function key

키를 누르면(자) 코드를 송출하는 키패드를 가지는 경우, 그 키패드에 관한 정보를 지정할 수가 있습니다. 주의해야 할 점으로서 키패드가 국소 모드로 밖에 동작하지 않는 단말 (예를 들면, 쉬프트 상태가 아닌 HP 2621 의 키가 이것에 해당합니다)를 취급할 수 없는 것이 있습니다. 송신 상태나 비송신 상태인지를 설정할 수 있는 키패드의 경우, 그러한 유익의 코드를 smkx 와 rmkx 로 지정할 수가 있습니다. 이러한 지정이 없는 경우, 키패드는 항상 송신 상태로서 다루어집니다. 왼쪽 화살표, 오른쪽 화살표, 상 화살표, 하 커서 키, home 키가 송출하는 코드는, 각각 kcub1, kcuf1, kcuu1, kcud1, khome 로 지정할 수 있습니다. f0, f1, ..., f10 와 같은 function key가 있는 경우, 이것들이 송출한다 코드는 kf0, kf1, ..., kf10 로 지정할 수 있습니다. 이러한 키가 f0 로부터 f10 까지의 디폴트의 label 이외의 label를 가지는 경우, 이 label를 lf0, lf1, ..., lf10 로 지정할 수 있습니다. 다른 특수 키가 송출하는 코드는, 이하와 같이 지정할 수 있습니다. kll (홈 다운 (home down)), kbs (백 스페이스 (backspace)), ktbc (전탭 클리어 (clear all tabs)), kctab (이 자리수의 tab stop를 클리어), kclr (화면 소거 (clear screen) 키 또는 말소 (erase) 키), kdch1 (캐릭터 삭제 (delete character)), kdl1 (행 삭제 (delete line)), krmir (삽입 모드로부터 빠진다 (exit insert mode)), kel (줄 끝까지 클리어), ked (화면의 끝까지 클리어), kich1 (캐릭터 삽입 (insert character) 또는 삽입 모드에 들어간다 (enter insert mode)), kil1 (행 삽입 (insert line)), knp (다음의 페이지 (next page)), kpp (전의 페이지 (previous page)), kind (전진 스크롤 (scroll forward) / 하강 스크롤 (scroll down)), kri (후퇴 스크롤 (scroll backward) / 상승 스크롤 (scroll up)), khts (이 자리수에 tab stop를 설정). 더욱, 키패드가 4 개의 화살표를 포함한 3 × 3 의 키 배열을 가지는 경우, 다른 5 개(살)의 키를 ka1, ka3, kb2, kc1, kc3. 그리고 지정합니다. 3 × 3 의 커서 이동 키패드의 효과가 필요한 경우, 이러한 키가 유용합니다.

function key에 프로그램 하는 캐릭터 라인은, pfkey, pfloc, pfx 그리고 지정할 수 있습니다. 화면의 label의 캐릭터 라인은 pln 로 지정해야 합니다. 이러한 캐릭터 라인은, 각각 2 개의 인수를 취합니다. 프로그램 대상의 function key 번호 (0 에서 10 까지)와 거기에 프로그램 하는 캐릭터 라인입니다. 이 범위외의 function key 번호를 사용하면(자) 미정도리의 키에 대해서 프로그램 해 끝낼지도 모르고, 이것은 단말 의존의 동작이 됩니다. 이러한 케이파비리티의 차이는 이하와 같습니다. pfkey (을)를 지정하면(자), 그 키를 누르는 것은, 유저가 지정한 캐릭터 라인을 타이프 치는 것과 같은 것이 됩니다. pfloc 그럼, 단말 내부에서 국소적으로 그 캐릭터 라인이 실행되게 됩니다. pfx 그럼, 그 캐릭터 라인이 컴퓨터에 송출되게 됩니다.

케이파비리티 nlab, lw, lh 는 프로그램 가능한 화면의 label의 수, 폭, 높이를 정의합니다. label를 온, 오프 하는 명령이 있다면, smln 와 rmln 에 지정해 주세요. 변경이 보이는 것을 확실히 하기 위해서, 통상 smln 는 1 개 이상의 pln 순차 순서의 다음에 출력됩니다.

  탭과 초기화

단말이 하드웨어 탭을 가지는 경우, 다음의 tab stop까지 커서를 진행시킨다 명령을 ht (통상은 control I)(으)로 지정할 수 있습니다. 전의 tab stop까지 좌방향에 진행하는 「후퇴 탭」명령은, cbt 그리고 지정할 수 있습니다. 단말이, 탭이 단말에 송출되지 않고 컴퓨터 내부에서 공백에 전개되는 모드에 되어 있는 경우, 프로그램은, 비록 ht (이)나 cbt 하지만 존재해도, 그것들을 사용하지 않는다고 할 약속이 되어 있습니다. 이것은, 유저가 tab stop를 올바르게 설정하고 있지 않을 가능성이 있기 (위해)때문입니다. 전원 투입시에, n 개의 공백 마다 하드웨어 탭이 초기화되고 있는 단말의 경우, 수치 파라미터 it (을)를 지정합니다. 이것은 탭으로서 설정되는 공백수를 나타냅니다. 통상, 이것은 tset 명령이, 하드웨어 탭 전개를 사용하는 모드 설정과 tab stop 설정을 실시하는지 어떤지를 결정하기 위해서(때문에) 사용합니다. tab stop 설정을 불휘발성 메모리에 기억할 수 있는 단말의 경우, terminfo 에서의 기술의 때에, tab stop는 올바르게 설정되어 있는 것을 상정해 상관하지 않습니다.

다른 케이파비리티로서 is1, is2, is3 (이)가 있어, 이것들은 단말을 초기화하는 캐릭터 라인을 지정합니다. 또, iprog (이)가 있어, 이것은 단말 초기화용으로서 실행하는 프로그램의 패스명을 지정합니다. 또, if 가 있어, 이것은 초기화 캐릭터 라인이 긴 경우, 그것을 포함한 파일의 이름을 지정합니다. 이러한 캐릭터 라인에 의해, terminfo 의 나머지의 기술과 모순 없게 동작하는 모드에 단말이 설정되는 것이 요구됩니다. 통상, 유저가 로그인할 때마다, tput 프로그램의 init 옵션이 이러한 캐릭터 라인을 단말에 대해서 송출합니다. 송출은 이하의 순서로 행해집니다. 프로그램 iprog (을)를 실행 ; is1 (을)를 출력 ; is2 (을)를 출력 ; mgc, smgl, smgr 그리고 마진을 설정 ; tbc (와)과 hts 그리고 탭을 설정 ; 파일 if (을)를 인자 ; 마지막에 is3 (을)를 출력.

초기화의 대부분은 is2 그리고 행해집니다. 공통의 순차 순서를 is2 에 두어, 특수한 경우를 is1 (와)과 is3 (와)과에 두는 것으로, 캐릭터 라인을 각각 복제해 갖게하지 않아도, 특수한 단말 모드를 설정할 수가 있습니다. 완전히 알 수 없는 상태로부터 복귀하기 위한 , 보다 하드 집합의 리셋트를 행하기 위한 순차 순서의 조도 같이 rs1, rs2, rf, rs3 그리고 지정할 수가 있습니다. 이것들은 is2 (와)과 if (와)과 잘 닮은 순차 순서입니다. 단말이 빠졌을 때에 사용하는 프로그램인, reset 하지만 이러한 순차 순서를 출력합니다. 명령을 rs1, rs2, rs3, rf 에 두는 것은, 보통, 그 명령이 화면에 유저를 혼란시키는 효과를 낳아, 한편, 로그인 시에는 필요없는 경우에 한정합니다. 예를 들면, vt100 를 80 자리수 모드로 설정하는 명령은, 보통이라면 is2 에 포함할 것입니다만, 이 명령은 화면에 혼란시키는 쓰레기를 만들어 내고, 단말은 이미 80 자리수 모드에 되어 있는 것이 보통이므로, 이 명령을 포함할 필요 없습니다.

tab stop의 설정, 클리어를 실시하는 명령이 있는 경우, 그것들을 tbc (전tab stop의 클리어) (와)과 hts (각 행의 현재자리수에 tab stop를 설정) (으)로 지정할 수 있습니다. 탭 설정에 관해서, 여기서 설명한 것보다 복잡한 순차 순서가 필요한 경우, 그 순차 순서를 is2 (이)나 if 에 두어도 상관하지 않습니다.

  지연과 패딩

하드 카피 단말과 (예를 들면, DEC VT100 를 포함한다) 매우 낡은 CRT 를 포함한, 많은 낡고 늦은 단말은 XON/XOFF 핸드 쉐이크도 DTR 핸드 쉐이크도 서포트하지 않습니다. 특정의 커서의 이동과 스크린의 변경의 뒤에는, 패딩 캐릭터가 필요할지도 모릅니다.

단말이 flow control를 위한 xon/xoff 핸드 쉐이크를 사용하는 경우 (즉, 입력 버퍼가 가득하게 가깝게 되면(자), 호스트에 자동적으로 ^S 를 돌려 보내는 경우), xon (을)를 지정해 주세요. 이 케이파비리티는 패딩의 송출을 억제합니다. 실질적으로 속도에 제한이 없다 메모리맙트 형식의 콘솔 디바이스에 대해서도 지정할 수 있습니다. routine가 상대적인 코스트에 관해서 보다 좋은 견적을 세울 수가 있도록(듯이), 이 경우에서도 패딩 정보를 지정해야 합니다. 그러나, 실제는 패딩 캐릭터는 송신되지 않습니다.

pb (패딩 baud rate)를 지정하는 것으로, baud rate가 pb 의 값보다 낮은 경우, 패딩이 억제 당합니다. 엔트리에 패딩 baud rate가 없으면, 패딩이 송출되는지 되지 않는지는 xon 에 의해 완전하게 제어됩니다.

널 (0) 캐릭터 이외의 패딩 캐릭터를 필요로 하는 단말의 경우, 그것을 pad 로 지정할 수 있습니다. pad 캐릭터 라인의 최초의 캐릭터만이 사용됩니다.

  스테이터스행
단말에는, 통상의 소프트웨어에서는 사용되지 않는다 (그러므로, 단말의 lines 케이파비리티에서는 수에 들어가지 않는다) 여분의 「스테이터스행」을 가지는 것도 있습니다.

가장 간단한 경우에는, 스테이터스행은 커서 위치의 지정은 가능합니다만, 화면상의 스크롤 area의 일부에서는 없는 것입니다. 초기화 때에 23 행의 스크롤 area가 있는 24 행의 VT100 와 같이, Heathkit H19 에는, 이런 종류의 스테이터스행이 있습니다. 이 상황은 hs 케이파비리티로 지정합니다.

스테이터스행에 들어가기에는 특별한 순차 순서를 필요로 하는 단말도 있습니다. 이것은 파라미터를 1 개 취하는 캐릭터 라인 tsl 로 나타냅니다. 이것은 커서를 스테이터스행이 주어진 0 자리수로 이동합니다. 케이파비리티 fsl 로 마지막 tsl 의 전의 주화면의 커서 위치에 돌아올 필요가 있습니다. 그 때문에(위해) tsl 와 fsl 안에 sc (save cursor)와 rc (restore cursor)의 캐릭터 라인의 값을 포함한다 필요가 있을지도 모릅니다.

스테이터스행은 통상, 단말의 폭과 같은 폭이라면 가정되고 있습니다. 이것이 사실이 아니다면, 그것을 수치 케이파비리티 wsl 로 지정할 수 있습니다.

스테이터스행을 소거하거나 삭제하는 명령은 dsl 로 지정할 수 있습니다.

브르뭠케이파비리티 eslok 는, 스테이터스 은행내에서 escape sequence나 탭등이 통상 대로 일하는 것을 나타냅니다.

ncurses 의 실장은 이러한 케이파비리티의 어느 것도 아직 이용하고 있지 않습니다. 이것들이 중요하게 되면(자) 여기에 기술합니다.

  선화

많은 단말에는 그림을 그리는데 도움이 되는별의 캐릭터 세트가 있습니다. terminfo 와 curses 는 VT100 로 서포트되고 있는 도형 캐릭터와 AT&T 4410v1 의 캐릭터의 몇개인가를 서포트합니다. 이 다른 캐릭터 세트는 acsc 케이파비리티로 설정됩니다.

Glyph | ACS | Ascii | VT100
Name | Name | Default | Name
UK pound sign | ACS_STERLING | f | }
arrow pointing down | ACS_DARROW | v | .
arrow pointing left | ACS_LARROW | < | ,
arrow pointing right | ACS_RARROW | > | +
arrow pointing up | ACS_UARROW | ^ | -
board of squares | ACS_BOARD | # | h
bullet | ACS_BULLET | o | ~
checker board (stipple) | ACS_CKBOARD | : | a
degree symbol | ACS_DEGREE | \ | f
diamond | ACS_DIAMOND | + | `
greater-than-or-equal-to | ACS_GEQUAL | > | z
greek pi | ACS_PI | * | {
horizontal line | ACS_HLINE | - | q
lantern symbol | ACS_LANTERN | # | i
large plus or crossover | ACS_PLUS | + | n
less-than-or-equal-to | ACS_LEQUAL | < | y
lower left corner | ACS_LLCORNER | + | m
lower right corner | ACS_LRCORNER | + | j
not-equal | ACS_NEQUAL | ! | |
plus/minus | ACS_PLMINUS | # | g
scan line 1 | ACS_S1 | ~ | o
scan line 3 | ACS_S3 | - | p
scan line 7 | ACS_S7 | - | r
scan line 9 | ACS_S9 |  | s
solid square block | ACS_BLOCK | # | 0
tee pointing down | ACS_TTEE | + | w
tee pointing left | ACS_RTEE | + | u
tee pointing right | ACS_LTEE | + | t
tee pointing up | ACS_BTEE | + | v
upper left corner | ACS_ULCORNER | + | l
upper right corner | ACS_URCORNER | + | k
vertical line | ACS_VLINE | | | x

새로운 디바이스의 도형 세트를 정의하는데 제일 좋은 방법은, 이 표의 그 단말용의 카피에 열을 추가해, 대응하는 도형의 곳에 (smacs/rmacs 스윗치의 사이에 송출되는 경우에) 송출되는 캐릭터를 주는 것입니다. 그리고 VT100 와 그 단말의 캐릭터를 오른쪽에서 왼쪽으로 순서에 읽어 내려 주세요. 이것이 ACSC 캐릭터 라인이 됩니다.

  색의 취급

대부분의 칼라 단말은 `Tektronix 풍'인가 `HP 풍'의 어느 쪽인지입니다. Tektronix 풍 단말에는, 미리 정의된 N 색 (N 는 통상 8 입니다)의 조가 있어, 캐릭터 셀 마다 독립에 전경색과 배경색을 설정해, N * N 의 색페어로 할 수 있습니다. HP 풍단말에서는, 색페어를 각각 따로 따로 설정할 필요가 있습니다 (전경과 배경은 독립에는 설정할 수 없습니다). 2*M 가 다른 색으로부터는 M 까지의 색페어가 생깁니다. ANSI-호환 단말은 Tektronix 풍 입니다.

몇개의 기본적인 색에 관한 케이파비리티는 색의 취급 방법과는 독립입니다. 수치 케이파비리티 colors 와 pairs 에는, 동시에 표시할 수 있는 색 또는 색페어의 최대수를 지정합니다. op (original pair) 캐릭터 라인은 전경색과 배경색을 단말의 규정치에 리셋트 합니다. oc 캐릭터 라인은 모든 색 또는 색페어를 단말의 규정치에 리셋트 합니다. (많은 PC 단말 에뮬레이터를 포함한다) 몇개의 단말에서는, 전원 투입시의 배경색이 아니고, 현재의 배경색으로 화면 area를 소거합니다. 이 경우에는 브르뭠케이파비리티 bce 를 지정해야 합니다.

Tektronix 형의 단말로 현재의 전경색과 배경색을 바꾸기 위해서(때문에)는, setaf (set ANSI foreground)와 setab (set ANSI background)를 사용하는지, setf (set foreground)와 setb (set background)를 사용해 주세요. 이것들은 1 개의 파라미터, 색번호를 취합니다. SVr4 의 문서에는 setaf/setab 만이 쓰여져 있습니다. XPG4 의 초안에는, 「단말이 배경과 전경을 설정하는 ANSI escape sequence를 서포트한다면, 각각 setaf 와 setab 로 지정해야 합니다. 단말이 배경과 전경을 설정하는 다른 escape sequence를 서포트한다면, 각각 setf 와 setb 로 지정해야 합니다. vidputs() 함수와 refresh 함수는, 정의되고 있으면 setaf 와 setab 를 사용합니다.」라고 쓰여져 있습니다.

setaf/setab 와 setf/setb 케이파비리티는 각각 수치 인수를 1 개 취합니다. 인수치 0-7 는 이식할 수 있도록(듯이) 이하와 같이 정의되어 있습니다 (중앙의 열은 curses 나 ncurses 프로그램 라이브러리용으로 헤더로 이용할 수 있는 기호의 #define 입니다). 단말의 하드웨어는 이것을 좋아하는 대로 MAP 하는 것은 자유롭습니다만, RGB 치는 색공간(color space)에서의 통상의 위치를 나타내고 있습니다.

색 | #define | 치 | RGB
흑 | COLOR_BLACK | 0 | 0, 0, 0
빨강 | COLOR_RED | 1 | max, 0,0
초록 | COLOR_GREEN | 2 | 0, max, 0
노랑 | COLOR_YELLOW | 3 | max, max, 0
파랑 | COLOR_BLUE | 4 | 0,0, max
마젠타 | COLOR_MAGENTA | 5 | max, 0, max
시안(cyan) | COLOR_CYAN | 6 | 0, max, max
흰색 | COLOR_WHITE | 7 | max, max, max

HP 풍의 단말에서는, 어느 색페어가 현재의 것인지를 설정하는 색페어 번호 파라미터를 동반한 scp 를 사용해 주세요.

Tektronix 풍의 단말에서는, 색을 변경할 수 있는 것을 나타내기 위해서(때문에) 케이파비리티 ccc 가 있습니다. 만약 그렇다면, initc 케이파비리티는 색 가지수 (0 으로부터 colors - 1)와 색을 기술하는 3 개의 파라미터를 취합니다. 이 3 개의 파라미터는, 디폴트에서는 RGB (Red, Green, Blue) 치라고 해석됩니다. 브르뭠케이파비리티 hls 가 있으면, 대신에 HLS (Hue, Lightness, Saturation) 지표가 됩니다. 범위는 단말에 의존합니다.

HP 풍의 단말에서는, initp 가 색페어치를 변경하는 케이파비리티를 줍니다. 파라미터를 7 개 취합니다. 색페어 번호 (0 으로부터 max_pairs - 1 까지)와 3 개의 수의 조가 2 개입니다. 최초의 조로 배경색을, 2 번째의 조로 전경색을 기술합니다. 이러한 파라미터는 hls 에 의존해 (Red, Green, Blue)인가 (Hue, Lightness, Saturation)일 필요가 있습니다.

칼라 단말의 몇개인가에서는, 색은 하이라이트와 충돌합니다. 이 충돌을 ncv 케이파비리티로 등록할 수 있습니다. 이것은, 색이 이용 가능한 때에 사용하는 것이 할 수 없는 속성의 비트 마스크입니다. curses 가 이해하는 속성과의 대응은 이하와 같습니다.

속성 비트 | 10 진수
A_STANDOUT | 0 | 1
A_UNDERLINE | 1 | 2
A_REVERSE | 2 | 4
A_BLINK | 3 | 8
A_DIM | 4 | 16
A_BOLD | 5 | 32
A_INVIS | 6 | 64
A_PROTECT | 7 | 128
A_ALTCHARSET | 8 | 256

예를 들면, 많은 IBM PC 콘솔로, 밑줄의 속성은 전경색, 파랑과 충돌해 버려, 칼라 모드에서는 이용할 수 없습니다. 이것은, ncv 케이파비리티에 2 를 지정해야 합니다.

SVr4 curses 는 ncv 에서는 아무것도 하지 않습니다만, ncurses 는 그것을 인식해 칼라용으로 출력을 최적화합니다.

  그 외
널 (0) 캐릭터 이외의 패딩 캐릭터를 필요로 하는 단말의 경우, 그것을 pad 로 지정할 수가 있습니다. pad 캐릭터 라인의 최초의 캐릭터만이 사용됩니다. 패딩 캐릭터를 가지지 않는 단말의 경우, npc 를 지정해 주세요. ncurses 는 termcap 호환의 PC 변수를 실장하고 있는 것에 주의해 주세요. 어플리케이션은 이 값을 널 이외의 것으로 설정할지도 모릅니다만, ncurses 는 최초로 npc 를 테스트해, 단말에 패딩 캐릭터가 없으면 napms 를 사용합니다.

단말이 반행만 상하 이동할 수 있는 경우, 그것을 hu (반행상에) (와)과 hd (반행하에) (으)로 지정할 수 있습니다. 이것은, 주로, 하드 카피 단말의 슈퍼 스크립트, 첨자를 위해서(때문에) 역에 섭니다. 하드 카피 단말이 용지를 배출해 다음의 페이지에 가는 것 (form feed)가 할 수 있는 경우, 그것을 ff (통상은 control L)(으)로 지정합니다.

(같은 캐릭터를 지극히 여러번 반복 송신할 때의 시간 절약을 위해) 지정한 캐릭터를 지정한 회수만 반복하는 명령이 존재하는 경우, 파라미터화 캐릭터 라인 rep (을)를 이용해 그것을 지정할 수가 있습니다. 1 번째의 파라미터는 반복해지는 캐릭터로, 2 번째의 파라미터는 반복해 회수입니다. 그러니까, tparm(repeat_char, 'x', 10)는 `xxxxxxxxxx'와 같은 것입니다.

TEKTRONIX 4025 와 같이, 명령 캐릭터를 설정 가능한 단말의 경우, cmdch (을)를 이용해 그것을 나타낼 수가 있습니다. 모든 케이파비리티로 사용되는 prototype 명령 캐릭터를 지정할 수 있습니다. 이 캐릭터는 cmdch 케이파비리티로 지정되어 그것이 식별됩니다. 몇개의 UNIX 시스템에서는 이하의 약속에 따라 처리가 이루어집니다. 즉, 우선 환경 변수 CC (을)를 검사해, 그것이 설정되어 있는 경우는, 케이파비리티중에 있는 prototype 캐릭터의 모든 것이 그 환경 변수로 지정된 캐릭터와 옮겨놓을 수 있습니다.

switch, dialup, patch, network 등이 같은, 특정의 단말의 종류를 나타내지 않는 단말 기술에는, 프로그램이 그 단말과 어떻게 통신하면 좋은가를 모르면 표명할 수 있도록(듯이) 하기 위한(해), gn (일반적) 케이파비리티를 지정해야 합니다. (이 케이파비리티는, escape sequence를 알 수 있고 있다 가상 단말의 기술에는 적용되지 않습니다. )

단말이, 쉬프트 키로서 동작해, 캐릭터 모든 8 비트째를 세워 송출한다 「메타키」를 가지는 경우, 이것을 km 에 의해 나타낼 수가 있습니다. 이 지정이 없는 경우, 소프트웨어는, 8 비트째는 패리티로, 통상은 클리어 되고 있으면(자) 상정합니다. 이 「메타모드」를 온 오프 하는 캐릭터 라인이 존재하는 경우, 그것을 smm (와)과 rmm (으)로 지정할 수 있습니다.

단말이 화면 1 매분보다 많은 행수의 메모리를 가지는 경우, 메모리의 행수를 lm 그리고 지정할 수 있습니다. 치 lm#0 (은)는, 행수는 고정이 아니기는 하지만, 1 화면분 이상의 메모리를 가지는 것을 나타냅니다.

단말이 UNIX 의 가상 단말 프로토콜을 서포트하고 있는 경우, 그 단말 번호를 vt 그리고 지정할 수 있습니다.

단말에 접속된 외부 프린터를 제어하는 미디어 카피 캐릭터 라인은, 다음과 같이 지정할 수 있습니다. 즉, mc0: 화면 내용의 인자, mc4: 프린터 오프, mc5: 프린터 온입니다. 프린터가 온 때, 단말에 송출된 텍스트는 모두 프린터에 보내집니다. 프린터가 온 상태에서도 더 단말에 텍스트가 표시되는지 아닌지는 미정도리입니다. 변종이다 mc5p (은)는 파라미터를 1 개 취해, 그 파라미터의 값만의 몬지를 보내는 동안 프린터를 온계속 으로 해 그 후 오프로 합니다. 이 파라미터는 255 를 넘어 되지 않습니다. mc4 (을)를 포함한 모든 텍스트는, mc5p 하지만 유효한 동안, 투과적으로 프린터에게 건네집니다.

  쓰레기 기능, 곤란한 기능 (Glitches and Braindamage)

Hazeltine 단말은 `~'캐릭터를 표시할 수 없습니다. 이것에는 hz 를 지정해야 합니다.

Concept 나 vt100 와 같이 am 직후의 개행 캐릭터를 무시하는 단말의 경우, xenl 를 지정해야 합니다.

강조 표시를 없애기 위해서(때문에) (단지 통상의 텍스트를 위에 쓰는 것 만으로는 끝나지 않고) el 하지만 필요한 경우, xhp 를 지정해야 합니다.

Teleray 단말은, 탭으로 커서 이동한 아래에 있던 캐릭터를 모두 공백으로 해 끝내므로, 이 단말에서는 xt (파괴적인 탭)를 지정해야 합니다. 주 : 이것에 대응하는 변수는, 현재는 `dest_tabs_magic_smso'입니다만, 이전의 버젼에서는, teleray_glitch 였습니다. 이 장난친 기능은, 「마법의 쿠키」의 선두에 커서를 둘 수 없는 것과 강조 모드를 소거하기 위해서, 행 삭제와 행 삽입이 필요한 것도 의미합니다. ncurses 의 실장은 이 glitch 를 무시합니다.

Beehive 의 Superbee 단말은, 이스케이프 캐릭터나 control C 캐릭터를 올바르고 송신할 수 없습니다. 이것에는 xsb (을)를 지정해, f1 키를 이스케이프로 해, f2 키를 control C 로서 사용하는 것을 나타냅니다. (이 문제가 나타나는 것은 특정의 Superbee 에 한정되어 그 ROM 에 의존합니다. ) terminfo 의 낡은 버젼에서는, 이 케이파비리티는 `beehive_glitch'와 불리고 있었습니다만, 현재는 `no_esc_ctl_c'로 불리고 있는 것에 주의해 주세요.

무엇인가 특정의 단말에 고유의 다른 문제를 해결하고 싶은 경우, xx 의 형식에서 새로운 케이파비리티를 추가해 사용해도 상관하지 않습니다.

  닮은 단말

2 개(살)의 매우 잘 닮은 단말이 있는 경우, 몇개의 예외를 제외해 한편 (변형종)은 한편 (기본종)과 닮아 있다고 하는 정의를 실시할 수가 있습니다. 변형종의 정의에 대해서는, 캐릭터 라인 케이파비리티 use 로, 기본종의 단말의 이름을 지정할 수 있습니다. use 의 지정보다 전에게 준 케이파비리티는, use 에 의해 얻을 수 있는 기본 타입안의 케이파비리티에 우선합니다. 복수의 use 케이파비리티가 존재하는 경우, 역의 차례로 merge 됩니다. 즉, 제일 우측의 use 의 참조처가 최초로 처리되어 다음에 그 왼쪽이 처리된다고 한 차례로 됩니다. 엔트리중에서 명시적으로 지정된 케이파비리티는, use 의 참조처가 주는 케이파비리티에 우선합니다.

케이파비리티 정의의 좌측으로 xx@ 를 두는 것으로, 그 케이파비리티를 캔슬할 수 있습니다. 여기서 xx 는 그 케이파비리티입니다. 예를 들면, 엔트리

    2621-nl, smkx@, rmkx@, use=2621,

(은)는 smkx 도 rmkx 도 가지지 않는 2621-nl 를 정의합니다. 그러므로 이 단말은 비주얼 모드에서는 function key label를 온에 하지 않습니다. 이 기능은 있는 단말의 여러 가지의 기능이나, 유저의 여러 가지의 설정을 나타낼 때에 유용합니다.

  긴 엔트리의 함정

긴 terminfo 의 엔트리는 문제가 될 것 같게 없습니다. 현재까지 terminfo 의 캐릭터 라인표의 최대치 4K 에 이른 엔트리는 없습니다. 불행한 일로 termcap 에의 번역은 훨씬 어렵게 제한되고 있는 (1K 까지) 것으로, 긴 terminfo 엔트리의 termcap 에의 번역은 문제를 일으킬지도 모릅니다.

4.3BSD 및, 보다 낡은 버젼의 tgetent()의 메뉴얼에는, termcap 엔트리용으로 1K 의 버퍼를 할당하도록(듯이) 써 있습니다. 엔트리는 termcap 프로그램 라이브러리에 보다 널 캐릭터로 종료 당하므로, termcap 엔트리로서 안전한 최대의 길이는 1k-1 (1023) 바이트입니다. 어플리케이션과 사용한다 termcap 프로그램 라이브러리가 무엇을 하는지, 또, tgetent()가 찾고 있는 타입의 단말이 termcap 파일의 어디에 있을까에 의해, 나쁜 일이 몇개인가 일어날지도 알려지지 않습니다.

termcap 프로그램 라이브러리안에는, 1023 바이트보다 긴 엔트리를 찾아내면(자) 경고의 메세지를 표시하거나 종료하거나 하는 것도 있고, 그렇지 않은 것도 있습니다. 그렇지 않은 것은 엔트리를 잘라서 버려 1023 바이트에 해 버립니다. 응용 프로그램안에는 termcap 엔트리에 추천 된 1K 보다 많이 할당하는 것도 있고, 그렇지 않은 것도 있습니다.

각 termcap 엔트리에는 거기에 관계하는 중요한 크기가 2 개 있습니다. "tc" 전개전과 "tc" 전개 다음에. "tc" 는, 현재의 엔트리의 마지막에 다른 termcap 엔트리를 첨가해, 그 케이파비리티를 추가하는 케이파비리티입니다. termcap 엔트리가 "tc" 케이파비리티를 사용하지 않는다면, 물론 2 개(살)의 길이는 같습니다.

특수한 단말의 유저 이외에도 영향을 주므로, 「tc 전개전」의 길이는 가장 중요한 것입니다. 이것은 /etc/termcap 에 있는 엔트리로부터 backslash와 개행의 조를 당겼지만 길이입니다. backslash와 개행의 조는 tgetent()가 읽어들이는 동안에 없앱니다. termcap 프로그램 라이브러리안에는 마지막 개행을 없애는 것도 있습니다 (GNU termcap 는 실시하지 않습니다). 다음과 같이 가정합니다.

*   전개전의 termcap 엔트리는 1023 바이트 이상의 길이입니다.

*   어플리케이션은 1k 의 버퍼를 할당했을 뿐입니다.

*   (BSD/OS 1.1 이나 GNU 의 것과 같이) termcap 프로그램 라이브러리는, 그것이 필요한 엔트리로 있으면, 그 길이에 관련되지 않고, 읽기 위해서(때문에) 엔트리를 모두 버퍼에 읽어들입니다.

*   tgetent()는 긴 엔트리의 단말 타입인가, 긴 엔트리의 뒤에 termcap 파일에 나타나는 단말 타입인가, 파일에는 전혀 나타나지 않는 (그 때문에 tgetent()는 termcap 파일 전체를 찾을 필요가 있습니다) 단말 타입을 찾고 있습니다.

그러자(면), tgetent()는 메모리, 어쩌면 스택에 거듭하고 써 해, 아마 프로그램을 코어덤프 시키겠지요. telnet 와 같은 프로그램은 특히 약합니다. 현대적인 telnet 는 단말 타입과 같은 값을 자동적으로 통해 버립니다. SunOS 4.1. 3 이나 Ultrix 4.4 와 같이, 과도하게 긴 termcap 엔트리를 읽었을 때에는 경고 메세지를 표시하는 termcap 프로그램 라이브러리에서도, 결과는 바람직한 것으로는 없습니다. OSF/1 3.0 과 같이 termcap 프로그램 라이브러리가 긴 엔트리를 잘라 버린다면, 여기서 죽을 것은 없습니다만, 단말에 대해서 부정확한 데이터를 돌려주게 되겠지요.

「tc 전개 후」의 길이는 위와 같이 영향을 주겠지만, 영향을 받는 것은 TERM 를 그 단말 타입에 실제로 설정한 사람만입니다. tgetent()는 찾고 있을 때가 아니고, 찾고 있던 단말 타입을 찾아냈을 때에 한 번 만 "tc" 전개를 실시하기 때문입니다.

결국, 1023 바이트보다 긴 termcap 엔트리는, termcap 프로그램 라이브러리와 어플리케이션의 다양한 편성으로, 코어덤프나 경고나 부정확한 조작을 일으킬지도 모릅니다. "tc" 전개전이라도 너무 길다면, 다른 단말 타입의 유저나 termcap 엔트리가 없는 TERM 변수를 지정해 있는 유저에게도 영향을 준다 그렇지.

-C (termcap 에 번역) 모드에서는, tic(1)의 ncurses 의 실장은 tc 전의 termcap 에 번역하는 길이가 너무 긴 경우, 경고 메세지를 보냅니다. -c (check) 옵션은, 분석된 (tc 전개 후의) 길이도 체크합니다.

  binary level compatibility성
매물의 UNIX 의 사이의 바이너리의 terminfo 엔트리의 이식성에 기대하는 것은 현명하지는 않습니다. 문제는 terminfo 에 (HP-UX 와 AIX 로) 적어도 2 개(살)의 버젼이 있기 때문입니다. 어느쪽이나 SVr1 의 다음에 System V 의 terminfo 로부터 분기 한 것으로, 캐릭터 라인표에 System V 나 XSI Curses 확장과 (바이너리 포맷으로) 충돌하는 확장 케이파비리티를 추가하고 있습니다.

확장
SVr4 의 curses 의 실장의 몇개인가와 SVr4 이전의 것 모든 것은 파라미터 캐릭터 라인내의 %A 연산자와 %O 연산자를 해석하지 않습니다.

SVr4/XPG4 는, 다른 캐릭터 세트 모드로 msgr 가 커서의 이동을 허가할까 제발을 지정하지 않습니다 (그러한 모드는, 수많은 안에서도 CR 와 NL 를 국소적인 이동을 일으키지 않는 캐릭터에 찍어 버릴지도 모릅니다). ncurses 의 실장은 ALTCHARSET 모드에서는 msgr 를 무시합니다. 이 때문에, 반대의 해석을 하는 XPG4 의 실장에서는, ncurses 용으로 만들어졌다 terminfo 엔트리의 msgr 를 오프로 할 필요가 있을지도 모릅니다.

ncurses 프로그램 라이브러리는, 갱신의 효율을 올리기 위해서(때문에) 조금 비표준적인 방법으로 캐릭터 삽입과 캐릭터 삽입 모드를 취급합니다. 위의 캐릭터의 삽입/삭제 의 부절을 참조해 주세요.

set_clock 와 display_clock 의 파라미터 치환은 SVr4 에서도 XSI Curses 표준에서도 설명되고 있지 않습니다. AT&T 505 단말의 설명서로부터 추측한 것입니다.

kmous 케이파비리티의 할당에는 주의해 주세요. ncurses 는 KEY_MOUSE 로서 해석하려고 해, xterm 와 같은 키보드 입력 스트림중에서 마우스 트럭 정보를 돌려줄 수 있는 단말이나 에뮬레이터가 사용합니다.

다른 매물의 terminfo 와 curses 는 각각 다른 XSI Curses 표준의 일부와 (몇개의 경우) 다른 확장을 서포트합니다. 이하는 1995 년 10 월 시점에서의 정확한 요약입니다.

SVR4, Solaris, ncurses -- SVr4 케이파비리티를 모두 서포트합니다.

SGI -- SVr4 모두설명이 없는 확장 캐릭터 라인 케이파비리티 1 개(살) (set_pglen)을 서포트합니다.

SVr1, Ultrix -- terminfo 케이파비리티의 제한된 일부를 서포트합니다. 불리언 값은 xon_xoff 로, 수치는 width_status_line 로, 캐릭터 라인은 prtr_non 로 마지막입니다.

HP/UX -- SVr1 의 일부와 SVr[234] 의 수치 num_labels, label_height, label_width 와 function key 11 에서 63 까지로 plab_norm, label_on, label_off 와 캐릭터 라인표의 비호환인 확장을 몇개인가 서포트합니다.

AIX -- SVr1 의 일부와 function key 11 에서 63 까지로 많은 비호환인 캐릭터 라인표 확장을 서포트합니다.

OSF -- SVr4 전부와 AIX 확장의 양쪽 모두를 서포트합니다.

관련 파일

/usr/share/misc/terminfo/? /*
    단말 기술을 포함한 파일

관련 항목
tic(1M), curses(3X), printf(3S), term(5).

저자
Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Pavel Curtis 에 의한 pcurses 에 근거하고 있습니다.