Ocenite etot tekst:

              NEIZVESTNOGO INFORMIX


Dlya  nastrojki  na  terminaly  UNIX-ovskie programmy ispol'zuyut
fajl termcap,  v kotorom sobrany opisaniya vseh (ili pochti vseh)
terminalov,   sushchestvuyushchih   v  prirode.   Vyyasniv,  kakoj  tip
terminala podklyuchen k  mashine  (a  zadaetsya  eto  v  peremennoj
okruzheniya   TERM   -   naprimer   TERM=d460   ili   TERM=d211),
UNIX-programma nahodit opisanie etogo terminala  v  termcap  i,
nastroivshis'  po  hranyashchejsya  tam  informacii,  mozhet adekvatno
vosproizvodit' na nem informaciyu, podlezhashchuyu vyvodu.

INFORMIX imeet svoj sobstvennyj fajl s  opisaniyami  terminalov,
ego imya /usr/informix/etc/termcap , v nem podderzhivaetsya bol'she
vozmozhnostej  po  sravneniyu so standartnym termcap UNIX'a. Zato
mnogih terminalov, izvestnyh UNIX, v INFORMIXovom  termcape  ne
opisano.  Poetomu esli na vashej mashine stoyat terminaly kakoj-to
drugoj konstrukcii (t.e.,  prakticheski  lyuboj  terminal  pomimo
d211, d460, vt220), vam pridetsya opisanie delat' samomu.

Obshchij  format termcap-opisaniya terminala mozhno opisan v termin­
fo(4) ("Spravochnike administratora UNIX V"), ego tak  zhe  legko
urazumet',  rassmatrivaya  opisaniya  drugih  terminalov,  i ya ne
stanu osobo podrobno na nem ostanavlivat'sya.



Format bazy terminalov termcap/terminfo

Za osnovu nado vzyat' opisanie terminala iz bazy terminfo UNIXa,
otredaktirovat',    ispravit' i otladit' ego, i vstavit' v fajl
/usr/informix/etc/termcap

Pomestit' polnoe opisanie terminala vt220 v formate terminfo po
odnoj harakteristike v stroke v fajl vt220 :
---------------------------------------------------------------
infocmp -r1 vt220 > vt220
---------------------------------------------------------------

Pomestit' ispravlennoe opisanie terminala vt220 v  bazu  dannyh
terminfo
---------------------------------------------------------------
tic vt220
---------------------------------------------------------------

Pomestit'  polnoe opisanie terminala vt220 v formate termcap po
odnoj harakteristike v stroke v fajl tmp :
---------------------------------------------------------------
infocmp -Cr1 vt220 > tmp
---------------------------------------------------------------

Pomestit' ispravlennoe opisanie terminala vt220 v bazu termcap
---------------------------------------------------------------
Samostoyatel'no,  ruchkami, s pomoshch'yu lyubogo tekstovogo redaktora
zamenyaem staroe opisanie na novoe v fajle /etc/termcap ili/i
/usr/informix/etc/termcap
---------------------------------------------------------------

Sdelat' opisanie formata terminfo iz opisaniya formata termcap
---------------------------------------------------------------
captoinfo vt220.cap > vt220
---------------------------------------------------------------

V rezul'tate nekotorogo kolichestva eksperimentov ya vyyasnil, ka-
kie komandy dlya INFORMIX znat' neobhodimo, a kakie neobyazatel'-
ny.

Vot  kakie  harakteristiki  imeet smysl, i sleduet, zadavat' (A
ostal'nye, skoree vsego, voobshche neobyazatel'no ukazyvat'):



        :am:\     v terminale est' avtomaticheskie granicy
        :bw:\     mozhno perevodit' kursor iz kolonki 0 v poslednyuyu
        :mi:\     mozhno bez opasenij peremeshchat'sya v rezhime vstavki
        :ms:\     mozhno bez opasenij peremeshchat'sya v rezhime soobshchenij
        :xo:\     terminal ispol'zuet protokol xon/xoff


              esli na nee nazhat'.

termcap         |
harakteristika  |  klavisha
----------------+------------------------------------------
k0 ... k9          F1 ... F10
kA ... kK          F11 .. F20

ki                 klyuch vstavit' stroku
kj                 klyuch unichtozhit' stroku
kf                 klyuch na sleduyushchuyu stranicu
kg                 klyuch na predydushchuyu stranicu

ku                 strelka vverh
kd                 strelka vniz
kr                 strelka vpravo
kl                 strelka vlevo

        naprimer, dlya xterm:
 :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\



vi      sdelat' kursor nevidimym
ve      sdelat' kursor normal'nym
vs      sdelat' kursor yarkim

cm      pozicionirovat' kursor #str #stolb
        (ispol'zuet stek-mashinu terminala),
 naprimer        :cm=\E[%i%d;%dH:\      dlya vt220
                 :cm=^P%r%.%.:\         dlya d211

bc      shag nazad
le      kursor vlevo
do      kursor vniz
nd      kursor vpravo
up      kursor vverh

ho      v nachalo ekrana
cr      vernut' karetku
nl      perejti na novuyu stroku
nw      vozvrat karetki i perehod k novoj stroke

        naprimer, dlya vt100:
 :up=\E[A:do=\E[B:nd=\E[C:le=\E[D:\



cl      ochistit' ekran
ic      vstavit' simvol
dc      udalit' simvol
bl      zvonok



ti      vklyuchit' terminal v shtatnyj rezhim raboty.
te      "vosstanovit'" pervobytnoe sostoyanie
 Naprimer, dlya terminala d211-132:
        :ti=^^FK:\      Vklyuchit' 132 simvol'nyj ekran
        :te=^^FJ:\      Vklyuchit' 80 simvol'nyj ekran



as             perejti k dopolnitel'nomu alfavitu
ae             vernut'sya iz dopolnitel'nogo alfavita
ac             pary simvolov iz graficheskogo alfavita
mr             v rezhim REVERSE
me             vyklyuchit' vse atributy



        nuzhno perechislit' simvoly ASCII, kotorye, buduchi
        vyvedeny v rezhime psevdografiki, narisuyut "ugolki"
gb      simvoly risovaniya ramki     pqbd-|
gs      v rezhim psevdografiki.
ge      konec rezhima psevdografiki.
 Naprimer, dlya terminala d460:
        :gb=1324;\::\
        :gs=^^FS11:ge=^^FS00:\



Esli  harakteristiki  ZA ne zadano, to terminal budet podderzhi-
vat' tol'ko dva cveta: REVERSE i NORMAL. (V termcap UNIX'a est'
analogichnaya harakteristika sa.)

Harakteristika ZA ispol'zuet stek_mashinu terminala i parametry.
Ustroeno vse primerno tak:

U terminala est', tak nazyvaemaya, stek_mashina:
|to neskol'ko peremennyh, neskol'ko staticheskih peremennyh, vo-
sem' parametrov ot p1 do p8, i stek.
Imeetsya nabor operacij, kotorymi mozhno manipulirovat' s  danny-
mi,  lezhashchimi v peremennyh i v parametrah, proizvodit' nad nimi
v steke logicheskie i arifmeticheskie operacii  i  peresylat'  na
terminal.

Kogda  INFORMIXu nuzhno pomenyat' atributy  vyvoda, on ustanavli-
vaet v parametrah p1 - p4 nuzhnye znacheniya, a  dal'she  primenyaet
komandu  terminala, zapisannuyu v ZA. V itoge na terminal uhodit
ESC-posledovatel'nost', vklyuchayushchaya  na  nem  zadannye  atributy
(cveta).

parametr | znachenie  |  zadaet atribut(na monohrome) ili cvet
---------+-----------+---------------------------------------
p1        ot 0 do 7       opredelyaet cvet  (ot WHITE do BLACK)
-------------------------------------------------------------
p1   0              NORMAL               WHITE
p1   1              BOLD                 CYAN
p1   2              BOLD                 YELLOW
p1   3              BOLD                 MAGENTA
p1   4              DIM                  RED
p1   5              DIM                  GREEN
p1   6              DIM                  BLUE
p1   7              INVISIBLE            BLACK

p2  1 ili 0         atribut REVERSE     (est' ili net)
p3  1 ili 0         atribut DIM         (est' ili net)
p4  1 ili 0         atribut UNDERLINE   (est' ili net)

Stek-mashina ponimaet takie komandy:

%pi     parametr i v stek      gde i=1,2,...,8
%{n}    chislo n v stek
%c      vershinu steka na terminal v formate %c (1 bajt)
%d      vershinu steka na terminal v formate %d (celoe chislo)

Uslovnyj  operator %? %t %e %; Vynimaetsya znachenie iz steka, i,
v zavisimosti ot ego  znacheniya  (0  /  ne0),  vypolnyaet  sootv.
vetv'.
%? operaciya %t operaciya_kogda_istinno %e operaciya_kogda_lozhno %;
%? operaciya %t operaciya_kogda_istinno %;

Est' eshche nekotoroe kolichestvo komand, no oni nam ne ponadobyatsya.
Ostal'nye simvoly srazu peresylayutsya na terminal bez izmenenij.



V instrukcii k terminalu napisano, chto  ukazannye  atributy  na
terminale ustanavlivayutsya sleduyushchimi ESC-posledovatel'nostyami:

\E[0m           sbrosit' vse atributy.      (esli p1=0)
\E[0;1m         ustanovit' BOLD             (esli p1>0)
\E[0;7m         ustanovit' REVERSE          (esli p2=1)
\E[0;5m         ustanovit' BLINK            (esli p3=1)
\E[0;4m         ustanovit' UNDERLINE        (esli p4=1)

        Itak:
ZA=\E[0 # posylaem nachalo posledovatel'nosti \E[0 - sbros  vseh
        #  atributov.
 %?%p1          # esli p1 ne raven 0
   %t;1%;         # to vyvesti na terminal simvoly ;1
 %?%p2%t;7%;    # esli p2 raven 1 to vyvesti na terminal ;7
 %?%p3%t;5%;    # esli p3 raven 1 to vyvesti na terminal ;5
 %?%p4%t;4%;    # esli p4 raven 1 to vyvesti na terminal ;4
 m             # vyvesti simvol m

Ob®edinyaem  vse  vmeste  i poluchaem ZA harakteristiku terminala
vt220

        :ZA=\E[0%?%p1%t;1%;%?%p2%t;7%;%?%p3%t;5%;%?%p4%t;4%;m:

Kak vidite, eta harakteristika ZA ne obespechit nam nikakih cve-
tov. Lyubiteli krasivogo mogut  samostoyatel'no  pouprazhnyat'sya  s
razborkoj i obrabotkoj vseh vozmozhnyh znachenij parametra p1.

Last-modified: Tue, 25 Nov 1997 06:58:27 GMT
Ocenite etot tekst: