Rechercher une page de manuel
terminfo
Langue: pl
Version: 90421 (ubuntu - 01/11/07)
Section: 5 (Format de fichier)
Sommaire
- NAZWA
- SK£ADNIA
- OPIS
- W³a¶ciwo¶ci
- Przyk³adowy wpis
- Typy w³a¶ciwo¶ci
- Pobieranie skompilowanych opisów
- Przygotowywanie opisów
- Podstawowe w³a¶ciwo¶ci
- £añcuchy parametryzowane
- Ruchy kursora
- Czyszczenie obszarów
- Wstawianie/kasowanie linii i ruchy pionowe
- Wstawianie/kasowanie znaku
- Pod¶wietlanie, podkre¶lanie i wizualne dzwonki
- Keypad i klawisze funkcyjne
- Tabulacje i inicjalizacja
- Opó¼nienia i wype³nianie
- Linie statusu
- Grafika liniowa
- Obs³uga kolorów
- Ró¿no¶ci
- Zaburzenia i uszkodzenie mózgu
- Podobne terminale
- Pu³apki d³ugich wpisów
- Kompatybilno¶æ binarna
- ROZSZERZENIA
- PLIKI
- ZOBACZ TAK¯E
- AUTORZY
NAZWA
terminfo - baza w³a¶ciwo¶ci terminalaSK£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 tabeliZmienna 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