Rechercher une page de manuel
terminfo
Langue: pl
Version: 31317 (ubuntu - 16/08/07)
Section: 5 (Format de fichier)
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:
| T} | |||||
| 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 | | xo | terminal u¿ywa potwierdzania xon/xoff | | |
A oto w³a¶ciwo¶ci numeryczne:
| ró¿ni siê | ||||||||
| T} | ||||||||
| 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 | ||||||||
| num_labels | | Nl | ||||||
| padding_baud_rate | pb | pb | najni¿sza szybko¶æ przesy³u (baud rate) gdy wymagane jest wype³nianie (padding). | |||||
| virtual_terminal | ||||||||
| width_status_line | wsl | ws | | |||||
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.
| A oto w³a¶ciwo¶ci napisowe: | ||||||||||||
| center expand; | | |||||||||||
| c l l c | ||||||||||||
| | | | | |||||||||
| lw25 lw6 lw2 lw20. | ||||||||||||
| Zmienna | ||||||||||||
| | w³a¶æ. | | ||||||||||
| acs_chars | acsc | ac | graficzne pary zestawu znaków, oparte o vt100 | |||||||||
| back_tab | ||||||||||||
| bell | | bl | sygna³ audiofoniczny (dzwonek) (P) | |||||||||
| carriage_return | cr | cr | powrót karetki (P*) (P*) | |||||||||
| change_char_pitch | ||||||||||||
| change_line_pitch | lpi | |||||||||||
| change_res_horz | chr | ZC | Zmieñ rozdzielczo¶æ poprzeczn± | |||||||||
| change_res_vert | ||||||||||||
| | csr | | zmieñ region na liniê #1 do linii #2 (P) | | | |||||||
| rmp | rP | podobne do ip, lecz w trybie wstawiania (insert) | | | ||||||||
| clear_all_tabs | ||||||||||||
| | mgc | |||||||||||
| clear | cl | czy¶æ ekran i wyzeruj kursor (home cursor) (P*) | ||||||||||
| clr_bol | ||||||||||||
| clr_eol | | ce | wyczy¶æ do koñca linii (P) | | ||||||||
| clr_eos | ed | cd | wyczy¶æ do koñca ekranu (P*) | |||||||||
| column_address | ||||||||||||
| command_character | | CC | ustawialny w prototypie znak cmd terminala !? | | ||||||||
| create_window | cwin | CW | definiuj okno #1 od #2,#3 do #4,#5 | |||||||||
| cursor_address | ||||||||||||
| cursor_down | cud1 | | w dó³ o 1 liniê | | ||||||||
| cursor_home | home | ho | kursor do domu (je¶li bez cup) | | ||||||||
| cursor_invisible | ||||||||||||
| cursor_left | cub1 | | przejd¼ jedn± spacjê w lewo | | | |||||||
| cursor_mem_address | mrcup | CM | adresowanie kursora wzglêdem pamiêci | | ||||||||
| cursor_normal | ||||||||||||
| cursor_right | cuf1 | | niedestruktywna spacja (przejd¼ w prawo o spacjê) | | | |||||||
| cursor_to_ll | ll | ll | ostatnia linia, pierwsza kolumna (je¶li bez cup) | | ||||||||
| cursor_up | ||||||||||||
| | cvvis | | uczyñ kursor bardzo widzialnym | |||||||||
| define_char | defc | ZE | zdefiniuj znak | | | | ||||||
| delete_character | ||||||||||||
| | dl1 | | usuñ liniê (P*) | | | |||||||
| dial_phone | dial | DI | wykrêæ numer #1 | | | |||||||
| dis_status_line | ||||||||||||
| | dclk | | wy¶wietl w pozycji (#1,#2) zegar | | ||||||||
| down_half_line | hd | hd | pó³ linii w dó³ | | | |||||||
| ena_acs | ||||||||||||
| | smacs | | rozpocznij tryb alternatywnego zestawu znaków (P) | |||||||||
| smam | SA | w³±cz automatyczne marginesy | | |||||||||
| enter_blink_mode | ||||||||||||
| enter_bold_mode | ||||||||||||
| enter_ca_mode | smcup | ti | ³añcuch do rozpoczynania programów, u¿ywaj±cych cup | | ||||||||
| enter_delete_mode | ||||||||||||
| enter_dim_mode | ||||||||||||
| enter_doublewide_mode | ||||||||||||
| enter_draft_quality | ||||||||||||
| enter_insert_mode | ||||||||||||
| enter_italics_mode | ||||||||||||
| enter_leftward_mode | ||||||||||||
| enter_micro_mode | ||||||||||||
| enter_near_letter_quality | ||||||||||||
| enter_normal_quality | ||||||||||||
| enter_protected_mode | ||||||||||||
| enter_reverse_mode | ||||||||||||
| enter_secure_mode | ||||||||||||
| enter_shadow_mode | ||||||||||||
| enter_standout_mode | ||||||||||||
| enter_subscript_mode | ||||||||||||
| enter_superscript_mode | ||||||||||||
| enter_underline_mode | ||||||||||||
| enter_upward_mode | ||||||||||||
| enter_xon_mode | ||||||||||||
| erase_chars | ||||||||||||
| exit_alt_charset_mode | ||||||||||||
| exit_am_mode | ||||||||||||
| exit_attribute_mode | ||||||||||||
| exit_ca_mode | ||||||||||||
| exit_delete_mode | ||||||||||||
| exit_doublewide_mode | ||||||||||||
| exit_insert_mode | ||||||||||||
| exit_italics_mode | ||||||||||||
| exit_leftward_mode | ||||||||||||
| exit_micro_mode | ||||||||||||
| exit_shadow_mode | ||||||||||||
| exit_standout_mode | ||||||||||||
| exit_subscript_mode | ||||||||||||
| exit_superscript_mode | ||||||||||||
| exit_underline_mode | ||||||||||||
| exit_upward_mode | ||||||||||||
| exit_xon_mode | ||||||||||||
| fixed_pause | ||||||||||||
| flash_hook | ||||||||||||
| flash_screen | ||||||||||||
| form_feed | ||||||||||||
| from_status_line | ||||||||||||
| goto_window | ||||||||||||
| hangup | ||||||||||||
| init_1string | ||||||||||||
| init_2string | ||||||||||||
| init_3string | ||||||||||||
| init_file | ||||||||||||
| init_prog | ||||||||||||
| initialize_color | ||||||||||||
| initialize_pair | ||||||||||||
| insert_character | ||||||||||||
| insert_line | ||||||||||||
| insert_padding | ||||||||||||
| key_a1 | ||||||||||||
| key_a3 | ||||||||||||
| key_b2 | ||||||||||||
| key_backspace | ||||||||||||
| key_beg | ||||||||||||
| key_btab | ||||||||||||
| key_c1 | ||||||||||||
| key_c3 | ||||||||||||
| key_cancel | ||||||||||||
| key_catab | ||||||||||||
| key_clear | ||||||||||||
| key_close | ||||||||||||
| key_command | ||||||||||||
| key_copy | ||||||||||||
| key_create | ||||||||||||
| key_ctab | ||||||||||||
| key_dc | ||||||||||||
| key_dl | ||||||||||||
| key_down | ||||||||||||
| key_eic | ||||||||||||
| key_end | ||||||||||||
| key_enter | ||||||||||||
| key_eol | ||||||||||||
| key_eos | ||||||||||||
| key_exit | ||||||||||||
| key_f0 | ||||||||||||
| key_f1 | ||||||||||||
| key_f10 | ||||||||||||
| key_f11 | ||||||||||||
| key_f12 | ||||||||||||
| key_f13 | ||||||||||||
| key_f14 | ||||||||||||
| key_f15 | ||||||||||||
| key_f16 | ||||||||||||
| key_f17 | ||||||||||||
| key_f18 | ||||||||||||
| key_f19 | ||||||||||||
| key_f2 | ||||||||||||
| key_f20 | ||||||||||||
| key_f21 | ||||||||||||
| key_f22 | ||||||||||||
| key_f23 | ||||||||||||
| key_f24 | ||||||||||||
| key_f25 | ||||||||||||
| key_f26 | ||||||||||||
| key_f27 | ||||||||||||
| key_f28 | ||||||||||||
| key_f29 | ||||||||||||
| key_f3 | ||||||||||||
| key_f30 | ||||||||||||
| key_f31 | ||||||||||||
| key_f32 | ||||||||||||
| key_f33 | ||||||||||||
| key_f34 | ||||||||||||
| key_f35 | ||||||||||||
| key_f36 | ||||||||||||
| key_f37 | ||||||||||||
| key_f38 | ||||||||||||
| key_f39 | ||||||||||||
| key_f4 | ||||||||||||
| key_f40 | ||||||||||||
| key_f41 | ||||||||||||
| key_f42 | ||||||||||||
| key_f43 | ||||||||||||
| key_f44 | ||||||||||||
| key_f45 | ||||||||||||
| key_f46 | ||||||||||||
| key_f47 | ||||||||||||
| key_f48 | ||||||||||||
| key_f49 | ||||||||||||
| key_f5 | ||||||||||||
| key_f50 | ||||||||||||
| key_f51 | ||||||||||||
| key_f52 | ||||||||||||
| key_f53 | ||||||||||||
| key_f54 | ||||||||||||
| key_f55 | ||||||||||||
| key_f56 | ||||||||||||
| key_f57 | ||||||||||||
| key_f58 | ||||||||||||
| key_f59 | ||||||||||||
| key_f6 | ||||||||||||
| key_f60 | ||||||||||||
| key_f61 | ||||||||||||
| key_f62 | ||||||||||||
| key_f63 | ||||||||||||
| key_f7 | ||||||||||||
| key_f8 | ||||||||||||
| key_f9 | ||||||||||||
| key_find | ||||||||||||
| key_help | ||||||||||||
| key_home | ||||||||||||
| key_ic | ||||||||||||
| key_il | ||||||||||||
| key_left | ||||||||||||
| key_ll | ||||||||||||
| key_mark | ||||||||||||
| key_message | ||||||||||||
| key_move | ||||||||||||
| key_next | ||||||||||||
| key_npage | ||||||||||||
| key_open | ||||||||||||
| key_options | ||||||||||||
| key_ppage | ||||||||||||
| key_previous | ||||||||||||
| key_print | ||||||||||||
| key_redo | ||||||||||||
| key_reference | ||||||||||||
| key_refresh | ||||||||||||
| key_replace | ||||||||||||
| key_restart | ||||||||||||
| key_resume | ||||||||||||
| key_right | ||||||||||||
| key_save | ||||||||||||
| key_sbeg | ||||||||||||
| key_scancel | ||||||||||||
| key_scommand | ||||||||||||
| key_scopy | ||||||||||||
| key_screate | ||||||||||||
| key_sdc | ||||||||||||
| key_sdl | ||||||||||||
| key_select | ||||||||||||
| key_send | ||||||||||||
| key_seol | ||||||||||||
| key_sexit | ||||||||||||
| key_sf | ||||||||||||
| key_sfind | ||||||||||||
| key_shelp | ||||||||||||
| key_shome | ||||||||||||
| key_sic | ||||||||||||
| key_sleft | ||||||||||||
| key_smessage | ||||||||||||
| key_smove | ||||||||||||
| key_snext | ||||||||||||
| key_soptions | ||||||||||||
| key_sprevious | ||||||||||||
| key_sprint | ||||||||||||
| key_sr | ||||||||||||
| key_sredo | ||||||||||||
| key_sreplace | ||||||||||||
| key_sright | ||||||||||||
| key_srsume | ||||||||||||
| key_ssave | ||||||||||||
| key_ssuspend | ||||||||||||
| key_stab | ||||||||||||
| key_sundo | ||||||||||||
| key_suspend | ||||||||||||
| key_undo | ||||||||||||
| key_up | ||||||||||||
| keypad_local | ||||||||||||
| keypad_xmit | ||||||||||||
| lab_f0 | ||||||||||||
| lab_f1 | ||||||||||||
| lab_f10 | ||||||||||||
| lab_f2 | ||||||||||||
| lab_f3 | ||||||||||||
| lab_f4 | ||||||||||||
| lab_f5 | ||||||||||||
| lab_f6 | ||||||||||||
| lab_f7 | ||||||||||||
| lab_f8 | ||||||||||||
| lab_f9 | ||||||||||||
| label_format | ||||||||||||
| label_off | ||||||||||||
| label_on | ||||||||||||
| meta_off | ||||||||||||
| meta_on | ||||||||||||
| micro_column_address | ||||||||||||
| micro_down | ||||||||||||
| micro_left | ||||||||||||
| micro_right | ||||||||||||
| micro_row_address | ||||||||||||
| micro_up | ||||||||||||
| newline | ||||||||||||
| order_of_pins | ||||||||||||
| orig_colors | ||||||||||||
| orig_pair | ||||||||||||
| pad_char | ||||||||||||
| parm_dch | ||||||||||||
| parm_delete_line | ||||||||||||
| parm_down_cursor | ||||||||||||
| parm_down_micro | ||||||||||||
| parm_ich | ||||||||||||
| parm_index | ||||||||||||
| parm_insert_line | ||||||||||||
| parm_left_cursor | ||||||||||||
| parm_left_micro | ||||||||||||
| parm_right_cursor | ||||||||||||
| parm_right_micro | ||||||||||||
| parm_rindex | ||||||||||||
| parm_up_cursor | ||||||||||||
| parm_up_micro | ||||||||||||
| pkey_key | ||||||||||||
| pkey_local | ||||||||||||
| pkey_xmit | ||||||||||||
| plab_norm | ||||||||||||
| print_screen | ||||||||||||
| prtr_non | ||||||||||||
| prtr_off | ||||||||||||
| prtr_on | ||||||||||||
| pulse | ||||||||||||
| quick_dial | ||||||||||||
| remove_clock | ||||||||||||
| repeat_char | ||||||||||||
| req_for_input | ||||||||||||
| reset_1string | ||||||||||||
| reset_2string | ||||||||||||
| reset_3string | ||||||||||||
| reset_file | ||||||||||||
| restore_cursor | ||||||||||||
| row_address | ||||||||||||
| save_cursor | ||||||||||||
| scroll_forward | ||||||||||||
| scroll_reverse | ||||||||||||
| select_char_set | ||||||||||||
| set_attributes | ||||||||||||
| set_background | ||||||||||||
| set_bottom_margin | ||||||||||||
| set_bottom_margin_parm | ||||||||||||
| set_clock | ||||||||||||
| set_color_pair | ||||||||||||
| set_foreground | ||||||||||||
| set_left_margin | ||||||||||||
| set_left_margin_parm | ||||||||||||
| set_right_margin | ||||||||||||
| set_right_margin_parm | ||||||||||||
| set_tab | ||||||||||||
| set_top_margin | ||||||||||||
| set_top_margin_parm | ||||||||||||
| set_window | ||||||||||||
| start_bit_image | ||||||||||||
| start_char_set_def | ||||||||||||
| stop_bit_image | ||||||||||||
| stop_char_set_def | ||||||||||||
| subscript_characters | ||||||||||||
| superscript_characters | ||||||||||||
| tab | ||||||||||||
| these_cause_cr | ||||||||||||
| to_status_line | ||||||||||||
| tone | ||||||||||||
| underline_char | ||||||||||||
| up_half_line | ||||||||||||
| user0 | ||||||||||||
| user1 | ||||||||||||
| user2 | ||||||||||||
| user3 | ||||||||||||
| user4 | ||||||||||||
| user5 | ||||||||||||
| user6 | ||||||||||||
| user7 | ||||||||||||
| user8 | ||||||||||||
| user9 | ||||||||||||
| wait_tone | ||||||||||||
| xoff_character | ||||||||||||
| xon_character | ||||||||||||
| zero_motion | ||||||||||||
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.
| T} | |||||||||||||||||
| 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 | |||||||||||||||||
| | setab | | 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 | |||||||||||||||||
| | smglr | | ustaw lewy i prawy margines na #1, #2 | | |||||||||||||
| set_page_length | slines | YZ | ustaw rozmiar strony na #1 linii | ||||||||||||||
| set_tb_margin | |||||||||||||||||
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ê!
| 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, | |||||||||||
| | | | |||||||||
| bia³ymi spacjami (poza pierwsz± lini±). Komentarze mo¿na za³±czaæ w | |||||||||||
| poszczególnych liniach przy u¿yciu ``#''. | |||||||||||
| | | | | ||||||||
| | | | | ||||||||
| 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. | |||||||||||
| Wszystkie w³a¶ciwo¶ci maj± nazwy. Na przyk³ad fakt, ¿e terminale ANSI maj± | |||||||||||
| (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 | |||||||||||
| 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 | |||||||||||
| 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 | |||||||||||
| z powy¿szego przyk³adu. | |||||||||||
| 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.) | |||||||||||
| Wyja¶nimy teraz jak przygotowywaæ opisy terminali. | |||||||||||
| Najefektywniejszym sposobem jest wykorzystanie podobnego terminala z | |||||||||||
| i budowanie opisu stopniowo, wykorzystuj±c czê¶ciowe opisy z u¿yciem | |||||||||||
| 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 | |||||||||||
| 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. | |||||||||||
| 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 | |||||||||||
| jak i | |||||||||||
| 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 | |||||||||||
| (Zwykle jest to powrót karetki, control M.) | |||||||||||
| Je¶li istnieje kod dzwonka (bell, beep, itp.), to powinien byæ on podany | |||||||||||
| jako | |||||||||||
| Je¶li istnieje kod, przesuwaj±cy kursor o jedn± pozycjê w lewo (jak | |||||||||||
| backspace), to w³a¶ciwo¶æ ta powinna byæ podana jako | |||||||||||
| Podobnie, kod przesuwaj±cy w prawo, górê i dó³ powinien byæ podany jako | |||||||||||
| i | |||||||||||
| 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 | |||||||||||
| 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 | |||||||||||
| 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 | |||||||||||
| (index). | |||||||||||
| Aby przewin±æ tekst w dó³, program idzie do lewego górnego naro¿nika i | |||||||||||
| wysy³a ³añcuch | |||||||||||
| (reverse index). | |||||||||||
| £añcuchy | |||||||||||
| i | |||||||||||
| nie s± zdefiniowane w przypadku przebywania w nieodpowiednich miejscach | |||||||||||
| ekranu. | |||||||||||
| Wersjami parametryzowanymi sekwencji przewijaj±cych s± | |||||||||||
| i | |||||||||||
| które maj± tak± sam± semantykê jak | |||||||||||
| i | |||||||||||
| 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ê | |||||||||||
| z ostatniej kolumny. | |||||||||||
| Jedyny ruch lokalny, który jest zdefiniowany z lewego krañca przy podaniu | |||||||||||
| to | |||||||||||
| który przejdzie do prawego krañca poprzedniego wiersza. | |||||||||||
| Je¶li | |||||||||||
| 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 | |||||||||||
| 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 | |||||||||||
| (nowa linia). | |||||||||||
| Nie ma znaczenia czy polecenie to czy¶ci resztê bie¿±cej linii, wiêc je¶li | |||||||||||
| terminal nie posiada | |||||||||||
| i | |||||||||||
| to mo¿e wci±¿ uda siê z³o¿yæ z czego¶ dzia³aj±cy | |||||||||||
| W³a¶ciwo¶ci te wystarczaj± do opisania terminala hard-copy i | |||||||||||
| ``glass-tty''. W konsekwencji, model teletype 33 jest opisany jako | |||||||||||
| a Lear Siegler ADM-3 jako | |||||||||||
| 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 | |||||||||||
| jak %x. | |||||||||||
| Na przyk³ad aby adresowaæ kursor, podana jest w³a¶ciwo¶æ | |||||||||||
| 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 | |||||||||||
| 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: | |||||||||||
| 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. | |||||||||||
| 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 | |||||||||||
| Je¶li terminal posiada bezwzglêdne (absolute) adresowanie wierszy lub kolumn, | |||||||||||
| to mo¿e to byæ podane jako pojedyncze w³a¶ciwo¶ci parametryczne, | |||||||||||
| (bezwzglêdna pozycja pozioma) | |||||||||||
| i | |||||||||||
| (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¿ | |||||||||||
| Je¶li istniej± sparametryzowane ruchy lokalne (np. przesuñ | |||||||||||
| spacji w prawo), to mog± byæ one podane jako | |||||||||||
| i | |||||||||||
| z pojedynczym parametrem, okre¶laj±cym ilo¶æ spacji przesuniêcia. | |||||||||||
| Sekwencje te s± przydatne je¶li terminal nie ma | |||||||||||
| 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 | |||||||||||
| 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. | |||||||||||
| 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 | |||||||||||
| nie jest dostêpne.) | |||||||||||
| 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 | |||||||||||
| i | |||||||||||
| które mog± pobieraæ parametr, okre¶laj±cy ile linii skasowaæ lub wstawiæ, | |||||||||||
| mog± byæ podawane jako | |||||||||||
| i | |||||||||||
| Je¶li terminal ma ustawialny region przewijania (jak vt100), to komenda | |||||||||||
| ustawiaj±ca to mo¿e byæ opisana z pomoc± w³a¶ciwo¶ci | |||||||||||
| 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 | |||||||||||
| na odpowiednio wybranym regionie; komendy | |||||||||||
| i | |||||||||||
| (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 | |||||||||||
| lub | |||||||||||
| 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 | |||||||||||
| 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. | |||||||||||
| Istniej± dwa podstawowe rodzaje inteligentnych terminali, je¶li braæ pod | |||||||||||
| uwagê obs³ugê wstawiania/kasowania znaków opisywan± w | |||||||||||
| 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æ | |||||||||||
| oraz | |||||||||||
| i obydwie sekwencje zostan± u¿yte. | |||||||||||
| W³a¶ciwo¶æ | |||||||||||
| z jednym parametrem powtarza rezultat | |||||||||||
| 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æ | |||||||||||
| albo | |||||||||||
| do kasowania z parametrem | |||||||||||
| który mówi, by skasowaæ | |||||||||||
| lub sekwencje wchodzenia (smdc) i wychodzenia (rmdc) z trybu | |||||||||||
| kasowania (dowolny tryb, którego terminal wymaga dla zadzia³ania | |||||||||||
| Komenda do kasowania | |||||||||||
| znaków (równowa¿na wypuszczeniu | |||||||||||
| spacji bez przesuwania kursora) | |||||||||||
| mo¿e byæ okre¶lona jako | |||||||||||
| z jednym parametrem. | |||||||||||
| 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 | |||||||||||
| (migotanie) | |||||||||||
| (wyt³uszczenie, lub rozja¶nienie) | |||||||||||
| (¶rednia-jasno¶æ) | |||||||||||
| (tekst niewidzialny, lub `spacjowanie') | |||||||||||
| (chronione) | |||||||||||
| (inwersja kolorów) | |||||||||||
| (wy³±cz | |||||||||||
| tryby atrybutów) | |||||||||||
| (wejd¼ w tryb alternatywnego zestawu znaków) | |||||||||||
| i | |||||||||||
| (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 | |||||||||||
| (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 | |||||||||||
| powinny byæ natomiast te, dla których istniej± oddzielne komendy atrybutów. | |||||||||||
| Na przyk³ad DEC vt220 wspiera wiêkszo¶æ trybów: | |||||||||||
| center; | |||||||||||
| l c c | |||||||||||
| l c c | |||||||||||
| lw28 lw6 lw2 lw20. | |||||||||||
| parametr tparm | |||||||||||
| brak | |||||||||||
| p1 | |||||||||||
| p2 | |||||||||||
| p3 | |||||||||||
| p4 | |||||||||||
| p5 | |||||||||||
| p6 | |||||||||||
| p7 | |||||||||||
| p8 | |||||||||||
| p9 | |||||||||||
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
| 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) | |||||||||||
| 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 | |||||||||||
| | |||||||||||
| 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 | |||||||||||
| Je¶li istnieje sposób na uniewidzialnienie kursora, to podaj to jako | |||||||||||
| w³a¶ciwo¶æ | |||||||||||
| W³a¶ciwo¶æ | |||||||||||
| 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. | |||||||||||
| 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: | |||||||||||
| (home down), | |||||||||||
| (backspace), | |||||||||||
| (czy¶æ wszystkie tabulacje), | |||||||||||
| (czy¶æ tabulator w tej kolumnie), | |||||||||||
| (klawisz czyszczenia ekranu klub wymazywania), | |||||||||||
| (klawisz kasowania (delete)), | |||||||||||
| (kasowanie linii), | |||||||||||
| (wyj¶cie z trybu wstawiania), | |||||||||||
| (czyszczenie do koñca linii), | |||||||||||
| (czyszczenie do koñca ekranu), | |||||||||||
| (wstaw znak, lub wejd¼ w tryb wstawiania), | |||||||||||
| (wstaw liniê), | |||||||||||
| (nastêpna strona (next page)), | |||||||||||
| (poprzednia strona (previous page)), | |||||||||||
| (przewijaj w przód), | |||||||||||
| (przewijaj w ty³), | |||||||||||
| (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 | |||||||||||
| oraz | |||||||||||
| Klawisze te s± przydatne gdy potrzebne s± efekty kierunkowego padu 3x3. | |||||||||||
| £añcuchy programowania klawiszy funkcyjnych mog± byæ podawane jako | |||||||||||
| oraz | |||||||||||
| £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 | |||||||||||
| powoduje i¿ naci¶niêcie klawisza jest równowa¿ne wklepaniu przez u¿ytkownika | |||||||||||
| danego ³añcucha; | |||||||||||
| powoduje, ¿e ³añcuch jest wykonywany przez terminal lokalnie; | |||||||||||
| 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. | |||||||||||
| Je¶li terminal posiada sprzêtowe tabulacje, to komenda przej¶cia do | |||||||||||
| nastêpnego tabulatora mo¿e byæ podana jako | |||||||||||
| (zwykle control I). | |||||||||||
| Komenda ``lewej-tabulacji'', przenosz±ca w lewo do poprzedzaj±cego | |||||||||||
| tabulatora mo¿e byæ podana jako | |||||||||||
| 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æ | |||||||||||
| czy | |||||||||||
| 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 | |||||||||||
| spacji, to powinien byæ podany parametr numeryczny | |||||||||||
| pokazuj±cy odstêpy miêdzy tabulatorami. | |||||||||||
| Zazwyczaj jest to u¿ywane przez komendê | |||||||||||
| 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 | |||||||||||
| oraz | |||||||||||
| s³u¿±ce do inicjalizacji terminala, | |||||||||||
| 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ê | |||||||||||
| programu | |||||||||||
| przy ka¿dym logowaniu u¿ytkownika. | |||||||||||
| S± one drukowane w nastêpuj±cej kolejno¶ci: | |||||||||||
| uruchom program | |||||||||||
| wy¶lij | |||||||||||
| ustaw marginesy przy u¿yciu | |||||||||||
| ustaw tabulatory przy u¿yciu | |||||||||||
| i | |||||||||||
| wydrukuj plik | |||||||||||
| i w koñcu wy¶lij | |||||||||||
| Wiêkszo¶æ inicjalizacji jest wykonywana w | |||||||||||
| Tryby specjalne terminala mo¿na ustawiaæ bez duplikowania ³añcuchów, | |||||||||||
| wstawiaj±c wspólne sekwencje do | |||||||||||
| a specjalne elementy do | |||||||||||
| oraz | |||||||||||
| Para sekwencji, która dokonuje twardego resetu z kompletnie nieznanego stanu | |||||||||||
| mo¿e byæ podobnie podawana jako | |||||||||||
| i | |||||||||||
| analogicznie do | |||||||||||
| oraz | |||||||||||
| £añcuchy te s± wysy³ane przez program | |||||||||||
| s³u¿±cy do naprawiania terminala gdy ten wejdzie w dziwny stan. Komendy | |||||||||||
| zazwyczaj s± umieszczane w | |||||||||||
| i | |||||||||||
| 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± | |||||||||||
| 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 | |||||||||||
| (czy¶æ wszystkie tabulatory) | |||||||||||
| i | |||||||||||
| (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 | |||||||||||
| lub | |||||||||||
| 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 | |||||||||||
| 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 | |||||||||||
| u¿ywany jest jedynie pierwszy znak. | |||||||||||
| 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. | |||||||||||
| 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. | |||||||||||
| center expand; | |||||||||||
| c l l c | |||||||||||
| c l l c | |||||||||||
| lw28 lw6 lw2 lw20. | |||||||||||
| Nazwa | |||||||||||
| glifu | |||||||||||
| UK znak funta | |||||||||||
| strza³ka w dó³ | |||||||||||
| strza³ka w lewo | |||||||||||
| strza³ka w prawo | |||||||||||
| strza³ka w górê | |||||||||||
| plansza kwadratów | |||||||||||
| kula | |||||||||||
| plansza szachowa | |||||||||||
| symbol stopnia | |||||||||||
| diamond | |||||||||||
| wiêkszylubrówny | |||||||||||
| greckie pi | |||||||||||
| linia poprzeczna | |||||||||||
| symbol latarni | |||||||||||
| du¿y plus/skrzy¿owanie | |||||||||||
| mniejszylubrówny | |||||||||||
| lewy niski naro¿nik | |||||||||||
| prawy niski naro¿nik | |||||||||||
| nierówny | |||||||||||
| plus/minus | |||||||||||
| scan line 1 | |||||||||||
| scan line 3 | |||||||||||
| scan line 7 | |||||||||||
| scan line 9 | |||||||||||
| czysty blok kwadratowy | |||||||||||
| T wskazuj±ce w dó³ | |||||||||||
| T wskazuj±ce w lewo | |||||||||||
| T wskazuj±ce w prawo | |||||||||||
| T wskazuj±ce w górê | |||||||||||
| lewy wysoki naro¿nik | |||||||||||
| prawy wysoki naro¿nik | |||||||||||
| linia pionowa | |||||||||||
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:
| 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. | | | | ||||
| 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 | |||||||
| (pó³-linii w górê) | |||||||
| i | |||||||
| (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 | |||||||
| (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 | |||||||
| 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 | |||||||
| Wybierany jest prototypowy znak komendy, u¿ywany we wszystkich | |||||||
| w³a¶ciwo¶ciach. | |||||||
| Znak ten jest podawany przez w³a¶ciwo¶æ | |||||||
| Na niektórych systemach uniksowych obs³ugiwana jest nastêpuj±ca konwencja: | |||||||
| W ¶rodowisku szukana jest zmienna | |||||||
| 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 | |||||||
| i | |||||||
| powinny zawieraæ w³a¶ciwo¶æ | |||||||
| (generic), aby programy mog³y stwierdziæ, ¿e nie wiedz± jak rozmawiaæ z | |||||||
| terminalem. (W³a¶ciwo¶æ ta nie tyczy siê opisów terminali | |||||||
| 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± | |||||||
| 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 | |||||||
| i | |||||||
| 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 | |||||||
| Nadanie warto¶ci | |||||||
| 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 | |||||||
| £añcuchy media copy, steruj±ce zewnêtrzn± drukark±, pod³±czon± do terminala | |||||||
| mog± byæ podawane jako | |||||||
| drukuj zawarto¶æ ekranu, | |||||||
| wy³±cz drukarkê i | |||||||
| 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 | |||||||
| 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 | |||||||
| jest podczas dzia³ania | |||||||
| przezroczy¶cie przekazywany drukarce. | |||||||
| 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 | |||||||
| (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¶æ | |||||||
| 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. | |||||||
| 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 | |||||||
| przes³aniaj± te z typu wybranego przez | |||||||
| 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, | |||||||
| 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. | |||||||
| 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 1K). Z tego powodu, | |||||||
| translacje termcap d³ugich wpisów terminfo mog± powodowaæ problemy. | |||||||
| Strony podrêcznika man dla 4.3BSD i starszych wersji tgetent() mówi± | |||||||
| u¿ytkownikowi, by alokowa³ 1K bufor na wpis termcap. Wpis jest zakoñczony | |||||||
| zerem przez bibliotekê termcap, wiêc bezpieczn± d³ugo¶ci± wpisu termcap s± | |||||||
| 1023 bajty. Zale¿nie od tego, co robi dana aplikacja i biblioteka termcap i | |||||||
| od tego gdzie w pliku termcap znajduje typ terminala szukany przez | |||||||
| tgetent(), mog± dziaæ siê ró¿ne rzeczy. | |||||||
| Niektóre biblioteki termcap drukuj± komunikat ostrzegawczy i koñcz± | |||||||
| dzia³anie; inne nie; inne skracaj± wpis do 1023 bajtów. Niektóre aplikacje | |||||||
| alokuj± wiêcej ni¿ wymagany 1K; inne nie. | |||||||
| Ka¿dy wpis termcap zawiera zwi±zane ze sob± dwa wa¿ne rozmiary: przed | |||||||
| rozwiniêciem "tc" i po rozwiniêciu. "tc" jest w³a¶ciwo¶ci±, która fastryguje | |||||||
| inny wpis termcap do koñca bie¿±cego, aby dodaæ jego w³a¶ciwo¶ci. Je¶li wpis | |||||||
| termcap nie u¿ywa w³a¶ciwo¶ci "tc", to oczywi¶cie obydwa rozmiary s± | |||||||
| identyczne. | |||||||
| D³ugo¶æ przed rozwiniêciem tc jest nawja¿niejsza, gdy¿ dotyczy czego¶ wiêcej | |||||||
| ni¿ tylko u¿ytkowników konkretnego terminala. Jest to d³ugo¶æ wpisu | |||||||
| istniej±cego w /etc/termcap minus para lewy uko¶nik/nowa linia, które s± | |||||||
| pomijane przez tgetent() podczas odczytu. Niektóre biblioteki termcap | |||||||
| obcinaj± równie¿ koñcow± now± liniê (GNU termcap tego nie robi). | |||||||
| Za³ó¿ teraz, ¿e: | |||||||
| * | |||||||
| wpis termcap przed rozwiniêciem ma wiêcej ni¿ 1023 bajty, | |||||||
| * | |||||||
| aplikacja zaalokowa³a jedynie 1K, | |||||||
| * | |||||||
| biblioteka termcap (jak BSD/OS 1.1 i GNU) odczytuje ca³y wpis do bufora, | |||||||
| niezale¿nie od d³ugo¶ci, aby zobaczyæ czy jest to ten wpis co trzeba, | |||||||
| * | |||||||
| a tgetent() szuka typu terminala, który jest albo d³ugim wpisem, jak i | |||||||
| znajduje siê w pliku termcap za d³ugim wpisem, albo nie istnieje w pliku w | |||||||
| ogóle (wiêc tgetent() musi przeszukiwaæ ca³y plik termcap). | |||||||
| W tej sytuacji tgetent() nadpisze pamiêæ, byæ mo¿e równie¿ swój stos i | |||||||
| prawdopodobnie rzuci kor±. Programy typu telnet s± szczególnie okaleczalne; | |||||||
| nowoczesne telnety przekazuj± warto¶ci jak typ terminala automatycznie. | |||||||
| Wyniki s± podobnie niechciane dla bibliotek termcap, jak SunOS 4.1.3 i | |||||||
| Ultrix 4.4, które drukuj± ostrze¿enia gdy odczytuj± zbyt d³ugie wpisy | |||||||
| termcap. Je¶li biblioteka termcap obcina d³ugie wpisy, jak OSF/1 3.0, to | |||||||
| jest odporna na ten problem, lecz zwraca nieprawid³owe dane dla terminala. | |||||||
| Rozmiar "po rozwiniêciu tc" ma podobne dzia³anie na powy¿sze, lecz jedynie | |||||||
| dla osób, które ustawi³y TERM na ten typ terminala, gdy¿ tgetent() dokonuje | |||||||
| rozwiniêcia "tc" tylko je¶li znajdzie odpowiedni typ. | |||||||
| Ogólnie, wpis termcap, który jest d³u¿szy ni¿ 1023 bajty mo¿e spowodowaæ | |||||||
| zrzut core, ostrze¿enia lub nieprawid³owe dzia³anie. Je¶li jest zbyt d³ugi | |||||||
| przed rozwiniêciem "tc", to bêdzie tak dzia³a³ nawet dla u¿ytkowników innych | |||||||
| typów terminal, i tych których zmienna TERM nie posiada opisu w pliku | |||||||
| termcap. | |||||||
| W trybie -C (t³umaczenia na termcap), implementacja tic(1) z | |||||||
| ncurses daje ostrze¿enia gdy d³ugo¶æ przed-tc wpisu termcap jest zbyt | |||||||
| wielka. Opcja -c (check) sprawdza równie¿ rozwiniête (po tc) d³ugo¶ci. | |||||||
| Nie jest m±dre liczyæ na przeno¶no¶æ binarnych opisów terminfo miêdzy | |||||||
| komercyjnymi wersjami uniksa. Problem polega na tym, ¿e istniej± | |||||||
| przynajmniej dwie wersje terminfo (pod HP-UX i AUX), które pochodz± z | |||||||
| terminfo System V po SVr1 i doda³y rozszerzone w³a¶ciwo¶ci do tablicy | |||||||
| ³añcuchów które (binarnie) koliduj± z rozszerzeniami Systemu V i XSI Curses. | |||||||
| Operator %x parametryzowanych ³añcuchów jest typowy tylko dla implementacji | |||||||
| tparm wykonanej w ncurses (jest wymagany do obs³ugi niefortunnego | |||||||
| formatu initc na konsoli Linux). | |||||||
| Niektóre implementacje curses z SVr4 i wszystkie poprzednie nie | |||||||
| interpretuj± operatorów %A i %O z parametryzowanych ³añcuchów. | |||||||
| SVr4/XPG4 nie okre¶laj± czy msgr zezwala na poruszanie w trybie | |||||||
| alternatywnego zestawu znaków (takie tryby mog± miêdzy innymi mapowaæ CR | |||||||
| oraz NL na znaki, które nie poci±gaj± lokalnych przemieszczeñ). | |||||||
| Implementacja ncurses ignoruje msgr w trybie ALTCHARSET. | |||||||
| Przychodzi wiêc mo¿liwo¶æ, ¿e implementacja XPG4, robi±ca odwrotne za³o¿enie | |||||||
| mo¿e wymagaæ wpisów terminfo z ncurses z wy³±czonym msgr. | |||||||
| Biblioteka ncurses obs³uguje tryby wstawiania znaku i wstawiania | |||||||
| znaków w trochê niestandardowy sposób, aby zyskaæ na efektywno¶ci. Zobacz | |||||||
| wy¿ej sekcjê Wstawianie/kasowanie znaków. | |||||||
| Podstawienia parametrów dla set_clock i display_clock nie s± | |||||||
| udokumentowane w SVr4 i w standardzie XSI. S± one wydedukowane z | |||||||
| dokumentacji terminala AT&T 505. | |||||||
| Uwa¿aj z przyznawaniem w³asciwo¶ci kmous. ncurses zechc± | |||||||
| interpretowaæ to jako KEY_MOUSE dla u¿ytku w terminalach i w | |||||||
| emulatorach (jak xte | |||||||