tail head cat sleep
QR code linking to this page

Man page  — TERMINFO

명칭

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
-vbbeep 대신에 가시 벨을 사용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 번째의 파라미터를 나타냅니다.

이하는 브르92l케이파비리티입니다.

variablecap-TCap설명
불리언 값nameCode
auto_left_marginbwbwcub1 는 자리수 0 으로부터 마지막 자리수로 돈다
auto_right_marginamam자동 마진 기능을 가진다
back_color_erasebceut화면을 배경색으로 소거한다
can_changeccccc기존의 색을 재정의 가능
ceol_standout_glitchxhpxs강조 출력은 덧쓰기로 소거되지 않는다 (hp)
col_addr_glitchxhpaYAhpa/mhpa 에서는 정방향만 이동 가능
cpi_changes_rescpixYF캐릭터 핀치를 바꾸면(자) 해상도가 바뀐다
cr_cancels_micro_modecrxmYBcr 를 사용하면(자) 마이크로 모드가 오프가 된다
dest_tabs_magic_smsoxtxt탭은 파괴적, 강조 캐릭터의 동작이 기묘 (t1061)
eat_newline_glitchxenlxn80 자리수부터 후의 개행은 무시된다 (concept)
erase_overstrikeeoeo공백의 겹침 치는 것으로 소거 가능
generic_typegngn일반적인 회선 타입
hard_copyhchc하드 카피 단말
hard_cursorchtsHC커서가 보기 나쁘다
has_meta_keykmkm메타키를 가진다 (누르면(자) 제 8 비트가 세트 된다)
has_print_wheeldaisyYC캐릭터 세트를 변경하는데 일손이 필요한 프린터
has_status_linehshs특별한 스테이터스행을 가진다
hue_lightness_saturationhlshl단말은 HLS 색표기만 사용 (Tektronix)
insert_null_glitchinin삽입 모드로 널 캐릭터를 구별한다
lpi_changes_reslpixYG행 피치를 바꾸면(자) 해상도가 바뀐다
memory_abovedada화면에서(보다) 위의 묘화가 보관 유지된다
memory_belowdbdb화면에서(보다) 아래의 묘화가 보관 유지된다
move_insert_modemirmi삽입 모드로 안전하게 커서 이동 가능
move_standout_modemsgrms강조 모드로 안전하게 커서 이동 가능
needs_xon_xoffnxonnx패딩 기능이 일하지 않는다. xon/xoff 제어가 필요
no_esc_ctlcxsbxbbeehive 단말 (f1=escape, f2=ctrl C)
no_pad_charnpcNP패딩 캐릭터가 존재하지 않는다
non_dest_scroll_regionndscrND스크롤 area가 비파괴적
non_rev_rmcupnrrmcNRsmcup 는 rmcup 의 동작을 반전하지 않는다
over_strikeosos단말은 거듭하고 치는 것 가능
prtr_silentmc5i5i프린터 출력은 화면에 에코 하지 않는다
row_addr_glitchxvpaYDvpa/mvpa 에서는 정방향에게만 이동 가능
semi_auto_right_marginsamYE최종자리수로 출력하면(자) cr 동작을 한다
status_line_esc_okeslokes스테이터스행상에서 이스케이프 가능
tilde_glitchhzhz~ 표시 불가 (hazeltine 단말)
transparent_underlineulul밑줄부 캐릭터는 덧쓰기한다
xon_xoffxonxo단말은 xon/xoff 핸드 쉐이크를 실시한다

이하는 수치 케이파비리티입니다.

variablecap-TCap설명
수치nameCode
columnscolsco1 행의 자리수
init_tabsitit탭의 초기설정은 # 개의 공백마다
label_heightlhlhlabel 1 개의 행수
label_widthlwlwlabel 1 개의 자리수
lineslinesli화면 또는 페이지의 행수
lines_of_memorylmlmlines 의 값이상의 경우 메모리의 행수. 0 하행수가 가변인 것을 나타낸다
magic_cookie_glitchxmcsgsmso 나 rmso 로 화면에 남는 공백수
max_attributesmama단말이 조합해 처리할 수 있는 속성수의 최대치
max_colorscolorsCo화면상의 최대 색 가지수
max_pairspairspa화면상의 색페어의 최대치
maximum_windowswnumMW정의 가능한 윈도우수의 최대치
no_color_videoncvNC색첨부에서는 사용할 수 없는 비디오 속성
num_labelsnlabNl화면상의 label수
padding_baud_ratepbpb패딩이 필요한 최저 보 속도
virtual_terminalvtvt가상 화면 번호 (CB/unix)
width_status_linewslws스테이터스행의 자리수

이하의 수치 케이파비리티는, SVr4. 0 의 term 구조체에 존재하고 있습니다만, 메뉴얼에는 아직도 설명이 없습니다. SVr4 로 프린터에 대응하기 위해서 받아들여졌습니다.

variablecap-TCap설명
수치nameCode
bit_image_entwiningbitwinYo각 비트 이미지행에 대한 패스의 수
bit_image_typebitypeYp비트 이미지 디바이스의 타입
buffer_capacitybufszYa인자전에 버퍼링 가능한 바이트수
buttonsbtnsBT마우스의 버튼수
dot_horz_spacingspinhYc1 인치 근처의 닷수에서의 수평 방향의 닷 간격
dot_vert_spacingspinvYb1 인치 근처의 핀수에서의 수직 방향의 핀 간격
max_micro_addressmaddrYdmicro_..._address 에서의 최대치
max_micro_jumpmjumpYeparm_..._micro 에서의 최대치
micro_col_sizemcsYf마이크로 모드에서의 캐릭터 스텝 사이즈
micro_line_sizemlsYg마이크로 모드에서의 행 스텝 사이즈
number_of_pinsnpinsYh프린트 헤드의 핀수
output_res_charorcYi1 행 당의 유니트수에서의 수평 해상도
output_res_horz_inchorhiYk1 인치 근처의 유니트수에서의 수평 해상도
output_res_lineorlYj1 행 당의 유니트수에서의 수직 해상도
output_res_vert_inchorviYl1 인치 근처의 유니트수에서의 수직 해상도
print_ratecpsYm1 초 쯤의 캐릭터수에서의 인자 속도
wide_char_sizewidcsYn배폭모드에서의 캐릭터 스텝 사이즈

이하는 캐릭터 라인 케이파비리티입니다.

variablecap-TCap설명
캐릭터 라인nameCode
acs_charsacscac도형 캐릭터 세트의 조, vt100 에 근거한다
back_tabcbtbt후퇴 탭 (P)
bellbelbl가청 시그널 (벨) (P)
carriage_returncrcr복귀 캐릭터 (P*) (P*)
change_char_pitchcpiZA1 인치 근처의 캐릭터수를 # 1 으로 변경
change_line_pitchlpiZB1 인치 근처의 행수를 #1 로 변경
change_res_horzchrZC수평 해상도를 #1 로 변경
change_res_vertcvrZD수직 해상도를 #1 로 변경
change_scroll_regioncsrcsarea를 행 #1 으로부터 행 #2 까지 변경 (P)
char_paddingrmprPip 와 같지만 삽입 모드 이외로 사용
clear_all_tabstbcct탭 설정을 모두 클리어 (P)
clear_marginsmgcMC좌우의 소프트 마진을 클리어
clear_screenclearcl화면을 클리어 해, 커서를 홈에 이동 (P*)
clr_bolel1cb행선지두까지 클리어
clr_eolelce줄 끝까지 클리어 (P)
clr_eosedcd화면말까지 클리어 (P*)
column_addresshpach수평 절대 위치 #1 (P)
command_charactercmdchCC단말이 prototype로 설정 가능한 명령 캐릭터 !?
create_windowcwinCW윈도우 #1 를 #2,#3 로부터 #4,#5 까지와 정의
cursor_addresscupcm행 #1 형 #2 에 이동
cursor_downcud1do1 행 하에 이동
cursor_homehomeho커서를 홈에 이동 (cup 가 없는 경우)
cursor_invisiblecivisvi커서를 안보이게 한다
cursor_leftcub1le커서를 1 공백분좌에 이동
cursor_mem_addressmrcupCM메모리 상대의 커서 위치 지정이며, 행 #1 렬 #2 에 이동
cursor_normalcnormve커서를 통상 표시로 한다 (civis/cvvis 를 바탕으로 되돌린다)
cursor_rightcuf1nd비파괴 공백 (1 공백분우에 이동)
cursor_to_llllll맨 마지막 줄의 최초의 자리수 (cup 가 없는 경우)
cursor_upcuu1up1 행 상에
cursor_visiblecvvisvs커서를 잘 보이도록 한다
define_chardefcZE캐릭터를 정의
delete_characterdch1dc캐릭터를 삭제 (P*)
delete_linedl1dl행을 삭제 (P*)
dial_phonedialDI번호 #1 에 다이얼 한다
dis_status_linedslds스테이터스행을 무효로 한다
display_clockdclkDK(#1,#2)에 시계를 표시한다
down_half_linehdhd반행하에
ena_acsenacseA다른 캐릭터 세트를 유효하게 한다
enter_alt_charset_modesmacsas다른 캐릭터 세트를 개시 (P)
enter_am_modesmamSA자동 마진 온
enter_blink_modeblinkmb점멸 모드 온
enter_bold_modeboldmdbold (더욱 밝다) 모드 온
enter_ca_modesmcupticup 를 이용한 프로그램을 개시하는 캐릭터 라인
enter_delete_modesmdcdm삭제 모드 개시
enter_dim_modedimmh반휘도 모드 온
enter_doublewide_modeswidmZF배폭모드 개시
enter_draft_qualitysdrfqZG드래프트 인자 모드 개시
enter_insert_modesmirim삽입 모드 개시
enter_italics_modesitmZH이탤릭 모드 개시
enter_leftward_modeslmZI좌향 이동 모드 개시
enter_micro_modesmicmZJ마이크로 이동 모드 개시
enter_near_letter_qualitysnlqZKNLQ 인자 모드 개시
enter_normal_qualitysnrmqZL통상 품질 인자 모드 개시
enter_protected_modeprotmp보호 모드 온
enter_reverse_moderevmr반전 표시 모드 온
enter_secure_modeinvismk공백 모드 온 (캐릭터가 안보인다)
enter_shadow_modesshmZM그림자 프린트 모드 개시
enter_standout_modesmsoso강조 모드 개시
enter_subscript_modessubmZN첨자 모드 개시
enter_superscript_modessupmZO슈퍼 스크립트 모드 개시
enter_underline_modesmulus밑줄 모드 개시
enter_upward_modesumZP오름새 이동 모드 개시
enter_xon_modesmxonSXxon/xoff 핸드 쉐이크 온
erase_charsechec#1 개의 캐릭터를 소거 (P)
exit_alt_charset_modermacsae다른 캐릭터 세트 종료 (P)
exit_am_modermamRA자동 마진 오프
exit_attribute_modesgr0me전속성 오프
exit_ca_modermcuptecup 를 이용한 프로그램을 종료하는 캐릭터 라인
exit_delete_modermdced삭제 모드 종료
exit_doublewide_moderwidmZQ배폭모드 종료
exit_insert_modermirei삽입 모드 종료
exit_italics_moderitmZR이탤릭 모드 종료
exit_leftward_moderlmZS좌향 이동 모드 종료
exit_micro_modermicmZT마이크로 이동 모드 종료
exit_shadow_modershmZU그림자 프린트 모드 종료
exit_standout_modermsose강조 모드 종료
exit_subscript_modersubmZV첨자 모드 종료
exit_superscript_modersupmZW슈퍼 스크립트 모드 종료
exit_underline_modermulue밑줄 모드 종료
exit_upward_moderumZX오름새 이동 모드 종료
exit_xon_modermxonRXxon/xoff 핸드 쉐이크 오프
fixed_pausepausePA2-3 초 기다린다
flash_hookhookfh스윗치 훅을 플래시
flash_screenflashvb가시 벨 (커서는 이동하지 않는다)
form_feedffff하드 카피 단말에서의 페이지 배출 (P*)
from_status_linefslfs스테이터스행으로부터의 복귀
goto_windowwingoWG윈도우 #1 에 이동
hanguphupHU전화를 끊는다
init_1stringis1i1초기화 캐릭터 라인
init_2stringis2is초기화 캐릭터 라인
init_3stringis3i3초기화 캐릭터 라인
init_fileifif초기화 파일의 이름
init_progiprogiP초기화 프로그램의 패스명
initialize_colorinitcIc색 #1 을 (#2,#3,#4)에 초기화
initialize_pairinitpIp색페어 #1 를 fg=(#2,#3,#4), bg=(#5,#6,#7)에 초기화
insert_characterich1ic캐릭터의 삽입 (P)
insert_lineil1al행의 삽입 (P*)
insert_paddingipip캐릭터 삽입의 뒤에 패딩을 삽입
key_a1ka1K1키패드의 좌상 키
key_a3ka3K3키패드의 우상 키
key_b2kb2K2키패드의 중앙 키
key_backspacekbskbbackspace 키
key_begkbeg@1begin 키
key_btabkcbtkBback-tab 키
key_c1kc1K4키패드의 좌하 키
key_c3kc3K5키패드의 우하 키
key_cancelkcan@2cancel 키
key_catabktbckaclear-all-tabs 키
key_clearkclrkCclear-screen 키, 또는 erase 키
key_closekclo@3close 키
key_commandkcmd@4command 키
key_copykcpy@5copy 키
key_createkcrt@6create 키
key_ctabkctabktclear-tab 키
key_dckdch1kDdelete-character 키
key_dlkdl1kLdelete-line 키
key_downkcud1kddown-arrow 키
key_eickrmirkM삽입 모드로 rmir 나 smir 가 송출하는 데이터
key_endkend@7end 키
key_enterkent@8enter/send 키
key_eolkelkEclear-to-end-of-line 키
key_eoskedkSclear-to-end-of-screen 키
key_exitkext@9exit 키
key_f0kf0k0F0 function key
key_f1kf1k1F1 function key
key_f10kf10k;F10 function key
key_f11kf11F1F11 function key
key_f12kf12F2F12 function key
key_f13kf13F3F13 function key
key_f14kf14F4F14 function key
key_f15kf15F5F15 function key
key_f16kf16F6F16 function key
key_f17kf17F7F17 function key
key_f18kf18F8F18 function key
key_f19kf19F9F19 function key
key_f2kf2k2F2 function key
key_f20kf20FAF20 function key
key_f21kf21FBF21 function key
key_f22kf22FCF22 function key
key_f23kf23FDF23 function key
key_f24kf24FEF24 function key
key_f25kf25FFF25 function key
key_f26kf26FGF26 function key
key_f27kf27FHF27 function key
key_f28kf28FIF28 function key
key_f29kf29FJF29 function key
key_f3kf3k3F3 function key
key_f30kf30FKF30 function key
key_f31kf31FLF31 function key
key_f32kf32FMF32 function key
key_f33kf33FNF33 function key
key_f34kf34FOF34 function key
key_f35kf35FPF35 function key
key_f36kf36FQF36 function key
key_f37kf37FRF37 function key
key_f38kf38FSF38 function key
key_f39kf39FTF39 function key
key_f4kf4k4F4 function key
key_f40kf40FUF40 function key
key_f41kf41FVF41 function key
key_f42kf42FWF42 function key
key_f43kf43FXF43 function key
key_f44kf44FYF44 function key
key_f45kf45FZF45 function key
key_f46kf46FaF46 function key
key_f47kf47FbF47 function key
key_f48kf48FcF48 function key
key_f49kf49FdF49 function key
key_f5kf5k5F5 function key
key_f50kf50FeF50 function key
key_f51kf51FfF51 function key
key_f52kf52FgF52 function key
key_f53kf53FhF53 function key
key_f54kf54FiF54 function key
key_f55kf55FjF55 function key
key_f56kf56FkF56 function key
key_f57kf57FlF57 function key
key_f58kf58FmF58 function key
key_f59kf59FnF59 function key
key_f6kf6k6F6 function key
key_f60kf60FoF60 function key
key_f61kf61FpF61 function key
key_f62kf62FqF62 function key
key_f63kf63FrF63 function key
key_f7kf7k7F7 function key
key_f8kf8k8F8 function key
key_f9kf9k9F9 function key
key_findkfnd@0find 키
key_helpkhlp%1help 키
key_homekhomekhhome 키
key_ickich1kIinsert-character 키
key_ilkil1kAinsert-line 키
key_leftkcub1klleft-arrow 키
key_llkllkHlower-left 키 (home down)
key_markkmrk%2mark 키
key_messagekmsg%3message 키
key_movekmov%4move 키
key_nextknxt%5next 키
key_npageknpkNnext-page 키
key_openkopn%6open 키
key_optionskopt%7options 키
key_ppagekppkPprevious-page 키
key_previouskprv%8previous 키
key_printkprt%9print 키
key_redokrdo%0redo 키
key_referencekref&1reference 키
key_refreshkrfr&2refresh 키
key_replacekrpl&3replace 키
key_restartkrst&4restart 키
key_resumekres&5resume 키
key_rightkcuf1krright-arrow 키
key_saveksav&6save 키
key_sbegkBEG&9쉬프트 상태의 begin 키
key_scancelkCAN&0쉬프트 상태의 cancel 키
key_scommandkCMD*1쉬프트 상태의 command 키
key_scopykCPY*2쉬프트 상태의 copy 키
key_screatekCRT*3쉬프트 상태의 create 키
key_sdckDC*4쉬프트 상태의 delete-character 키
key_sdlkDL*5쉬프트 상태의 delete-line 키
key_selectkslt*6select 키
key_sendkEND*7쉬프트 상태의 end 키
key_seolkEOL*8쉬프트 상태의 clear-to-end-of-line 키
key_sexitkEXT*9쉬프트 상태의 exit 키
key_sfkindkFscroll-forward 키
key_sfindkFND*0쉬프트 상태의 find 키
key_shelpkHLP#1쉬프트 상태의 help 키
key_shomekHOM#2쉬프트 상태의 home 키
key_sickIC#3쉬프트 상태의 insert-character 키
key_sleftkLFT#4쉬프트 상태의 left-arrow 키
key_smessagekMSG%a쉬프트 상태의 message 키
key_smovekMOV%b쉬프트 상태의 move 키
key_snextkNXT%c쉬프트 상태의 next 키
key_soptionskOPT%d쉬프트 상태의 options 키
key_spreviouskPRV%e쉬프트 상태의 previous 키
key_sprintkPRT%f쉬프트 상태의 print 키
key_srkrikRscroll-backward 키
key_sredokRDO%g쉬프트 상태의 redo 키
key_sreplacekRPL%h쉬프트 상태의 replace 키
key_srightkRIT%i쉬프트 상태의 right-arrow 키
key_srsumekRES%j쉬프트 상태의 resume 키
key_ssavekSAV! 1쉬프트 상태의 save 키
key_ssuspendkSPD! 2쉬프트 상태의 suspend 키
key_stabkhtskTset-tab 키
key_sundokUND! 3쉬프트 상태의 undo 키
key_suspendkspd&7suspend 키
key_undokund&8undo 키
key_upkcuu1kuup-arrow 키
keypad_localrmkxke'keyboard_transmit'모드로부터 빠진다
keypad_xmitsmkxks'keyboard_transmit'모드에 들어간다
lab_f0lf0l0f0 가 아닌 경우, function key f0 의 label
lab_f1lf1l1f1 가 아닌 경우, function key f1 의 label
lab_f10lf10laf10 가 아닌 경우, function key f10 의 label
lab_f2lf2l2f2 가 아닌 경우, function key f2 의 label
lab_f3lf3l3f3 가 아닌 경우, function key f3 의 label
lab_f4lf4l4f4 가 아닌 경우, function key f4 의 label
lab_f5lf5l5f5 가 아닌 경우, function key f5 의 label
lab_f6lf6l6f6 가 아닌 경우, function key f6 의 label
lab_f7lf7l7f7 가 아닌 경우, function key f7 의 label
lab_f8lf8l8f8 가 아닌 경우, function key f8 의 label
lab_f9lf9l9f9 가 아닌 경우, function key f9 의 label
label_formatflnLflabel 포맷
label_offrmlnLF소프트 label 오프
label_onsmlnLO소프트 label 온
meta_offrmmmo메타모드오후
meta_onsmmmm메타모드온 (8 번째의 비트 온)
micro_column_addressmhpaZY마이크로 모드의 column_address
micro_downmcud1ZZ마이크로 모드의 cursor_down
micro_leftmcub1Za마이크로 모드의 cursor_left
micro_rightmcuf1Zb마이크로 모드의 cursor_right
micro_row_addressmvpaZc마이크로 모드의 row_address #1
micro_upmcuu1Zd마이크로 모드의 cursor_up
newlinenelnw개행 (cr 의 뒤에 lf 가 온다)
order_of_pinsporderZe소프트웨어 비트를 인자 헤드 핀에 일치시킨다
orig_colorsococ모든 색페어를 본래의 것으로 한다
orig_pairopop디폴트의 페어를 본래의 값으로 한다
pad_charpadpc패딩 캐릭터 (눌 이외)
parm_dchdchDC#1 캐릭터를 삭제 (P*)
parm_delete_linedlDL#1 행을 삭제 (P*)
parm_down_cursorcudDO#1 행하에 (P*)
parm_down_micromcudZf마이크로 모드의 parm_down_cursor
parm_ichichIC#1 캐릭터를 삽입 (P*)
parm_indexindnSF#1 행의 전진 스크롤 (P)
parm_insert_lineilAL#1 행을 삽입 (P*)
parm_left_cursorcubLE왼쪽에 #1 캐릭터분 이동 (P)
parm_left_micromcubZg마이크로 모드의 parm_left_cursor
parm_right_cursorcufRI오른쪽에 #1 캐릭터분 이동 (P*)
parm_right_micromcufZh마이크로 모드의 parm_right_cursor
parm_rindexrinSR#1 행의 후퇴 스크롤 (P)
parm_up_cursorcuuUP#1 행상에 (P*)
parm_up_micromcuuZi마이크로 모드의 parm_up_cursor
pkey_keypfkeypkfunction key #1 의 타건캐릭터 라인을 #2 로 한다
pkey_localpflocplfunction key #1 의 실행 캐릭터 라인을 #2 로 한다
pkey_xmitpfxpxfunction key #1 의 송신 캐릭터 라인을 #2 로 한다
plab_normplnpnlabel #1 에 캐릭터 라인 #2 을 표시
print_screenmc0ps화면의 내용을 인자한다
prtr_nonmc5ppO#1 바이트만 프린터를 온으로 한다
prtr_offmc4pf프린터를 오프로 한다
prtr_onmc5po프린터를 온으로 한다
pulsepulsePU펄스 다이얼을 선택
quick_dialqdialQD확인없이 전화번호 #1 에 다이얼 한다
remove_clockrmclkRC시계를 삭제
repeat_charreprp캐릭터 #1 를 #2 회 반복한다 (P*)
req_for_inputrfiRF(pty 용으로) 다음의 입력 몬지를 보낸다
reset_1stringrs1r1리셋트 캐릭터 라인
reset_2stringrs2r2리셋트 캐릭터 라인
reset_3stringrs3r3리셋트 캐릭터 라인
reset_filerfrf리셋트 파일의 이름
restore_cursorrcrc마지막 save_cursor 의 위치에 커서를 되돌린다
row_addressvpacv수직 절대 위치 #1 (P)
save_cursorscsc현재의 커서 위치를 보존 (P)
scroll_forwardindsf텍스트를 위에 스크롤 (P)
scroll_reverserisr텍스트를 아래에 스크롤 (P)
select_char_setscsZj캐릭터 세트 #1 의 선택
set_attributessgrsa비디오 속성을 #1-#9 에 정의 (PG9)
set_backgroundsetbSb배경색을 #1 로 설정
set_bottom_marginsmgbZk하 마진을 현재행으로 설정
set_bottom_margin_parmsmgbpZl하 마진을 #1 행목이나 아래로부터 #2 행 본다
set_clocksclkSC시계를 #1 시 #2 분 #3 초로 설정
set_color_pairscpsp현재의 색페어를 #1 로 설정
set_foregroundsetfSf전경색을 #1 로 설정
set_left_marginsmglML왼쪽 소프트 마진을 현재자리수로 설정
set_left_margin_parmsmglpZm왼쪽 ( 오른쪽) 마진을 자리수 #1 (#2)로 설정
set_right_marginsmgrMR오른쪽 소프트 마진을 현재자리수로 설정
set_right_margin_parmsmgrpZn오른쪽 마진을 자리수 #1 로 설정
set_tabhtsst전행의 탭을 현재의 자리수로 설정
set_top_marginsmgtZo상 마진을 현재행으로 설정
set_top_margin_parmsmgtpZp상 (하) 마진을 행 #1 (#2)으로 설정
set_windowwindwi현재의 윈도우를 행 #1-#2, 자리수 #3-#4 로 한다
start_bit_imagesbimZq비트 이미지 그래픽 인자의 개시
start_char_set_defscsdZr캐릭터 세트 정의의 개시
stop_bit_imagerbimZs비트 이미지 그래픽 인자의 종료
stop_char_set_defrcsdZt캐릭터 세트 정의의 종료
subscript_characterssubcsZu첨자가 될 수 있는 캐릭터의 리스트
superscript_characterssupcsZv슈퍼 스크립트가 될 수 있는 캐릭터의 리스트
tabhtta다음의 8 캐릭터 분의 하드웨어 tab stop에의 탭 캐릭터
these_cause_crdocrZw이러한 캐릭터 중 몇개의 인자는 CR 를 일으킨다
to_status_linetslts스테이터스행의 열 #1 에 이동
tonetoneTO터치 톤 다이얼을 선택
underline_charucuc캐릭터 1 개(살)에 밑줄을 붙여 다음의 캐릭터에 이동
up_half_linehuhu반행상에
user0u0u0유저 캐릭터 라인 #0
user1u1u1유저 캐릭터 라인 #1
user2u2u2유저 캐릭터 라인 #2
user3u3u3유저 캐릭터 라인 #3
user4u4u4유저 캐릭터 라인 #4
user5u5u5유저 캐릭터 라인 #5
user6u6u6유저 캐릭터 라인 #6
user7u7u7유저 캐릭터 라인 #7
user8u8u8유저 캐릭터 라인 #8
user9u9u9유저 캐릭터 라인 #9
wait_tonewaitWA다이얼 톤을 기다린다
xoff_characterxoffcXFXOFF 캐릭터
xon_characterxoncXNXON 캐릭터
zero_motionzeromZx다음의 캐릭터 표시를 이동 없음으로 실시한다

이하의 캐릭터 라인 케이파비리티는, SVr4. 0 의 term 구조체에 존재하고 있습니다만, 메뉴얼로 아직도 설명이 이루어지고 있지 않습니다.

variablecap-TCap설명
캐릭터 라인nameCode
alt_scancode_escscesaS8스캔 코드 에뮬레이션을 위한 다른 이스케이프 캐릭터
bit_image_carriage_returnbicrYv동일행의 선두에 이동
bit_image_newlinebinelZz비트 이미지의 다음의 행에 이동
bit_image_repeatbirepXy비트 이미지 셀 #1 을 #2 회 반복한다
char_set_namescsnmZy캐릭터 세트명의 리스트
code_set_initcsinci복수 코드 세트의 초기화 순차 순서
color_namescolornmYw색 #1 에 이름을 준다
define_bit_image_regiondefbiYx구형의 비트 이미지 area를 정의
device_typedevtdv언어/코드 세트 서포트의 지정
display_pc_chardispcS1PC 캐릭터 #1 를 표시
end_bit_image_regionendbiYy비트 이미지 area의 종료
enter_pc_charset_modesmpchS2PC 캐릭터 표시 모드 개시
enter_scancode_modesmscS4PC 스캔 코드 모드 개시
exit_pc_charset_modermpchS3PC 캐릭터 표시 모드 종료
exit_scancode_modermscS5PC 스캔 코드 모드 종료
get_mousegetmGmcurses 가 버튼 이벤트를 취득해야 할. 파라미터 #1 는 문서화되어 있지 않다
key_mousekmousKm마우스 이벤트가 일어났다
mouse_infominfoMi마우스 상태의 정보
pc_term_optionspctrmS6PC 단말 옵션
pkey_plabpfxlxlfunction key #1 에 캐릭터 라인 #2 을 송신시키고 캐릭터 라인 #3 을 표시시킨다
req_mouse_posreqmpRQ마우스 위치의 요구
scancode_escapescescS7스캔 코드 에뮬레이션을 위한 이스케이프
set0_des_seqs0dss0코드 세트 0 에 쉬프트 (EUC 세트 0, ASCII)
set1_des_seqs1dss1코드 세트 1 에 쉬프트
set2_des_seqs2dss2코드 세트 2 에 쉬프트
set3_des_seqs3dss3코드 세트 3 에 쉬프트
set_a_backgroundsetabABANSI escape sequence를 사용해 배경색을 #1 로 설정
set_a_foregroundsetafAFANSI escape sequence를 사용해 전경색을 #1 로 설정
set_color_bandsetcolorYzribbon의 색을 #1 로 변경
set_lr_marginsmglrML좌우 양마진을 #1,#2 로 설정
set_page_lengthslinesYZ페이지장을 #1 행으로 설정
set_tb_marginsmgtbMT상하 양마진을 #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는 아닐지도 모릅니다. 조심해 주세요!

variablecap-TCap설명
캐릭터 라인nameCode
enter_horizontal_hl_modeehhlmXh수평 하이라이트 모드에 들어간다
enter_left_hl_modeelhlmXl왼쪽 하이라이트 모드에 들어간다
enter_low_hl_modeelohlmXo하 하이라이트 모드에 들어간다
enter_right_hl_modeerhlmXr오른쪽 하이라이트 모드에 들어간다
enter_top_hl_modeethlmXt상 하이라이트 모드에 들어간다
enter_vertical_hl_modeevhlmXv수직 하이라이트 모드에 들어간다
set_a_attributessgr1sA비디오 속성의 2 번째의 조를 #1-#6 과 정의
set_pglen_inchslengthsL페이지장을 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 개의 형태가 있습니다. 브르92l케이파비리티는, 그 단말이 있는 특성을 가지고 있는지 어떤지를 나타냅니다. 수치 케이파비리티는, 그 단말의 크기나, 지연의 크기를 지정합니다. 캐릭터 라인 케이파비리티는, 단말이 있는 기능을 실행시킬 때에 이용하는 순차 순서를 지정합니다.

케이파비리티의 형태

모든 케이파비리티에는 이름이 있습니다. 예를 들면, 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 는,

        33|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 에서의 같게, 플래그는 [-+#] 과 스페이스
                                                  %cprintf()의 %c 과 같이, pop()를 표시한다
                                                  %sprintf()의 %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                                                   %lstrlen(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 (을)를 가지지 않는 경우에 유익합니다.

이러한 케이파비리티를 사용하는 프로그램을 실행할 때에, 단말을 특수한 모드로 할 필요가 있는 경우, 이 모드에 들어가는 코드와 나오는 코드를 각각 smcuprmcup 로 지정할 수가 있습니다. 이런 사태가 생기는 경우로서 예를 들면 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 를 실시한 후 dl1ind 를 실시해 주세요. 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/smirich/ich1 의 어느 쪽인지 한편 (양쪽 모두에서는 없습니다)를 적절한 것으로 간주해 이용합니다. 만약, 양쪽 모두를 필요로 하는 만큼 낡은 단말의 엔트리를, 새로운 curses 로 사용하기 위해서(때문에) 쓸 필요가 있다면, ich1rmir/smir 순차 순서를 포함해 주세요.

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

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

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

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

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

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

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

밑줄인 나무를 개시하는 코드, 종료하는 코드는, 각각 smulrmul 로 지정합니다. 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어두운 표시 이용할 수 없습니다
p6bold\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
;1p1 또는 p6 때%? %p1%p6%|%t;1%;
;4p2 때%? %p2%|%t;4%;
;5p4 때%? %p4%|%t;5%;
;7p1 또는 p3 때%? %p1%p3%|%t;7%;
;8p7 때%? %p7%|%t;8%;
m항상m
^N 또는 ^Op9 가 진이라면 ^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 의 키가 이것에 해당합니다)를 취급할 수 없는 것이 있습니다. 송신 상태나 비송신 상태인지를 설정할 수 있는 키패드의 경우, 그러한 유익의 코드를 smkxrmkx 로 지정할 수가 있습니다. 이러한 지정이 없는 경우, 키패드는 항상 송신 상태로서 다루어집니다. 왼쪽 화살표, 오른쪽 화살표, 상 화살표, 하 커서 키, 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를 온, 오프 하는 명령이 있다면, smlnrmln 에 지정해 주세요. 변경이 보이는 것을 확실히 하기 위해서, 통상 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 의 전의 주화면의 커서 위치에 돌아올 필요가 있습니다. 그 때문에(위해) tslfsl 안에 sc (save cursor)와 rc (restore cursor)의 캐릭터 라인의 값을 포함한다 필요가 있을지도 모릅니다.

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

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

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

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

선화

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

GlyphACSAsciiVT100
NameNameDefaultName
UK pound signACS_STERLINGf}
arrow pointing downACS_DARROWv.
arrow pointing leftACS_LARROW<,
arrow pointing rightACS_RARROW>+
arrow pointing upACS_UARROW^-
board of squaresACS_BOARD#h
bulletACS_BULLETo~
checker board (stipple)ACS_CKBOARD:a
degree symbolACS_DEGREE\f
diamondACS_DIAMOND+`
greater-than-or-equal-toACS_GEQUAL>z
greek piACS_PI*{
horizontal lineACS_HLINE-q
lantern symbolACS_LANTERN#i
large plus or crossoverACS_PLUS+n
less-than-or-equal-toACS_LEQUAL<y
lower left cornerACS_LLCORNER+m
lower right cornerACS_LRCORNER+j
not-equalACS_NEQUAL!|
plus/minusACS_PLMINUS#g
scan line 1ACS_S1~o
scan line 3ACS_S3-p
scan line 7ACS_S7-r
scan line 9ACS_S9_s
solid square blockACS_BLOCK#0
tee pointing downACS_TTEE+w
tee pointing leftACS_RTEE+u
tee pointing rightACS_LTEE+t
tee pointing upACS_BTEE+v
upper left cornerACS_ULCORNER+l
upper right cornerACS_URCORNER+k
vertical lineACS_VLINE|x

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

색의 취급

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

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

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

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

#defineRGB
COLOR_BLACK00, 0, 0
빨강COLOR_RED 1max, 0,0
초록COLOR_GREEN20, max, 0
노랑COLOR_YELLOW3max, max, 0
파랑COLOR_BLUE40,0, max
마젠타COLOR_MAGENTA5max, 0, max
시안(cyan)COLOR_CYAN60, max, max
흰색COLOR_WHITE7max, max, max

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

Tektronix 풍의 단말에서는, 색을 변경할 수 있는 것을 나타내기 위해서(때문에) 케이파비리티 ccc 가 있습니다. 만약 그렇다면, initc 케이파비리티는 색 가지수 (0 으로부터 colors - 1)와 색을 기술하는 3 개의 파라미터를 취합니다. 이 3 개의 파라미터는, 디폴트에서는 RGB (Red, Green, Blue) 치라고 해석됩니다. 브르92l케이파비리티 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_STANDOUT01
A_UNDERLINE12
A_REVERSE24
A_BLINK38
A_DIM416
A_BOLD532
A_INVIS664
A_PROTECT7128
A_ALTCHARSET8256

예를 들면, 많은 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,

(은)는 smkxrmkx 도 가지지 않는 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_clockdisplay_clock 의 파라미터 치환은 SVr4 에서도 XSI Curses 표준에서도 설명되고 있지 않습니다. AT&T 505 단말의 설명서로부터 추측한 것입니다.

kmous 케이파비리티의 할당에는 주의해 주세요. ncursesKEY_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(1), curses(3), printf(3), term(5).

저자

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

TERMINFO (5)

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.