Rechercher une page de manuel

Chercher une autre page de manuel:

terminfo

Autres langues

Langue: pl

Autres versions - même langue

Version: 90421 (ubuntu - 01/11/07)

Section: 5 (Format de fichier)

NAZWA

terminfo - baza w³a¶ciwo¶ci terminala

SK£ADNIA

/usr/share/terminfo/*/*

OPIS

Terminfo jes baz± danych, opisuj±c± terminale, u¿ywan± przez programy obs³uguj±ce ekran, takie jak nvi(1), rogue(1) i biblioteki takie, jak curses(3X). Terminfo opisuje terminale przez podawanie zestawu ich w³a¶ciwo¶ci, opisuj±c jak wykonywaæ operacje ekranowe oraz podaj±c wymagania wype³niania i sekwencje inicjalizacji.

Wpisy w terminfo sk³adaj± siê z sekwencji pól, rozdzielonych przecinkami (osadzane przecinki mo¿na cytowaæ lewymi uko¶nikami, lub zapisywaæ jako \072). Bia³e spacje po separatorze `,' s± ignorowane. Pierwszy wpis ka¿dego terminala podaje nazwy, pod którymi znany jest terminal, rozdzielone znakami `|'. Pierwsza podana nazwa jest najpopularniejszym skrótem terminala, a ostatnia nazwa jest d³ug± nazw±, w pe³ni identyfikuj±c± terminal. Wszystkie nazwy s± synonimiczne. Wszystkie nazwy poza ostatni± powinny byæ pisane ma³ymi literami i nie zawieraæ spacji; ostatnia nazwa mo¿e je zawieraæ dla czytelno¶ci.

Nazwy terminali (poza ostatnim, gadatliwym wpisem) powinny byæ wybierane wg. nastêpuj±cych konwencji: Sprzêt, który sk³ada siê na terminal, powinien tworzyæ korzeñ nazwy, st±d ``hp2621''. Nazwa ta nie powinna zawieraæ my¶lników. Tryby,w których sprzêt mo¿e siê znajdowaæ powinny byæ wskazywane przez dodanie my¶lnika i przyrostka trybu. Tak wiêc vt100 w 132 kolumnowym trybie to vt100-w. Nastêpuj±ce przyrostki powinny byæ u¿ywane tam gdzie to mo¿liwe:

Przyrostek Znaczenie przyk³ad
-nn Liczba wierszy ekranu aaa-60
-np Liczba stron pamiêci c100-4p
-am Z automarginesami (zwykle domy¶lne) vt100-am
-m Tryb mono; powstrzymuje kolor ansi-m
-mc Magiczne ciasteczko; spacje przy pod¶wietlaniu wy30-mc
-na Brak klawiszy strza³ek (zostaw je w lokalnym) c100-na
-nam Bez automatycznych marginesów vt100-nam
-nl Bez linii statusu att4415-nl
-ns Bez linii statusu hp2626-ns
-rv Odwrócone kolory c100-rv
-s W³±cza liniê statusu vt100-s
-vb U¿ywa wizualnego dzwonka zamiast audio wy370-vb
-w Szeroki tryb (> 80 kolumn, zwykle 132) vt100-w

Dla dalszych informacji o konwencjach nazywania, poczytaj stronê term(7).

W³a¶ciwo¶ci

Poni¿ej znajduje siê kompletna liczba w³a¶ciwo¶ci za³±czanych w bloku opisu terminfo i dostêpnych dla kodu, korzystaj±cego z terminfo. W ka¿dej linii tabeli

Zmienna jest nazw±, poprzez któr± programista (na poziomie terminfo) dostaje siê do w³a¶ciwo¶ci.

Nazwaw³a¶ciwo¶ci jest krótk± nazw±, u¿ywan± w tek¶cie bazy danych, a korzysta z niej osoba aktualizuj±ca bazê. Je¶li to mo¿liwe, nazwyw³a¶ciwo¶ci s± wybierane w standardzie (przynajmniej zbli¿onym do) ANSI X3.64-1979 (który jest obecnie wypierany przez ECMA-48, u¿ywaj±cego jednak podobnych nazw). Semantyka powinna te¿ odpowiadaæ specyfikacji.

Kod termcap jest star± nazw± w³a¶ciwo¶ci termcap (niektóre w³asciwo¶ci s± nowe i maj± nazwy nie pochodz±ce z termcap).

Nazwy w³a¶ciwo¶ci nie maj± sztywnego limitu d³ugo¶ci, lecz przyjêto nieformalny limit 5 znakowy, który zachowuje je w zwartej postaci i umo¿liwia tabulacjom w pliku Caps ³adne zawijanie.

Na koniec, pole opisu próbuje przenie¶æ semantykê w³a¶ciwo¶ci. W polu opisu mo¿esz znale¼æ pewne kody:

(P)
okre¶la, ¿e mo¿na podaæ wype³nianie (padding)
#[1-9]
w polu opisu okre¶la, ¿e ³añcuch jest przekazywany przez tparm z okre¶lonymi parametrami (#i). (patrz lib_tparm.c z pakietu ncurses--przyp. t³um.)
(P*)
okre¶la, ¿e wype³nianie mo¿e ró¿niæ siê w zale¿no¶ci do liczby objêtych nim linii.
(#i)
okre¶la ity parametr.

Oto w³a¶ciwo¶ci logiczne:

Zmienna Nazwa- Kod Opis
Booleans w³a¶æ. Tcap
auto_left_margin bw bw cub1 zawija z kolumny 0 na ostatni±
auto_right_margin am am terminal ma marginesy automatyczne
back_color_erase bce ut ekran jest czyszczony kolorem t³a
can_change ccc cc terminal mo¿e redefiniowaæ istniej±ce kolory
ceol_standout_glitch xhp xs tryb wyró¿niony nie kasowany przez nadpisywanie (hp)
col_addr_glitch xhpa YA jedynie ruchy dodatnie dla w³a¶ciwo¶ci hpa/mhpa
cpi_changes_res cpix YF zmienianie natê¿enia (pitch) znaku zmienia rozdzielczo¶æ
cr_cancels_micro_mode crxm YB u¿ywanie cr wy³±cza tryb micro
dest_tabs_magic_smso xt xt tabulacje destruktywne, magiczny znak so (t1061)
eat_newline_glitch xenl xn nowa linia jest ignorowana po 80 kolumnach
erase_overstrike eo eo spacj± mo¿na kasowaæ nadstukniêcia (overstrikes)
generic_type gn gn podstawowy rodzaj linii
hard_copy hc hc terminal hardcopy
hard_cursor chts HC kursor jest trudny do zobaczenia
has_meta_key km km ma klawisz meta (ustawia bit parzysto¶ci)
has_print_wheel daisy YC drukarka wymaga do zmiany zestawu znaków operatora
has_status_line hs hs ma dodatkow± liniê statusu
hue_lightness_saturation hls hl terminal u¿ywa tylko notacji HLS kolorów (Tektronix)
insert_null_glitch in in tryb wstawiania (insert) rozró¿nia zera (nulls)
lpi_changes_res lpix YG zmienianie natê¿enia (pitch) linii zmienia rozdzielczo¶æ
memory_above da da wy¶wietlacz mo¿e byæ zachowywany ponad ekranem
memory_below db db wy¶wietlacz mo¿e byæ zachowywany pod ekranem
move_insert_mode mir mi w trybie wstawiania mo¿na siê bezpiecznie poruszaæ
move_standout_mode msgr ms w trybie wyró¿nienia mo¿na siê bezpiecznie poruszaæ
needs_xon_xoff nxon nx wype³nianie nie zadzia³a, potrzeba xon/xoff
no_esc_ctlc xsb xb ul ([terminal] beehive) (f1=escape, f2=ctrl C)
no_pad_char npc NP znak dope³niania nie istnieje
non_dest_scroll_region ndscr ND przewijanie regionu nie jest destruktywne
non_rev_rmcup nrrmc NR smcup nie odwraca rmcup
over_strike os os terminal mo¿e nadstukiwaæ
prtr_silent mc5i 5i drukarka nie daje echa na ekran
row_addr_glitch xvpa YD daje tylko dodatnie ruchy dla w³a¶æ. vpa/mvpa
semi_auto_right_margin sam YE drukowanie ostatniej kolumny powoduje cr
status_line_esc_ok eslok es w linii statusu mo¿na u¿ywaæ escape
tilde_glitch hz hz nie mo¿na drukowaæ znaków ~
transparent_underline ul ul podkre¶lony znak nadstukuje
xon_xoff xon xo terminal u¿ywa potwierdzania xon/xoff

A oto w³a¶ciwo¶ci numeryczne:

Zmienna Nazwa- Kod Opis
numeryczna w³a¶æ. tcap
columns cols co liczba kolumn w linii
init_tabs it it pocz±tkowo tabulacje co # spacji
label_height lh lh wiersze w ka¿dej etykiecie
label_width lw lw kolumny w ka¿dej etykiecie
lines lines li liczba linii na ekranie lub stronie
lines_of_memory lm lm linie pamiêci w wypadku gdy > linii ekranu. 0 => ró¿ni siê
magic_cookie_glitch xmc sg liczba spacji, pozostawianych przez smso lub rmso
max_attributes ma ma maksymalna liczba po³±czonych atrybutów, które obs³uguje terminal
max_colors colors Co maksymalna liczba kolorów na ekranie
max_pairs pairs pa maksymalna liczba par kolorów na ekranie
maximum_windows wnum MW maksymalna liczna definiowalnych okien
no_color_video ncv NC atrybuty wideo, których nie mo¿na u¿ywaæ z kolorami
num_labels nlab Nl liczba etykiet na ekranie
padding_baud_rate pb pb najni¿sza szybko¶æ przesy³u (baud rate) gdy wymagane jest wype³nianie (padding).
virtual_terminal vt vt liczba terminali wirtualnych (CB/unix)
width_status_line wsl ws liczba kolumn w linii statusu

W strukturze term SVr4.0 istniej± te¿ nastêpuj±ce w³a¶ciwo¶ci numeryczne, lecz nie s± one jeszcze udokumentowane w podrêczniku. Pochodz± one z SVr4-tego wsparcia dla drukarki.

Zmienna Nazwa- Kod Opis
Numeryczna w³a¶æ Tcap
bit_image_entwining bitwin Yo liczba przej¶æ (passes) dla ka¿dego wiersza obrazu bitowego
bit_image_type bitype Yp rodzaj urz±dzenia obrazu bitowego
buffer_capacity bufsz Ya licza bajtów buforowanych przed drukowaniem
buttons btns BT liczba przycisków myszy
dot_horz_spacing spinh Yc odstêpy poprzeczne punktów wyra¿one w punktach na cal (DPI)
dot_vert_spacing spinv Yb odstêpy pionowe igie³ (pins) w ig³ach na cal
max_micro_address maddr Yd maksymalna warto¶æ w micro_..._address
max_micro_jump mjump Ye maksymalna warto¶æ w parm_..._micro
micro_col_size mcs Yf rozmiar kroku znakowego w trybie micro mode
micro_line_size mls Yg rozmiar kroku liniowego w trybie micro mode
number_of_pins npins Yh liczba igie³ w g³owicy drukuj±cej (print-head)
output_res_char orc Yi rozdzielczo¶æ poprzeczna w jednostkach na liniê
output_res_horz_inch orhi Yk rozdzielczo¶æ poprzeczna w jednostkach na cal
output_res_line orl Yj rozdzielczo¶æ pionowa w jednostkach na liniê
output_res_vert_inch orvi Yl rozdzielczo¶æ pionowa w jednostkach na cal
print_rate cps Ym wydrukuj szybko¶æ przesy³u w znakach na sekundê
wide_char_size widcs Yn rozmiar kroku znaku w trybie podwojonej szeroko¶ci

A oto w³a¶ciwo¶ci napisowe:

Zmienna Nazwa- Kod Opis
Napisowa w³a¶æ. Tcap
acs_chars acsc ac graficzne pary zestawu znaków, oparte o vt100
back_tab cbt bt wsteczna tabulacja (P)
bell bel bl sygna³ audiofoniczny (dzwonek) (P)
carriage_return cr cr powrót karetki (P*) (P*)
change_char_pitch cpi ZA Zmieñ liczbê znaków na cal
change_line_pitch lpi ZB Zmieñ liczbê linii na cal
change_res_horz chr ZC Zmieñ rozdzielczo¶æ poprzeczn±
change_res_vert cvr ZD Zmieñ rozdzielczo¶æ pionow±
change_scroll_region csr cs zmieñ region na liniê #1 do linii #2 (P)
char_padding rmp rP podobne do ip, lecz w trybie wstawiania (insert)
clear_all_tabs tbc ct czy¶æ wszystkie tabulatory (tab stops) (P)
clear_margins mgc MC czy¶æ wszystkie miêkkie lewe i prawe marginesy
clear_screen clear cl czy¶æ ekran i wyzeruj kursor (home cursor) (P*)
clr_bol el1 cb wyczy¶æ pocz±tek linii
clr_eol el ce wyczy¶æ do koñca linii (P)
clr_eos ed cd wyczy¶æ do koñca ekranu (P*)
column_address hpa ch pozycja pozioma #1 (P)
command_character cmdch CC ustawialny w prototypie znak cmd terminala !?
create_window cwin CW definiuj okno #1 od #2,#3 do #4,#5
cursor_address cup cm przejd¼ do wiersza #1 kolumny #2
cursor_down cud1 do w dó³ o 1 liniê
cursor_home home ho kursor do domu (je¶li bez cup)
cursor_invisible civis vi uczyñ kursor niewidzialnym
cursor_left cub1 le przejd¼ jedn± spacjê w lewo
cursor_mem_address mrcup CM adresowanie kursora wzglêdem pamiêci
cursor_normal cnorm ve spowoduj, ¿e kursor stanie siê normalny (odtwórz zmiany civis/cvvis)
cursor_right cuf1 nd niedestruktywna spacja (przejd¼ w prawo o spacjê)
cursor_to_ll ll ll ostatnia linia, pierwsza kolumna (je¶li bez cup)
cursor_up cuu1 up w górê o 1 liniê
cursor_visible cvvis vs uczyñ kursor bardzo widzialnym
define_char defc ZE zdefiniuj znak
delete_character dch1 dc usuñ znak (P*)
delete_line dl1 dl usuñ liniê (P*)
dial_phone dial DI wykrêæ numer #1
dis_status_line dsl ds wy³±cz liniê statusu
display_clock dclk DK wy¶wietl w pozycji (#1,#2) zegar
down_half_line hd hd pó³ linii w dó³
ena_acs enacs eA w³±cz alternatywny zestaw znaków
enter_alt_charset_mode smacs as rozpocznij tryb alternatywnego zestawu znaków (P)
enter_am_mode smam SA w³±cz automatyczne marginesy
enter_blink_mode blink mb w³±cz migotanie
enter_bold_mode bold md w³±cz tryb wyt³uszczenia (dodatkowe rozja¶nienie)
enter_ca_mode smcup ti ³añcuch do rozpoczynania programów, u¿ywaj±cych cup
enter_delete_mode smdc dm wejd¼ w tryb kasowania (delete)
enter_dim_mode dim mh w³±cz tryb pó³-rozja¶nienia
enter_doublewide_mode swidm ZF wejd¼ w tryb podwójnej szeroko¶ci
enter_draft_quality sdrfq ZG wejd¼ w tryb jako¶ci draft
enter_insert_mode smir im wejd¼ w tryb wstawiania (insert)
enter_italics_mode sitm ZH wejd¼ w tryb kursywy
enter_leftward_mode slm ZI rozpocznij lewokierunkowy ruch karetki
enter_micro_mode smicm ZJ rozpocznij tryb micro-motion (mikro ruchów)
enter_near_letter_quality snlq ZK wejd¼ w tryb NLQ
enter_normal_quality snrmq ZL wejd¼ w tryb normalnej jako¶ci
enter_protected_mode prot mp w³±cz tryb chroniony
enter_reverse_mode rev mr w³±cz tryb inwersyjny wideo
enter_secure_mode invis mk w³±cz tryb niewidzialny (znaki niewidoczne)
enter_shadow_mode sshm ZM wejd¼ w tryb shadow-print (cieniowego-drukowania)
enter_standout_mode smso so rozpocznij tryb wyró¿niony (standout)
enter_subscript_mode ssubm ZN wejd¼ w tryb indeksu dolnego
enter_superscript_mode ssupm ZO wejd¼ w tryb indeksu górnego
enter_underline_mode smul us rozpocznij tryb podkre¶lenia
enter_upward_mode sum ZP rozpocznij górnokierunkowy ruch karetki
enter_xon_mode smxon SX w³±cz potwierdzenia xon/xoff
erase_chars ech ec wykasuj #1 znaków (P)
exit_alt_charset_mode rmacs ae zakoñcz [dzia³anie] alternatywnego zestawu znaków (P)
exit_am_mode rmam RA wy³±cz automatyczne marginesy
exit_attribute_mode sgr0 me wy³±cz wszystkie atrybuty
exit_ca_mode rmcup te ³añcuchy do koñczenia programów, u¿ywaj±cych cup
exit_delete_mode rmdc ed zakoñcz tryb kasowania
exit_doublewide_mode rwidm ZQ zakoñcz tryb podwojonej szeroko¶ci
exit_insert_mode rmir ei zakoñcz tryb wstawiania
exit_italics_mode ritm ZR zakoñcz tryb kursywy
exit_leftward_mode rlm ZS zakoñcz tryb ruchu w lewo
exit_micro_mode rmicm ZT zakoñcz tryb micro-motion
exit_shadow_mode rshm ZU zakoñcz tryb shadow-print
exit_standout_mode rmso se zakoñcz tryb wyró¿nienia
exit_subscript_mode rsubm ZV zakoñcz tryb indeksu dolnego
exit_superscript_mode rsupm ZW zakoñcz tryb indeksu górnego
exit_underline_mode rmul ue zakoñcz tryb podkre¶lenia
exit_upward_mode rum ZX zakoñcz odwrócone ruchy znaków
exit_xon_mode rmxon RX wy³±cz potwierdzenia xon/xoff
fixed_pause pause PA pauzuj przez 2-3 sekundy
flash_hook hook fh zaczep prze³±cznika rozb³ysku (flash switch hook)
flash_screen flash vb widzialny dzwonek (nie mo¿e ruszaæ kursora)
form_feed ff ff Wyrzucenie strony z terminala hardcopy (P*)
from_status_line fsl fs powrót z linii statusu
goto_window wingo WG id¼ do okna #1
hangup hup HU odwie¶ s³uchawkê
init_1string is1 i1 ³añcuch inicjalizacji
init_2string is2 is ³añcuch inicjalizacji
init_3string is3 i3 ³añcuch inicjalizacji
init_file if if nazwa pliku inicjalizacji
init_prog iprog iP ¶cie¿ka do programu do inicjalizacji
initialize_color initc Ic inicjalizuj kolor #1 na (#2,#3,#4)
initialize_pair initp Ip inicjalizuj parê #1 kolorów na fg=(#2,#3,#4), bg=(#5,#6,#7)
insert_character ich1 ic wstaw znak (P)
insert_line il1 al wstaw liniê (P*)
insert_padding ip ip wstaw wype³nienie (padding) po wstawionym znaku
key_a1 ka1 K1 lewy, górny róg keypadu
key_a3 ka3 K3 prawy, górny róg keypadu
key_b2 kb2 K2 ¶rodek keypadu
key_backspace kbs kb klawisz backspace
key_beg kbeg @1 klawisz begin
key_btab kcbt kB klawisz wstecznej tabulacji
key_c1 kc1 K4 lewy, dolny róg keypadu
key_c3 kc3 K5 prawy, dolny róg keypadu
key_cancel kcan @2 klawisz cancel (anulowania)
key_catab ktbc ka klawisz czyszczenia wszystkich tabulacji
key_clear kclr kC klawisz czyszczenia ekranu lub wymazywania
key_close kclo @3 klawisz close (zamykania)
key_command kcmd @4 klawisz poleceñ
key_copy kcpy @5 klawisz copy (kopiowania)
key_create kcrt @6 klawisz create (tworzenia)
key_ctab kctab kt klawisz czyszczenia tabulacji
key_dc kdch1 kD klawisz kasowania znaku
key_dl kdl1 kL klawisz kasowania linii
key_down kcud1 kd strza³ka w dó³
key_eic krmir kM wysy³ane przez rmir lub smir w trybie wstawiania
key_end kend @7 klawisz end
key_enter kent @8 klawisz enter/send
key_eol kel kE klawisz kasowania do koñca linii
key_eos ked kS klawisz kasowania do koñca ekranu
key_exit kext @9 klawisz exit (zakoñczenia)
key_f0 kf0 k0 klawisz funkcyjny F0
key_f1 kf1 k1 klawisz funkcyjny F1
key_f10 kf10 k; klawisz funkcyjny F10
key_f11 kf11 F1 klawisz funkcyjny F11
key_f12 kf12 F2 klawisz funkcyjny F12
key_f13 kf13 F3 klawisz funkcyjny F13
key_f14 kf14 F4 klawisz funkcyjny F14
key_f15 kf15 F5 klawisz funkcyjny F15
key_f16 kf16 F6 klawisz funkcyjny F16
key_f17 kf17 F7 klawisz funkcyjny F17
key_f18 kf18 F8 klawisz funkcyjny F18
key_f19 kf19 F9 klawisz funkcyjny F19
key_f2 kf2 k2 klawisz funkcyjny F2
key_f20 kf20 FA klawisz funkcyjny F20
key_f21 kf21 FB klawisz funkcyjny F21
key_f22 kf22 FC klawisz funkcyjny F22
key_f23 kf23 FD klawisz funkcyjny F23
key_f24 kf24 FE klawisz funkcyjny F24
key_f25 kf25 FF klawisz funkcyjny F25
key_f26 kf26 FG klawisz funkcyjny F26
key_f27 kf27 FH klawisz funkcyjny F27
key_f28 kf28 FI klawisz funkcyjny F28
key_f29 kf29 FJ klawisz funkcyjny F29
key_f3 kf3 k3 klawisz funkcyjny F3
key_f30 kf30 FK klawisz funkcyjny F30
key_f31 kf31 FL klawisz funkcyjny F31
key_f32 kf32 FM klawisz funkcyjny F32
key_f33 kf33 FN klawisz funkcyjny F33
key_f34 kf34 FO klawisz funkcyjny F34
key_f35 kf35 FP klawisz funkcyjny F35
key_f36 kf36 FQ klawisz funkcyjny F36
key_f37 kf37 FR klawisz funkcyjny F37
key_f38 kf38 FS klawisz funkcyjny F38
key_f39 kf39 FT klawisz funkcyjny F39
key_f4 kf4 k4 klawisz funkcyjny F4
key_f40 kf40 FU klawisz funkcyjny F40
key_f41 kf41 FV klawisz funkcyjny F41
key_f42 kf42 FW klawisz funkcyjny F42
key_f43 kf43 FX klawisz funkcyjny F43
key_f44 kf44 FY klawisz funkcyjny F44
key_f45 kf45 FZ klawisz funkcyjny F45
key_f46 kf46 Fa klawisz funkcyjny F46
key_f47 kf47 Fb klawisz funkcyjny F47
key_f48 kf48 Fc klawisz funkcyjny F48
key_f49 kf49 Fd klawisz funkcyjny F49
key_f5 kf5 k5 klawisz funkcyjny F5
key_f50 kf50 Fe klawisz funkcyjny F50
key_f51 kf51 Ff klawisz funkcyjny F51
key_f52 kf52 Fg klawisz funkcyjny F52
key_f53 kf53 Fh klawisz funkcyjny F53
key_f54 kf54 Fi klawisz funkcyjny F54
key_f55 kf55 Fj klawisz funkcyjny F55
key_f56 kf56 Fk klawisz funkcyjny F56
key_f57 kf57 Fl klawisz funkcyjny F57
key_f58 kf58 Fm klawisz funkcyjny F58
key_f59 kf59 Fn klawisz funkcyjny F59
key_f6 kf6 k6 klawisz funkcyjny F6
key_f60 kf60 Fo klawisz funkcyjny F60
key_f61 kf61 Fp klawisz funkcyjny F61
key_f62 kf62 Fq klawisz funkcyjny F62
key_f63 kf63 Fr klawisz funkcyjny F63
key_f7 kf7 k7 klawisz funkcyjny F7
key_f8 kf8 k8 klawisz funkcyjny F8
key_f9 kf9 k9 klawisz funkcyjny F9
key_find kfnd @0 klawisz find (szukania)
key_help khlp %1 klawisz help (pomocy)
key_home khome kh klawisz home
key_ic kich1 kI klawisz wstawiania znaku
key_il kil1 kA klawisz wstawiania linii
key_left kcub1 kl strza³ka w lewo
key_ll kll kH dolna strza³ka w lewo (home down)
key_mark kmrk %2 klawisz mark (zaznaczenia)
key_message kmsg %3 klawisz message (komunikatu)
key_move kmov %4 klawisz move (przemieszczenia)
key_next knxt %5 klawisz next (nastêpny)
key_npage knp kN klawisz nastêpnej-strony
key_open kopn %6 klawisz open (otwarcia)
key_options kopt %7 klawisz options (opcji)
key_ppage kpp kP klawisz poprzedniej-strony
key_previous kprv %8 klawisz previous (poprzedni)
key_print kprt %9 klawisz print (drukowania)
key_redo krdo %0 klawisz redo (odtworzenia)
key_reference kref &1 klawisz reference
key_refresh krfr &2 klawisz refresh (od¶wie¿enia)
key_replace krpl &3 klawisz replace (podmienienia)
key_restart krst &4 klawisz restart
key_resume kres &5 klawisz resume (wznowienia)
key_right kcuf1 kr strza³ka w prawo
key_save ksav &6 klawisz save (zapisania)
key_sbeg kBEG &9 przesuniêty (shifted) klawisz rozpoczêcia (begin key)
key_scancel kCAN &0 przesuniêty klawisz cancel (anulowania)
key_scommand kCMD *1 przesuniêty klawisz polecenia
key_scopy kCPY *2 przesuniêty klawisz copy (kopiowania)
key_screate kCRT *3 przesuniêty klawisz create (tworzenia)
key_sdc kDC *4 przesuniêty klawisz kasowania znaku
key_sdl kDL *5 przesuniêty klawisz kasowania linii
key_select kslt *6 klawisz wybrania (select key)
key_send kEND *7 przesuniêty klawisz end
key_seol kEOL *8 przesuniêty klawisz czyszczenia do koñca linii
key_sexit kEXT *9 przesuniêty klawisz exit (zakoñczenia)
key_sf kind kF klawisz przewijania w przód
key_sfind kFND *0 przesuniêty klawisz find (szukania)
key_shelp kHLP #1 przesuniêty klawisz help (pomocy)
key_shome kHOM #2 przesuniêty klawisz home
key_sic kIC #3 przesuniêty klawisz wstawiania znaku
key_sleft kLFT #4 przesuniêta strza³ka w lewo
key_smessage kMSG %a przesuniêty klawisz message (komunikatu)
key_smove kMOV %b przesuniêty klawisz move (przemieszczenia)
key_snext kNXT %c przesuniêty klawisz next
key_soptions kOPT %d przesuniêty klawisz options (opcji)
key_sprevious kPRV %e przesuniêty klawisz previous (poprzedni)
key_sprint kPRT %f przesuniêty klawisz print (drukowania)
key_sr kri kR klawisz przewijania wstecz
key_sredo kRDO %g przesuniêty klawisz redo (odtworzenia)
key_sreplace kRPL %h przesuniêty klawisz replace (podmienienia)
key_sright kRIT %i przesuniêta strza³ka w prawo
key_srsume kRES %j przesuniêty klawisz resume (wznowienia)
key_ssave kSAV !1 przesuniêty klawisz save (zapisania)
key_ssuspend kSPD !2 przesuniêty klawisz suspend (zawieszenia)
key_stab khts kT klawisz ustawienia tabulacji (set-tab key)
key_sundo kUND !3 przesuniêty klawisz undo (cofniêcia)
key_suspend kspd &7 klawisz suspend (zawieszenia)
key_undo kund &8 klawisz undo (cofniêcia)
key_up kcuu1 ku strza³ka w górê
keypad_local rmkx ke zakoñcz tryb 'keyboard_transmit'
keypad_xmit smkx ks wejd¼ w tryb 'keyboard_transmit'
lab_f0 lf0 l0 etykieta na klawiszu f0 to nie f0
lab_f1 lf1 l1 etykieta na klawiszu f1 to nie f1
lab_f10 lf10 la etykieta na klawiszu f10 to nie f10
lab_f2 lf2 l2 etykieta na klawiszu f2 to nie f2
lab_f3 lf3 l3 etykieta na klawiszu f3 to nie f3
lab_f4 lf4 l4 etykieta na klawiszu f4 to nie f4
lab_f5 lf5 l5 etykieta na klawiszu f5 to nie f5
lab_f6 lf6 l6 etykieta na klawiszu f6 to nie f6
lab_f7 lf7 l7 etykieta na klawiszu f7 to nie f7
lab_f8 lf8 l8 etykieta na klawiszu f8 to nie f8
lab_f9 lf9 l9 etykieta na klawiszu f9 to nie f9
label_format fln Lf format etykiety
label_off rmln LF wy³±cz miêkkie etykiety
label_on smln LO w³±cz miêkkie etykiety
meta_off rmm mo wy³±cz tryb meta
meta_on smm mm w³±cz tryb meta (w³±czony 8 bit)
micro_column_address mhpa ZY podobne do column_address w trybie micro mode
micro_down mcud1 ZZ podobne do cursor_down w trybie micro mode
micro_left mcub1 Za podobne do cursor_left w trybie micro mode
micro_right mcuf1 Zb podobne do cursor_right w trybie micro mode
micro_row_address mvpa Zc podobne do row_address w trybie micro mode
micro_up mcuu1 Zd podobne do cursor_up w trybie micro mode
newline nel nw nowa linia (zachowuj siê jak cr z lf)
order_of_pins porder Ze dopasuj bity programowe do igie³ g³owicy drukuj±cej
orig_colors oc oc ustaw wszystkie pary kolorów na warto¶ci oryginalne
orig_pair op op ustaw domy¶ln± parê na warto¶æ oryginaln±
pad_char pad pc znak wype³niania (zamiast zera)
parm_dch dch DC kasuj #1 znaków (P*)
parm_delete_line dl DL kasuj #1 linii (P*)
parm_down_cursor cud DO w dó³ o #1 linii (P*)
parm_down_micro mcud Zf podobne do parm_down_cursor w trybie micro mode
parm_ich ich IC wstaw #1 znaków (P*)
parm_index indn SF przewiñ w przód o #1 linii (P)
parm_insert_line il AL wstaw #1 linii (P*)
parm_left_cursor cub LE przesuñ #1 znaków w lewo (P)
parm_left_micro mcub Zg podobne do parm_left_cursor w trybie micro mode
parm_right_cursor cuf RI przesuñ #1 znaków w prawo (P*)
parm_right_micro mcuf Zh podobne do parm_right_cursor w trybie micro mode
parm_rindex rin SR przewiñ wstecz o #1 linii (P)
parm_up_cursor cuu UP przejd¼ w górê o #1 linii (P*)
parm_up_micro mcuu Zi podobne do parm_up_cursor w trybie micro mode
pkey_key pfkey pk zaprogramuj klawisz funkcyjny #1 na wysy³anie ³añcucha #2
pkey_local pfloc pl zaprogramuj klawisz funkcyjny #1 na wykonywanie ³añcucha #2
pkey_xmit pfx px zaprogramuj klawisz funkcyjny #1 na transmitowanie ³añcucha #2
plab_norm pln pn zaprogramuj etykietê #2 na pokazywanie ³añcucha #2
print_screen mc0 ps drukuj zawarto¶æ ekranu
prtr_non mc5p pO w³±cz drukarkê na #1 bajtów
prtr_off mc4 pf wy³±cz drukarkê
prtr_on mc5 po w³±cz drukarkê
pulse pulse PU wybierz wydzwanianie pulsowe
quick_dial qdial QD wykrêæ numer #1 bez sprawdzania
remove_clock rmclk RC usuñ zegarek
repeat_char rep rp powtórz znak #1 #2 razy (P*)
req_for_input rfi RF wy¶lij nastêpny znak wej¶ciowy (dla pty)
reset_1string rs1 r1 ³añcuch resetowania
reset_2string rs2 r2 ³añcuch resetowania
reset_3string rs3 r3 ³añcuch resetowania
reset_file rf rf nazwa pliku resetowania
restore_cursor rc rc odtwórz pozycjê kursora na ostatnie save_cursor
row_address vpa cv absolutna pozycja pionowa #1 (P)
save_cursor sc sc zapisz bie¿±c± pozycjê kursora (P)
scroll_forward ind sf przewiñ tekst w górê (P)
scroll_reverse ri sr przewiñ tekst w dó³ (P)
select_char_set scs Zj wybierz zestaw znaków
set_attributes sgr sa zdefiniuj atrybuty wideo #1-#9 (PG9)
set_background setb Sb Ustaw kolor t³a #1
set_bottom_margin smgb Zk ustaw dolny margines na bie¿±cej linii
set_bottom_margin_parm smgbp Zl ustaw dolny margines na linii #1 lub #2 linii od do³u
set_clock sclk SC ustaw zegarek na godzinê #1, minut #2, #3 sekund
set_color_pair scp sp ustaw bie¿±c± parê kolorów na #1
set_foreground setf Sf ustaw kolor #1
set_left_margin smgl ML ustaw lewy miêkki margines na bie¿±cej kolumnie
set_left_margin_parm smglp Zm ustaw lewy (prawy) margines na kolumnie #1 (#2)
set_right_margin smgr MR ustaw prawy miêkki margines na bie¿±cej kolumnie
set_right_margin_parm smgrp Zn ustaw prawy margines na kolumnie #1
set_tab hts st ustaw tabulacjê w ka¿dym wierszu, bie¿±ca kolumna (?)
set_top_margin smgt Zo ustaw górny margines na bie¿±cej linii
set_top_margin_parm smgtp Zp ustaw górny (dolny) margines w wierszu #1 (#2)
set_window wind wi bie¿±ce okno to linie #1-#2 i kolumny #3-#4
start_bit_image sbim Zq zacznij drukowaæ grafikê bitow±
start_char_set_def scsd Zr rozpocznij definicjê zestawu znaków
stop_bit_image rbim Zs przestañ drukowaæ grafikê bitow±
stop_char_set_def rcsd Zt zakoñcz definicjê zestawu znaków
subscript_characters subcs Zu lista indeksowalnych dolnie znaków
superscript_characters supcs Zv lista indeksowalnych górnie znaków
tab ht ta tabuluj do nastêpnego (sprzêtowego) 8-spacjowego tabulatora
these_cause_cr docr Zw drukowanie dowolnego z nich spowoduje CR
to_status_line tsl ts przemie¶æ siê do linii statusu
tone tone TO wybierz wydzwanianie tonowe
underline_char uc uc podkre¶l znak i przesuñ siê za niego
up_half_line hu hu pó³ linii w górê
user0 u0 u0 ³añcuch u¿ytkownika #0
user1 u1 u1 ³añcuch u¿ytkownika #1
user2 u2 u2 ³añcuch u¿ytkownika #2
user3 u3 u3 ³añcuch u¿ytkownika #3
user4 u4 u4 ³añcuch u¿ytkownika #4
user5 u5 u5 ³añcuch u¿ytkownika #5
user6 u6 u6 ³añcuch u¿ytkownika #6
user7 u7 u7 ³añcuch u¿ytkownika #7
user8 u8 u8 ³añcuch u¿ytkownika #8
user9 u9 u9 ³añcuch u¿ytkownika #9
wait_tone wait WA czekaj na ton dzwonienia (dialtone)
xoff_character xoffc XF znak XOFF
xon_character xonc XN znak XON
zero_motion zerom Zx brak przemieszczenia dla kolejnego znaku

Nastêpuj±ce w³a¶ciwo¶ci ³añcuchowe istniej± w strukturze term SVr4.0, lecz pocz±tkowo nie by³y opisane w podrêczniku man.

Zmienna Nazwa- Kod Opis
£añcuchowa w³a¶æ. TCap
alt_scancode_esc scesa S8 alternatywny escape dla emulacji scancode
bit_image_carriage_return bicr Yv przemie¶æ siê na pocz±tek wiersza
bit_image_newline binel Zz przemie¶æ siê do nastêpnego wiersza obrazu bitowego
bit_image_repeat birep Xy powtórz komórkê #1 obrazu bitowego #2 razy
char_set_names csnm Zy wymieñ nazwy zestawów znaków
code_set_init csin ci inicjalizuj sekwencjê dla wielokrotnych zestawów kodów
color_names colornm Yw podaj nazwê dla koloru #1
define_bit_image_region defbi Yx definiuj prostok±tny region obrazu bitowego
device_type devt dv wska¿ obs³ugê jêzyka/zestawu kodów
display_pc_char dispc S1 wy¶wietl znak PC
end_bit_image_region endbi Yy zakoñcz region obrazu bitowego
enter_pc_charset_mode smpch S2 wejd¼ w tryb wy¶wietlania PC
enter_scancode_mode smsc S4 wejd¼ w tryb scancode PC
exit_pc_charset_mode rmpch S3 zakoñcz tryb wy¶wietlania znaków PC
exit_scancode_mode rmsc S5 zakoñcz tryb scancode PC
get_mouse getm Gm curses powinny odbieraæ zdarzenia myszy
key_mouse kmous Km pojawi³o siê zdarzenie myszy
mouse_info minfo Mi informacja o statusie myszy
pc_term_options pctrm S6 opcje terminala PC
pkey_plab pfxl xl zaprogramuj klawisz funkcyjny #1 na wpisywanie ³añcucha #2 i pokazywanie ³añcucha #3.
req_mouse_pos reqmp RQ za¿±daj pozycji myszy
scancode_escape scesc S7 escape dla emulacji scancode
set0_des_seq s0ds s0 przesuñ do zestawu kodów 0 (zestaw EUC 0, ASCII)
set1_des_seq s1ds s1 przesuñ do zestawu kodów 1
set2_des_seq s2ds s2 przesuñ do zestawu kodów 2
set3_des_seq s3ds s3 przesuñ do zestawu kodów 3
set_a_background setab AB ustaw kolor t³a przy u¿yciu sekwencji specjalnej ANSI
set_a_foreground setaf AF ustaw kolor pierwszego planu przy u¿yciu sekwencji specjalnej ANSI
set_color_band setcolor Yz Change to ribbon color #1 (?)
set_lr_margin smglr ML ustaw lewy i prawy margines na #1, #2
set_page_length slines YZ ustaw rozmiar strony na #1 linii
set_tb_margin smgtb MT ustawia górny i dolny margines na #1, #2

Standard XSI curses doda³ te oto. Pochodz± one z niektórych po-4.1 wersji curses z Systemu V, np. Solaris 2.5 i IRIX 6.x. Nazwy termcapu ncurses zosta³y dla nich wynalezione; wed³ug standardu XSI nie maj± one nazw termcap. Je¶li twoje skompilowane wpisy terminfo ich u¿ywaj±, mog± one nie byæ binarnie kompatybilne z wpisami System V po SVr4.1; Strze¿ siê!

Zmienna Nazwa- Kod Opis
³añcuchowa w³a¶æ. Tcap
enter_horizontal_hl_mode ehhlm Xh wejd¼ w tryb poprzecznego pod¶wietlenia
enter_left_hl_mode elhlm Xl wejd¼ w tryb lewego pod¶wietlenia
enter_low_hl_mode elohlm Xo wejd¼ w tryb niskiego pod¶wietlenia
enter_right_hl_mode erhlm Xr wejd¼ w tryb prawego pod¶wietlenia
enter_top_hl_mode ethlm Xt wejd¼ w tryb górnego pod¶wietlenia
enter_vertical_hl_mode evhlm Xv wejd¼ w tryb pod¶wietlenia pionowego
set_a_attributes sgr1 sA zdefiniuj drugi zestaw atrybutów wideo #1-#6
set_pglen_inch slength sL YI ustaw d³ugo¶æ strony na #1 setnej cala

Przyk³adowy wpis

Nastêpuj±cy opis, przeznaczony dla terminala ANSI jest reprezentatywn± próbk± opisu wygl±du nowoczesnych terminali.

 
 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,
 

Wpisy mog± siê ci±gn±æ na wiele linii dziêki poprzedzaniu kolejnych linii bia³ymi spacjami (poza pierwsz± lini±). Komentarze mo¿na za³±czaæ w poszczególnych liniach przy u¿yciu ``#''. W³a¶ciwo¶ci w terminfo wystêpuj± jako trzy typy: W³a¶ciwo¶ci logiczne, okreslaj±ce czy terminal ma jak±¶ w³a¶ciwo¶æ; w³a¶ciwo¶ci numeryczne, okre¶laj±ce rozmiar terminala, opó¼nieñ; w³a¶ciwo¶ci ³añcuchowe, okre¶laj±ce sekwencje u¿ywane do dokonywania okre¶lonych operacji terminalowych.

Typy w³a¶ciwo¶ci

Wszystkie w³a¶ciwo¶ci maj± nazwy. Na przyk³ad fakt, ¿e terminale ANSI maj± automatyczne marginesy (tj. automatyczny return i lf po osi±gniêciu koñca linii) jest okre¶lany w³a¶ciwo¶ci± am. Z tej przyczyny opis ansi zawiera am. W³a¶ciwo¶ci numeryczne maj± doklejony znak `#' i warto¶æ dodatni±. Tak wiêc cols, okre¶laj±ce liczbê kolumn terminala, w przypadku ansi ma `80'. Warto¶ci w³a¶ciwo¶ci numerycznych mo¿na podawaæ dziesiêtnie, ósemkowo lub szesnastkowo, uzywaj±c konwencji z jêzyka C (np. 255, 0377, 0xff i 0xFF).

W³a¶ciwo¶ci napisowe, takie jak el (sekwencja czyszczenia do koñca linii) s± podawane w kodzie dwuznakowym--najpierw jest `=', potem ³añcuch, koñcz±cyc siê znakiem `,'.

Dla ³atwego kodowania znaków udostêpnione s± we w³a¶ciwo¶ciach o warto¶ciach ³añcuchowych sekwencje specjalne. \E i \e odnosz± siê do znaku ESCAPE, ^x odnosi siê do control-x, a sekwencje \n \l \r \t \b \f \s odpowiadaj± nowej linii, line-feed, powrotowi karetki, tabulacji, kasownikowi (backspace), form-feed, i spacji. Inne sekwencje specjalne to m.in. \^ dla ^, \\ dla \, \, dla przecinka, \: dla :, i \0 for zera (null). (\0 daje \200, co nie koñczy ³añcucha, lecz zachowuje siê jak znak null na wiêkszo¶ci terminali o ile podane jest CS7. Zobacz stty(1).) Znaki mog± byæ te¿ podawane jako trzy cyfry ósemkowe po \.

We w³a¶ciwo¶ci ³añcuchowej mo¿e wystêpowaæ opó¼nienie, wyra¿one w milisekundach. Jest ono ujmowane w nawiasy $<..>, np. el=\EK$<5>. Znaki wype³nienia, zapewniaj±ce opó¼nienie produkuje tputs. Opó¼nienie musi byæ liczb± o maksymalnie jednym miejscu precyzji dziesiêtnej; mo¿e zawieraæ przyrostki `*', `/' lub obydwa. `*' znaczy, ¿e wymagane wype³nienie jest proporcjonalne do liczby linii, których dotyczy operacja, a podany rozmiar wymagany jest na ka¿d± "dotkniêt± jednostkê". (w przypadku wstawiania znaku, wspó³czynnik jest wci±¿ liczb± dotkniêtych linii.) Zazwyczaj wype³nianie jest zalecane je¶li urz±dzenie ma w³a¶ciwo¶æ xon; jest ono [wtedy] u¿ywane do obliczania kosztów, lecz nie wywo³uje opó¼nieñ. Znak `/' wskazuje, ¿e wype³nianie jest obowi±zkowe i wymusza opó¼nienie danej liczby milisekund, nawet na urz±dzeniach, w których obecne jest xon, okre¶laj±ce sterowanie przep³ywu.

[Wype³nianie jest u¿ywane na starych, wolnych terminalach bez sterowania przep³ywem. Istnieje dlatego, ¿e gdy nie ma sterowania, bufory wej¶ciowe urz±dzenia mog± siê przepe³niæ i pewne znaki mog± siê zgubiæ. Wype³nienie takiego niepewnego okresu nieznacz±cymi znakami wype³nienia zapewnia, ¿e istotne informacje nie zostan± utracone--utracone zostan± jedynie ignorowane znaki wype³nienia. (przyp. t³um.)]

Czasem pewne w³a¶ciwo¶ci musz± byæ wykomentowane. Aby to zrobiæ, wystarczy przed nazw± umie¶ciæ kropkê. Na przyk³ad zrobiono tak w drugim ind z powy¿szego przyk³adu.

Pobieranie skompilowanych opisów

Je¶li ustawiona jest zmienna ¶rodowiskowa TERMINFO, to jest ona u¿ywana jako ¶cie¿ka do katalogu, zawieraj±cego skompilowany opis tego, nad czym pracujesz. Przeszukiwany jest tylko ten katalog.

W przeciwnym przypadku, wersja ncurses czytnika terminfo bêdzie szukaæ skompilowanego opisu w katalogu $HOME/.terminfo. Je¶li nic tam nie bêdzie, dalsze poszukiwania polec± wed³ug zmiennej ¶rodowiskowej TERMINFO_DIRS (zawieraj±cej rozdzielon± dwukropkami listê katalogów) (pusty wpis jest rozumiany jako komenda szukania /usr/share/terminfo). Je¶li i tu nic nie zostanie znalezione, pobieranie koñczy siê niepowodzeniem.

Je¶li nie ustawiono ani TERMINFO, ani TERMINFO_DIRS, szukanie odbêdzie siê w systemowym katalogu terminfo, /usr/share/terminfo.

(Pod curses z Systemu V nie s± obs³ugiwane pliki $HOME/.terminfo ani zmienna TERMINFO_DIRS.)

Przygotowywanie opisów

Wyja¶nimy teraz jak przygotowywaæ opisy terminali. Najefektywniejszym sposobem jest wykorzystanie podobnego terminala z terminfo i budowanie opisu stopniowo, wykorzystuj±c czê¶ciowe opisy z u¿yciem vi lub innego zorientowanego ekranowo programu, sprawdzaj±c je w ten sposób. Miej ¶wiadomo¶æ, ¿e nietypowy terminal mo¿e wykazywaæ ubytki w stosunku do opisuj±cego go pliku terminfo lub, ¿e kod testuj±cego programu jest nieprawid³owy.

Aby ustawiæ prawid³owo wype³nianie (padding) dla wstawiania linii (je¶li producent terminala tego nie udokumentowa³), mo¿na wykonaæ test: edytuj du¿y plik przy 9600 bodów, nastêpnie skasuj ok. 16 linii ze ¶rodka ekranu, potem naci¶nij kilka razy szybko `u'. Je¶li terminal siê za¶mieci, wymagane jest wiêksze wype³nianie. Podobny test mo¿na zrobiæ do wstawiania znaku.

Podstawowe w³a¶ciwo¶ci

Liczba kolumn terminala jest okre¶lana w³a¶ciwo¶ci± numeryczn± cols. Je¶li terminal jest CRT, to liczba linii ekranu jest podawana we w³a¶ciwo¶ci lines. Je¶li terminal zawija linie po doj¶ciu do prawego marignesu, to powinien posiadaæ w³a¶ciwo¶æ am. Je¶li terminal mo¿e czy¶ciæ swój ekran, pozostawiaj±c kursor w pozycji domowej, to powinno to byæ okre¶lone przez w³a¶ciwo¶æ ³añcuchow± clear. Je¶li terminal wykonuje nadstukiwanie (a nie czy¶ci pozycji nadstukiwanej), to powinien posiadaæ w³a¶ciwo¶æ os. Je¶li terminal jest terminalem drukuj±cym, bez jednostki soft copy, to powinien mieæ zarówno hc jak i os. (os dotyczy terminali z zakresem przechowywania, jak w serii TEKTRONIX 4010 ale tak¿e czy w terminalach hardcopy i APL.) Je¶li istnieje kod, przenosz±cy kursor do lewego krañca bie¿±cego wiersza, to powinien byæ on podany jako cr. (Zwykle jest to powrót karetki, control M.) Je¶li istnieje kod dzwonka (bell, beep, itp.), to powinien byæ on podany jako bel.

Je¶li istnieje kod, przesuwaj±cy kursor o jedn± pozycjê w lewo (jak backspace), to w³a¶ciwo¶æ ta powinna byæ podana jako cub1. Podobnie, kod przesuwaj±cy w prawo, górê i dó³ powinien byæ podany jako cuf1, cuu1, i cud1. Te lokalne ruchy kursora nie powinny zmieniaæ tekstu, który mijaj±, np. normalnie nie u¿ywa siê `cuf1= ', gdy¿ spacja skasowa³a by znak.

Wa¿nym spostrze¿eniem w tym momencie jest fakt, ¿e lokalne ruchy kursora, zakodowane w terminfo nie s± zdefiniowane w lewych i górnych krañcach terminala CRT. Programy nie powinny wiêc u¿ywaæ backspace na lewym krañcu, chyba ¿e podane jest bw. Podobnie, nie powinny próbowaæ i¶æ w górê z pierwszej linii. Aby przewin±æ tekst do góry, program powinien przej¶æ do dolnego, lewego naro¿nika ekranu i wys³aæ ³añcuch ind (index).

Aby przewin±æ tekst w dó³, program idzie do lewego górnego naro¿nika i wysy³a ³añcuch ri (reverse index). £añcuchy ind i ri nie s± zdefiniowane w przypadku przebywania w nieodpowiednich miejscach ekranu.

Wersjami parametryzowanymi sekwencji przewijaj±cych s± indn i rin, które maj± tak± sam± semantykê jak ind i ri, lecz dodatkowo pobieraj± parametr i przewijaj± tyle w³a¶nie linii. S± one równie¿ niezdefiniowane w nieodpowiednich obszarach ekranu.

W³a¶ciwo¶æ am mówi czy kursor trzyma siê prawego krañca ekranu po wys³aniu tekstu, lecz niekoniecznie tyczy siê cuf1 z ostatniej kolumny. Jedyny ruch lokalny, który jest zdefiniowany z lewego krañca przy podaniu bw to cub1, który przejdzie do prawego krañca poprzedniego wiersza. Je¶li bw nie jest podane, efekt jest niezdefiniowany. Jest to przydatne np. do rysowania ramki wokó³ krañców ekranu. Je¶li terminal ma prze³±czan± w³a¶ciwo¶æ automatycznych marginesów, to plik terminfo zwykle przyjmuje, ¿e jest ona w³±czona, tj. am. Je¶li terminal ma polecenie, które przechodzi do pierwszej kolumny nastêpnej linii, to komenda ta mo¿e byæ podana jako nel (nowa linia). Nie ma znaczenia czy polecenie to czy¶ci resztê bie¿±cej linii, wiêc je¶li terminal nie posiada cr i lf to mo¿e wci±¿ uda siê z³o¿yæ z czego¶ dzia³aj±cy nel.

W³a¶ciwo¶ci te wystarczaj± do opisania terminala hard-copy i ``glass-tty''. W konsekwencji, model teletype 33 jest opisany jako

         33|tty33|tty|model 33 teletype,
         bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
 
 a Lear Siegler ADM-3 jako
 
         adm3|3|lsi adm3,
         am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
         ind=^J, lines#24,
 

£añcuchy parametryzowane

Adresowanie kursora i inne ³añcychy wymagaj±ce parametrów terminala s± opisaywane przez w³a¶ciwo¶æ parametryzowanego ³añcucha, w której wystêpuj± sekwencje specjalne typu printf(3S), jak %x. Na przyk³ad aby adresowaæ kursor, podana jest w³a¶ciwo¶æ cup, u¿ywaj±ca dwóch parametrów: wiersza i kolumny adresowania. (wiersze i kolumny sa numerowane od zera i odnosz± siê do fizycznego ekranu, widzianego przez u¿ytkownika, a nie do niewidzialnego obszaru pamiêci.) Je¶li terminal posiada zwi±zane z pamiêci± adresowanie kursora, to mo¿e to byæ wskazywane przez mrcup.

Mechanizm parametrów u¿ywa stosu i specjalnych kodów % do jego obs³ugi. Zazwyczaj sekwencja powoduje wepchniêcie jednego z parametrów na stos, a nastêpnie jego wydrukowanie w pewnym formacie. Czêsto wymagane s± bardziej z³o¿one operacje.

Kodowania % maj± nastêpuj±ce znaczenia:

 
      %%        daje `%'
      %[[:]flagi][szeroko¶æ[.precyzja]][doxXs]
                podobnie jak w printf, flagi to [-+#] i spacja
      %c        drukowanie pop() daje %c
 
      %p[1-9]   wepchnij i'ty parm
      %P[a-z]   ustaw zmienn± dynamiczn± [a-z] na pop()
      %g[a-z]   pobierz dynamiczn± zmienn± [a-z] i wepchnij j±
      %P[A-Z]   ustaw zmienn± statyczn± [a-z] na pop()
      %g[A-Z]   pobierz zmienn± statyczn± [a-z] i wepchnij j±
      %'c'      sta³a znakowa c
      %{nn}     sta³a ca³kowita nn
      %l        wepchnij strlen(pop)
 
      %+ %- %* %/ %m
                 arytmetyka (%m to mod): push(pop() op pop())
      %& %| %^  operacje bitowe: push(pop() op pop())
      %= %> %<  operacje logiczne: push(pop() op pop())
      %A, %O    operacje logiczne and i or (dla warunków)
      %! %~     jednoargumentowe operacje push(op pop())
      %i        dodaj 1 do pierwszych dwóch parm (terminale ANSI)
 
      %? expr %t czê¶æthen %e czê¶æelse %;
                if-then-else, %e czê¶æelse jest opcjonalna.
                Dopuszalne s± else-if a'la Algol 68:
                %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
                ci s± warunkami, bi s± cia³ami.
 

Operacje binarne s± w postaci postfiksowej, z operandami w typowej kolejno¶ci. Znaczy to, ¿e aby uzyskaæ x-5, mo¿na u¿yæ "%gx%{5}%-". Zmienne %P i %g s± sta³e podczas analizy ³añcucha specjalnego.

Rozwa¿ GP2645, w którym aby dostaæ siê do 3 wiersza i 12 kolumny nale¿a³o wys³aæ \E&a12c03Y, wype³nionego na 6 milisekund. Zauwa¿, ¿e kolejno¶æ wierszy i kolumn jest tu w inwersji i ¿e s± one drukowane jako dwie cyfry. W efekcie jego w³a¶ciwo¶æ cup to ``cup=6\E&%p2%2dc%p1%2dY''.

Microterm ACT-IV wymaga poprzedzenia bie¿±cego wiersza i kolumny znakiem ^T i zakodowania wiersza i kolumny binarnie, ``cup=^T%p1%c%p2%c''. Terminale, u¿ywaj±ce ``%c'' musz± byæ w stanie cofn±æ (backskpace) kursor (cub1) i przesuwaæ go o jedn± liniê w górê na ekranie (cuu1). Jest to konieczne, gdy¿ nie zawsze bezpiecznie jest transmitowaæ \n, ^D i \r, poniewa¿ system mo¿e je zmieniæ lub pomin±æ. (funkcje biblioteczne, obs³uguj±ce terminfo ustawiaj± tryby tty tak, aby tabulacje nigdy nie by³y rozwijane, wiêc \t mo¿e wysy³aæ bez obaw. Jest to sprawa pierwszej wagi dla Ann Arbor 4080.)

Ostatnim przyk³adem jest LSI ADM-3a, który u¿ywa offsetów wiersza i kolumny ze spacj±, ``cup=\E=%p1%' '%+%c%p2%' '%+%c''. Po wys³aniu `\E=', pierwszy parametr jest wpychany na stos, wpychana jest warto¶æ ASCII dla spacji (32), s± one nastêpnie dodawane (wpychanie na stos ich sumy i zamiana dwóch poprzednich warto¶ci) i produkowane jako znak. Nastêpnie to samo jest wykonywane dla drugiego parametru. Mo¿liwe s± równie¿ bardziej z³o¿one dzia³ania arytmetyczne na stosie.

Ruchy kursora

Je¶li terminal posiada szybki sposób na zerowanie pozycji kursora (na lewy górny naro¿nik ekranu), to mo¿e to byæ podane jako home; podobnie, szybkim sposobem dostania siê do dolnego lewego naro¿nika jest ll; mo¿e to wykonywaæ przej¶cie w górê z pomoc± cuu1 z pozycji zerowej, lecz program samodzielnie nie powinien tego robiæ (chyba ¿e ll tak robi), gdy¿ aplikacja nie mo¿e nic zak³adaæ o rezultacie przej¶cia w górê z pozycji zerowej. Zauwa¿, ¿e zerowanie pozycji jest równowa¿ne adresowaniu na (0,0): na lewy górny naro¿nik ekranu, a nie pamiêci. (Z tej przyczyny sekwencja \EH terminali HP nie mo¿e byæ u¿ywana jako home.)

Je¶li terminal posiada bezwzglêdne (absolute) adresowanie wierszy lub kolumn, to mo¿e to byæ podane jako pojedyncze w³a¶ciwo¶ci parametryczne, hpa (bezwzglêdna pozycja pozioma) i vpa (bezwzglêdna pozycja pionowa). Czasami s± one krótsze ni¿ bardziej ogólne sekwencje dwuparametrowe (np. dla hp2645) i mog± byæ u¿ywane chêtniej ni¿ cup. Je¶li istniej± sparametryzowane ruchy lokalne (np. przesuñ n spacji w prawo), to mog± byæ one podane jako cud, cub, cuf i cuu z pojedynczym parametrem, okre¶laj±cym ilo¶æ spacji przesuniêcia. Sekwencje te s± przydatne je¶li terminal nie ma cup, tak jak np. TEKTRONIX 4025.

Je¶li terminal podczas przcy z programem, u¿ywaj±cym w³a¶ciwo¶ci musi byæ w specjalnym trybie dzia³ania, to kody wchodzenia i wychodzenia z tego trybu mog± byæ podane jako smcup i rmcup. Przysz³o to m.in. z terminali takich jak Concept, który mia³ wiêcej ni¿ jedn± stronê pamiêci. Je¶li terminal ma tylko zwi±zane z pamiêci± adresowanie kursora (a nie zwi±zane z ekranem) to jednoekranowe okno musi byæ poprawione w celu wymuszenia poprawnego dzia³ania adresowania kursora. Jest to u¿ywane równie¿ dla TEKTRONIX 4025, gdzie smcup ustawia znak komendy na ten, u¿ywany przez terminfo. Je¶li sekwencja smcup nie odtworzy ekranu po wys³aniu sekwencji rmcup (do stanu sprzed wys³ania rmcup), podaj nrrmc.

Czyszczenie obszarów

Je¶li terminal mo¿e czy¶ciæ ekran od bie¿±cej pozycji do koñca linii, pozostawiaj±c kursor na swoim miejscu, to powinno to byæ okre¶lone jako el. Je¶li terminal mo¿e czy¶ciæ ekran od koñca linii, do bie¿±cej pozycji, pozostawiaj±c kursor na miejscu, to powinno to byæ okre¶lone jako el1. Je¶li terminal mo¿e czy¶ciæ ekran od bie¿±cej pozycji do koñca wy¶wietlacza, to powinno to byæ okre¶lane jako ed. Ed jest zdefiniowane jedynie dla pierwszej kolumny linii. (Mo¿e wiêc byæ symulowane przez ¿±danie kasowania wielkiej liczby linii je¶li prawidziwe ed nie jest dostêpne.)

Wstawianie/kasowanie linii i ruchy pionowe

Je¶li terminal mo¿e otworzyæ now± pust± liniê przed lini±, w której znajduje siê kursor, to powinno to byæ okreslone jako il1; jest to obs³ugiwane tylko z pierwszej pozycji w linii. Kursor musi potem pojawiæ siê na nowej, pustej linii. Je¶li terminal mo¿e kasowaæ liniê, na której znajduje siê kursor, to powinno to byæ okre¶lone przez dl1; mo¿e to byæ obs³ugiwane tylko z pierwszej pozycji na kasowanej linii. Wersje il1 i dl1, które mog± pobieraæ parametr, okre¶laj±cy ile linii skasowaæ lub wstawiæ, mog± byæ podawane jako il i dl.

Je¶li terminal ma ustawialny region przewijania (jak vt100), to komenda ustawiaj±ca to mo¿e byæ opisana z pomoc± w³a¶ciwo¶ci csr, pobieraj±cej dwa parametry: górn± i doln± liniê regionu przewijania. Pozycja kursora jest po u¿yciu tej komendy niestety niezdefiniowana.

Efekt wstawienia lub skasowania linii mo¿na osi±gn±æ z u¿yciem csr na odpowiednio wybranym regionie; komendy sc i rc (zachowania i odtworzenia kursora) mog± byæ wówczas przydatne do zapewnienia, ¿e zestawiony ³añcuch nie przesunie kursora. (Zauwa¿, ¿e biblioteka ncurses(3X) dokonuje takiej syntezy automatycznie, wiêc nie musisz komponowaæ ³añcuchów wstawienia/skasowania z u¿yciem csr).

Innym sposobem tworzenia wstawiania i kasowania mo¿e byæ u¿ycie kombinacji w³a¶ciwo¶ci index i memory-lock, obecnych na niektórych terminalach (takich, jak HP-700/90, które jednak posiadaj± równie¿ insert/delete).

Wstawianie linii na górze lub u do³u ekranu mo¿e byæ dokonywane równie¿ z u¿yciem ri lub ind, co czêsto mo¿e siê okazaæ szybsze nawet od istniej±cych w³a¶ciwo¶ci.

Warto¶æ logiczna non_dest_scroll_region powinna byæ ustawiona je¶li ka¿de okno przewijaj±ce jest efektywnie widokiem na obraz o rozmiarze ekranu. Aby przetestowaæ istnienie tej w³a¶ciwo¶ci, utwórz w ¶rodku ekranu region przewijania, napisz co¶ na dolnej linii, przesuñ kursor na pocz±tek regionu i wykonaj ri, a nastêpnie dl1 lub ind. Je¶li dane przewijane z do³u regionu ri pojawi± siê ponownie, to przewijanie nie jest destruktywne. Curses z Systemu V i XSI oczekuj±, ¿e ind, ri, indn i rin symuluj± przewijanie destruktywne; ich dokumentacja ostrzega by nie definiowaæ csr, chyba ¿e jest to prawda. Ta implementacja curses jest bardziej liberalna i dokona jawnego kasowania po przewiniêciu, je¶li zdefiniowane jest ndstr.

Je¶li terminal potrafi definiowaæ okno jako czê¶æ pamiêci, która wspó³pracuje ze wszystkimi komendami, to powinno byæ to okre¶lone przez parametryzowany ³añcuch wind. Cztery parametry to kolejno: pocz±tkowe i koñcowe linie pamiêci, pocz±tkowe oraz koñcz±ce kolumny pamiêci.

Je¶li terminal potrafi zachowywaæ pamiêæ wy¶wietlacza powy¿ej, to podana powinna byæ w³a¶ciwo¶æ da; je¶li zachowana mo¿e byæ pamiêæ wy¶wietlacza poni¿ej, to podana powinna byæ w³a¶ciwo¶æ db. Wskazuj± one, ¿e kasowanie linii lub przewijanie mo¿e spowodowaæ pojawienie siê niezerowych linii z do³u i ¿e przewijanie w ty³ z pomoc± ri mo¿e przynie¶æ niezerowe linie z góry.

Wstawianie/kasowanie znaku

Istniej± dwa podstawowe rodzaje inteligentnych terminali, je¶li braæ pod uwagê obs³ugê wstawiania/kasowania znaków opisywan± w terminfo. Najpopularniejsze operacje wstawiania/kasowania znaków tycz± tylko znaków w bie¿±cej linii i sztywno przesuwaj± znaki w kierunku jej koñca. Inne terminale, takie jak Concept 100 i Perkin Elmer Owl rozró¿niaj± spacje wstukane i niewstukane, przesuwaj±c przy wstawianiu/kasowaniu a¿ do najbli¿szej niewstukanej spacji, która jest nastêpnie albo kasowana, albo rozwijana na dwie niewstukane spacje. Rodzaj terminala mo¿na okre¶liæ przez wyczyszczenie ekranu i nastêpnie wpisanie tekstu, rozdzielonego ruchami kursora. Wstukaj przy u¿yciu ruchów kursora (nie spacji) ``abc    def''. Nastêpnie ustaw kursor przed ``abc'' i w³±cz terminal w tryb wstawiania. Je¶li wpisywanie znaków powoduje, ¿e reszta linii sztywno przesuwa siê w prawo, to terminal nie rozró¿nia spacji wstukanych od niewstukancyh. Je¶li ``abc'' przesunie siê do ``def'' które nastêpnie zacznie siê posuwaæ wraz z nim a¿ do koñca linii, to masz drugi rodzaj terminala. W tym wypadku powiniene¶ podaæ w³a¶ciwo¶æ in, która oznacza ``insert null''. Chocia¿ s± to logicznie dwa oddzielne atrybuty (jednoliniowy vs. wieloliniowy tryb wstawiania i specjalne traktowanie niewstukanych spacji), nie znale¼li¶my terminala, którego tryb wstawiania nie móg³by zostaæ opisany pojedynczym atrybutem.

Terminfo mo¿e opisywaæ zarówno terminale posiadaj±ce tryb wstawiania, jak i terminale, które wysy³aj± prost± sekwencjê do otwierania pustej pozycji w bie¿±cej linii. Jako smir podaje siê sekwencjê wchodzenia w tryb wstawiania. Jako rmir podaje siê sekwencje do wychodzenia z trybu wstawiania. Jako ich1 podaje siê sekwencjê, któr± nale¿y wys³aæ tu¿ przed wys³aniem wstawianego znaku. Wiêkszo¶æ terminali z prawdziwym trybem wstawiania nie daje ich1; terminale, które wysy³aj± sekwencje do otwierania pozycji ekranu podaj± j±.

Je¶li twój terminal posiada obydwie te w³a¶ciwo¶ci, to zwykle wybierany jest tryb wstawiania. Technicznie, nie powiniene¶ podawaæ obydwu, chyba ¿e terminal wymaga ich ³±cznego dzia³ania. Niektóre nie-curses-owe aplikacje mog± siê pogubiæ je¶li podane s± obydwie; symptomem s± podwojone znaki we wstawianiu u¿ywaj±cym od¶wie¿ania. Wymaganie to jest obecnie rzadkie; wiêkszo¶æ sekwencji ich nie wymaga poprzedzaj±cego smir, a wiêkszo¶æ trybów wstawiania smir nie wymaga ich1 przed ka¿dym znakiem. Dlatego curses zak³ada, ¿e tak w³a¶nie jest i u¿ywa albo rmir/smir albo ich/ich1 (ale nie obydwu). Je¶li musisz napisaæ opis dla ncurses, dla terminala, wymagaj±cego obydwu tych dzia³añ, za³±cz sekwencje rmir/smir w ich1.

Je¶li po wstawieniu wymagane jest dope³nienie, podaj je jako liczbê milisekund w ip (opcja ³añcuchowa). Wszelkie inne sekwencje, które wymagaj± wys³ania po wstawieniu pojedynczego znaku równie¿ mog± byæ podane w ip. Je¶li twój terminal wymaga zarówno umieszczenia w `trybie wstawiania' jak i specjalnego kodu do poprzedzania ka¿dego wstawianego znaku, to podane mog± byæ smir/rmir oraz ich1 i obydwie sekwencje zostan± u¿yte. W³a¶ciwo¶æ ich z jednym parametrem powtarza rezultat ich1 n-krotnie.

Je¶li miêdzy znakami wpisywanymi nie w trybie wstawiania wymagane jest wype³nianie, podaj je jako liczbê milisekund wype³niania w rmp(???).

Czasami konieczne jest przesuniêcie siê w trybie wstawiania, aby usun±æ znaki z tej samej linii (np. je¶li za pozycj± wstawiania znajduje siê tabulacja). Je¶li twój terminal zezwala na ruchy podczas przebywania w trybie wstawiania, to powinien mieæ w³a¶ciwo¶æ mir, przyspieszaj±c± w tym przypadku wstawianie. Pominiêcie mir ma wp³yw jedynie na szybko¶æ. Niektóre terminale (np. Datamedia) nie mog± mieæ mir, gdy¿ ich tryb wstawiania dzia³a tak, ¿e na to nie pozwala.

Do kasowania pojedynczego znaku mo¿na podaæ dch1, albo dch do kasowania z parametrem n, który mówi, by skasowaæ n znaków, lub sekwencje wchodzenia (smdc) i wychodzenia (rmdc) z trybu kasowania (dowolny tryb, którego terminal wymaga dla zadzia³ania dch1).

Komenda do kasowania n znaków (równowa¿na wypuszczeniu n spacji bez przesuwania kursora) mo¿e byæ okre¶lona jako ech z jednym parametrem.

Pod¶wietlanie, podkre¶lanie i wizualne dzwonki

Je¶li twój terminal ma jeden lub wiêcej rodzajów atrybutów wy¶wietlania, to mog± one byæ reprezentowane na wiele ró¿nych sposobów. Jedn± z postaci wy¶wietlacza powiniene¶ okre¶liæ jako tryb wyró¿niony (standout), reprezentuj±cy dobry, kontrastowy, ³atwy do odczytu format pod¶wietlania komunikatów o b³êdach i innych rzeczy wymagaj±cych zwrócenia uwagi. (Je¶li masz wybór, to dobrym pomys³em jest inwersja kolorów plus ¶rednie rozja¶nienie, lub te¿ sama inwersja.) Sekwencje, przeznaczone do wchodzenia i wychodzenia z trybu wyró¿nionego s± podawane jako smso i rmso. Je¶li kod zmiany na tryb wyró¿niony pozostawia na ekranie jedn± lub dwie spacje (jak w TVI 912 i Teleray 1061), to nale¿y podaæ xmc, okre¶laj±ce ile spacji jest pozostawianych.

Kody rozpoczynania podkre¶lenia i jego koñczenia mog± byæ podawane jako smul i rmul. Je¶li terminal posiada kod podkre¶lania bie¿±cego znaku i przesuwania kursora o jedn± pozycjê w prawo (jak w Microterm Mime), to mo¿e to byæ podane jako uc.

Inne w³a¶ciwo¶ci wchodzenia w ró¿ne tryby pod¶wietlenia to blink (migotanie) bold (wyt³uszczenie, lub rozja¶nienie) dim (¶rednia-jasno¶æ) invis (tekst niewidzialny, lub `spacjowanie') prot (chronione) rev (inwersja kolorów) sgr0 (wy³±cz wszystkie tryby atrybutów) smacs (wejd¼ w tryb alternatywnego zestawu znaków) i rmacs (wyjd¼ z trybu alternatywnego zestawu znaków). W³±czenie dowolnego z tych trybów w pojedynkê mo¿e lub mo¿e nie wy³±czyæ innych trybów.

Je¶li istnieje sekwencja do ustawiania kombinacji trybów, to powinna byæ podana jako sgr (ustaw atrybuty), i pobieraæ 9 parametrów. Ka¿dy z parametrów mo¿e byæ zerowy lub niezerowy, wskazuj±c tak czy odpowieni atrybut jest w³±czony czy nie. 9 parametrów to kolejno: wyró¿nienie, podkre¶lenie, inwersja, migotanie, ¶rednia-jasno¶æ, wyt³uszczenie, spacjowanie, chornienie, alternatywny zestaw znaków. Nie wszystkie tryby musz± byæ wspierane przez sgr, powinny byæ natomiast te, dla których istniej± oddzielne komendy atrybutów.

Na przyk³ad DEC vt220 wspiera wiêkszo¶æ trybów:

parametr tparm atrybut sekwencja specjalna

brak brak \E[0m

p1 wyró¿niony \E[0;1;7m

p2 podkre¶lony \E[0;4m

p3 inwersja \E[0;7m

p4 migotanie \E[0;5m

p5 ¶rednia-jasno¶æ niedostêpne

p6 wyt³uszczenie \E[0;1m

p7 niewidzialno¶æ \E[0;8m

p8 chroñ nieu¿ywane

p9 altznaki ^O (off) ^N (on)

Ka¿d± sekwencjê specjaln± rozpoczynamy od wy³±czenia wszelkich istniej±cych trybów, gdy¿ nie ma prostego sposobu na okre¶lenie czy s± aktywne. Tryb wyró¿nienia jest zestawiany jako kombinacja inwersji i wyt³uszczenia. Terminal vt220 ma tryb ochronny, lecz nie jest on wykorzystywany w sgr, gdy¿ chroni równie¿ znaki ekranu przed kasowaniami stacji. Tryb alternatywnego zestawu znaków jest te¿ inny; ró¿ni siê tym, ¿e jest albo ^O, albo ^N, zale¿nie czy jest wy³±czony czy w³±czony. Je¶li wszystkie tryby s± w³±czone, to wynikow± sekwencj± jest \E[0;1;4;5;7;8m^N.

Niektóre sekwencje s± wspólne dla ró¿nych trybów. Na przyk³ad ;7 jest produkowane dla prawdziwych p1 lub p3, tj. je¶li w³±czony jest tryb standout lub inwersji.

Spisanie powy¿szych sekwencji wraz z ich zale¿no¶ciami daje

sekwencja kiedy wypu¶ciæ translacja terminfo

\E[0 zawsze \E[0

;1 gdy p1 lub p6 %?%p1%p6%|%t;1%;

;4 gdy p2 %?%p2%|%t;4%;

;5 gdy p4 %?%p4%|%t;5%;

;7 gdy p1 lub p3 %?%p1%p3%|%t;7%;

;8 gdy p7 %?%p7%|%t;8%;

m zawsze m

^N lub ^O gdy p9 ^N, inaczej ^O %?%p9%t^N%e^O%;

Wstawienie tego wszystkiego do sekwencji sgr daje:

     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%;,
 

Pamiêtaj, ¿e je¶li podajesz sgr, to musisz te¿ podaæ sgr0.

Terminale z ``magic cookie'' (magiczne ciasteczko) (xmc) wystawiaj± specjalne ``ciasteczka'' gdy odbieraj± sekwencje ustawiania trybu, które w zasadzie wp³ywaj± na algorytm wy¶wietlania, a nie na dodatkowe bity dla ka¿dego znaku. Niektóre terminale, jak HP 2621 automatycznie wychodz± z trybu wyró¿nionego gdy kursor przechodzi do nowej linii, lub gdy jest przeadresowany. Programy u¿ywaj±ce trybu wyró¿nionego powinny z niego wychodziæ przed przesuniêciem kursora lub wys³aniem znaku nowej linii. Zwolnione mog± byæ z tego jedynie przy obecno¶ci w³a¶ciwo¶ci msgr, zapewniaj±cej, ¿e przemieszczanie siê w trybie wyró¿nionym jest bezpieczne.

Je¶li terminal posiada mechanizm zapalania ekranu dla sygnalizacji b³êdu (zamiennik dzwonka), to mo¿e to byæ podane jako flash. Nie mo¿e to przemieszczaæ kursora.

Je¶li kursor mo¿e byæ bardziej widoczny ni¿ zwykle, to podaj t± sekwencjê jako cvvis. Je¶li istnieje sposób na uniewidzialnienie kursora, to podaj to jako w³a¶ciwo¶æ civis. W³a¶ciwo¶æ cnorm powinna dawaæ mo¿liwo¶æ powrotu do normalnego kursora.

Je¶li twój terminal potrafi poprawnie generowaæ podkre¶lone znaki (bez specjalnych kodów), to je¶li [nawet] nie wykonuje nadstukiwania, powiniene¶ na³o¿yæ na niego w³a¶ciwo¶æ ul. Je¶li nadstukiwanie pozostawia widzialnym znak `pod spodem', to nale¿y podaæ w³a¶ciwo¶æ os. Je¶li nadstukiwania s± kasowalne spacj±, to powinno to byæ wskazane w³a¶ciwo¶ci± eo.

Keypad i klawisze funkcyjne

Je¶li terminal posiada keypad, który przesy³a kody przy naciskaniu klawiszy, to mo¿na podaæ te informacje. Zauwa¿, ¿e nie mo¿na obs³ugiwaæ terminali gdzie keypad dzia³a tylko lokalnie (tyczy siê to np. czê¶ci klawiszy HP 2621). Je¶li keypad mo¿na ustawiæ na przesy³anie, lub nieprzesy³anie, to nale¿y podaæ te kody jako smkx i rmkx. W przeciwnym wypadku zak³ada siê, ¿e keypad zawsze przesy³a kody. Kody przesy³ane przez strza³ki w lewo, prawo, górê, dó³ oraz klawisz home mog± byæ podawane jako kcub1, kcuf1, kcuu1, kcud1, i khome. Je¶li dostêpne s± klawisze funkcyjne, takie jak f0, f1, ..., f10, to ich kody mog± byæ podane jako kf0, kf1, ..., kf10. Je¶li klawisze te maj± inne etykiety ni¿ domy¶lne f0 do f10, to mo¿na je podaæ jako lf0, lf1, ...,fl10. Mo¿na równie¿ podaæ kody wysy³ane przez inne klawisze specjalne: kll (home down), kbs (backspace), ktbc (czy¶æ wszystkie tabulacje), kctab (czy¶æ tabulator w tej kolumnie), kclr (klawisz czyszczenia ekranu klub wymazywania), kdch1 (klawisz kasowania (delete)), kdl1 (kasowanie linii), krmir (wyj¶cie z trybu wstawiania), kel (czyszczenie do koñca linii), ked (czyszczenie do koñca ekranu), kich1 (wstaw znak, lub wejd¼ w tryb wstawiania), kil1 (wstaw liniê), knp (nastêpna strona (next page)), kpp (poprzednia strona (previous page)), kind (przewijaj w przód), kri (przewijaj w ty³), khts (ustaw w tej kolumnie tabulator). Dodatkowo, je¶li keypad posiada tablicê 3x3 klawiszy, zawieraj±c± 4 klawisze strza³ek, to pozosta³e piêæ klawiszy mo¿na okre¶liæ jako ka1, ka3, kb2, kc1 oraz kc3. Klawisze te s± przydatne gdy potrzebne s± efekty kierunkowego padu 3x3.

£añcuchy programowania klawiszy funkcyjnych mog± byæ podawane jako pfkey, pfloc oraz pfx. £añcuch do programowania etykiet ekranowych powinien byæ podawany jako pln. Ka¿dy z tych ³añcuchów pobiera dwa parametry: numer kalwisza funcyjnego do programowania (0 do 10) oraz ³añcuch, na który go zaprogramowaæ. Numery klawiszy funkcyjnych przekraczaj±ce ten zakres mog± programowaæ niezdefiniowane klawisze, w sposób zale¿ny od terminala. Ró¿nica miêdzy w³a¶ciwo¶ciami polega na tym, ¿e pfkey powoduje i¿ naci¶niêcie klawisza jest równowa¿ne wklepaniu przez u¿ytkownika danego ³añcucha; pfloc powoduje, ¿e ³añcuch jest wykonywany przez terminal lokalnie; pfx powoduje, ¿e ³añcuch jest przesy³any do komputera.

W³a¶ciwo¶ci nlab, lw i lh definiuj± liczbê programowalnych etykiet ekranowych wraz z ich szeroko¶ci± i wysoko¶ci±. Je¶li istniej± komendy do wy³±czania etykiet, to powinny byæ podane w smln i rmln. smln jest zazwyczaj wysy³ane po jednej, lub wiêkszej ilo¶ci sekwencji pln, aby upewniæ siê, ¿e zmiana siê uwidoczni.

Tabulacje i inicjalizacja

Je¶li terminal posiada sprzêtowe tabulacje, to komenda przej¶cia do nastêpnego tabulatora mo¿e byæ podana jako ht (zwykle control I). Komenda ``lewej-tabulacji'', przenosz±ca w lewo do poprzedzaj±cego tabulatora mo¿e byæ podana jako cbt. Konwencja mówi, ¿e je¶li tryby teletype wskazuj±, ¿e tabulacje s± rozwijane przez komputer, a nie s± przesy³ane do terminala, to programy nie powinny u¿ywaæ ht czy cbt nawet je¶li s± one obecne, gdy¿ u¿ytkownik mo¿e nie mieæ prawid³owo ustawionych tabulatorów. Je¶li terminal posiada sprzêtowe tabulatory, które sa pocz±tkowo ustawiane co n spacji, to powinien byæ podany parametr numeryczny it, pokazuj±cy odstêpy miêdzy tabulatorami. Zazwyczaj jest to u¿ywane przez komendê tset do okre¶lania czy ustawiaæ tryb dla sprzêtowego rozwijania tabulacji i czy ustawiaæ tabulatory. Je¶li terminal posiada tabulatory, które mo¿na zachowaæ w nieulotnej pamiêci, to opis terminfo mo¿e zak³adaæ, ¿e s± one poprawnie ustawione.

Inne w³a¶ciwo¶ci zawieraj± ³añcuchy is1, is2 oraz is3, s³u¿±ce do inicjalizacji terminala, iprog, czyli ¶cie¿kê do programu, u¿ywanego do inicjalizacji terminala oraz if, czyli nazwê pliku, zawieraj±cego d³ugie ³añcuchy inicjalizacyjne. £añcuchy te powinny ustawiæ terminal na tryby wspó³pracuj±ce z pozosta³ym opisem terminfo. S± one zwykle przesy³ane do terminala poprzez opcjê init programu tput przy ka¿dym logowaniu u¿ytkownika. S± one drukowane w nastêpuj±cej kolejno¶ci: uruchom program iprog; wy¶lij is1; is2; ustaw marginesy przy u¿yciu mgc, smgli smgr; ustaw tabulatory przy u¿yciu tbc i hts; wydrukuj plik if; i w koñcu wy¶lij is3.

Wiêkszo¶æ inicjalizacji jest wykonywana w is2. Tryby specjalne terminala mo¿na ustawiaæ bez duplikowania ³añcuchów, wstawiaj±c wspólne sekwencje do is2, a specjalne elementy do is1 oraz is3. Para sekwencji, która dokonuje twardego resetu z kompletnie nieznanego stanu mo¿e byæ podobnie podawana jako rs1, rs2, rf i rs3, analogicznie do is2 oraz if. £añcuchy te s± wysy³ane przez program reset, s³u¿±cy do naprawiania terminala gdy ten wejdzie w dziwny stan. Komendy zazwyczaj s± umieszczane w rs1, rs2 rs3 i rf jedynie je¶li daj± denerwuj±ce efekty na ekranie i nie s± konieczne podczas logowania sie. Na przyk³ad komenda ustawiania vt100 na 80 kolumn normalnie jest czê¶ci± is2, lecz powoduje denerwuj±ce zak³ócenie ekranu i zwykle nie jest wymagana, gdy¿ terminal normalnie ju¿ jest w trybie 80-kolumnowym.

Je¶li istniej± komendy do ustawiania i czyszczenia tabulatorów, to mog± byæ one podawane jako tbc (czy¶æ wszystkie tabulatory) i hts (ustaw tabulator w bie¿±cej kolumnie w ka¿dym wierszu). Je¶li do ustawienia tabulatorów wymagana jest bardziej skomplikowana sekwencja, to mo¿e byæ ona umieszczona w is2 lub if.

Opó¼nienia i wype³nianie

Wiele starszych i wolniejszych terminali nie obs³uguje ani XON/XOFF ani potwierdzania DTR. Wliczaæ w to mo¿na terminale hardcopy i pewne archaiczne CRT (np, DEC VT100). Wymagaj± one wype³niania znaków po pewnych ruchach kursora i zmianach ekranu.

Je¶li terminal u¿ywa potwierdzania xon/xoff dla sterowania przep³ywu (to znaczy automatycznie wysy³a ^S do hosta gdy bufory wej¶ciowe zbli¿aj± siê do przepe³nienia), ustaw xon. W³a¶ciwo¶æ ta powstrzymuje emisjê wype³niania. Mo¿esz te¿ ustawiæ j± dla mapowanych w pamiêæ urz±dzeñ konsolowych, które efektywnie nie maj± ograniczeñ szybko¶ci. Informacje wype³niaj±ce powinny wci±¿ byæ do³±czane, aby procedury mog³y lepiej decydowaæ o wzglêdnych kosztach, lecz rzeczywiste znaki wype³nienia nie bêd± wysy³ane.

Je¶li podane jest pb (szybko¶æ wype³niania), to wype³nianie nie jest u¿ywane przy szybko¶ciach ni¿szych ni¿ pb. Je¶li wpis nie zawiera szybko¶ci, to emisja wype³niania w pe³ni zale¿y od xon.

Je¶li terminal wymaga innych ni¿ zero znaków wype³niania, to powinno to byæ podawane jako pad. Z ³añcucha pad u¿ywany jest jedynie pierwszy znak.

Linie statusu

Niektóre terminale posiadaj± dodatkowe `linie statusu', które nie s± normalnie u¿ywane przez oprogramowanie (a wiêc nie licz± siê jako w³a¶ciwo¶æ lines terminala).

Najprostszym przypadkiem jest linia statusu, któr± mo¿na adresowaæ kursorem, lecz nie jest czê¶ci± podstawowego regionu przewijania ekranu; tak± liniê statusu posiada Heathkit H19 oraz 24 liniowe VT100 z 23-liniowym regionem przewijania ustawianym na starcie. Sytuacja ta jest wskazywana przez w³a¶ciwo¶æ hs.

Niektóre terminale z liniami statusu wymagaj± specjalnych sekwencji aby dostaæ siê do tej linii. Mog± one byæ wyra¿ane jako ³añcuchy z pojedynczymi parametrami tsl, które pobieraj± pozycjê kursora wzglêdem zerowej kolumny linii statusu. W³a¶ciwo¶æ fsl musi powracaæ do pozycji ekranu g³ównego, gdzie wywo³ano ostatnie tsl. Mo¿liwe, ¿e konieczne bêdzie osadzenie warto¶ci ³añcuchowych sc (zachowanie kursora) i rc (odtworzenie kursora) w tsl i fsl.

Linia statusu jest zazwyczaj tej samej szeroko¶ci co szeroko¶æ terminala. Gdy nie jest to prawd±, nale¿y podaæ w³a¶ciwo¶æ numeryczn± wsl.

Komend kasowania linii statusu mo¿e byæ podawana jako dsl.

Warto¶æ logiczna eslok okre¶la, ¿e sekwencje specjalne, tabulacje itp. dzia³aj± w linii statusu normalnie.

Implementacja ncurses nie u¿ywa jeszcze ¿adnej z tych w³a¶ciwo¶ci S± one tu udokumentowane na wypadek, gdyby sta³y siê istotne.

Grafika liniowa

Wiele terminali posiada alternatywne zestawy znaków, przydatne do rysowania figur. Terminfo i curses maj± wsparcie do rysowania znaków wspieranych przez VT100 plus niektóre znaki z AT&T 4410v1. Alternatywny zestaw znaków mo¿e byæ okre¶lony w³a¶ciwo¶ci± acsc.

Nazwa Nazwa Ascii Nazwa
glifu ACS domy¶lnie VT100
UK znak funta ACS_STERLING f }
strza³ka w dó³ ACS_DARROW v .
strza³ka w lewo ACS_LARROW < ,
strza³ka w prawo ACS_RARROW > +
strza³ka w górê ACS_UARROW ^ -
plansza kwadratów ACS_BOARD # h
kula ACS_BULLET o ~
plansza szachowa ACS_CKBOARD : a
symbol stopnia ACS_DEGREE \ f
diamond ACS_DIAMOND + `
wiêkszylubrówny ACS_GEQUAL > z
greckie pi ACS_PI * {
linia poprzeczna ACS_HLINE - q
symbol latarni ACS_LANTERN # i
du¿y plus/skrzy¿owanie ACS_PLUS + n
mniejszylubrówny ACS_LEQUAL < y
lewy niski naro¿nik ACS_LLCORNER + m
prawy niski naro¿nik ACS_LRCORNER + j
nierówny 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
czysty blok kwadratowy ACS_BLOCK # 0
T wskazuj±ce w dó³ ACS_TTEE + w
T wskazuj±ce w lewo ACS_RTEE + u
T wskazuj±ce w prawo ACS_LTEE + t
T wskazuj±ce w górê ACS_BTEE + v
lewy wysoki naro¿nik ACS_ULCORNER + l
prawy wysoki naro¿nik ACS_URCORNER + k
linia pionowa ACS_VLINE | x

Najlepszym sposobem na zdefiniowanie zestawu graficznego nowego urz±dzenia jest dodanie do kopii tej tabeli kolumny, podaj±cej znak, jaki (po emisji miêdzy smacs/rmacs) zosta³ wyrenderowany jako odpowiadaj±ca [kodowi] grafika. Nastêpnie przeczytaj pary VT100/twój terminal z prawa na lewo--bêdzie to twój ³añcuch ACSC.

Obs³uga kolorów

Wiêkszo¶æ terminali kolorowych to albo terminale typu Tektronix, albo typu HP. Te pierwsze maj± predefiniowany zestaw N kolorów (N zwykle wynosi 8) i mog± ustawiaæ w komórkach znakowych niezale¿nie kolor t³a i pierwszego planu, tworz±c N*N par kolorów. Na terminalach HP nale¿y ustawiaæ ka¿d± parê kolorów osobno (t³o i pierwszy plan nie s± ustawiane niezale¿nie). Mo¿na zdefiniowaæ M par kolorów z 2*M dostêpnych kolorów. Terminale zgodne z ANSI s± typu Tektronix.

Pewne podstawowe w³a¶ciwo¶ci kolorów s± niezale¿ne od metody kolorowania. Wa¶ciwo¶ci numeryczne colors i pairs okre¶laj± maksymaln± liczbê kolorów i par kolorów, które mo¿na naraz wy¶wietlaæ. £añcuch op (para oryginalna) ustawia t³o i pierwszy plan na domy¶lne warto¶ci terminala. £añcuch oc resetuje wszystkie kolory i pary kolorów na domy¶lne warto¶ci terminala. Niektóre terminala (w³±cznie z wieloma emulatorami terminali PC) kasuje obszary ekranu z obecnym t³em, zamiast w³±czyæ domy¶lne t³o; powinny one posiadaæ w³a¶ciwo¶æ logiczn± bce.

Aby zmieniæ bie¿±cy kolor pierwszego planu lub t³a na terminalu typu Tektronix, nale¿y u¿yæ setaf (ustaw pierwszy plan ANSI) i setab (ustaw t³o ANSI). Pobieraj± one jeden parametr--numer koloru. Dokumentacja SVr4 opisuje tylko setaf/setab; draft XPG4 mówi, ¿e "Je¶li terminal obs³uguje sekwencje specjalne ANSI do ustawiania t³a i pierwszego planu, to powinny byæ one zakodowane odpowiednio jako setab i setaf. Je¶li terminal obs³uguje inne sekewencje specjalne ustawiania t³a i pierwszego planu, to powinny byæ one kodowane jako setb i setf. Funkcja vidputs() i funkcje od¶wie¿ania u¿ywaj± (o ile s± zdefiniowane) setaf i setab."

W³a¶ciwo¶ci setaf/setab i setf/setb pobieraj± pojedynczy argument numeryczny. Warto¶ci 0-7 s± przeno¶nie zdefiniowane w sposób nastêpuj±cy (¶rodkowa kolumna to symboliczne warto¶ci #define z nag³ówków bibliotek curses). Sprzêt terminala mo¿e mapowaæ je jak chce, lecz warto¶ci RGB okre¶laj± normalne lokacje w przestrzeni kolorów. space.

Kolor #define Warto¶æ RGB
czarny COLOR_BLACK 0     0, 0, 0
czerwony COLOR_RED  1     max,0,0
zielony COLOR_GREEN 2     0,max,0
¿ó³ty COLOR_YELLOW 3     max,max,0
niebieski COLOR_BLUE 4     0,0,max
fioletowy COLOR_MAGENTA 5     max,0,max
cyjankowy COLOR_CYAN 6     0,max,max
bia³y COLOR_WHITE 7     max,max,max

Na terminalu typu HP u¿ywa siê scp z numerem pary kolorów do ustawienia obecnej pary kolorów.

Na terminalu Tektronix mo¿e byæ obecna w³a¶ciwo¶æ ccc. Wskazuje ona, ¿e kolory mo¿na modyfikowaæ. W tej sytuacji w³a¶ciwo¶æ initc pobiera numer koloru (0 do colors-1) i trzy dalsze parametry, opisuj±ce kolor. Parametry te s± domy¶lnie interpretowane jako RGB. Je¶li obecna jest w³a¶ciwo¶æ logiczna hls, to s± one interpretowane jako parametry HLS (Hue, Lightness, Saturation). Zakresy zale¿± od terminala.

Na terminalu w rodzaju HP, initp mo¿e dawaæ mo¿liwo¶æ zmieniania warto¶ci pary kolorów. Pobiera 7 parametrów; numer pary kolorów (0 do max_pairs-1) oraz dwie trójki, opisuj±ce najpierw t³o, a potem pierwszy plan. Parametry te okre¶laj± RGB lub HLS, zale¿nie od hls.

Na niektórych terminalach kolorowych, kolory koliduj± z pod¶wietleniami. Mo¿na zarejestrowaæ te kolizje we w³a¶ciwo¶æi ncv. Jest to maska bitowa atrybutów, które nie mog± byæ u¿ywane przy w³±czonych kolorach. Odpowiednio¶æ miêdzy atrybutami rozumianymi przez curses jest nastêpuj±ca:

Atrybut Bit Dziesiêtnie
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

Na przyk³ad na wielu konsolach IBM PC atrybut podkre¶lenia koliduje z niebieskim kolorem pierwszego planu i nie jest dostêpny w trybie kolorowym. Powinny wiêc mieæ ustawione w³a¶ciwo¶æ ncv na 2.

Curses SVr4 nie u¿ywaj± w ogóle ncv, ncurses rozpoznaj± je i optymalizuj± wyj¶cie.

Ró¿no¶ci

Je¶li terminal wymaga innego znaku wype³niania ni¿ zero, to jest on podawany jako pad. Z ³añcucha pad wykorzystywany jest tylko pierwszy znak. Je¶li terminal nie obs³uguje znaku wype³niania, podaj npc. Zauwa¿, ¿e ncurses implementuje zgodn± z termcap zmienn± PC; dlatego aplikacje mog± ustawiaæ tê warto¶æ na co¶ innego ni¿ zero, a ncurses spróbuje najpierw npc i u¿yje napms je¶li terminal nie posiada znaku wype³nienia.

Je¶li terminal mo¿e przesuwaæ w górê lub w dó³ o pó³ linii, to mo¿e to byæ okre¶lone przez hu (pó³-linii w górê) i hd (pó³-linii w dó³). Jest to przede wszystkim przydatne dla indeksów górnych i dolnych w terminalach hardcopy. Je¶li terminal hardcopy potrafi przej¶æ na nastêpn± stronê (eject to the next page) (tj. form feed), podaj to jako ff (zwykle control L).

Je¶li istnieje komenda do powtórzenia danego znaku podan± liczbê razy (aby zaoszczêdziæ na czasie transmisji du¿ej liczby takich samych znaków), mo¿na to okre¶liæ parametryzowanym ³añcuchem rep. Pierwszy parametr jest powtarzanym znakiem, a drugi liczb± powtórzeñ. Tak wiêc tparm(repeat_char, 'x', 10) jest równowa¿ne `xxxxxxxxxx'.

Je¶li terminal posiada ustawiany znak komendy, jak w TEKTRONIX, mo¿na to okre¶liæ przez cmdch. Wybierany jest prototypowy znak komendy, u¿ywany we wszystkich w³a¶ciwo¶ciach. Znak ten jest podawany przez w³a¶ciwo¶æ cmdch. Na niektórych systemach uniksowych obs³ugiwana jest nastêpuj±ca konwencja: W ¶rodowisku szukana jest zmienna CC i je¶li zostanie znaleziona, wszystkie pojawienia znaku prototypowego s± zamieniane na znak ze zmiennej ¶rodowiskowej.

Opisy terminala, które nie reprezentuj± konkretnych rodzajów znanych terminali, takie jak switch, dialup, patch i network, powinny zawieraæ w³a¶ciwo¶æ gn (generic), aby programy mog³y stwierdziæ, ¿e nie wiedz± jak rozmawiaæ z terminalem. (W³a¶ciwo¶æ ta nie tyczy siê opisów terminali virtual, dla których znane s± sekwencje specjalne.)

Je¶li terminal posiada klawisz ``meta'', który zachowuje siê jak klawisz przesuniêcia, ustawiaj±cy ósmy bit przesy³anego znaku, to fakt ten mo¿na wskazaæ z pomoc± km. W przeciwnym wypadku, oprogramowanie za³o¿y, ¿e 8-my bit jest bitem parzysto¶ci i zazwyczaj bêdzie czyszczony. Je¶li istniej± ³añcuchy, w³±czaj±ce i wy³±czaj±ce ten tryb ``meta'', to powinny byæ one okre¶lone jako smm i rmm.

Je¶li terminal ma wiêcej linii pamiêci ni¿ mie¶ci siê naraz na ekranie, to liczba tych linii powinna byæ okre¶lana przez lm. Nadanie warto¶ci lm#0 okre¶la, ¿e liczba linii nie jest ustalona, lecz mimo to jest wiêcej pamiêci ni¿ linii ekranowych.

Je¶li terminal jest jednym z obs³ugiwanych przez uniksowy protokó³ wirtualnego terminala, to numer terminala mo¿e byæ podany jako vt.

£añcuchy media copy, steruj±ce zewnêtrzn± drukark±, pod³±czon± do terminala mog± byæ podawane jako mc0: drukuj zawarto¶æ ekranu, mc4: wy³±cz drukarkê i mc5: w³±cz drukarkê. Gdy drukarka jest w³±czona, tekst przesy³any do terminala bêdzie przesy³any na drukarkê. Nie jest zdefiniowane czy tekst ma byæ wtedy równie¿ wy¶wietlany na ekranie terminala. Wariacja mc5p pobiera jeden parametr i pozostawia drukarkê w³±czon± na tyle znaków, ile podano w parametrze; wy³±czaj±c nastêpnie drukarkê. Parametr nie powinien przekraczaæ 255. Ca³y tekst, ³±cznie z mc4, jest podczas dzia³ania mc5p przezroczy¶cie przekazywany drukarce.

Zaburzenia i uszkodzenie mózgu

Terminale, które nie zezwalaj± na wy¶wietlanie znaków tyldy, powinny wskazywaæ to przez hz.

Terminale, które ignoruj± line-feed po zawiniêciu am, takie jak Concept i vt100 powinny wskazywaæ to przez xenl.

Je¶li do pozbycia siê trybu wyró¿nionego potrzebne jest el (zamiast zwyczajnego nadpisania na nim normalnego tekstu), nale¿y podaæ xhp.

Terminale teleray, gdzie tabulacje zmieniaj± przesuwane znaki na spacje, powinny podawaæ xt (destruktywne tabulacje). Uwaga: zmienn±, okre¶laj±c± to jest obecnie `dest_tabs_magic_smso'; w starszych wersjach by³o to teleray_glitch. To zaburzenie oznacza równie¿, ¿e nie jest mo¿liwe ustawienie kursora na ``magicznym ciasteczku'', ¿e do skasowania trybu wyró¿nionego nale¿y skasowaæ lub wstawiæ liniê. Implementacja ncurses ignoruje to.

Terminal Beehive Superbee, który nie potrafi poprawnie przesy³aæ znaków escape i control C ma w³a¶ciwo¶æ xsb, okre¶laj±c±, ¿e zamiast escape u¿ywany jest klawisz f1, a zamiast control C u¿ywane jest f2. (Problem ten wystêpuje tylko w Superbee, zale¿nie od ROM.) Zauwa¿, ¿e w starszych wersjach terminfo w³a¶ciwo¶æ ta by³a nazywana `beehive_glitch'; obecnie jest to `no_esc_ctl_c'.

Inne problemy zwi±zane z konkretnymi terminalami mo¿na naprawiæ dodaj±c dalsze w³a¶ciwo¶ci typu xx.

Podobne terminale

Je¶li istniej± dwa bardzo podobne terminale, gdzie jeden mo¿e byæ zdefiniowany tak samo jak drugi, z pewnymi wyj±tkami, to mo¿na wykorzystaæ w³a¶ciwo¶æ use z nazw± podobnego terminala. W³a¶ciwo¶ci podane przed use przes³aniaj± te z typu wybranego przez use. W³a¶ciwo¶ci mo¿na anulowaæ poprzez umieszczanie na lewo od definicji w³a¶ciwo¶ci xx@, gdzie xx jest w³a¶ciwo¶ci±. Na przyk³ad,

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

definiuje 2621-nl, który nie posiada smkx, rmkx i z tego powodu nie w³±cza etykiet klawiszy funkcyjnych w trybie wizualnym. Jest to przydatne dla innych trybów terminala lub dla innych preferencji u¿ytkownika.

Pu³apki d³ugich wpisów

D³ugie wpisy terminfo rzadko s± problemem; ¿aden wpis terminfo nie osi±gn±³ jeszcze nawet 4K maksimum przeznaczonego na tablicê ³añcuchow±. Niestety jednak, translacje termcap s± bardziej ograniczone (do 1