terminfo(4) terminfo(4)
NAME
terminfo - Datenbasis der Terminal-Eigenschaften
SYNTAX
/usr/share/lib/terminfo/?/*
BESCHREIBUNG
terminfo ist eine von tic(1M) generierte Datenbasis, in der die Eigen-
schaften von Geräten wie z. B. Druckern und Terminals beschrieben wer-
den. Die Gerätebeschreibungen sind in den terminfo-Quelldateien ent-
halten und bestehen aus einer Reihe von Eigenschaften, aus quantitati-
ven Angaben über bestimmte Aspekte des Geräts sowie aus Strings, die
zu bestimmten Ergebnissen führen. Die terminfo-Datenbasis wird häufig
durch bildschirmorientierte Anwendungen wie die Programme vi(1) und
curses(3X) genutzt, außerdem durch eine Reihe von Reliant UNIX Komman-
dos wie z. B. ls(1) und more(1). Diese Datenbasis ermöglicht die
Benutzung der unterschiedlichsten Geräte, ohne daß dafür die Programme
geändert werden müssen.
Die terminfo-Quelldateien enthalten ein oder mehrere Gerätebeschrei-
bungen. Jede Beschreibung besteht aus einer Kopfzeile (ab Spalte 1)
und ein oder mehreren Zeilen, in der die Attribute des jeweiligen
Geräts enthalten sind. Jede Zeile in einer terminfo-Quelldatei muß mit
einem Komma (,) abgeschlossen werden. Mit Ausnahme der Kopfzeile müs-
sen alle Zeilen innerhalb einer terminfo-Quelldatei um ein oder meh-
rere Leerzeichen (Leer- oder Tabulatorzeichen) eingerückt sein.
Die Einträge in den terminfo-Quelldateien bestehen aus einer Reihe von
Feldern, die durch Komma voneinander getrennt sind. Die Leerzeichen,
die auf jedes Komma folgen, werden ignoriert. Kommata innerhalb der
Felder müssen durch Voranstellen eines Backslash (\) entwertet werden.
Das folgende Beispiel zeigt das Format einer terminfo-Quelldatei.
alias1 | alias2 | ... | aliasn | longname,
<leerzeichen> am, lines #24,
<leerzeichen> home=\Eeh,
Die erste Zeile, die im allgemeinen als Kopfzeile bezeichnet wird, muß
in Spalte 1 beginnen und mindestens zwei durch vertikalen Strich
voneinander getrennte Alias-Einträge enthalten. Das letzte Feld in der
Kopfzeile, die ausführliche Gerätebezeichnung ("longname"), kann ein
beliebiger String sein. Die Alias-Namen dürfen in der terminfo-Daten-
basis nur einmal vorkommen und müssen nach den Regeln für die Benen-
nung von Reliant UNIX Dateien gebildet sein (d. h., sie dürfen bei-
spielsweise keine Leerzeichen oder Schrägstriche enthalten).
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Jedem Gerät muß ein Name wie z. B. vt100 zugeordnet sein. Alle Geräte-
namen (mit Ausnahme der longnames) müssen nach den folgenden Regeln
gebildet sein: Ein Gerätename darf keine Bindestriche enthalten, es
sei denn, es werden Suffixe angefügt, die für spezielle Betriebsarten
stehen.
Bei diesen speziellen Betriebsarten wird zwischen Betriebsarten der
Hardware und benutzerdefinierten Betriebsarten unterschieden. Um einem
bestimmten Gerät eine spezielle Betriebsart zuzuordnen, wird dem Gerä-
tenamen ein Suffix angefügt, das aus einem Bindestrich und dem Code
für diese Betriebsart besteht. So steht das Suffix -w (wide) bei-
spielsweise für "Breite Bildschirmanzeige"; ist dem Gerätenamen dieses
Suffix angefügt worden, bewirkt es eine 132-Spalten-Anzeige statt der
standardmäßig benutzten 80-Spalten-Anzeige. Um ein Gerät mit der
Bezeichnung vt100 in die 130-Spalten-Anzeige umzuschalten, teilen Sie
ihm somit den Namen vt100-w zu. Abhängig von der benutzten Hardware
werden die folgenden Suffixe unterstützt:
_____________________________________________________________________
| Suffix Bedeutung Beispiel |
|____________________________________________________________________|
| -w Breite Bildschirmanzeige (mehr als 80 Spalten) 5410-w |
| -am Automatischer Zeilenumbruch (i. a. Standard) vt100-am |
| -nam Kein automatischer Zeilenumbruch vt100-nam|
| -n Anzahl der Zeilen auf dem Bildschirm 2300-40 |
| -na Keine Pfeiltasten (nur lokal benutzen) c100-na |
| -np Anzahl der Seiten im Speicher c100-4p |
| -rv Umkehranzeige 4415-rv |
|____________________________________________________________________|
Die Beschreibung für terminfo besteht aus den zwei Teilen GERÄTEEIGEN-
SCHAFTEN und DRUCKEREIGENSCHAFTEN.
TEIL 1: GERÄTEEIGENSCHAFTEN
In terminfo werden drei verschiedene Typen von Eigenschaften beschrie-
ben: boolesche Werte (geben an, ob ein Gerät ein bestimmtes Merkmal
hat oder nicht hat), numerische Werte (machen quantitative Angaben
über bestimmte Merkmale eines Geräts) sowie Strings (bewirken die
Durchführung von bestimmten Funktionen für Geräte).
Die Tabelle der Eigenschaften enthält folgende Spalten:
Variable
Der Name, über den in einem C-Programm (auf der terminfo-Ebene)
auf eine bestimmte Eigenschaft zugegriffen wird.
Capname (CN)
Die Kurzbezeichnung für eine Eigenschaft, die in der terminfo-
Quelldatei aufgeführt ist. Wird bei der Aktualisierung der Quell-
datei sowie durch das Kommando tput(1) benutzt.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Termcap Code (TCC)
Eine zweistellige Zeichenfolge, die der Eigenschaft in der
termcap-Datenbasis zugeordnet ist (beachten Sie, daß termcap
nicht mehr unterstützt wird).
Boolesche Werte
Variable CN TCC Beschreibung
________________________________________________________________________________
autoleftmargin bw bw Bei cub1 wird ein Zeilenumbruch von
Spalte 0 zur letzten Spalte durchgeführt
autorightmargin am am Terminal mit automatischem Zeilenumbruch
backcolorerase bce be Bildschirmanzeige wird durch Hintergrund-
farbe gelöscht
canchange ccc cc Terminal kann vorhandene Farbe neu
definieren
ceolstandoutglitch xhp xs Hervorhebung wird durch Überschreiben
nicht gelöscht (hp)
coladdrglitch xhpa YA Nur positive Cursor-Bewegung bei den
Eigenschaften hpa/mhpa
cpichangesres cpix YF Bei Änderung des Zeichenabstands wird
gleichzeitig die Auflösung geändert
crcancelsmicromode crxm YB Durch cr wird der Mikro-Modus ausge-
schaltet
desttabsmagicsmso xt xt Nichterhaltende Tabulatorzeichen, spe-
zielles smso-Zeichen (t1061)
eatnewlineglitch xenl xn Zeilenendezeichen wird nach 80 Spalten
ignoriert (Concept)
eraseoverstrike eo eo Überschriebene Zeichen können durch Leer-
zeichen gelöscht werden
generictype gn gn Allgemeiner Leitungstyp (z. B. Wähllei-
tung)
getmouse getm Gm Maustastenklicks registrieren
hardcopy hc hc Hardcopy-Terminal
hardcursor chts HC Cursor ist schwer zu erkennen
hasmetakey km km Meta-Taste vorhanden (Taste SHIFT zum
Setzen des Paritätsbits)
hasprintwheel daisy YC Für Zeichensatzwechsel ist Wechsel des
Typenrads im Drucker notwendig
hasstatusline hs hs Zusätzliche "Statuszeile" vorhanden
huelightnesssaturation hls hl Zur Farbdarstellung wird auf dem
Terminal nur das HLS-Farbsystem
(Tektronix) benutzt
insertnullglitch in in Als Leerzeichen werden Null- und keine
Leerzeichen eingefügt
lpichangesres lpix YG Bei einer Änderung des Zeilenabstands
ändert sich gleichzeitig auch die Auflö-
sung
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
memoryabove da da Die Bildschirmanzeige kann oberhalb des
Bildschirmrands erhalten bleiben
memorybelow db db Die Bildschirmanzeige kann unterhalb des
Bildschirmrands erhalten bleiben
moveinsertmode mir mi Keine Probleme bei Cursor-Bewegungen im
Einfügemodus
movestandoutmode msgr ms Keine Probleme bei Cursor-Bewegungen im
Hervorhebungsmodus
needsxonxoff nxon nx Keine Verzögerung möglich, aber XON/XOFF
muß benutzt werden
nondestscrollregion ndscr ND Scroll-Bereich ist nicht-destruktiv
nonrevrmcup nrrmc NR smcup führt nicht zur Umkehrung von rmcup
noescctlc xsb xb Beehive (f1=escape, f2=CTRL-C)
nopadchar npc NP Keine Füllzeichen vorhanden
overstrike os os Überschreiben von Zeichen auf Hardcopy-
Terminals
prtrsilent mc5i 5i Druckermeldungen erscheinen nicht auf dem
Bildschirm
rowaddrglitch xvpa YD Nur positive Cursor-Bewegungen bei den
Eigenschaften vpa/mvpa
semiautorightmargin sam YE Zeichenausgabe in letzter Spalte führt zu
cr
statuslineescok eslok es Benutzung des Escape-Zeichens in der Sta-
tuszeile möglich
tildeglitch hz hz Hazeltine; es können keine Tilden (~)
gedruckt werden
transparentunderline ul ul Überschreiben eines Zeichens durch den
Unterstrich
xonxoff xon xo Terminal arbeitet mit dem XON/XOFF-
Protokoll
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Numerische Werte
Variable CN TCC Beschreibung
________________________________________________________________________________
bitimageentwining bitwin Yo Anzahl der Durchläufe für jede Bit-Map-
Reihe
bitimagetype bitype Yp Rasterdaten-Typ
buffercapacity bufsz Ya Anzahl der Bytes, die vor dem Ausdrucken
im Puffer gespeichert werden
buttons btns BT Anzahl der Maustasten
columns cols co Anzahl der Spalten pro Zeile
dothorzspacing spinh Yc Punktabstand in horizontaler Richtung
(Punkte pro Zoll)
dotvertspacing spinv Yb Anzahl der Nadeln in vertikaler Richtung
(Nadeln pro Zoll)
inittabs it it Tabstopps standardmäßig alle # Leer-
zeichen
labelheight lh lh Anzahl der Zeilen pro Label
labelwidth lw lw Anzahl der Spalten pro Label
lines lines li Anzahl der Zeilen pro (Bildschirm-)Seite
linesofmemory lm lm Anzahl der Zeilen im Speicher falls
> lines; 0 steht für variable Zeilenzahl
magiccookieglitch xmc sg Anzahl der Leerzeichen, die nach smso
oder rmso übrig bleiben
maximumwindows wnum MW Maximale Anzahl definierbarer Fenster
maxattributes ma ma Maximale Anzahl von Video-Attributen, die
der Bildschirm darstellen kann
maxcolors colors Co Maximale Anzahl der Farben auf dem
Bildschirm
maxmicroaddress maddr Yd Maximalwert in micro...address
maxmicrojump mjump Ye Maximalwert in parm...micro
maxpairs pairs pa Maximale Anzahl der Farbkombinationen
auf dem Bildschirm
microcolsize mcs Yf Schrittweite der Zeichen im Mikro-Modus
microlinesize mls Yg Zeilen-Schrittweite im Mikro-Modus
nocolorvideo ncv NC Bildschirmattribute, die nicht mit Farb-
attributen kombiniert werden können
numberofpins npins Yh Anzahl der Nadeln im Druckkopf
numlabels nlab Nl Anzahl der Labels auf dem Bildschirm
(mindestens 1)
outputreschar orc Yi Horizontale Auflösung in Einheiten pro
Zeichen
outputreshorzinch orhi Yk Horizontale Auflösung in Einheiten pro
Zoll
outputresline orl Yj Vertikale Auflösung in Einheiten pro
Zeile
outputresvertinch orvi Yl Vertikale Auflösung in Einheiten pro Zoll
paddingbaudrate pb pb Niedrigste Baudrate, wenn Füllzeichen
notwendig sind
virtualterminal vt vt Nummer des virtuellen Bildschirms
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
widecharsize widcs Yn Schrittweite beim Drucken in Breitschrift
widthstatusline wsl ws Anzahl der Spalten in der Statuszeile
Strings
Variable CN TCC Beschreibung
________________________________________________________________________________
acschars acsc ac Zeichensatzpaare aAbBcC für Graphik-
darstellung
altscancodeesc scesa S8 Alternativ-Escape-Sequenz für Scancode-
Emulation (Standard: für vt100)
backtab cbt bt Rücktab
bell bel bl Akustisches Signal (Glocke)
bitimagecarriagereturn bicr Yv Sprung an den Anfang derselben Zeile
bitimagenewline binel Zz Wechsel in nächste Zeile des Rasters
bitimagerepeat birep Zy Rasterzelle 1 oder 2 Mal wiederholen
carriagereturn cr cr Carriage return
changecharpitch cpi ZA Anzahl der Zeichen pro Zoll ändern
changelinepitch lpi ZB Anzahl der Zeilen pro Zoll ändern
changereshorz chr ZC Horizontale Auflösung ändern
changeresvert cvr ZD Vertikale Auflösung ändern
changescrollregion csr cs Wechsel zu Zeilen #1 bis #2 (vt100)
charpadding rmp rP Dieselbe Funktion wie ip, aber im
Ersetzungsmodus
charsetnames csnm Zy Zeichensatznamen auflisten
clearalltabs tbc ct Sämtliche Tabstopps löschen
clearmargins mgc MC Sämtliche Ränder löschen (oben, unten,
seitlich)
clearscreen clear cl Bildschirm löschen und Cursor in
Spalte 1 der ersten Zeile
clrbol el1 cb Sämtliche Zeichen bis zum Zeilenanfang
einschließlich des Zeichens auf Spalte 1
löschen
clreol el ce Sämtliche Zeichen bis zum Zeilenende
löschen
clreos ed cd Sämtliche Zeichen bis zum Ende der Bild-
schirmanzeige löschen
codesetinit csin ci Init-Folge für Mehrfach-Codesätze
colornames colornm Yw Name für Farbe #1 angeben
columnaddress hpa ch Horizontale Position, absolut
commandcharacter cmdch CC Terminal-spezifisch einstellbares
Kommando-Zeichen
createwindow cwin CW Fenster #1 definieren, um von #2,#3 nach
#4,#5 zu gehen
cursoraddress cup cm Cursor in Spalte #1, Spalte #2
cursordown cud1 do Sprung in nächste Zeile
cursorhome home ho Cursor in erste Spalte der ersten Zeile
(falls cup nicht angegeben wurde)
cursorinvisible civis vi Darstellung des Cursors ausblenden
cursorleft cub1 le Cursor um ein Leerzeichen zurück
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
cursormemaddress mrcup CM Speicherbezogene Cursor-Adressierung
cursornormal cnorm ve Normaldarstellung des Cursors
(vs/vi aufheben)
cursorright cuf1 nd Cursor um ein Leerzeichen nach rechts,
ohne das jeweilige Zeichen zu löschen
(Cursor bzw. Druckkopf nach rechts)
cursortoll ll ll Cursor in erste Spalte der letzten Zeile
(falls cup nicht angegeben wurde)
cursorup cuu1 up Cursor in darüberliegende Zeile
cursorvisible cvvis vs Cursor sehr gut erkennbar machen
definebitimageregion defbi Yx Rechteckigen Rasterdaten-Bereich
definieren
definechar defc ZE Zeichen in einem Zeichensatz definieren
deletecharacter dch1 dc Zeichen löschen
deleteline dl1 dl Zeile löschen
devicetype devt dv Unterstützte Landessprache bzw. unter-
stützten Codesatz anzeigen
dialphone dial DI Wähle Telefon-Nummer #1
displaypcchar dispc S1 PC-Zeichen anzeigen
disstatusline dsl ds Statuszeile ausblenden
downhalfline hd hd Cursor um eine halbe Zeile nach unten
(Zeilenvorschub um ½ Zeile)
enaacs enacs eA Alternativ-Zeichensatz aktivieren
endbitimageregion endbi Yy Ende eines Rasterdaten-Bereichs angeben
enteraltcharsetmode smacs as Alternativ-Zeichensatz aufrufen
enterammode smam SA Automatische Randeinstellungen ein-
schalten
enterblinkmode blink mb Blinken einschalten
enterboldmode bold md Fette (extra helle) Zeichendarstellung
einschalten
entercamode smcup ti String für den Anfang von Program-
men, die cup benutzen
enterdeletemode smdc dm Löschmodus (einschalten)
enterdimmode dim mh Halbhell-Modus einschalten
enterdoublewidemode swidm ZF Drucken in Breitschrift einschalten
enterdraftquality sdrfq ZG Drucken in Entwurfsqualität
enterhorizontalhlmode ehhlm Horizontalen Hervorhebungsmodus ein-
schalten
enterinsertmode smir im Einfügemodus (einschalten)
enteritalicsmode sitm ZH Kursivschrift einschalten
enterleftwardmode slm ZI Bewegung des Druckkopfs nach links
aktivieren
enterlefthlmode elhlm Linken Hervorhebungsmodus einschalten
enterlowhlmode elohlm Unteren Hervorhebungsmodus einschalten
entermicromode smicm ZJ Möglichkeit zur Durchführung von Mikro-
Schritten einschalten
enternearletterquality snlq ZK Drucken in NLQ-Qualität aktivieren
enternormalquality snrmq ZL Drucken in normaler Druckqualität
aktivieren
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
enterpccharsetmode smpch S2 Modus zur Anzeige von PC-Zeichen
aktivieren
enterprotectedmode prot mp Geschützten Modus aktivieren
enterreversemode rev mr Umkehrdarstellung aktivieren
enterrighthlmode erhlm Rechten Hervorhebungsmodus einschalten
enterscancodemode smsc S4 PC-Scancode-Modus aktivieren
entersecuremode invis mk Blank-Modus aktivieren (Zeichen un-
sichtbar)
entershadowmode sshm ZM Schattendruck einschalten
enterstandoutmode smso so Hervorhebungsmodus einschalten
entersubscriptmode ssubm ZN Tiefgestelltes Zeichen drucken
entersuperscriptmode ssupm ZO Hochgestelltes Zeichen drucken
entertophlmode ethlm Oberen Hervorhebungsmodus einschalten
enterunderlinemode smul us Zeichen unterstreichen
enterupwardmode sum ZP Bewegung des Druckkopfs nach oben
enterverticalhlmode evhlm Vertikalen Hervorhebungsmodus einschalten
enterxonmode smxon SX XON/XOFF-Protokoll einschalten
erasechars ech ec #1 Zeichen löschen
exitaltcharsetmode rmacs ae Alternativ-Zeichensatz deaktivieren
exitammode rmam RA Automatische Randeinstellungen
deaktivieren
exitattributemode sgr0 me Alle Attribute deaktivieren
exitcamode rmcup te String zur Beendigung von Program-
men, die cup benutzen
exitdeletemode rmdc ed Löschmodus deaktivieren
exitdoublewidemode rwidm ZQ Drucken in Breitschrift deaktivieren
exitinsertmode rmir ei Einfügemodus deaktivieren
exititalicsmode ritm ZR Kursivschrift deaktivieren
exitleftwardmode rlm ZS Druckkopf-Bewegung nach links deakti-
vieren
exitmicromode rmicm ZT Drucken in Mikro-Schritten deaktivieren
exitpccharsetmode rmpch S3 Anzeige von PC-Zeichen deaktivieren
exitscancodemode rmsc S5 PC-Scancode-Modus deaktivieren
exitshadowmode rshm ZU Schatten-Drucken aktivieren
exitstandoutmode rmso se Hervorhebungsmodus deaktivieren
exitsubscriptmode rsubm ZV Zeichen tiefstellen AUS
exitsuperscriptmode rsupm ZW Zeichen hochstellen AUS
exitunderlinemode rmul ue Unterstreichen AUS
exitupwardmode rum ZX Druckkopf-Bewegung nach oben deaktivieren
exitxonmode rmxon RX XON/XOFF-Protokoll deaktivieren
fixedpause pause PA Pause für 2-3 Sekunden
flashhook hook fh Schalter sichtbar machen
flashscreen flash vb Akustisches Signal (ohne Cursor-Bewe-
gung)
formfeed ff ff Seitenauswurf auf Hardcopy-Terminal
fromstatusline fsl fs Statuszeile verlassen
gotowindow wingo WG Gehe nach Fenster #1
hangup hup HU Telefonleitung unterbrechen
initializecolor initc Ic Farbdefinition initialisieren
initializepair initp Ip Farbkombination initialisieren
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
init1string is1 i1 Inititialisierungs-String für Drucker
oder Terminal
init2string is2 is Inititialisierungs-String für Drucker
oder Terminal
init3string is3 i3 Inititialisierungs-String für Drucker
oder Terminal
initfile if if Name der Initialisierungsdatei
initprog iprog iP Name des Programms zur Initialisierung
insertcharacter ich1 ic Zeichen einfügen
insertline il1 al Leerzeile einfügen
insertpadding ip ip Füllzeichen hinter eingefügtem Zeichen
einfügen
Die Strings, die mit key beginnen, werden durch das Drücken bestimm-
ter Tasten generiert. Die Beschreibungen für key enthalten das in
curses.h [siehe curses(5)] definierte Makro für den Code, der vom
curses-Unterprogramm getch() beim Drücken der jeweiligen Taste zurück-
gegeben wird [siehe getch(3X)].
Variable CN TCC Beschreibung
________________________________________________________________________________
keypadlocal rmkx ke Tastenblock deaktivieren
keypadxmit smkx ks Tastenblock auf dem Terminal aktivieren
keya1 ka1 K1 KEYA1, obere linke Taste des Tasten-
blocks
keya3 ka3 K3 KEYA3, obere rechte Taste des Tasten-
felds
keyb2 kb2 K2 KEYB2, Mitte des Tastenblocks
keybackspace kbs kb KEYBACKSPACE, über Taste BACKSPACE
generiert
keybeg kbeg @1 KEYBEG, über Taste BEG(inning) gene-
riert
keybtab kcbt kB KEYBTAB, über Taste BACK-TAB generiert
keyc1 kc1 K4 KEYC1, untere linke Taste des Tasten-
felds
keyc3 kc3 K5 KEYC3, untere rechte Taste des Tasten-
felds
keycancel kcan @2 KEYCANCEL, über Taste CANCEL generiert
keycatab ktbc ka KEYCATAB, über Taste CLEAR-ALL-TABS
generiert
keyclear kclr kC KEYCLEAR, über Taste CLEAR-SCREEN oder
Erase generiert
keyclose kclo @3 KEYCLOSE, über Taste CLOSE generiert
keycommand kcmd @4 KEYCOMMAND, über Taste CMD generiert
keycopy kcpy @5 KEYCOPY, über Taste COPY generiert
keycreate kcrt @6 KEYCREATE, über Taste CREATE generiert
keyctab kctab kt KEYCTAB, über Taste CLEAR-TAB generiert
keydc kdch1 kD KEYDC, über Taste DELETE-CHARACTER
generiert
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
keydl kdl1 kL KEYDL, über Taste DELETE-LINE generiert
keydown kcud1 kd KEYDOWN, über Taste DOWN-ARROW gene-
riert
keyeic krmir kM KEYEIC, über rmir oder smir im Einfüge-
modus generiert
keyend kend @7 KEYEND, über Taste END generiert
keyenter kent @8 KEYENTER, über Taste ENTER/SEND gene-
riert
keyeol kel kE KEYEOL, über Taste CLEAR-TO-END-OF-LINE
generiert
keyeos ked kS KEYEOS, über Taste CLEAR-TO-END-OF-
SCREEN generiert
keyexit kext @9 KEYEXIT, über Taste EXIT generiert
keyf0 kf0 k0 KEYF(0), über Funk.-taste f0 generiert
keyf1 kf1 k1 KEYF(1), über Funk.-taste f1 generiert
. . . .
. . . .
. . . .
keyf62 kf62 Fq KEYF(62), über Funk.-taste f62 gene-
riert
keyf63 kf63 Fr KEYF(63), über Funk.-taste f63 gene-
riert
keyfind kfnd @0 KEYFIND, über Taste FIND generiert
keyhelp khlp %1 KEYHELP, über Taste HELP generiert
keyhome khome kh KEYHOME, über Taste HOME generiert
keyic kich1 kI KEYIC, über Taste INS-CHAR/ENTER
INS-MODE generiert
keyil kil1 kA KEYIL, über Taste INSERT-LINE generiert
keyleft kcub1 kl KEYLEFT, über Taste LEFT-ARROW gene-
riert
keyll kll kH KEYLL, über Taste HOME-DOWN generiert
keymark kmrk %2 KEYMARK, über Taste MARK generiert
keymessage kmsg %3 KEYMESSAGE, über Taste MESSAGE gene-
riert
keymouse kmous Km 0631, Maustastenklick ist aufgetreten
keymove kmov %4 KEYMOVE, über Taste MOVE generiert
keynext knxt %5 KEYNEXT, über Taste NEXT-OBJECT gene-
riert
keynpage knp kN KEYNPAGE, über Taste NEXT-PAGE gene-
riert
keyopen kopn %6 KEYOPEN, über Taste OPEN generiert
keyoptions kopt %7 KEYOPTIONS, über Taste OPTIONS gene-
riert
keyppage kpp kP KEYPPAGE, über Taste PREVIOUS-PAGE
generiert
keyprevious kprv %8 KEYPREVIOUS, über Taste PREVIOUS-OBJECT
generiert
keyprint kprt %9 KEYPRINT, über Taste PRINT oder COPY
generiert
keyredo krdo %0 KEYREDO, über Taste REDO generiert
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
keyreference kref &1 KEYREFERENCE, über Taste REF(erence)
generiert
keyrefresh krfr &2 KEYREFRESH, über Taste REFRESH gene-
riert
keyreplace krpl &3 KEYREPLACE, über Taste REPLACE gene-
riert
keyrestart krst &4 KEYRESTART, über Taste RESTART gene-
riert
keyresume kres &5 KEYRESUME, über Taste RESUME generiert
keyright kcuf1 kr KEYRIGHT, über Taste RIGHT-ARROW gene-
riert
keysave ksav &6 KEYSAVE, über Taste SAVE generiert
keysbeg kBEG &9 KEYSBEG, über Tasten SHIFT BEGINNING
generiert
keyscancel kCAN &0 KEYSCANCEL, über Tasten SHIFT CANCEL
generiert
keyscommand kCMD *1 KEYSCOMMAND, über Tasten SHIFT COMMAND
generiert
keyscopy kCPY *2 KEYSCOPY, über Tasten SHIFT COPY gene-
riert
keyscreate kCRT *3 KEYSCREATE, über Tasten SHIFT CREATE
generiert
keysdc kDC *4 KEYSDC, über Tasten SHIFT DELETE-CHAR
generiert
keysdl kDL *5 KEYSDL, über Tasten SHIFT DELETE-LINE
generiert
keyselect kslt *6 KEYSELECT, über Taste SELECT gene-
riert
keysend kEND *7 KEYSEND, über Tasten SHIFT END gene-
riert
keyseol kEOL *8 KEYSEOL, über Tasten SHIFT CLEAR-LINE
generiert
keysexit kEXT *9 KEYSEXIT, über Tasten SHIFT EXIT gene-
riert
keysf kind kF KEYSF, über Taste SCROLL-FORWARD/DOWN
generiert
keysfind kFND *0 KEYSFIND, über Tasten SHIFT FIND gene-
riert
keyshelp kHLP #1 KEYSHELP, über Tasten SHIFT HELP gene-
riert
keyshome kHOM #2 KEYSHOME, über Tasten SHIFT HOME gene-
riert
keysic kIC #3 KEYSIC, über Tasten SHIFT INPUT gene-
riert
keysleft kLFT #4 KEYSLEFT, über Tasten SHIFT LEFT-ARROW
generiert
keysmessage kMSG %a KEYSMESSAGE, über Tasten SHIFT MESSAGE
generiert
keysmove kMOV %b KEYSMOVE, über Tasten SHIFT MOVE gene-
riert
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
keysnext kNXT %c KEYSNEXT, über Tasten SHIFT NEXT gene-
riert
keysoptions kOPT %d KEYSOPTIONS, über Tasten SHIFT OPTIONS
generiert
keysprevious kPRV %e KEYSPREVIOUS, über Tasten SHIFT PREV
generiert
keysprint kPRT %f KEYSPRINT, über Tasten SHIFT PRINT
generiert
keysr kri kR KEYSR, über Taste SCROLL-BACKWARD/UP
generiert
keysredo kRDO %g KEYSREDO, über Tasten SHIFT REDO gene-
riert
keysreplace kRPL %h KEYSREPLACE, über Tasten SHIFT REPLACE
generiert
keysright kRIT %i KEYSRIGHT, über Tasten SHIFT RIGHT-ARROW
generiert
keysrsume kRES %j KEYSRSUME, über Tasten SHIFT RESUME
generiert
keyssave kSAV !1 KEYSSAVE, über Tasten SHIFT SAVE gene-
riert
keyssuspend kSPD !2 KEYSSUSPEND, über Tasten SHIFT SUSPEND
generiert
keystab khts kT KEYSTAB, über Taste SET-TAB generiert
keysundo kUND !3 KEYSUNDO, über Tasten SHIFT UNDO gene-
riert
keysuspend kspd &7 KEYSUSPEND, über Taste SUSPEND generiert
keyundo kund &8 KEYUNDO, über Taste UNDO generiert
keyup kcuu1 ku KEYUP, über Taste UP-ARROW generiert
labelformat fln Lf Label-Format
labeloff rmln LF "Soft-"Beschriftungen AUS
labelon smln LO "Soft-"Beschriftungen EIN
labf0 lf0 l0 Beschriftung der Funktionstaste f0,
falls nicht f0
labf1 lf1 l1 Beschriftung der Funktionstaste f1,
falls nicht f1
labf10 lf10 la Beschriftung der Funktionstaste f10,
falls nicht f10
labf2 lf2 l2 Beschriftung der Funktionstaste f2,
falls nicht f2
labf3 lf3 l3 Beschriftung der Funktionstaste f3,
falls nicht f3
labf4 lf4 l4 Beschriftung der Funktionstaste f4,
falls nicht f4
labf5 lf5 l5 Beschriftung der Funktionstaste f5,
falls nicht f5
labf6 lf6 l6 Beschriftung der Funktionstaste f6,
falls nicht f6
labf7 lf7 l7 Beschriftung der Funktionstaste f7,
falls nicht f7
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
labf8 lf8 l8 Beschriftung der Funktionstaste f8,
falls nicht f8
labf9 lf9 l9 Beschriftung der Funktionstaste f9,
falls nicht f9
metaoff rmm mo "Meta-Modus" AUS
metaon smm mm "Meta-Modus" EIN (8. Bit)
microcolumnaddress mhpa ZY Wie columnaddress für Mikro-Justierung
microdown mcud1 ZZ Wie cursordown für Mikro-Justierung
microleft mcub1 Za Wie cursorleft für Mikro-Justierung
microright mcuf1 Zb Wie cursorright für Mikro-Justierung
microrowaddress mvpa Zc Wie rowaddress für Mikro-Justierung
microup mcuu1 Zd Wie cursorup für Mikro-Justierung
mouseinfo minfo Mi Maus-Status-Information
newline nel nw Neue Zeile (dieselbe Funktion wie cr,
gefolgt von lf)
orderofpins porder Ze Bildet Software-Bits auf Nadeln im Druck-
kopf ab
origcolors oc oc Standard-Farb(kombination)en einstellen
origpair op op Ursprüngliche Standard-Farbkombination
einstellen
padchar pad pc Füllzeichen (statt Null)
parmdch dch DC #1 Zeichen löschen
parmdeleteline dl DL #1 Zeile(n) löschen
parmdowncursor cud DO Um #1 Zeile(n) nach unten
parmdownmicro mcud Zf Wie parmdowncursor für Mikro-Justierung
parmich ich IC #1 Leerzeichen einfügen
parmindex indn SF Scrolling um #1 Zeile(n) nach unten
parminsertline il AL #1 Leerzeile(n) einfügen
parmleftcursor cub LE Cursor um #1 Leerstelle nach links
parmleftmicro mcub Zg Wie parmleftcursor für Mikro-Justierung
parmrightcursor cuf RI Cursor um #1 Leerstelle nach rechts
parmrightmicro mcuf Zh Wie parmrightcursor für Mikro-Justie-
rung
parmrindex rin SR Scrolling um #1 Zeile nach oben
parmupcursor cuu UP Cursor #1 Zeile(n) nach oben
parmupmicro mcuu Zi Wie parmupcursor für Mikro-Justierung
pctermoptions pctrm S6 PC-Terminal-Optionen
pkeykey pfkey pk Funktionstaste #1 für die Ausgabe des
Strings #2 programmieren
pkeylocal pfloc pl Funktionstaste #1 für die Ausführung des
Strings #2 programmieren
pkeyplab pfxl xl Taste #1 für die Übertragung von String
#2 und für die Anzeige des Strings #3
programmieren
pkeyxmit pfx px Funktionstaste #1 für die Übertragung des
Strings #2 programmieren
plabnorm pln pn Label #1 für die Anzeige von String #2
programmieren
printscreen mc0 ps Inhalt der Bildschirmanzeige ausdrucken
prtrnon mc5p pO Drucker für #1 Byte(s) einschalten
Seite 13 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
prtroff mc4 pf Drucker ausschalten
prtron mc5 po Drucker einschalten
pulse pulse PU Pulswahl auswählen
quickdial qdial QD Wähle Telefon-Nummer #1, ohne Kontrolle
des Wahlfortschritts
removeclock rmclk RC Tageszeit-Uhr entfernen
repeatchar rep rp Zeichen #1 #2mal wiederholen
reqforinput rfi RF Nächstes Eingabezeichen übermitteln
(für ptys)
reqmousepos reqmp RQ Abfrage der Maus-Position
reset1string rs1 r1 Terminal vollständig in "Sane"-Modi
zurücksetzen
reset2string rs2 r2 Terminal vollständig in "Sane"-Modi
zurücksetzen
reset3string rs3 r3 Terminal vollständig in "Sane"-Modi
zurücksetzen
resetfile rf rf Name der Datei mit Reset-String
restorecursor rc rc Cursor auf die in sc abgespeicherte
Position zurücksetzen
rowaddress vpa cv Vertikale Position, absolut
savecursor sc sc Cursor-Position abspeichern
scancodeescape scesc S7 Fluchtsymbol für Scancode-Emulation
scrollforward ind sf Text-Scrolling nach oben
scrollreverse ri sr Text-Scrolling nach unten
selectcharset scs Zj Zeichensatz auswählen
set0desseq s0ds s0 Wechsel zu Codesatz 0 (EUC-Satz 0,
ASCII)
set1desseq s1ds s1 Wechsel zu Codesatz 1
set2desseq s2ds s2 Wechsel zu Codesatz 2
set3desseq s3ds s3 Wechsel zu Codesatz 3
setattributes sgr sa Anzeige-Attribute #1-#9 definieren
setaattributes sgr1 Definiere zweiten Satz von Video-Attri-
buten #1-#6
setabackground setab AB Hintergrundtabelle mit ANSI-Escape-
Sequenz einstellen
setaforeground setaf AF Hintergrundfarbe mit ANSI-Escape-Sequenz
einstellen
setbackground setb Sb Hintergrundfarbe einstellen
setbottommargin smgb Zk Unteren Rand auf aktuelle Zeile setzen
setbottommarginparm smgbp Zl Unteren Rand in einem Abstand von #1
oder #2 Zeilen von unten
setclock sclk SC Uhr auf Stunden (#1), Minuten (#2),
Sekunden (#3) einstellen
setcolorband setcolor Yz Wechsel zu Farbband #1
setcolorpair scp sp Aktuelle Farbkombination einstellen
setforeground setf Sf Aktuelle Vordergrundfarbe einstellen
setleftmargin smgl ML Linken Rand in aktueller Zeile
einstellen
setleftmarginparm smglp Zm Linken (rechten) Rand in Spalte #1 (#2)
einstellen
Seite 14 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
setlrmargin smglr ML Rechten und linken Rand einstellen
setpagelength slines YZ Seitenlänge auf #1 Zeilen einstellen
setpgleninch slength YI Seitenlänge auf #1 Hundertstel eines
Inch einstellen
setrightmargin smgr MR Rechten Rand in aktueller Spalte
einstellen
setrightmarginparm smgrp Zn Rechten Rand in Spalte #1 einstellen
settab hts st Tabulatorstopp für alle Zeilen in
aktueller Spalte setzen
settbmargin smgtb MT Oberen und unteren Rand einstellen
settopmargin smgt Zo Oberen Rand in aktueller Zeile ein-
stellen
settopmarginparm smgtp Zp Oberen (unteren) Rand in Zeile #1 (#2)
einstellen
setwindow wind wi Das aktuelle Fenster enthält die Zeilen
#1-#2 und die Spalten #3-#4
startbitimage sbim Zq Ausdrucken von Rastergrafiken aktivieren
startcharsetdef scsd Zr Definition eines Zeichensatzes starten
stopbitimage rbim Zs Ausdrucken von Rastergrafiken deaktivie-
ren
stopcharsetdef rcsd Zt Definition eines Zeichensatzes beenden
subscriptcharacters subcs Zu Liste der "hochstellbaren" Zeichen
superscriptcharacters supcs Zv Liste der "tieferstellbaren" Zeichen
tab ht ta Tabulatorsprung zu nächstem hardwaremäßig
eingestellten Tabstopp (alle acht Leer-
zeichen)
thesecausecr docr Zw Das Drucken eines dieser Zeichen führt
zu cr
tone tone TO Wahltöne auswählen
tostatusline tsl ts Sprung in Statuszeile, Spalte #1
underlinechar uc uc Ein Zeichen unterstreichen und Cursor
hinter dieses Zeichen setzen
uphalfline hu hu Cursor um eine halbe Zeile nach oben
(Umgekehrter Zeilenvorschub um ½ Zeile)
user0 u0 u0 Benutzer-String 0
user1 u1 u1 Benutzer-String 1
user2 u2 u2 Benutzer-String 2
user3 u3 u3 Benutzer-String 3
user4 u4 u4 Benutzer-String 4
user5 u5 u5 Benutzer-String 5
user6 u6 u6 Benutzer-String 6
user7 u7 u7 Benutzer-String 7
user8 u8 u8 Benutzer-String 8
user9 u9 u9 Benutzer-String 9
waittone wait WA Auf Wahlton warten
xoffcharacter xoffc XF X-off-Zeichen
xoncharacter xonc XN X-on-Zeichen
zeromotion zerom Zx Keine Bewegung für das nachfolgende
Zeichen
Seite 15 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Beispieleintrag
Der nachfolgende Eintrag, der das Terminal 610 von AT&T beschreibt,
gehörte zum Zeitpunkt der Erstellung dieses Handbuchs zu den komplexe-
ren Einträgen der Datei terminfo.
610|610bct|ATT610|att610|AT&T610;80column;98key keyboard
am, eslok, hs, mir, msgr, xenl, xon,
cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
acsc="aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[?25h\E[?12l,
cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=\t,
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, .ind=\ED$<9>,
invis=\E[8m,
is1=\E[8;0 | \E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0,
is2=\E[0m^O, is3=\E(B\E)0, kLFT=\E[\s@, kRIT=\E[\sA,
kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf1=\EOc, kf10=\ENp,
kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf2=\EOd,
kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi,
kf8=\EOj, kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T,
ll=\E[24H, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t\s\s\sF%p1%1d\s\s\s\s\s
\s\s\s\s\s\s%;%p2%s,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
ri=\EM, rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m,
rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;
%?%p3%p1% | %t;7%;%?%p7%t;8%;m%?%p9%t^N%e^O%;,
sgr0=\E[m^O, smacs=^N, smir=\E[4h, smln=\E[p,
smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
Beschreibung der Eigenschaften im Beispieleintrag
Der Beispieleintrag zeigt das Format für alle drei in terminfo
beschriebenen Eigenschaften: boolesche Werte, numerische Werte und
Strings. Jeder Eintrag muß in der terminfo-Quelldatei durch ein Komma
beendet werden; dies gilt auch für den Eintrag mit der letzten Eigen-
schaft. Auf die Eigenschaften wird in den terminfo-Quelldateien über
ihre Namen (Spalte CN in den oben aufgeführten Tabellen) Bezug genom-
men.
Seite 16 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Boolesche Werte
Boolesche Werte werden einfach über ihre "capnames" (Eigenschaftsna-
men) angegeben, die durch Komma voneinander getrennt sind.
Eine boolesche Funktion ist wahr, wenn ihr "capname" im Eintrag vor-
liegt, und unwahr, wenn ihr "capname" nicht im Eintrag vorliegt.
Das Zeichen @, gefolgt von einem "capname", wird verwendet, um eine
boolesche Funktion in den weiter unten im Abschnitt 1-16: "Ähnliche
Terminals" beschriebenen Situationen explizit als unwahr zu deklarie-
ren.
Numerische Werte
Numerischen Werten wird das Zeichen # sowie eine positive Ganzzahl
angefügt. So wurde in obigem Beispiel cols (das für die Anzahl der
Spalten auf einem Gerät steht) der Wert 80 für das Terminal AT&T 610
zugeordnet (numerische Werte können im Dezimal-, Oktal- oder Hexadezi-
malformat angegeben werden, wobei die bekannten Regeln der Sprache C
gelten).
Strings
Die Strings schließlich wie z. B. el (clear to end of line) werden
über einen zwei- bis fünfstelligen Eigenschaftsnamen ("Capname") ange-
geben, auf den ein Gleichheitszeichen (=) sowie ein String folgt, der
durch das jeweils nächststehende Komma abgeschlossen wird. Bei einer
derartigen Eigenschaft kann eine Verzögerung in Millisekunden angege-
ben werden, der ein Dollar-Zeichen ($) vorangestellt ist und die in
spitze Klammern eingeschlossen ist; ein Beispiel für eine derartige
Eigenschaft ist el=\EK$<3>. In der curses-Implementierung werden Ver-
zögerungen durch die Ausgabe einer geeigneten Anzahl von systemdefi-
nierten Füllzeichen an das Terminal erreicht. Mit der Funktion tputs()
erfolgen Verzögerungen beim Senden einer solchen Eigenschaft an das
Terminal.
Die Verzögerungszeichen werden durch tput ausgegeben. Verzögerungszei-
chen können in folgenden Formaten angegeben werden: als Zahl, als Zahl
mit nachgestelltem Stern (Beispiel: 5*), als Zahl mit nachgestelltem
Schrägstrich (Beispiel: 5/) oder als Zahl mit nachgestelltem Stern und
Schrägstrich (Beispiel: 5*/).
- Durch den Stern (*) wird angezeigt, daß die erforderliche Verzöge-
rung proportional zur Anzahl der Zeilen ist, auf die die Operation
angewandt wird; der angegebene Wert entspricht der erforderlichen
Verzögerung pro bearbeiteter Einheit (beim Einfügen von Zeichen
richtet sich der Faktor ebenfalls nach der Anzahl der veränderten
Zeilen. Der Faktor hat in diesem Fall stets den Wert 1, es sei
denn, das Gerät hat die Eigenschaft in, die vom Anwendungsprogramm
benutzt wird). Wird ein Stern (*) angegeben, kann die Angabe einer
Verzögerung im Format 3.5 von Vorteil sein; damit können
Seite 17 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Verzögerungen in Zehntel-Millisekunden pro Einheit angegeben werden
(dabei ist nur eine einzige Dezimalstelle zulässig).
- Ein / gibt an, daß die Verzögerung erforderlich ist, und die Verzö-
gerungszeichen unabhängig von der Einstellung von xon übertragen
werden. Wenn / nicht angegeben oder für ein Gerät xon definiert
ist, sind die Verzögerungsangaben nicht zwingend erforderlich und
werden nur zu Kalkulationszwecken verwendet, oder wenn sich das
Gerät im Raw-Modus befindet. Jede für bel oder flash angegebene
Verzögerung wird allerdings als erforderlich behandelt.
Die folgende Schreibweise kann in terminfo-Quelldateien zur Angabe von
Sonderzeichen verwendet werden:
Schreibweise Entsprechendes Zeichen
_________________________________________________________________________
^x CRTL-x (für jedes geeignete x)
\a Alert
\b Rückschritt
\E oder \e Ein Escape-Zeichen
\f Seitenvorschub
\l Zeilenvorschub (LF)
\n Neue Zeile (NL)
\r Carriage Return
\s Leerzeichen
\t Tabulator
\^ Caret (^)
\\ Backslash (\)
\, Komma (,)
\: Doppelpunkt (:)
\0 Null *
\nnn Jedes Zeichen, das durch drei Oktal-Ziffern angegeben wird
* \0 ergibt in Wirklichkeit \200, das nicht als Abschlußzeichen eines
Strings benutzt wird, sondern auf den meisten Geräten die Funktion
eines Null-Zeichens hat - vorausgesetzt, CS07 wird angegeben [siehe
stty(1)].
Auskommentierte Eigenschaften
In manchen Fällen müssen einzelne Eigenschaften als Kommentar gekenn-
zeichnet werden. Dafür wird vor den Eigenschaftsnamen ein Punkt
gesetzt (vgl. zweites ind in obigem Beispiel). Die Eigenschaften wer-
den von links nach rechts in absteigender Priorität angegeben, d. h.,
eine weiter links stehende Definition hebt eine weiter rechts stehende
Definition auf.
Seite 18 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Erstellen von Beschreibungen
Beim Erstellen einer neuen Gerätebeschreibung geht man am besten von
der bereits vorhandenen Beschreibung eines ähnlichen Geräts in der
terminfo-Datenbasis aus und entwickelt daraus schrittweise eine neue
Beschreibung; die Teilschritte sollten mit einem bildschirmorientier-
ten Editor wie z. B. vi auf Fehler überprüft werden. Beachten Sie
bitte, daß sich bei einem Gerät mit ungewöhnlichen Eingenschaften her-
ausstellen kann, daß es in der terminfo-Datei nicht genügend beschrie-
ben oder von vi nicht benutzt werden kann. Zum Austesten einer neuen
Gerätebeschreibung setzen Sie die Umgebungsvariable TERMINFO auf den
Pfadnamen eines Verzeichnisses mit der übersetzten Beschreibung, die
Sie gerade bearbeiten; dies hat zur Folge, daß die Programme die
Beschreibung in diesem Verzeichnis suchen und nicht in
/usr/share/lib/terminfo. Damit beim Einfügen von Zeilen die korrekte
Anzahl von Füllzeichen benutzt wird, kann der folgende "harte" Test
durchgeführt werden (falls die entsprechende Angabe nicht in der Gerä-
tedokumentation enthalten ist): die Eigenschaft xon wird auskommen-
tiert, eine große Datei wird bei 9600 Baud mit vi editiert, ca. 16
Zeilen werden in der Mitte des Bildschirms gelöscht, und die Taste u
wird mehrmals schnell hintereinander gedrückt. Wenn die Bildschirman-
zeige dadurch zerstört wird, sind in der Regel mehr Füllzeichen not-
wendig. Ein ähnlicher Test ist für das Einfügen von Zeichen möglich.
Abschnitt 1-1: Grundlegende Eigenschaften
Die Anzahl der Zeilen pro Zeile, die vom Gerät unterstützt werden
soll, wird über den numerischen Wert cols festgelegt. Bei einem Gerät
mit Bildschirm wird die Anzahl der Zeilen auf dem Bildschirm bei der
Eigenschaft lines angegeben. Wenn auf dem Gerät am rechten Rand ein
automatischer Zeilenumbruch durchgeführt wird, sollte ihm die Eigen-
schaft am zugeordnet werden. Wenn das Terminal die Möglichkeit zum
Löschen seines Bildschirms hat, wobei der Cursor in der ersten Spalte
der ersten Zeile verbleibt, wird dies über den String clear angegeben.
Wenn das Terminal ein Zeichen überschreibt (und nicht löscht, wenn ein
anderes Zeichen an derselben Position eingegeben wird), sollte ihm die
Eigenschaft os zugeordnet werden. Wenn es sich bei dem Gerät um ein
Drucker-Terminal ohne Softcopy-Einheit handelt, muß sowohl hc als auch
os angegeben werden. Wenn es eine Möglichkeit gibt, um den Cursor zum
linken Rand der aktuellen Zeile zu bewegen, so wird dies bei der
Eigenschaft cr angegeben (im Normalfall handelt es sich hierbei um die
Taste Carriage Return bzw. CTRL-M). Gibt es eine Möglichkeit zur
Erzeugung eines akustischen Signals (Glocke oder Piepston), wird dafür
die Eigenschaft bel angegeben. Wenn das Gerät das übliche XON/XOFF-
Protokoll benutzt, wird dies über die Eigenschaft xon angegeben.
Wenn der Cursor auf dem Gerät um eine Stelle nach links bewegt werden
kann (z. B. mit BACKSPACE), so sollte die Eigenschaft cub1 in der
terminfo-Datenbasis enthalten sein. Ähnlich müssen die Sequenzen zur
Cursor-Steuerung nach rechts, oben und unten bei den Eigenschaften
cuf1, cuu1 bzw. cud1 angegeben werden. Diese lokalen Cursor-Bewegungen
dürfen den Text, über den der Cursor bewegt wird, nicht ändern. So
wird z. B. cuf1=\s im Normalfall nicht benutzt, da das Zeichen, über
das der Cursor bewegt wird, durch das Leerzeichen gelöscht wird.
Seite 19 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Es wird darauf hingewiesen, daß die lokalen Cursor-Bewegungen, die in
terminfo definiert sind, am linken und oberen Rand eines bildschirmo-
rientierten Terminals keine Auswirkungen haben. In einem Programm darf
auf keinem Fall ein Rückschritt vom linken Rand aus versucht werden
(es sei denn, bw ist angegeben); ebenso darf auf keinem Fall versucht
werden, den Cursor über den oberen Rand der aktuellen Bildschirman-
zeige hinaus zu bewegen. Für ein Text-Scrolling nach oben muß ein Pro-
gramm den Cursor zur unteren linken Ecke des Bildschirms bewegen und
dann den String ind (index) übermitteln.
Für ein Text-Scrolling nach unten bewegt ein Programm den Cursor zur
oberen linken Ecke des Bildschirms und übermittelt den String ri
(reverse index). Die Strings ind und ri werden ignoriert, wenn der
Cursor sich nicht in der jeweils korrekten Bildschirmecke befindet.
Für die Scrolling-Sequenzen ind und ri gibt es die Varianten indn und
rin, bei denen über einen Parameter die Anzahl der zu scrollenden Zei-
len angegeben werden kann. Auch indn und rin werden ignoriert, wenn
der Cursor sich nicht am korrekten Bildschirmrand befindet.
Über die Eigenschaft am wird angegeben, ob der Cursor bei der Ausgabe
von Text am rechten Bildschirmrand bleiben soll; dies gilt jedoch
nicht unbedingt für ein cuf1 von der letzten Spalte aus. Ein Rück-
schritt von der linken Ecke des Bildschirms aus ist nur möglich, wenn
bw angegeben wird. In diesem Fall wird der Cursor durch cub1 zum rech-
ten Rand der vorhergehenden Zeile bewegt. Wenn bw nicht angegeben ist,
ist diese Cursor-Bewegung nicht definiert. Diese Funktion kann benutzt
werden, um an den Bildschimkanten entlang einen Rahmen zu ziehen. Wenn
das Gerät über automatische, über Schalter einstellbare Randeinstel-
lungen verfügt, sollte am in der terminfo-Quelldatei angegeben werden.
In diesem Fall sollte diese Option nach Möglichkeit über Initialisie-
rungs-Strings eingeschaltet werden. Wenn das Gerät über ein Kommando
verfügt, über das der Cursor zur ersten Spalte der darauffolgenden
Zeile bewegt wird, so kann dieses Kommando als nel (newline) angegeben
werden. Dabei spielt es keine Rolle, ob das Kommando den Rest der
aktuellen Zeile löscht; daher kann selbst auf einem Gerät, das nicht
über die Eigenschaften cr und lf verfügt, aus einer oder beiden der
Eigenschaften eine funktionsfähige nel-Eigenschaft erstellt werden.
Diese Eigenschaften reichen zur Beschreibung von Hardcopy- und bild-
schirmorientierten Terminals vollkommen aus. So wird das Hardcopy-
Terminal AT&T 5320 folgendermaßen beschrieben:
5320|att5320|AT&T 5320 hardcopy terminal,
am, hc, os,
cols#132,
bel=^G, cr=\r, cub1=\b, cnd1=\n,
dch1=\E[P, dl1=\E[M,
ind=\n,
Das Terminal Lear Siegler ADM-3 dagegen wird folgendermaßen beschrie-
ben:
Seite 20 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
adm3|lsi adm3,
am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H,
cud1=^J, ind=^J, lines#24,
Abschnitt 1-2: Parametrisierte Strings
Eigenschaften zur Cursor-Adressierung, bei denen Parameter angegeben
werden müssen, werden durch einen parametrisierten String beschrieben,
der ähnliche Escape-Sequenzen wie printf (%x) enthält. So gibt es
z. B. zur Cursor-Adressierung die Eigenschaft cup. Diese Eigenschaft
hat zwei Parameter, nämlich die Zeilen- und Spaltennummer, aus denen
sich die Adresse zusammensetzt (die Zeilen und Spalten sind ab Null
durchnumeriert und beziehen sich auf die für den Benutzer sichtbare
Bildschirmanzeige und nicht auf den aktuell unsichtbaren Speicherbe-
reich). Wenn das Terminal die speicherbezogene Cursor-Adressierung
unterstützt, kann dies über die Eigenschaft mrcup angegeben werden.
Bei parametrisierten Strings wird mit einem Stack und speziellen, mit
% beginnenden Sequenzen gearbeitet, mit denen der Stack nach der umge-
kehrten polnischen Notation (Postfix-Notation) manipuliert wird. Durch
eine Sequenz wird ein Parameter auf den Stack gelegt und dann in einem
bestimmten Format ausgegeben. In vielen Fällen sind komplexere Opera-
tionen notwendig. Die Operationen werden in der Postfix-Notation ange-
geben, wobei die Operanden in der üblichen Reihenfolge eingegeben wer-
den. Um somit vom ersten Parameter den Wert 5 zu substrahieren, gibt
man die Sequenz %p1%{5}%- ein.
Die %-Sequenzen haben folgende Bedeutung:
%% Ausgabe des Zeichens %
%[[:]flags][width[.precision]][doxXs]
dieselbe Bedeutung wie bei printf, es werden die Flags
[-+#] sowie Leerzeichen benutzt
%c Oberstes Element auf dem Stack als ASCII-Zeichen %c ausge-
ben
%p[1-9] ites Argument auf den Stack legen
%P[a-z] Oberstes Element vom Stack holen und auf dynamische Varia-
ble [a-z] setzen
%g[a-z] Dynamische Variable [a-z] abfragen und auf den Stack legen
%P[A-Z] Oberstes Element vom Stack holen und auf statische Varia-
ble [a-z] setzen
%g[A-Z] Statische Variable [a-z] abfragen und auf den Stack legen
%'c' Zeichenkonstante c auf Stack legen
%{nn} Dezimalkonstante nn auf Stack legen
Seite 21 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
%l Oberstes Element vom Stack holen und Länge des Strings
ausgeben
%+ %- %* %/ %m
Arithmetisch (%m ist der Modulo-Operator): push(pop inte-
ger2 op pop integer1)
%& %| %^ Bit-Operationen: push(pop integer2 op pop integer1)
%= %> %< Logische Operationen: push(pop integer2 op pop integer1)
%A %O Logische Operationen: UND, ODER
%! %~ Unäre Operationen: push(op pop)
%i (Für ANSI-Terminals) Auf ersten Parameter Wert 1 addieren,
wenn ein Parameter vorhanden ist, bzw. auf die ersten bei-
den Parameter, wenn mehr als ein Parameter vorhanden ist.
%? expr %t thenpart %e elsepart %;
if-then-else, %e elsepart ist optional; else-if-Konstrukte
wie bei Algol 68 sind möglich: %? c1 %t b1 %e c2 %t b2 %e
c3 %t b3 %e c4 %t b4 %e b5%.
ci sind Bedingungen, bi der zugehörige Text.
Wenn das Flag - mit %[doxXs] benutzt wird, so muß zwischen % und - ein
Doppelpunkt (:) gesetzt werden, damit das Flag vom binären Operator %-
unterschieden werden kann (Beispiel: %:-16.16s).
Um den Cursor z. B. auf dem Terminal Hewlett-Packard 2645 in die 12.
Spalte der 3. Zeile zu bewegen, muß die Steuerzeichenfolge \E&a12c03Y
mit einer Verzögerung von 6 Millisekunden an das Terminal übermittelt
werden. Beachten Sie, daß die Zeilen- und Spaltennummer hier in umge-
kehrter Reihenfolge angegeben sind und daß die Zeilen- und Spaltennum-
mer wie zwei Ziffern mit Nullen aufgefüllt sind. Somit sieht die
Eigenschaft cup für dieses Terminal folgendermaßen aus:
cup=\E&a%p2%2.2dc%p1%2.2dY$<6>
An Terminals vom Typ Micro-Term ACT-IV muß vor der aktuellen Zeilen-
und Spaltennummer die Sequenz ^T übermittelt werden, wobei die Zeilen-
und Spaltennummer einfach binär codiert sind (cup=^T%p1%c%p2%c).
Geräte, die mit der Steuerzeichenfolge %c arbeiten, müssen den Cursor
auf dem Bildschirm nach links (cub1) und um eine Zeile nach oben
(cuu1) bewegen können. Dies ist aus Sicherheitsgründen notwendig, da
das System die Sequenzen \n, ^D und \r möglicherweise ändert oder
ignoriert (die Bibliotheksroutinen für terminfo stellen die tty-Modi
so ein, daß die Tabulatorzeichen in keinem Fall in Leerzeichen umge-
wandelt werden; somit kann \t problemlos an das Terminal übermittelt
werden. Dies ist für Terminals vom Typ Ann Arbor 4080 ein wesentlicher
Punkt).
Seite 22 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Als letztes Beispiel seien die Terminals vom Typ LSI ADM-3a genannt,
deren Zeilen- und Spalten-Offsets mit einem Leerzeichen angegeben wer-
den (also cup=\E=%p1%'\s'%+%c%p2%'\s'%+%c). Dadurch wird nach der
Übermittlung von \E= zunächst der erste Parameter auf den Stack gelegt
und dann der ASCII-Wert für ein Leerzeichen (32). Dann werden beide
Werte addiert (d. h. die Summe wird anstelle der bisherigen Werte auf
den Stack gelegt); dieser Wert wird dann als ein Zeichen ausgegeben.
Auf dieselbe Weise wird dann mit dem zweiten Parameter verfahren. Mit
dem Stack sind auch wesentlich komplexere arithmetische Operationen
möglich.
Abschnitt 1-3: Cursor-Steuerung
Die Möglichkeit, den Cursor schnell in die obere linke Ecke des Bild-
schirms zu bewegen, kann bei der Eigenschaft home angegeben werden.
Analog stellt die Eigenschaft ll eine schnelle Möglichkeit dar, um den
Cursor in die untere linke Ecke des Bildschirms zu bewegen. Obwohl der
Cursor dabei auch von der oberen linken Ecke aus mit cuu1 nach oben
bewegt werden kann, sollte dies auf keinen Fall in ein Programm einge-
baut werden (nur mit ll), da das Ergebnis für das Programm nicht vor-
hersehbar ist. Statt der Angabe von home wäre auch die Adressierung
von (0,0) möglich; beachten Sie, daß sich dies stets auf die obere
linke Ecke des Bildschirms bezieht und nicht auf den Speicher (so kann
die Sequenz \EH auf Hewlett-Packard-Terminals nicht in derselben Funk-
tion wie home benutzt werden, da einige andere Funktionen des Termi-
nals dann nicht mehr zur Verfügung stünden).
Unterstützt das Gerät die Cursor-Steuerung über die Angabe der absolu-
ten Zeilen- oder Spaltennummer, so kann dies über die parametrisierten
Eigenschaften hpa (horizontal position absolute) und vpa (vertical
position absolute) angegeben werden. Diese parametrisierten Eigen-
schaften sind in manchen Fällen kürzer als die allgemeineren zweistel-
ligen Parameter-Sequenzen (wie sie z. B. auf dem Terminal Hewlett-
Packard 2645 benutzt werden) und können statt cup benutzt werden. Wer-
den parametrisierte Eigenschaften für lokale Cursor-Bewegungen unter-
stützt (z. B. Cursor um n Leerzeichen nach rechts bewegen), so kann
dies bei den Eigenschaften cud, cub, cuf und cuu angegeben werden,
wobei n für die Anzahl der Leerzeichen steht. Diese Möglichkeit ist
vor allem für Geräte gedacht, die die Eigenschaft cup nicht unterstüt-
zen (z. B. Tektronix 4025).
Auf manchen Geräten können Programme, die diese Eigenschaften nutzen,
nur in einer speziellen Betriebsart laufen; die Codes zum Aufrufen und
Beenden dieser Betriebsart können dann über smcup und rmcup angegeben
werden. Dies ist beispielsweise bei Terminals mit mehr als einer
Speicher-Seite notwendig (z. B. Concept). Unterstützt das Gerät ledig-
lich die speicherbezogene und nicht die bildschirmbezogene Cursor-
Adressierung, so muß ein Fenster mit Bildschirmgröße zur Cursor-Adres-
sierung fest im Gerät verankert werden. Dies gilt auch für Terminals
vom Typ Tektronix 4025, auf denen das Kommandozeichen mit smcup auf
das von terminfo benutzte Kommandozeichen eingestellt werden kann.
Wenn die Bildschirmanzeige nach der Ausgabe einer rmcup-Sequenz nicht
durch die Sequenz smcup wiederhergestellt wird (in dem Zustand vor der
Seite 23 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Ausgabe vor rmcup), so geben Sie in der terminfo-Datenbasis die Eigen-
schaft nrrmc an.
Abschnitt 1-4: Löschen von Bereichen
Wenn auf einem Terminal sämtliche Zeichen ab der aktuellen Cursor-
Position bis zum Zeilenende gelöscht werden können und der Cursor
dabei an seiner Position bleibt, so sollte dies bei der Eigenschaft el
angegeben werden. Wenn auf einem Terminal sämtliche Zeichen vom Zei-
lenanfang bis zur aktuellen Cursor-Position einschließlich gelöscht
werden können und der Cursor dabei an seiner Position bleibt, so
sollte dies bei der Eigenschaft el1 angegeben werden. Wenn auf dem
Terminal sämtliche Zeichen ab der aktuellen Cursor-Position bis zur
unteren rechten Ecke des Bildschirms gelöscht werden können, so sollte
dies bei der Eigenschaft ed angegeben werden. ed ist nur für die erste
Spalte einer Zeile definiert (somit kann es durch eine Anforderung zum
Löschen einer großen Anzahl von Zeilen simuliert werden, wenn die
Eigenschaft ed tatsächlich nicht vorhanden ist).
Abschnitt 1-5: Einfügen/Löschen von Zeichen
Die Möglichkeit, auf dem Terminal über der aktuellen Zeile eine neue
Leerzeile einzufügen, sollte bei der Eigenschaft il1 angegeben werden;
hierzu muß sich der Cursor auf der ersten Spalte befinden. Danach muß
sich der Cursor in der neu eingefügten Leerzeile befinden. Die Mög-
lichkeit, auf dem Terminal die Zeile zu löschen, in der sich der Cur-
sor aktuell befindet, wird bei der Eigenschaft dl1 angegeben; der Cur-
sor muß sich dazu in der ersten Spalte der zu löschenden Zeile befin-
den. Von il1 und dl1 gibt es die Varianten il und dl, bei denen mit
einem Einzelparameter die Anzahl der einzufügenden bzw. zu löschenden
Zeile angegeben werden kann.
Auf einigen Terminals (z. B. auf dem VT100) kann ein nichterhaltender
Scroll-Bereich eingestellt werden; das Kommando für diese Einstellung
kann bei der Eigenschaft csr definiert werden, bei dem zwei Parameter
angegeben werden (die erste und letzte Zeile des Scroll-Bereichs). Die
Cursor-Position nach Durchführung dieses Kommandos ist selbstverständ-
lich undefiniert. Dieses Kommando läßt sich auch zum Einfügen oder
Löschen von Zeilen benutzen - dabei sind auch die Kommandos sc und rc
(save and restore cursor - Cursor-Position speichern und wiederher-
stellen) von Nutzen. Das Einfügen von Zeilen am oberen bzw. unteren
Rand der Bildschirmanzeige kann auch auf vielen Terminals ohne direkte
Möglichkeit zum Einfügen/Löschen von Zeilen mit ri bzw. ind durchge-
führt werden - dies ist häufig selbst auf Terminals, die diese Funk-
tionen unterstützen, auch die schnellere Möglichkeit.
Wenn Sie herausfinden möchten, ob ein Terminal erhaltende oder nicht-
erhaltende Scroll-Bereiche hat, legen Sie einen Scroll-Bereich in der
Mitte des Bildschirms an, fügen Daten in der untersten Zeile des
Scroll-Bereichs ein, bewegen den Cursor in die oberste Zeile des
Scroll-Bereichs und geben die Eigenschaft ri (Scrolling um eine Zeile
nach oben) ein, gefolgt von der Eigenschaft dl1 (Zeile löschen) bzw.
ind (Scrolling um eine Zeile nach unten). Wenn die Daten, die
ursprünglich in der untersten Zeile des Scroll-Bereichs enthalten
Seite 24 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
waren, sich nach der Eingabe von dl1 oder ind innerhalb des Scroll-
Bereichs befinden, so sind die Scroll-Bereiche des Terminals erhal-
tend; andernfalls hat es nichterhaltende Scroll-Bereiche. Für ein Ter-
minal mit erhaltenden Scroll-Bereichen darf die Eigenschaft csr nicht
angegeben werden, es sei denn, das Scrolling mit nichterhaltendem
Scroll-Bereich wird durch sowohl ind als auch durch ri, indn, rin, dl
und dl1 simuliert.
Die Möglichkeit, auf dem Terminal ein Fenster als Teil des Speichers
zu definieren, das durch alle Kommandos manipuliert werden kann,
sollte über die parametrisierten Strings wind angegeben werden. Über
die vier Parameter werden die erste und letzte Zeile sowie die erste
und letzte Spalte im Speicher angegeben (diese Reihenfolge muß einge-
halten werden)
Die Möglichkeit, den Inhalt des Bildschirmspeichers auf einem Terminal
auch nach dem Scrolling nach unten zu erhalten, wird mit der Eigen-
schaft da angegeben, die Möglichkeit zum Erhalten des Bildschirmspei-
cherinhalts nach dem Scrolling nach oben mit der Eigenschaft db.
Dadurch geben Sie an, daß nach dem Löschen einer Zeile bzw. beim
Scrolling nach unten um eine ganze Bildschirmseite die Zeilen unter-
halb der aktuellen Bildschirmseite angezeigt werden und beim Scrolling
nach oben mit ri die Zeilen oberhalb der aktuellen Bildschirmseite (in
beiden Fällen handelt es sich nicht um Leerzeilen).
Abschnitt 1-6: Einfügen/Löschen von Zeichen
In bezug auf das Löschen/Einfügen von Zeichen können intelligente Ter-
minals zweierlei Typs in der terminfo-Datenbasis beschrieben werden.
Die gängigsten Operationen zum Einfügen/Löschen von Zeichen wirken
sich nur auf die Zeichen in der aktuellen Zeile aus und schieben die
Zeichen unwiderruflich über das Zeilenende hinaus. Auf anderen Termi-
nals wie z. B. dem Concept 100 und dem Perkin Elmer Owl wird zwischen
über die Tastatur eingegebenen Leerzeichen (typed blanks), und nicht
belegten Leerstellen (untyped blanks) unterschieden; das Einfügen oder
Löschen von Zeichen wirkt sich dann nur auf eine nicht belegte Leer-
stelle aus (sie wird dann entweder gelöscht oder zu zwei nicht beleg-
ten Leerstellen erweitert). Um herauszufinden, zu welcher Gruppe Ihr
Terminal gehört, löschen Sie die Bildschirmanzeige und geben dann Text
ein, wobei Sie einige Cursor-Bewegungen einbauen. Geben Sie beispiels-
weise abc def ein, wobei Sie zwischen der Eingabe von abc und von
def einige Male eine Cursor-Taste drücken. Dann bewegen Sie den Cursor
auf die Position vor abc und schalten das Terminal in den Einfügemo-
dus. Wenn die übrigen Zeichen in der Zeile während der Eingabe einfach
über den rechten Bildschirmrand hinausgeschoben werden, wird auf Ihrem
Terminal nicht zwischen über die Tastatur eingegebenen Leerzeichen und
nicht belegten Leerstellen unterschieden. Wenn abc in Richtung auf def
verschoben wird und beides dann beim Einfügen der Zeichen in die näch-
ste Zeile verschoben wird, gehört Ihr Terminal zur zweiten Gruppe;
dies geben Sie bei der Eigenschaft in (insert null) an. Wenn diese
beiden Attribute auch logisch überhaupt nichts miteinander zu tun
haben (einzeiliger- und mehrzeiliger Einfügemodus und spezielle
Behandlung von nicht belegten Leerstellen), sind uns keine Terminals
Seite 25 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
bekannt, deren Einfügemodus sich nicht mit dem Einzelattribut
beschreiben läßt.
In der terminfo-Datenbasis können sowohl Terminals mit einem Einfüge-
modus beschrieben werden als auch Terminals, die mit einer einfachen
Sequenz eine Leerstelle in der aktuellen Zeile einfügen können. Mit
dem Kommando bei der Eigenschaft smir schalten Sie das Terminal in den
Einfügemodus um, mit dem bei rmir schalten Sie den Einfügemodus wieder
aus. Geben Sie dann bei ich1 eine beliebige Sequenz an, die unmittel-
bar vor dem einzufügenden Zeichen übermittelt werden muß. Auf den mei-
sten Terminals mit echtem Einfügemodus wird die Eigenschaft ich1 nicht
übermittelt; diese Sequenz sollte jedoch für Terminals angegeben wer-
den, auf denen zum Einfügen eines Leerzeichens eine Sequenz übermit-
telt werden muß (wenn auf Ihrem Terminal beide Möglichkeiten vorhanden
sind, ist der Einfügemodus im Normalfall der Sequenz ich1 vorzuziehen.
Die Benutzung von beiden Möglichkeiten ist nicht empfehlenswert, es
sei denn, auf dem Terminal dürfen nur beide Möglichkeiten gemeinsam
benutzt werden). Wenn eine Verzögerung nach dem Einfügen von Zeichen
notwendig ist, wird diese bei dem String ip in Millisekunden angege-
ben. Bei ip kann darüber hinaus jede Sequenz angegeben werden, die
nach dem Einfügen eines Einzelzeichens übermittelt werden muß. Wenn
Ihr Terminal sowohl in den Einfügemodus umgeschaltet als auch jedem
eingefügten Zeichen ein spezieller Code vorangestellt werden muß, so
kann sowohl smir/rmir als auch ich1 angegeben werden; es werden dann
beide Eigenschaften benutzt. Bei der Eigenschaft ich kann ein Einzel-
parameter n angegeben werden; dies bewirkt, daß n Leerzeichen einge-
fügt werden.
Selbst wenn das Terminal sich nicht im Einfügemodus befindet, ist eine
Verzögerung nach jedem eingegebenen Zeichen möglich; diese Verzögerung
wird bei der Eigenschaft rmp in Millisekunden angegeben.
Der Cursor muß gelegentlich im Einfügemodus an eine andere Stelle der
Zeile bewegt werden, um ein oder mehrere Zeichen in derselben Zeile zu
löschen (Beispiel: hinter der Einfügeposition befindet sich ein Tabu-
latorzeichen). Wenn Cursor-Bewegungen im Einfügemodus auf Ihrem Termi-
nal möglich sind, können Sie das Einfügen mit der Eigenschaft mir
beschleunigen. Das Fehlen von mir hat lediglich Auswirkungen auf die
Geschwindigkeit. Auf einigen Terminals (z. B. den Datamedia-Terminals)
ist die Eigenschaft mir wegen der Funktionsweise ihres Einfügemodus
nicht notwendig.
Schließlich können Sie bei der Eigenschaft dch1 das/die Kommando(s)
zum Löschen eines Einzelzeichens, bei dch und einem Einzelparameter n
das/die Kommando(s) zum Löschen von n Zeichen sowie bei smdc und rmdc
das/die Kommando(s) zum Ein- und Ausschalten des Löschmodus (bzw. den
Modus, ohne den dch1 auf dem Terminal nicht unterstützt wird) angeben.
Bei der Eigenschaft ech mit einem Einzelparameter können Sie das Kom-
mando zum Löschen von n Zeichen angeben (dies entspricht der Ausgabe
von n Leerzeichen ohne gleichzeitige Cursor-Bewegung).
Seite 26 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Abschnitt 1-7: Hervorheben, Unterstreichen und optische Signale
Auf Ihrem Gerät gibt es möglicherweise ein oder mehrere Anzeigeattri-
bute, mit denen Sie bestimmte Zeichen auf dem Bildschirm hervorheben
können. Dafür stehen die folgenden Anzeigemodi zur Verfügung (über die
angegebenen Namen können diese Modi ein- und ausgeschaltet werden:
blinkende Bildschirmanzeige (blink), fette bzw. extra helle Zeichen
(bold), schwach dargestellte bzw. halbhelle Zeichen (dim), mit Leer-
zeichen überschriebener bzw. unsichtbarer Text (invis), geschützter
Text (prot), Umkehranzeige (rev) sowie ein Alternativ-Zeichensatz
(Einschalten des Modus über smacs, Ausschalten über rmacs) (wenn zum
Aktivieren des Alternativ-Zeichensatzes ein spezielles Kommando not-
wendig ist, so geben Sie das Kommando entweder bei enacs an oder akti-
vieren den betreffenden Modus). Beim Einschalten eines dieser Anzeige-
modi werden andere Modi teilweise ausgeschaltet.
Zum Deaktivieren sämtlicher Bildschirmattribute sollte sgr0 benutzt
werden. Diese Eigenschaft stellt die einzige Möglichkeit zum Ausschal-
ten bestimmter Eigenschaften wie z. B. dim oder blink dar und sollte
daher in jedem Fall angegeben werden.
Einen bestimmten Anzeigemodus sollten Sie als Hervorhebungsmodus defi-
nieren; diesen Modus können Sie zum Hervorheben von Fehlermeldungen
und anderem wichtigem Text benutzen. Bei der Definition der Attribute
für diesen Modus sollten Sie auf einen möglichst starken und gleich-
zeitig angenehmen Kontrast achten (empfehlenswert ist z. B. Umkehran-
zeige plus halbhelle Darstellung oder nur Umkehranzeige). Die Komman-
dofolgen zum Ein- und Ausschalten des Hervorhebungsmodus werden bei
smso bzw. rmso angegeben. Wenn nach der Kommandofolge zum Ein- bzw.
Ausschalten ein oder auch zwei Leerzeichen auf dem Bildschirm zurück-
bleiben (dies ist z. B. auf den Terminals TVI 912 und Teleray 1061 der
Fall), so sollte bei xmc die Anzahl dieser Leerzeichen angegeben wer-
den.
Die Kommandofolgen für Unterstreichen EIN/AUS können bei smul bzw.
rmul angegeben werden. Wenn das Gerät über eine Kommandofolge verfügt,
mit dem das aktuelle Zeichen unterstrichen und dann der Cursor um ein
Leerzeichen nach rechts bewegt werden kann (hierzu gehört z. B. das
Terminal Micro-Term MIME), kann diese Kommandofolge bei der Eigen-
schaft uc angegeben werden.
Terminals mit der Eigenschaft xmc speichern beim Empfang von Steuer-
zeichenfolgen für bestimmte Darstellungsarten nicht zusätzliche Daten
für jedes Zeichen ab, sondern legen spezielle Zeichen zur Auswahl des
Anzeige-Algorithmus (sog. "Magic Cookies") ab. Auf einigen Terminals
wie z. B. dem HP2621 wird der Hervorhebungsmodus automatisch ausge-
schaltet, wenn der Cursor in eine neue Zeile bewegt oder eine absolute
Cursor-Adressierung durchgeführt wird. Programme, die mit dem Hervor-
hebungsmodus arbeiten, sollten den Hervorhebungsmodus vor der nächsten
Cursor-Bewegung oder der Übermittlung eines Zeilenendezeichens verlas-
sen, es sei denn, es ist mit der Eigenschaft msgr sichergestellt, daß
die Cursor-Bewegung im Hervorhebungsmodus ohne Probleme möglich ist.
Seite 27 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Auf manchen Terminals kann bei einem Fehler statt eines akustischen
Signals ein optisches Signal in Form einer blinkenden Bildschirman-
zeige abgegeben werden; dies wird bei der Eigenschaft flash angegeben.
Der Cursor darf dabei nicht bewegt werden. Eine blinkende Bildschirm-
anzeige kann realisiert werden, indem der Bildschirm auf Umkehranzeige
geschaltet und dann nach einer Verzögerung von 200 Millisekunden wie-
der in die Normalanzeige zurückgeschaltet wird.
Wenn der Cursor besser erkennbar sein soll, wenn er sich nicht in der
untersten Zeile befindet, wird die entsprechende Kommandofolge bei der
Eigenschaft cvvis angegeben (so kann das nicht-blinkende Attribut
Unterstreichen in ein besser erkennbares Blocksymbol oder in die Kom-
bination Blinken und Unterstreichen umgewandelt werden). In diesen
Fällen sollte zusätzlich der boolesche Wert chts angegeben werden. Auf
einigen Terminals kann der Cursor auch vollkommen unsichtbar gemacht
werden; die entsprechende Kommandofolge wird bei der Eigenschaft civis
angegeben. Gleichzeitig sollte die Eigenschaft cnorm angegeben werden,
durch die alle aufgeführten Anzeigemodi wieder ausgeschaltet und zur
Normalanzeige zurückgekehrt wird.
Auf einigen Terminals gibt es die Möglichkeit zum Erzeugen von unter-
strichenen Zeichen mit Hilfe des Unterstrichs (ohne spezielle Komman-
dofolge), obwohl sie sonst das Überschreiben von Zeichen (d. h. die
Bildung von Kombinationszeichen) nicht unterstützen; in einem derarti-
gen Fall sollte die Eigenschaft ul angegeben werden. Für Geräte, auf
denen nach dem Überschreiben eines Zeichens beide Zeichen auf dem
Bildschirm sichtbar bleiben, geben Sie die Eigenschaft os an. Die Mög-
lichkeit zum Löschen von Kombinationszeichen durch ein Leerzeichen
wird bei der Eigenschaft eo angegeben.
Die Kommandofolge zum gleichzeitigen Einschalten von zwei oder mehr
Modi in beliebiger Kombination wird bei der Eigenschaft sgr angegeben.
Es gibt neun Modi, die jeweils über einen Parameter angegeben werden.
Jeder Parameter kann entweder 0 oder ungleich Null sein, je nachdem,
ob das zugehörige Attribut aus- oder eingeschaltet sein soll. Die neun
Parameter sind nachfolgend aufgeführt. sgr muß nicht unbedingt alle
neun Modi unterstützen, sondern nur diejenigen, für die eine spezielle
Kommandofolge vorhanden ist. Angenommen, auf dem betreffenden Terminal
werden die verschiedenen Modi über die folgenden Escape-Sequenzen ein-
geschaltet:
tparm-
Argument Attribut Escape-Sequenz
_____________________________________________________
Keine \E[0m
p1 Hervorheben \E[0;4;7m
p2 Unterstreichen \E[0;3m
p3 Umkehranzeige \E[0;4m
p4 Blinken \E[0;5m
p5 Schwach \E[0;7m
Seite 28 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
p6 Fett \E[0;3;4m
p7 Unsichtbar \E[0;8m
p8 Geschützt Nicht unterstützt
p9 Alternativ-Zeichensatz ^O (AUS) ^N (EIN)
Vor jeder Escape-Sequenz muß zunächst der Wert 0 angegeben werden,
damit andere Modi vor dem Einschalten des gewünschten Modus ausge-
schaltet werden. Beachten Sie auch, daß das Attribut Hervorheben in
obiger Tabelle als Kombination aus Umkehranzeige und Schwach definiert
worden ist. Außerdem wurde Fett als Kombination aus den Modi Umkehran-
zeige und Unterstreichen definiert, da es auf diesem Terminal keinen
separaten Fett-Modus gibt. Damit Kombinationen wie
Unterstreichen+Blinken unterstützt werden, muß die Escape-Sequenz
\E[0;3;5m benutzt werden. Da das Terminal den Modus Geschützt weder
unterstützt noch ihn auf irgendeine Weise simulieren kann, wird p8
ignoriert. Der Modus Alternativ-Zeichensatz ist entweder ^O (ausge-
schaltet) oder ^N (eingeschaltet). Das Einschalten sämtlicher Modi
würde mit \E[0;3;4;5;7;8m^N durchgeführt.
Die verschiedenen Modi können miteinander kombiniert werden. Dazu
einige Beispiele: Wenn entweder p2 oder p6 (d. h. entweder Unterstrei-
chen oder Fett) eingeschaltet ist, wird ;3 ausgegeben. Die Umsetzung
der oben aufgeführten Sequenzen und ihrer Abhängigkeiten ins
terminfo-Format ergibt folgendes:
Sequenz Bedingung für Ausgabe terminfo-Umsetzung
___________________________________________________________________
\E[0 Immer \E[0
;3 Wenn p2 oder p6 %?%p2%p6%|%t;3%;
;4 Wenn p1 oder p3 oder p6 %?%p1%p3%|%p6%|%t;4%;
;5 Wenn p4 %?%p4%t;5%;
;7 Wenn p1 oder p5 %?%p1%p5%|%t;7%;
;8 Wenn p7 %?%p7%t;8%;
m Immer m
^N oder ^O Wenn p9 ^N, andernfalls ^O %?%p9%t^N%e^O%;
Um sämtliche Escape-Sequenzen bei der Eigenschaft sgr anzugeben, wird
folgendes eingegeben:
sgr=\E[0%?%p2%p6%|%t;3%;%?%p1%p3%|%p6%
|%t;4%;%?%p5%t;5%;%?%p1%p5%
|%t;7%;%?%p7%t;8%;m%?%p9%t^N%e^O%;,
Beachten Sie bitte, daß sgr und sgr0 in jedem Fall angegeben werden müssen.
Abschnitt 1-8: Tastenblock
Wenn das Gerät mit einem Tastenblock ausgestattet ist, der Zeichenfol-
gen übermittelt, wenn der Benutzer eine Taste drückt, so kann auch
dies über eine Eigenschaft angegeben werden. Geräte, auf denen der
Tastenblock nur lokal funktioniert, werden nicht unterstützt (dies
gilt z. B. für die (ohne SHIFT-, ALT- oder CTRL-Taste gedrückten)
Tasten des Terminals Hewlett-Packard 2621). Die Möglichkeit, den
Seite 29 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Tastenblock zwischen "Senden" und "Nicht Senden" umzuschalten, wird
bei den Eigenschaften smkx und rmkx angegeben. Andernfalls wird davon
ausgegangen, daß der Tastenblock aktiviert ist.
Die Kommandofolgen, die beim Drücken der Tasten LEFT-ARROW RIGHT-
ARROW, UP-ARROW, DOWN-ARROW und HOME übermittelt werden, können bei
den Eigenschaften kcub1, kcuf1, kcuu1, kcud1, bzw. khome angegeben
werden. Die Kommandofolgen, die beim Drücken der Funktionstasten f0,
f1, ..., f63 (falls vorhanden) generiert werden, können bei den Eigen-
schaften kf0, kf1, ..., kf63 angegeben werden. Wenn die ersten 11
Tasten nicht mit den Standard-Beschriftungen f0 bis f10 versehen sind,
können die betreffenden Beschriftungen bei den Eigenschaften lf0, lf1,
Eigenschaften die Kommandofolgen angegeben werden, die beim Drücken
von anderen Sondertasten generiert werden: kll (Cursor in untere linke
Ecke), kbs (Rückschritt), ktbc (Alle Tabulatorstopps löschen), kctab
(Tabulatorstopp in aktueller Spalte löschen), kclr (Bildschirm löschen
bzw. Löschtaste), kdch1 (Zeichen löschen), kdl1 (Zeile löschen), krmir
(Einfügemodus verlassen), kel (Bis Zeilenende löschen), ked (Bis zur
letzten Spalte der Bildschirmanzeige löschen), kich1 (Zeichen einfügen
bzw. Einfügemodus einschalten), kil1 (Zeile einfügen), knp (Nächste
Seite), kpp (Vorhergehende Seite), kind (Scrolling nach oben/unten),
kri (Scrolling nach unten/oben), khts (Tabstopp in aktueller Spalte
einrichten). Wenn auf dem Tastenblock zusätzlich ein Feld mit drei auf
drei Tasten vorhanden ist, bei denen es sich u. a. um die vier Pfeil-
tasten handelt, so können die übrigen fünf Tasten bei den Eigenschaf-
ten ka1, ka3, kb2, kc1 und kc3 angegeben werden. Diese Tasten sind
immer dann hilfreich, wenn die Funktionen eines Tastenblocks mit 3x3
Tasten benötigt werden. Weitere Tasten sind in der obenstehenden Liste
der Eigenschaften aufgeführt.
Strings zur Programmierung von Funktionstasten können bei den Eigen-
schaften pfkey, pfloc und pfx angegeben werden. Ein String zur Pro-
grammierung von Bildschirm-Labeln sollte bei der Eigenschaft pln ange-
geben werden. Jeder dieser Strings kann mit zwei Parametern angegeben
werden: Einer Funktionstastenkennung sowie einem String, mit dem die
Funktionstaste programmiert bzw. belegt werden soll. Der String pfkey
bewirkt, daß das Drücken der betreffenden Taste dieselben Auswirkungen
hat, wie wenn der Benutzer den angegebenen String eingeben würde; der
String wird durch das Terminal dann lokal ausgeführt. Soll der String
dagegen an den Rechner übermittelt werden, muß er der Eigenschaft pfx
zugeordnet werden. Bei den Eigenschaften nlab, lw und lh wird die
Anzahl der programmierbaren Bildschirm-Labels sowie ihre Breite und
Höhe angegeben. Die Kommandos zum Ein- und Ausblenden der Labels wer-
den gegebenenfalls den Eigenschaften smln und rmln zugeordnet. smln
wird im Normalfall nach ein oder mehreren pln-Folgen ausgegeben, um
sicherzustellen, daß die Änderung sich auf die Bildschirmanzeige aus-
wirkt.
Abschnitt 1-9: Tabstopps und ihre Initialisierung
Wenn Hardware-Tabstopps in das Gerät einprogrammiert sind, kann das
Kommando für den Sprung zum nächsten Tabulatorstopp bei der Eigen-
schaft ht angegeben werden (im Normalfall handelt es sich hierbei um
Seite 30 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
CTRL-I). Das Kommando für den Sprung zum unmittelbar vorhergehenden
Tabstopp kann bei der Eigenschaft cbt angegeben werden. Wenn die Tabu-
latorzeichen laut tty-Modi vom Rechner durch Leerzeichen ersetzt und
nicht an das Gerät übermittelt werden, sollten die Programme nicht mit
den Eigenschaften ht oder cbt arbeiten (selbst wenn es möglich wäre),
da der Benutzer die Tabstopps möglicherweise nicht ordnungsgemäß
gesetzt hat. Wenn in das Gerät Hardware-Tabstopps einprogrammiert wur-
den, die nach dem Starten des Geräts zunächst in einem Abstand von n
Leerzeichen eingerichtet werden, sollte der Abstand zwischen den Tab-
stopps (Anzahl der Leerzeichen) beim numerischen Parameter it angege-
ben werden. Anhand dieses Parameters wird normalerweise von tput init
[siehe tput(1)] festgestellt, ob die Hardware-Tabstopps in Leerzeichen
umgewandelt und ob Tabstopps eingerichtet werden sollen. Wenn die Tab-
stopps eines Gerät im nichtflüchtigen Speicher abgespeichert werden
können, kann die terminfo-Beschreibung davon ausgehen, daß sie ord-
nungsgemäß eingerichtet sind. Die Kommandos zum Einrichten und Löschen
von Tabstopps können gegebenenfalls bei den Eigenschaften tbc (Alle
Tabstopps löschen) und hts (Tabstopp in der aktuellen Spalte jeder
Zeile einrichten) angegeben werden.
Außerdem gibt es die Eigenschaften is1, is2 und is3 (Initialisierung
des Geräts), iprog (der Pfadname eines Programms zur Initialisierung
des Geräts) sowie if (der Name einer Datei mit ausführlichen Initiali-
sierungs-Strings). Es wird davon ausgegangen, daß das Gerät durch
diese Strings in Modi geschaltet wird, die mit dem übrigen Inhalt der
terminfo-Beschreibung konsistent sind. Diese Strings müssen bei jeder
Anmeldung des Benutzers an das Gerät übermittelt und in der folgenden
Reihenfolge ausgeführt werden: Ausführen des Programms mit iprog; Aus-
gabe von is1; Ausgabe von is2; Randeinstellungen mit mgc, smgl und
smgr; Einrichten der Tabulatorstopps mit tbc und hts; Ausgabe der
Datei mit if; Ausgabe von is3. Hierzu wird im Normalfall tput mit der
Option init aufgerufen.
Ein Großteil der Initialisierung wird mit is2 erledigt. Das Einrichten
von speziellen Gerätemodi ohne das Kopieren von Strings kann durchge-
führt werden, indem die allgemeinen Kommandofolgen bei is2 und die Son-
derfälle bei is1 und is3 angegeben werden. Kommandofolgen, mit denen
aus einem vollkommen unbekannten Zustand heraus ein Reset möglich ist,
können - analog zu is1, is2, is3 und if - bei rs1, rs2, rf und rs3
angegeben werden. (Eine andere Möglichkeit besteht darin, die
Initialisierungs-Folgen in Dateien im Verzeichnis
/usr/share/lib/tabset/* einzubringen, die bei den Eigenschaften if und
rf angegeben werden. Diese Möglichkeit wird jedoch nur selten benutzt.
Im Normalfall sollte das Initialisieren und Zurücksetzen mit Hilfe von
Strings erfolgen.) Diese Strings werden von der tput-Option reset
benutzt, die immer dann aufgerufen wird, wenn das Terminal sich im
Zustand der Verklemmung befindet. Die Kommandos werden rs1, rs2, rs3
und rf normalerweise nur dann zugeordnet, wenn sie sich störend auf die
Bildschirmanzeige auswirken und beim Anmelden nicht unbedingt notwendig
sind. So würde das Kommando zum Einschalten der 80-Spalten-Anzeige auf
dem Terminal normalerweise bei is2 angegeben. Allerdings führt dies auf
einigen Terminals zu einem störenden Effekt auf dem Bildschirm;
Seite 31 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
außerdem ist es im Normalfall überhaupt nicht notwendig, da das Termi-
nal in der Regel bereits für die 80-Spalten-Anzeige konfiguriert ist.
Komplexere Kommandofolgen zum Einrichten von Tabstopps können mit tbc
und hts nicht beschrieben werden; in einem derartigen Fall kann die
Kommandofolge is2 oder if zugeordnet werden.
Eine Randeinstellung kann mit mgc gelöscht werden (Informationen über
die Kommandos zum Einstellen und Löschen von Rändern finden Sie im
Abschnitt DRUCKEREIGENSCHAFTEN).
Abschnitt 1-10: Verzögerungen
Bei einigen Eigenschaften können Verzögerungen angegeben werden, die
der tty-Treiber durchführen soll. Diese Verzögerungen werden in erster
Linie auf Hardcopy-Terminals benötigt und werden von tput init zur
Einstellung der tty-Modi benutzt. Mit Verzögerungen, die bei den
Eigenschaften cr, ind, cub1, ff und tab angegeben werden, können die
entsprechenden Verzögerungs-Bits im tty-Treiber gesetzt werden. Wenn
die Eigenschaft pb (padding baud rate - Mindest-Baudrate für Verzöge-
rungszeichen) angegeben ist, werden die Verzögerungszeichen unterhalb
der bei pb angegebenen Baudrate ignoriert.
Abschnitt 1-11: Statuszeile
Wenn auf dem Terminal eine zusätzliche Statuszeile angezeigt wird, die
normalerweise nicht von Programmen genutzt wird, kann ein entsprechen-
der Eintrag in die terminfo-Datei eingefügt werden. Auf einigen Termi-
nals gibt es unterhalb der untersten Zeile eine Zusatzzeile, in die
der Cursor immer dann über die Angabe einer normalen Adresse bewegt
werden kann, wenn in der terminfo-Datei die Eigenschaft hs enthalten
ist (so haben beispielsweise die Terminals vom Typ Heathkit h19 eine
25. Zeile und Terminals vom Typ VT100 in ihrem 23-zeiligen Scroll-
Bereich eine 24. Zeile). Spezielle Strings, mit denen der Cursor in
eine bestimmte Spalte der Statuszeile und wieder zurück bewegt werden
kann, können bei den Eigenschaften tsl und fsl angegeben werden (nach
fsl muß der Cursor sich an derselben Position befinden wie vor tsl.
Dies kann gegebenenfalls auch erreicht werden, indem die Strings sc
und rc in tsl und fsl eingefügt werden). Bei der Eigenschaft tsl kann
mit einem Einzelparameter die Nummer der Spalte in der Statuszeile
angegeben werden, in die der Cursor bewegt werden soll.
Auf einer Reihe von Terminals können innerhalb der Statuszeile auch
Escape-Sequenzen und sonstige spezielle Kommandos (z. B. Tabulator-
sprung) benutzt werden; dies kann mit der Eigenschaft eslok angegeben
werden. Der String zum Ausblenden (bzw. sonstigen Unsichtbarmachen)
der Statuszeile wird bei der Eigenschaft dsl angegeben. Den Eigen-
schaften sc und rc können die Kommandos zum Speichern und Wiederher-
stellen der Cursor-Position zugeordnet werden. Die Breite der Status-
zeile ist im Normalfall auf die Breite der Bildschirmanzeige festge-
legt (z. B. cols). Auf einigen Terminals gibt es hier jedoch Unter-
schiede, da z. B. keine vollständige Zeile geladen werden kann; die
abweichende Breite der Statuszeile kann dann bei dem numerischen Wert
wsl angegeben werden.
Seite 32 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Abschnitt 1-12: Grafikzeichen
Wenn das Gerät einen Alternativ-Zeichensatz zum Zeichnen von Linien
unterstützt, wird die Abbildung der grafischen Symbole auf die Zeichen
bei acsc angegeben. Die Definition dieses Strings basiert auf dem
Alternativ-Zeichensatz des DEC VT100-Terminals, der um einige Zeichen
des Terminals AT&T 4410v1 ergänzt wurde.
vt100+
Symbol Zeichen
___________________________________
Pfeil nach rechts +
Pfeil nach links ,
Pfeil nach unten .
Quadratisches Blocksymbol 0
Laternen-Symbol I
Pfeil nach oben -
Raute `
Schachbrett a
Grad-Symbol f
Plus/Minus g
Feld von Quadraten h
Untere rechte Ecke j
Obere rechte Ecke k
Obere linke Ecke l
Untere linke Ecke m
Plus n
Scan-Zeile 1 o
Horizontale Linie q
Scan-Zeile 9 s
Linkes T-Stück t
Rechtes T-Stück u
Unteres T-Stück v
Oberes T-Stück w
Vertikaler Strich x
Punkt ~
Um den Grafikzeichensatz eines neuen Geräts zu beschreiben, wird in
die obenstehende Tabelle am besten eine dritte Spalte mit den Zeichen
für das neue Gerät eingefügt, die auf dem Gerät immer dann das ent-
sprechende Symbol erzeugen, wenn das Gerät in den Alternativ-Zeichen-
satz umgeschaltet worden ist. Beispiel:
vt100+
Symbol Zeichen neues tty-Zeichen
_________________________________________________
Obere linke Ecke l R
Untere linke Ecke m F
Obere rechte Ecke k T
Untere linke Ecke j G
Horizontaler Strich q ,
Seite 33 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Vertikaler Strich x .
Schreiben Sie jetzt die Zeichen in ihrer Reihenfolge von links nach
rechts auf (Beispiel: acsc=lRmFkTjGq\,x.).
In terminfo können Sie mehrere Zeichensätze definieren. Nähere Infor-
mationen hierzu finden Sie in Abschnitt 2-5.
Abschnitt 1-13: Farbmanipulation
Im folgenden wird auf zwei Systeme zur Farbmanipulation eingegangen:
das Tektronix- und das HP-System. Beim Tektronix-System wird ein Satz
aus N vordefinierten Farben (im Normalfall 8) benutzt, aus dem der
Benutzer die aktuellen Vordergrund- und Hintergrundfarben auswählen
kann. Somit kann ein Terminal bis zu N Farben unterstützen, die in N*N
Farbkombinationen gleichzeitig auf dem Bildschirm erscheinen können.
Beim HP-System kann der Benutzer die Vordergrundfarben nur in Verbin-
dung mit der Hintergrundfarbe definieren und umgekehrt. Somit muß er
jede Farbkombination fest definieren. Auf diese Weise können bis zu M
Farbkombinationen aus 2*M verschiedenen Farben definiert werden. Die
meisten gängigen Farbterminals arbeiten mit einer der beiden beschrie-
benen Systeme.
Bei den numerischen Variablen colors und pairs wird die Anzahl der
Farben und Farbkombinationen definiert, die gleichzeitig auf dem Bild-
schirm dargestellt werden können. Die Möglichkeit, eine Farbdefinition
auf einem Terminal zu ändern (z. B. auf den Terminals Tektronix 4100
und 4200), sollte mit der Eigenschaft ccc (can change color) angegeben
werden. Zur Änderung einer Farbdefinition (Tektronix 4200) wird initc
(initialize color) benutzt. Bei diesen Eigenschaften sind vier Argu-
mente erforderlich: die Farbnummer (im Bereich 0 bis colors-1) sowie
drei RGB-Werte (Red, Green, Blue - Rot, Grün, Blau) bzw. drei HLS-
Farben (Hue, Lightness, Saturation - Farbton, Helligkeit, Sättigung).
Die unterstützten RGB- und HLS-Werte sind terminalabhängig.
Wenn das Terminal ANSI-Escape-Sequenzen zum Einstellen von Vorder- und
Hintergrund unterstützt, sollten diese als setab bzw. setaf codiert
werden. Wenn das Terminal andere Escape-Sequenzen für Vorder- und Hin-
tergrund unterstützt, sollten diese als setb bzw. setf codiert werden.
Die Funktion vidputs() und die Aktualisierungsfunktionen (refresh)
verwenden setab und setaf, falls diese Eigenschaften definiert sind.
Für jede dieser Eigenschaften muß ein Argument angegeben werden, und
zwar die Farbnummer. Standardmäßig werden den ersten acht Farben (0-7)
die Farben Schwarz, Rot, Grün, Gelb, Blau, Magenta, Cyan, Weiß (in
dieser Reihenfolge) zugeordnet. Es kann jedoch zu Neuzuordnungen von
Farben kommen, oder es besteht die Möglichkeit, daß die zugrundelie-
gende Hardware diese Farben nicht unterstützt. Zuordnungen für weitere
vom Gerät unterstützte Farben (also Nummern über 7) liegen im Ermessen
dessen, der den terminfo-Eintrag schreibt.
Zur Initialisierung eines Farbpaars (HP-Methode) wird initp (initia-
lise pair) benutzt. Hierzu sind sieben Argumente erforderlich: Die
Nummer eines Farbpaars (Bereich= 0 bis pairs-1) und sechs RGB-Werte:
Seite 34 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
drei für den Vordergrund und anschließend drei für den Hintergrund.
(Beide Dreiergruppen sollten die Reihenfolge RGB aufweisen.) Bei initc
oder initp sollten die RGB- bzw. HLS-Argumente in der Reihenfolge
"Rot, Grün, Blau" bzw. "Farbton, Helligkeit, Sättigung" angegeben wer-
den. Benutzen Sie scp (set colour-pair), um das Farbpaar zu aktivie-
ren. Dabei wird über ein Einzelargument die Nummer des Farbpaars ange-
geben.
Die Tektronix-Terminals vom Typ 4100 arbeiten bei der Farbdarstellung
ausschließlich mit dem HLS-Farbsystem. Für derartige Terminals (bzw.
umschaltbare Terminals, die auch den HLS-Modus unterstützen) muß der
boolesche Wert hls definiert werden; dadurch wird die curses-Funktion
initcolor angewiesen, ihre RGB-Argumente nach HLS umzuwandeln, bevor
Sie sie an das Terminal übermittelt. Bei den letzten drei Argumenten
des Strings initc würde es sich dann um HLS-Werte handeln.
Wenn ein Terminal die Änderung der Farbdefinition unterstützt, aber
nicht mit dem RGB- oder HLS-Farbsystem arbeitet, müssen die Farben
entweder auf RGB oder auf HLS abgebildet werden.
Zur Definition einer bestimmten Vorder- oder Hintergrundfarbe wird
setaf (set ANSI foreground) bzw. setab (set ANSI background) benutzt.
Bei diesen Eigenschaften muß über einen Einzelparameter die Nummer der
Farbe angegeben werden. Mit initp (initialize pair) kann eine Farbkom-
bination (HP) definiert werden. Dafür müssen fünf Parameter angegeben
werden: die Nummer einer Farbkombination (Bereich=0 bis pairs-1),
außerdem sechs RGB-Werte: drei für den Vordergrund sowie drei für den
Hintergrund. (Die Farben in jeder Gruppe sollten in der RGB-Reihen-
folge angegeben werden.) Bei initc bzw. initp sollten die RGB- bzw.
HLS-Argumente in der Reihenfolge Rot, Grün, Blau bzw. Farbton, Hellig-
keit, Sättigung) angegeben werden. Um eine Farbkombination zur aktuel-
len Farbkombination zu machen, benutzen Sie scp (set color-pair).
Dabei wird über einen Einzelparameter die Nummer der Farbkombination
angegeben.
Auf einigen Terminals (z. B. den meisten Farbterminal-Emulationen für
PCs) können Bildschirmbereiche mit der aktuellen Hintergrundfarbe
gelöscht werden. In derartigen Fällen sollte bce (background color
erase) definiert werden. Die Variable op (original pair) enthält eine
Kommandosequenz zum Einrichten der der Vorder- und Hintergrundfarben,
die auch beim Einschalten des Terminals gültig waren. In ähnlicher
Weise enthält oc (original color) eine Steuerzeichenfolge zur Einstel-
lung sämtlicher Farben (Tektronix) bzw. Farbkombinationen (HP) auf
dieselben Werte, die beim Einschalten des Terminals gültig waren.
Auf einigen Farbterminals werden Anzeigeattribute durch Farben
ersetzt. Derartige Anzeigeattribute sollten nicht mit Farben kombi-
niert werden. Die Informationen über diese Anzeigeattribute sollten
der Variablen ncv (no color video) zugeordnet werden. Zwischen den
neun niedrigstwertigen Bits dieser Variablen und den Anzeigeattributen
besteht eine direkte Entsprechung, die in der folgenden Tabelle
gezeigt wird.
Seite 35 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Attribut Bit-Position Dezimalwert Setzende Eigenschaft
_________________________________________________________________
WASTANDOUT 0 1 sgr, Parameter 1
WAUNDERLINE 1 2 sgr, Parameter 2
WAREVERSE 2 4 sgr, Parameter 3
WABLINK 3 8 sgr, Parameter 4
WADIM 4 16 sgr, Parameter 5
WABOLD 5 32 sgr, Parameter 6
WAINVIS 6 64 sgr, Parameter 7
WAPROTECT 7 128 sgr, Parameter 8
WAALTCHARSET 8 256 sgr, Parameter 9
WAHORIZONTAL 9 512 sgr1, Parameter 1
WALEFT 10 1024 sgr1, Parameter 2
WALOW 11 2048 sgr1, Parameter 3
WARIGHT 12 4096 sgr1, Parameter 4
WATOP 13 8192 sgr1, Parameter 5
WAVERTICAL 14 16384 sgr1, Parameter 6
Wenn ein bestimmtes Anzeigeattribut nicht mit Farben kombiniert werden
soll, muß das zugehörige ncv-Bit auf 1 gesetzt werden, andernfalls auf
Null. Die Informationen, die der Variablen ncv zugeordnet werden,
ergeben sich durch die Addition aller Dezimalwerte, die den jeweili-
gen, nicht mit Farben kombinierbaren Attributen zugeordnet sind. Wenn
das Terminal die Attribute Umkehranzeige (Bit-Nummer 2 und Dezimalwert
4) und Fett (Bit-Nummer 5 und Dezimalwert 32) durch Farben simuliert,
muß ncv der Wert 36 (4 + 32) zugeordnet werden.
Abschnitt 1-14: Verschiedenes
Wenn Verzögerungen auf dem Terminal nicht über Füllzeichen realisiert
werden, kann das betreffende Zeichen bei pad angegeben werden. Es wird
lediglich das erste Zeichen des Strings bei pad benutzt. Wenn das Ter-
minal nicht mit Füllzeichen arbeiten, geben Sie npc an.
Die Möglichkeit, den Cursor auf dem Terminal-Bildschirm um eine halbe
Zeile nach oben bzw. unten zu bewegen, kann bei den Eigenschaften hu
(half-line up) und hd (half-line down) angegeben werden. Diese Eigen-
schaften werden hauptsächlich zum Hoch- und Tiefstellen von Zeichen
auf Hardcopy-Terminals benutzt. Wenn ein Hardcopy-Terminal einen Vor-
schub zur nächsten Seite ausführen kann, wird die zugehörige Kommando-
folge bei der Eigenschaft ff angegeben (im Normalfall CTRL-L).
Auf manchen Terminals gibt es ein Kommando, mit dem man ein bestimmtes
Zeichen wiederholen kann, um eine größere Anzahl gleicher Zeichen
schneller übermitteln zu können; dieses Kommando wird dem parametri-
sierten String rep zugeordnet, der zwei Parameter hat: der erste Para-
meter steht für das zu wiederholende Zeichen, der zweite für die
Anzahl der Wiederholungen. Somit ist tparm(repeatchar, 'x', 10)
gleichbedeutend mit xxxxxxxxxx.
Seite 36 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Auf einigen Terminals wie z. B. Tektronix 4025 kann ein Kommandozei-
chen eingestellt werden; dieses Zeichen kann mit der cmdch angegeben
werden. Damit wird das Standard-Kommandozeichen ausgewählt, das bei
allen Eigenschaften benutzt wird. Einige UNIX Systeme verfahren fol-
gendermaßen: Wenn die Umgebungsvariable CC definiert ist, wird das
Standard-Kommandozeichen bei jedem Vorkommen durch die Zeichen bei CC
ersetzt.
In einigen Terminal-Beschreibungen wird kein Terminal eines speziellen
Typs wie z. B. switch, dialup, patch und network definiert; derartige
Terminal-Beschreibungen sollten die Eigenschaft gn (generic) enthal-
ten, so daß das Programm eine entsprechende Meldung ausgeben kann,
wenn es nicht mit dem Terminal kommunizieren können (diese Eigenschaft
eignet sich nicht Beschreibungen von Terminals vom Typ virtual, deren
Escape-Sequenzen bekannt sind). Wenn das Terminal durch das Reliant
UNIX Protokoll für virtuelle Bildschirme unterstützt wird, kann die
Terminal-Nummer bei der Eigenschaft vt angegeben werden. Bei der
Eigenschaft rfi sollte eine Sequenz angegeben werden, die vom System
zwischen dem Senden und Empfangen von Zeichen übermittelt werden
sollte.
Wenn das Gerät bei der Flußsteuerung mit dem XON/XOFF-Protokoll arbei-
tet, tragen Sie die Eigenschaft xon ein. Sie sollten in diesem Fall
aber dennoch mit Verzögerungen arbeiten, damit die Programme zwischen
verschiedenen Eigenschaften vergleichen und die effektivste (kosten-
günstigste) Möglichkeit zum Beseitigen eines Überlaufs ermitteln kön-
nen; es werden dann aber keine echten Füllzeichen übermittelt. Die
Escape-Sequenzen zum Ein- und Ausschalten des XON/XOFF-Protokolls kön-
nen bei smxon und rmxon angegeben werden. Wenn für das Handshaking
nicht die Zeichen ^S und ^Q benutzt werden, können die betreffenden
Zeichen bei den Eigenschaften xonc und xoffc angegeben werden.
Wenn es auf dem Terminal eine "Meta-Taste" mit der Funktion der
SHIFT-Taste gibt, durch die das achte Bit jedes übermittelten Zeichens
gesetzt wird, so kann dies mit der Eigenschaft km angegeben werden.
Andernfalls geht das Programm davon aus, daß das achte Bit das Pari-
tätsbit ist und setzt es im Normalfall zurück. Die Strings zum Ein-
und Ausschalten dieses Meta-Modus können bei den Eigenschaften smm und
rmm angegeben werden.
Wenn nicht alle Zeilen im Speicher des Terminals auf eine Bildschirm-
seite passen, kann die Anzahl der Zeilen im Speicher bei der Eigen-
schaft lm angegeben werden. Mit lm#0 wird angegeben, daß die Anzahl
der Zeilen zwar nicht festgelegt ist, der Inhalt des Speichers aber
nach wie vor nicht auf eine Bildschirmseite paßt.
Strings zur Steuerung eines an das Terminals angeschlossenen Behelfs-
druckers können folgendermaßen angegeben werden: mc0 - Aktuellen
Inhalt des Bildschirms ausdrucken; mc4 - Drucker ausschalten; mc5 -
Drucker einschalten. Bei eingeschaltetem Drucker wird sämtlicher Text,
der an das Terminal übermittelt wird, zum Drucker weitergeleitet. Bei
der speziellen Eigenschaft mc5p kann ein Parameter zur Angabe einer
Seite 37 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Anzahl von Zeichen angegeben werden; der Drucker bleibt dann so lange
eingeschaltet, bis die beim Parameter angegebene Zeichenzahl ausge-
druckt worden ist. Danach wird der Drucker ausgeschaltet. Der Parame-
ter sollte maximal den Wert 255 haben. Wenn der Text bei eingeschalte-
tem Drucker nicht auf dem Terminal-Bildschirm angezeigt wird, tragen
Sie die Eigenschaft mc5i (Drucker stillgelegt) ein; dies bewirkt, daß
sämtlicher Text (auch mc4) unverändert an den Drucker übermittelt
wird.
Abschnitt 1-15: Sonderfälle
Das Schema der terminfo-Datenbasis ist für die meisten Terminals
geeignet. Allerdings gibt es Terminals, die etwas von diesem Schema
abweichen und in terminfo gesondert behandelt werden müssen. Dies
sollte jedoch nicht als Fehler oder Nachteil des Terminals mißverstan-
den werden; hier liegen lediglich Unterschiede zwischen dem zugrunde-
liegenden Schema und der tatsächlichen Hardware vor. So gibt es
Geräte, die weniger verbreitet sind, oder die nicht alle Elemente des
terminfo-Schemas unterstützen.
Für Terminals, die kein Tilde-Zeichen (~) anzeigen können, sollte die
Eigenschaft hz in der terminfo-Beschreibung enthalten sein (dies ist
z. B. bei einigen Hazeltine-Terminals der Fall).
Für Terminals, die einen unmittelbar auf einen am-Zeilenumbruch fol-
genden Zeilenvorschub ignorieren (z. B. das Terminal Concept 100),
sollte die Eigenschaft xenl enthalten sein. Für Terminals, auf denen
der Cursor bis zum Empfang eines weiteren Zeichens in der äußerst
rechten Spalte bleibt und nicht sofort in die nächste Zeile springt,
sollte ebenfalls die Eigenschaft xenl enthalten sein (dies ist z. B.
bei VT100-Terminals der Fall).
Für Terminals, auf denen zum Verlassen des Hervorhebungsmodus die
Eigenschaft el notwendig ist (d. h. hervorgehobene Zeichen automatisch
ebenfalls durch hervorgehobene und nicht durch normale Zeichen ersetzt
werden), sollte die Eigenschaft xhp angegeben werden.
Für diejenigen Teleray-Terminals, auf denen sämtliche Tabulatorzeichen
in Leerzeichen umgewandelt werden, sobald der Cursor über sie bewegt
wird, sollte die Eigenschaft xt (nicht-erhaltende Tabulatorzeichen)
enthalten sein. Durch diese Eigenschaft wird auch angegeben, daß her-
vorgehobener Text nicht einfach durch "normalen" Text ersetzt werden
kann; zum Ausschalten des Hervorhebungsmodus muß daher statt dessen
mit dem Löschen und Einfügen von Zeilen gearbeitet werden.
Für diejenigen Beehive Superbee-Terminals, die weder das Escape-Zei-
chen noch CTRL-C übermitteln, sollte die Eigenschaft xsb angegeben
werden; dadurch wird die Funktionstaste f1 für das Escape-Zeichen und
die Funktionstaste f2 für CTRL-C benutzt.
Seite 38 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Abschnitt 1-16: Ähnliche Terminals
Bei zwei Terminals mit sehr großen Ähnlichkeiten kann angegeben wer-
den, daß das eine mit einigen wenigen Ausnahmen fast vollständig mit
dem anderen übereinstimmt. Das Terminal mit den ähnlichen Eigenschaf-
ten kann bei dem parametrisierten String use angegeben werden. Die vor
use angegebenen Terminal-Eigenschaften heben die Eigenschaften des
Terminals auf, das durch use aufgerufen wird. Zum Löschen einer Eigen-
schaft kann der Eigenschaftsdefinition der Parameter xx@ vorangestellt
werden, wobei xx für die Eigenschaft steht. So wird beispielsweise im
Eintrag
att4424-2|Teletype 4424 in display function group ii,
rev@, sgr@, smul@, use=att4424,
ein Terminal vom Typ AT&T 4424 definiert, das nicht die Eigenschaften
rev, sgr und smul unterstützt und somit keinen Text hervorheben kann.
Auf diese Weise können verschiedene Terminal-Modi oder verschiedene
Benutzer-Präferenzen angegeben werden. Es können auch zwei oder mehr
use-Eigenschaften enthalten sein.
TEIL 2: DRUCKEREIGENSCHAFTEN
In der terminfo-Datenbasis können die Eigenschaften sowohl von Druk-
kern als auch von Terminals definiert werden. Die Eigenschaften, die
für Drucker und Terminals zur Verfügung stehen, sind in den beiden
Listen unter GERÄTEEIGENSCHAFTEN enthalten; hier sind die Eigenschaf-
ten nach Variablen- und nach Eigenschaftsnamen aufgeführt.
Abschnitt 2-1: Runden von Werten
Da bei parametrisierten Strings nur Ganzzahlen angegeben werden kön-
nen, sollte bei der Erstellung einer terminfo-Datenbasis darauf geach-
tet werden, daß die eingegebenen Strings nur mit gerundeten numeri-
schen Werten arbeiten. Dies sollte bei der Entwicklung von Anwendungen
berücksichtigt werden; ein Wert sollte auf jeden Fall auf die nächste
Ganzzahl auf- oder abgerundet werden, bevor er einem parametrisierten
String zugeordnet wird.
Abschnitt 2-2: Auflösung eines Druckers
Als Auflösung eines Druckers bezeichnet man den kleinsten Abstand zwi-
schen den Zeichen, in dem er ausdrucken kann. Ein Drucker hat im all-
gemeinen unterschiedliche, voneinander unabhängige Auflösungen in ver-
tikaler und horizontaler Richtung. So kann die vertikale Auflösung
eines Druckers ermittelt werden, indem der kleinstmögliche Abstand
zwischen den Grundlinien von aufeinanderfolgenden Druckzeilen ausge-
messen wird. Die horizontale Auflösung dagegen wird ermittelt, indem
der kleinstmögliche Abstand zwischen den linken Kanten von aufeinan-
derfolgenden identischen Zeichen auf der Druckseite ausgemessen wird.
Ein Drucker ist im Normalfall in der Lage, mit einer gleichmäßigen
vertikalen und horizontalen Auflösung auszudrucken. Aus der Sicht von
terminfo findet das Ausdrucken innerhalb einer einheitlichen Matrix
statt: Alle Zeichen werden relativ zu jeder Zelle der Matrix an
Seite 39 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
vordefinierten Positionen gedruckt. Außerdem hat jede Zelle dieselbe
Größe, die von der kleinstmöglichen horizontalen und vertikalen
Schrittweite abhängt (diese hängt wiederum von der Auflösung ab). Die
Größe einer Zelle kann geändert werden; darauf wird an einer späteren
Stelle dieses Kapitels eingegangen.
Auf vielen Druckern können Ausdrucke in Proportionalschrift erstellt
werden, d. h., der horizontale Zeichenabstand hängt von der tatsächli-
chen Breite des zuletzt ausgedruckten Zeichens ab. Diese Eigenschaft
kann in der terminfo-Datenbasis nicht direkt beschrieben werden;
allerdings unterstützt sie genügend Eigenschaftsdefinitionen, mit der
eine Anwendung das Ausdrucken in Proportionalschrift simulieren kann.
Ein Drucker muß nicht nur in der Lage sein, die Zeichen der horizonta-
len und vertikalen Auflösung entsprechend in einem kleinstmöglichen
Abstand zu drucken, sondern auch den Druckkopf zu einer Zeichenposi-
tion zu bewegen, deren Abstand von der aktuellen Zeichenposition aus
ein ganzzahliges Vielfaches des kleinstmöglichen Zeichenabstands
beträgt. Der Abstand zwischen der aktuellen und der neuen Zeichenposi-
tion kann maximal die Länge oder Breite einer Druckseite betragen.
Einige Drucker können in verschiedene Druck-Modi umgeschaltet werden,
in denen sie mit unterschiedlicher Auflösung ausdrucken. Im Normal-
Modus arbeiten die bisherigen terminfo-Eigenschaften, analog zu den
Bildschirm-Terminals, mit Spalten und Zeilen. Somit würde die bisher-
ige Eigenschaft lines die Länge der Druckseite in Zeilen und die
Eigenschaft cols die Breite der Druckseite in Spalten angeben. Im
Mikro-Modus arbeiten viele terminfo-Eigenschaften mit Zeilen- und
Spalten-Inkrements. Auf einigen Druckern kann der Mikro-Modus zusätz-
lich zum Normal-Modus eingestellt werden, so daß mit allen Eigenschaf-
ten gleichzeitig gearbeitet werden kann.
Abschnitt 2-3: Angabe des Auflösungsvermögens eines Druckers
Zur Angabe des Auflösungsvermögens eines Druckers gibt es verschiedene
Möglichkeiten. Bei jeder dieser Möglichkeiten wird die Auflösung als
die Anzahl der kleinstmöglichen Schritte pro Abstand angegeben:
Charakteristische Anzahl der kleinstmöglichen Schritte
______________________________________________________
orhi Schritte pro Zoll horizontal
orvi Schritte pro Zoll vertikal
orc Schritte pro Spalte
orl
Beim Drucken im Normal-Modus wird der Druckkopf (außer in einigen noch
zu beschreibenden Sonderfällen) nach jedem gedruckten Zeichen zur
nächsten Spalte bewegt; der Abstand, um den der Druckkopf dabei bewegt
wird, entspricht der Auflösung pro Spalte. Auf einigen Druckern wird
der Druckkopf automatisch in die nächste Zeile bewegt, wenn ein Zei-
chen an der äußerst rechten Position gedruckt wird; der Abstand, um
den der Druckkopf in vertikaler Richtung bewegt wird, entspricht der
Auflösung pro Zeile. Beim Drucken im Mikro-Modus können die Abstände
Seite 40 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
unabhängig von der Auflösung sein; auf einigen Druckern können sie
sogar Null sein.
Automatisches Verschieben des Druckkopfs nach dem Ausdrucken
____________________________________________________________
Normal-Modus:
orc Anzahl der Schritte in horizontaler Richtung
orl Anzahl der Schritte in vertikaler Richtung
Mikro-Modus:
mcs Anzahl der Schritte in horizontaler Richtung
mls Anzahl der Schritte in vertikaler Richtung
Auf einigen Druckern können Zeichen in Breitschrift ausgedruckt wer-
den. Beim Ausdrucken eines Breitschrift-Zeichens im Normal-Modus wird
der Druckkopf in einigen Fällen nicht um denselben Abstand nach rechts
bewegt wie beim Ausdrucken eines Zeichens normaler Breite. Ebenso wird
der Druckkopf beim Ausdrucken eines Breitschrift-Zeichens im Mikro-
Modus in einigen Fällen um eine andere Distanz verschoben als beim
Ausdrucken eines Zeichens normaler Breite. Zwischen diesen Unterschie-
den gibt es jedoch einen Zusammenhang: Wenn der Druckkopf beim Aus-
drucken eines normalen Zeichens sowohl im Normal- als auch im Mikro-
Modus um denselben Abstand nach rechts bewegt wird (mcs=orc), so gilt
dies auch für das Ausdrucken eines Breitschrift-Zeichens im Normal-
und Mikro-Modus. Dies bedeutet aber nicht unbedingt, daß der Abstand
zwischen Zeichen normaler Breite gleich groß ist wie der zwischen
Breitschrift-Zeichen, sondern nur, daß die Abstände sich bei einem
Wechsel vom Normal- in den Mikro-Modus nicht ändern. Wenn jedoch der
Abstand, um den der Druckkopf beim Ausdrucken von normalen Zeichen
nach rechts bewegt wird, im Mikro-Modus und mit Normal-Modus unter-
schiedlich ist (mcs<orc), so wird davon ausgegangen, daß der Druckkopf
beim Ausdrucken eines Breitschrift-Zeichens im Mikro-Modus um densel-
ben Abstand nach rechts bewegt wird. Dieser Sachverhalt wird durch die
nachfolgende Tabelle veranschaulicht.
________________________________________________________________________________
Autom. Verschieben des Druckkopfs nach dem Ausdrucken eines Breitschriftzeichens
Normal-Modus oder Mikro-Modus (mcs = orc):
widcs Anzahl der Schritte in horizontaler Richtung
Mikro-Modus (mcs < orc):
mcs Anzahl der Schritte in horizontaler Richtung
Für viele Drucker gibt es Steuerzeichenfolgen zur Änderung des Zei-
chenabstands (Anzahl der Zeilen pro Zoll) und des Zeilenabstands
(Anzahl der Zeilen pro Zoll). Durch diese Steuer-Sequenzen wird die
Auflösung des Druckers verändert, wobei die Art der Änderung vom Druk-
ker abhängt:
Seite 41 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Änderung des Zeichen-/Zeilenabstands
____________________________________________________________
cpi Zeichenabstand ändern
cpix Wenn es gesetzt ist, ändert cpi orhi, andernfalls orc
lpi Zeilenabstand ändern
lpix Wenn es gesetzt ist, ändert lpi orvi, andernfalls orl
chr Anzahl der Schritte pro Spalte ändern
cvr Anzahl der Schritte pro Zeile ändern
Bei den Strings cpi und lpi wird jeweils ein Argument für den Zeichen-
abstand in Spalten (bzw. Zeichen) und Zeilen pro Zoll angegeben. Bei
den Strings chr und cvr wird jeweils ein Argument für die Anzahl der
Schritte pro Spalte bzw. Zeile angegeben.
Ist in einer dieser Strings eine Steuerzeichenfolge enthalten, so wer-
den damit die Werte von orc, orhi, orl und orvi geändert. Außerdem
ändert sich der Abstand, um den der Druckkopf beim Ausdrucken eines
Breitschrift-Zeichens bewegt wird (widcs), in Relation zu orc. In ähn-
licher Weise ändert sich auch der Abstand beim Ausdrucken eines Zei-
chens im Mikro-Modus (mcs) - mit einer Ausnahme: wenn für den Abstand
der Wert 0 oder 1 angegeben wird, kommt es zu keiner Änderung.
Programme, die mit cpi, lpi, chr oder cvr arbeiten, sollten die Auflö-
sung des Druckers neu berechnen (ebenso wie sie andere Werte berechnen
sollten - siehe unten 2-7: "Auswirkungen einer Änderung der Auflösung"
und 2-6: "Rastergrafiken").
Auswirkungen einer Änderung des Zeichen-/Zeilenabstands
________________________________________________________________
Vorher Nachher
________________________________________________________________
Benutzung von cpi bei zurückgesetztem cpix:
orhi' orhi
orhi
orc' orc=Vcpi
Benutzung von cpi bei gesetztem cpix:
orhi' orhi=orc.Vcpi
orc' orc
Seite 42 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Benutzung von lpi bei zurückgesetztem lpix:
orvi' orvi
orvi
orl' orl=Vlpi
Benutzung von lpi bei gesetztem lpix:
orvi' orvi=orl.Vlpi
orl' orl
Benutzung von chr:
orhi' orhi
orc' Vchr
Benutzung von cvr:
orvi' orvi
orl' Vcvr
Benutzung von cpi oder chr:
orc
widcs' widcs=widcs'orc'
orc
mcs' mcs=mcs'orc'
Vcpi, Vlpi, Vchr und Vcvr sind die Argumente für cpi, lpi, chr bzw.
cvr. Die alten Werte sind durch Hochkommata (') gekennzeichnet.
Abschnitt 2-4: Eigenschaften zum Verschieben der aktuellen Position
In der nachfolgenden Beschreibung bedeutet der Begriff "Verschieben",
daß die aktuelle Position um einige Zeichen oder oder Zeilen versetzt
wird. Auf einem Terminal mit Bildschirm ist die aktuelle Position die
aktuelle Cursor-Position, auf einigen Druckern die Position des Druck-
kopfs o. ä. (je nach Drucktechnik des Druckers). Die aktuelle Position
ist also allgemein die Stelle, an der ein Zeichen bei der Ausgabe dar-
gestellt würde.
terminfo unterstützt Strings für Steuerzeichenfolgen, durch die die
aktuelle Position um eine Reihe von ganzen Spalten oder Zeilen ver-
schoben wird. Analog dazu gibt es Strings für Steuerzeichenfolgen,
durch die die aktuelle Position um eine bestimmte Anzahl der kleinst-
möglichen Schritte bewegt wird.
Seite 43 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Strings zum Verschieben der aktuellen Position
_______________________________________________
mcub1 Um 1 Schritt nach links verschieben
mcuf1 Um 1 Schritt nach rechts verschieben
mcuu1 Um 1 Schritt nach oben verschieben
mcud1 Um 1 Schritt nach unten verschieben
mcub Um N Schritte nach links verschieben
mcuf Um N Schritte nach rechts verschieben
mcuu Um N Schritte nach oben verschieben
mcud Um N Schritte nach unten verschieben
mhpa Um N Schritte von links aus verschieben
mvpa Um N Schritte von oben aus verschieben
Die letzten sechs Strings werden jeweils mit dem Argument N eingegeben.
In einigen Fällen kann die aktuelle Position maximal um die Breite
oder Länge einer Seite verschoben werden. Außerdem ist es auf einigen
Druckern nicht möglich, eine Position links neben der aktuellen Posi-
tion anzusteuern. Diese Einschränkungen können in terminfo berücksich-
tigt werden.
Verschieben der aktuellen Position - Einschränkungen
_________________________________________________________________________
mjump Eingeschränkte Benutzung von mcub1, mcuf1, mcuu1, mcud1
maddr Eingeschränkte Benutzung von mhpa, mvpa
xhpa Wenn diese Variable gesetzt ist, kann die aktuelle Position nicht
mit hpa und mhpa nach links verschoben werden
xvpa Wenn diese Variable gesetzt ist, kann die aktuelle Position nicht
mit vpa und mvpa nach oben verschoben werden
Einige Drucker unterstützen die oben beschriebenen Eigenschaften zum
Verschieben der aktuellen Position nur im Mikro-Modus; für diese Fälle
gibt es Strings, die die Steuerzeichenfolge zum Ein- und Ausschalten
dieses Modus enthalten. Außerdem gibt es einen booleschen Wert für
diejenigen Drucker, auf denen zur Rückkehr in den Normal-Modus die
Übermittlung von Carriage Return genügt.
Mikro-Modus ein-/ausschalten
__________________________________________
smicm Mikro-Modus EIN
rmicm Mikro-Modus AUS
crxm Ausschalten des Mikro-Modus mit cr
Die Druckkopfbewegung an der äußerst rechten Zeichenposition unter-
scheidet sich bei den verschiedenen Druckern. Auf einigen Druckern
wird der Druckkopf nicht verschoben, auf anderen zum Anfang der näch-
sten Zeile oder zum Anfang derselben Zeile. In terminfo gibt es boole-
sche Werte zur Beschreibung aller drei Fälle.
Seite 44 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Verfahren nach dem Drucken eines Zeichens in der äußerst rechten Position
_________________________________________________________________________
sam Druckkopf wird automatisch zum Anfang derselben Zeile bewegt
Einige Drucker können in einen Modus geschaltet werden, in dem die
normale Verschiebe-Richtung umgekehrt wird. Dieser Modus kann vor
allem in den Fällen von Nutzen sein, in denen es keine Eigenschaften
für das Verschieben des Druckkopfs nach links oder oben gibt; in der-
artigen Fällen können diese Eigenschaften aus der Eigenschaft "Umge-
kehrte Verschiebe-Richtung" sowie den Eigenschaften "Druckkopf nach
rechts oder unten bewegen" zusammengesetzt werden. Dennoch sollte es
besser den Anwendungsporgrammen überlassen werden, die Eigenschaften
für das Verschieben des Druckkopfs nach links oder oben zusammenzuset-
zen, anstatt sie in die terminfo-Datenbasis einzubringen. Dadurch kön-
nen mehrere Eigenschaften für verschiedene Verschiebe-Operationen in
umgekehrter Richtung miteinander verknüpft werden, ohne daß zusätzli-
che Zwischenschritte zum Aus- und erneuten Einschalten der umgekehrten
Verschiebe-Richtung notwendig sind.
Umgekehrte Verschiebe-Richtung ein-/ausschalten
________________________________________________________________
slm Umgekehrte horizontale Verschiebe-Richtung
rlm Normale horizontale Verschiebe-Richtung wiederherstellen
sum Umgekehrte vertikale Verschiebe-Richtung
rum Normale vertikale Verschiebe-Richtung wiederherstellen
Bei umgekehrter horizontaler Verschiebe-Richtung:
mcub1 Um 1 Schritt nach rechts verschieben
mcuf1 Um 1 Schritt nach links verschieben
mcub Um N Schritte nach rechts verschieben
mcuf Um N Schritte nach links verschieben
cub1 Um 1 Spalte nach rechts verschieben
cuf1 Um 1 Spalte nach links verschieben
cub Um N Spalten nach rechts verschieben
cuf Um N Spalten nach links verschieben
Bei umgekehrter vertikaler Verschiebe-Richtung:
mcuu1 Um 1 Schritt nach unten verschieben
mcud1 Um 1 Schritt nach oben verschieben
mcuu Um N Schritte nach unten verschieben
mcud Um N Schritte nach oben verschieben
cuu1 Um 1 Zeile nach unten verschieben
cud1 Um 1 Zeile nach oben verschieben
cuu Um N Zeilen nach unten verschieben
cud Um N Zeilen nach oben verschieben
Die Modi zum umgekehrten Verschieben des Druckkopfs sollten sich nicht
auf die Eigenschaften mvpa und mhpa (motion vertical position
absolute/motion horizontal position absolute) auswirken. Allerdings
sollte sich im Modus "Umgekehrtes Verschieben des Druckkopfs" auch die
Richtung des Zeilenumbruchs von der äußerst rechten Zeichenposition
Seite 45 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
aus umkehren. Somit sollte auf Druckern, für die die Standard-
terminfo-Eigenschaft am definiert ist, der Druckkopf in jedem Fall zum
Anfang der vorhergehenden Zeile verschoben werden, wenn ein Zeichen im
Modus "Umgekehrtes Verschieben des Druckkopfs" an der äußerst rechten
Zeichenposition gedruckt wird.
Bei allen anderen Eigenschaften zum Verschieben des Druckkopfs ist die
Richtung in den Modi zum umgekehrten Verschieben des Druckkopfs nicht
definiert; daher müssen die Programme zuerst die Modi zum umgekehrten
Verschieben des Druckkopfs verlassen, bevor sie andere Verschiebe-
Eigenschaften benutzen können.
Die neuen Eigenschaften zum Verschieben der aktuellen Position werden
durch zwei weitere Eigenschaften ergänzt. Die eine wird für Drucker
benutzt, auf denen die aktuelle Position durch bestimmte Steuerzeichen
wie z. B. Zeilen- oder Seitenvorschub zum Anfang einer Zeile bewegt
wird. Mit der zweiten Eigenschaft wird das Verschieben des Druckkopfs
unterbunden, das normalerweise nach dem Ausdrucken eines Zeichens
durchgeführt wird.
Verschiedene Strings zum Verschieben der aktuellen Position
_________________________________________________________________
docr Liste der Steuerzeichen, die zu cr führen
zerom Automatisches Verschieben des Druckkopfs nach dem Drucken
des nächsten Einzelzeichens unterbinden
Randeinstellungen
In terminfo gibt es zwei Strings zum Einstellen der Ränder auf Termi-
nals: einen für den linken und einen für den rechten Rand. Für Drucker
wird zusätzlich der obere und untere Rand jeder Druckseite festgelegt.
Außerdem gibt es Drucker, auf denen die Randeinstellungen nicht über
Strings zum Verschieben der aktuellen Position festgelegt werden son-
dern über die absolute (d. h. von der aktuellen Position unabhängige)
Angabe der Randeinstellungen. Daher gibt es in terminfo sechs weitere
Strings zum Einstellen von Rändern auf Druckern.
Randeinstellungen festlegen
________________________________________
smgl Linker Rand in aktueller Spalte
smgr Rechter Rand in aktueller Spalte
smgb Unterer Rand in aktueller Zeile
smgt Oberer Rand in aktueller Zeile
smgbp Unterer Rand in Zeile N
smglp Linker Rand in Spalte N
smgrp Rechter Rand in Spalte N
smgtp Oberer Rand in Zeile N
Bei den letzten vier Strings wird durch ein oder mehrere Argumente die
Position des einzustellenden Rands bzw. der einzustellenden Ränder
angegeben. Wenn sowohl smglp als auch smgrp eingestellt werden, wird
bei jeweils einem Argument N die Spaltennummer des linken bzw. rechten
Seite 46 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Rands angegeben. Wenn sowohl smgtp als auch smgbp eingestellt werden,
wird damit der obere bzw. untere Rand eingestellt. Bei smgtp wird mit
dem Argument N die Zeilennummer des oberen Rands angegeben; bei smgbp
dagegen wird bei den beiden Argumenten N und M die Zeilennummer für
den Beginn des unteren Rands angegeben, wobei das erste Argument die
Zeilennummer relativ zur oberen Blattkante und das zweite die Zeilen-
nummer relativ zur unteren Blattkante festlegt. Dadurch werden beide
Methoden zur Angabe des unteren Rands berücksichtigt, die bei den ver-
schiedenen Drucker-Modellen benutzt werden. In einem terminfo-Eintrag
für einen Drucker mit einstellbarem unteren Rand sollte, je nach Druk-
ker, nur der erste oder der zweite Parameter benutzt werden. In einer
Anwendung, in der smgbp zum Einstellen des unteren Rands benutzt wird,
müssen beide Argumente angegeben werden.
Wenn lediglich smglp oder smgrp definiert wird, wird die betreffende
Eigenschaft mit zwei Argumenten angegeben, die für die Spaltennummern
des linken und des rechten Rands stehen (in dieser Reihenfolge). Ähn-
lich wird, wenn lediglich smgtp oder smgbp eingestellt wird, die
betreffende Eigenschaft mit zwei Argumenten angegeben, die für die
Zeilennummern des oberen und unteren Rands relativ zur oberen Blatt-
kante stehen (in dieser Reihenfolge). Wenn für einen Drucker somit
sowohl der linke als auch der rechte bzw. sowohl der obere als auch
der untere Rand gleichzeitig eingestellt werden muß, sollte in
terminfo lediglich entweder smglp oder smgrp bzw. entweder smgtp oder
smgbp definiert und die übrigen Eigenschaften undefiniert bleiben. Bei
der Entwicklung einer Anwendung, die mit diesen Strings arbeitet,
sollte zunächst überprüft werden, ob beide oder nur eine der Eigen-
schaften in jeder Kombination definiert sind; dann sollte man die
Eigenschaften entsprechend nutzen.
Die Zeilen- und Spaltenzählung beginnt oben bei Zeile 0 und links in
Spalte 0. Wird für das zweite Argument bei smgbp der Wert 0 angegeben,
so steht dies für die unterste Zeile einer Druckseite.
Mit mgc können alle Randeinstellungen gelöscht werden.
Schattendruck, Kursivschrift, Breitschrift, Hochstellen, Tiefstellen
Mit den folgenden fünf neuen Strings werden Drucker-Funktionen zur
Druckgestaltung beschrieben.
Druckgestaltung
________________________________________
sshm Schatten-Druck EIN
rshm Schatten-Druck AUS
sitm Kursivschrift EIN
ritm Kursivschrift AUS
swidm Breitschrift EIN
rwidm Breitschrift AUS
Seite 47 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
ssupm Hochstellen EIN
rsupm Hochstellen AUS
supcs Liste der hochstellbaren Zeichen
ssubm Tiefstellen EIN
rsubm Tiefstellen AUS
subcs Liste der tiefstellbaren Zeichen
Wenn an den Drucker vor dem Schatten-Drucken eines Zeichens die Steu-
erzeichenfolge sshm übermittelt werden muß, bleibt der String rshm
undefiniert. Daher sollte ein Programm, das eine Steuerzeichenfolge
nur bei sshm und nicht bei rshm feststellt, vor dem Schatten-Drucken
eines Zeichens in jedem Fall die Steuerzeichenfolge sshm an den Druk-
ker übermitteln; andernfalls sollte die Steuerzeichenfolge bei sshm
vor jeder schattiert auszudruckenden Zeichengruppe an den Drucker
übermittelt werden, dann die bei rshm. Dasselbe gilt für die Kombina-
tionen sitm/ritm, swidm/rwidm, ssupm/rsupm und ssubm/rsubm.
In terminfo gibt es auch eine Eigenschaft zum Ausdrucken in Fettdruck
(bold). Obwohl sowohl der Schatten- als auch der Fettdruck zu einem
höheren Druckkontrast des Textes führt, werden diese drucktechnischen
Effekte auf den verschiedenen Druckern nach geringfügig unterschiedli-
chen Methoden erzielt. Für Fettdruck wird ein Zeichen im allgemeinen
ein- oder mehrmals überdruckt, während beim Schatten-Druck in der
Regel zusätzlich zum gewöhnlich durchgeführten Überdrucken eine
leichte Bewegung nach oben und/oder zur Seite durchgeführt wird, um
eine größere Strichbreite des Zeichens zu erzielen.
Da die Modi zur Druckgestaltung in der Regel separat eingestellt wer-
den können, kann Text gleichzeitig z. B. in Schattenschrift, kursiv
und hochgestellt ausgegeben werden.
Wie bereits erwähnt, sollte der Abstand, um den der Druckkopf nach dem
Ausdrucken eines Breitschrift-Zeichens nach rechts bewegt wird, bei
der Eigenschaft widcs angegeben werden.
In manchen Fällen kann nur ein Teil der druckbaren ASCII-Zeichen hoch-
oder tiefgestellt werden; diese Zeichen sollten dem String supcs bzw.
subcs zugeordnet werden. Wenn der String ssupm bzw. ssubm Steuerzei-
chenfolgen enthält, der zugehörige supcs- bzw. subcs-String jedoch
undefiniert ist, so wird davon ausgegangen, daß sämtliche druckbaren
ASCII-Zeichen hoch- oder tiefgestellt werden können.
Der Abstand, um den der Druckkopf nach dem Drucken eines hoch- oder
tiefgestellten Zeichens automatisch nach rechts bewegt wird, ent-
spricht dem Abstand nach dem Ausdrucken eines normalen Zeichens. Somit
ist der Abstand nach dem Ausdrucken in allen drei nachfolgend aufge-
führten Beispielen identisch:
Bi Bi Bi
Seite 48 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
In diesem Zusammenhang muß der boolesche Wert msgr erwähnt werden,
durch den angegeben wird, ob die Steuerzeichenfolgen zum Verschieben
des Druckkopfs im Hervorhebungsmodus benutzt werden können. Diese
Eigenschaft wurde erweitert und unterstützt jetzt die neuen Modi zur
Druckgestaltung. msgr sollte für diejenigen Drucker gesetzt werden,
bei denen alle Steuerzeichenfolgen zum Verschieben des Druckkopfs kei-
nerlei Auswirkung auf das Drucken von Schatten-, kursiven, Breit-
schrift-, hoch- oder tiefgestellten Zeichen hat. Wenn msgr in der
umgekehrten Richtung nicht gesetzt wird, sollte ein Programm diese
Modi vor dem Verschieben des Druckkopfs zuerst deaktivieren.
Abschnitt 2-5: Alternativ-Zeichensätze
In der terminfo-Datenbasis können Sie nicht nur Grafiksymbole (siehe
Abschnitt 1-12) definieren, sondern auch Alternativ-Zeichensätze. Die
folgenden Eigenschaften gelten für Drucker und Terminals mit mehreren
zur Wahl stehenden bzw. definierbaren Zeichensätzen.
Alternativ-Zeichensätze
______________________________________________________________________________
scs Zeichensatz N auswählen
scsd Definition eines Zeichensatzes N mit M Zeichen starten
defc Zeichen A mit einer Punktbreite von B Punkten, Unterlänge D definieren
rcsd Definition des Zeichensatzes N beenden
csnm Zeichensatznamen ausgeben
daisy Drucker mit mehreren manuell auszutauschenden Typenrädern
Die Strings scs, rcsd und csnm haben das Argument N; dabei handelt es
sich um eine Zahl im Bereich 0 bis 63, mit der der Zeichensatz angege-
ben wird. Bei dem String scsd wird zusätzlich mit dem Argument N sowie
M die Anzahl der Zeichen innerhalb des Zeichensatzes angegeben. Der
String defc wird mit den drei Argumenten A (der ASCII-Dezimalcode des
Zeichens), B (die Breite der Zeichen in Punkten) sowie D (0 bei einem
Zeichen mit Unterlänge, 1 bei Zeichen ohne Unterlänge) angegeben. Auf
den String defc folgt zusätzlich ein String mit Pixeldatenbytes, die
die Form des Zeichens festlegen (siehe unten).
Zeichensatz 0 ist der Standard-Zeichensatz, der nach der Initialisie-
rung des Druckers benutzt wird. Selbstverständlich unterstützt nicht
jeder Drucker 64 Zeichensätze; wird scs mit einem Argument eingegeben,
das einen nicht verfügbaren Zeichensatz angibt, so sollte tparm als
Ergebnis den Wert Null ausgeben.
Wenn ein Zeichensatz vor seiner Benutzung erst noch definiert werden
muß, muß vor der Definition des Zeichensatzes die Steuerzeichenfolge
scsd und nach der Definition die Steuerzeichenfolge rcsd benutzt wer-
den. Auch hier sollte die Angabe eines nicht unterstützten Zeichensat-
zes N bei tparm zum Ergebnis Null führen. Wenn ein Zeichensatz nach
seiner Definition noch gewählt werden muß, sollte die Steuerzeichen-
folge scs auf die Steuerzeichenfolge rcsd folgen. Ein Programm
Seite 49 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
überprüft die Ergebnisse, zu denen das Aufrufen von tparm mit den
Strings scs, scsd und rcsd mit einer Zeichensatz-Nummer führt, und
ermittelt den benötigten String.
Zwischen den Eigenschaften scsd und rcsd sollte jedes Zeichen mit dem
String defc definiert werden. Zum Ausdrucken eines Zeichens auf einem
in der terminfo-Datenbasis beschriebenen Drucker wird der zugehörige
ASCII-Code an den Drucker übermittelt. Dies gilt für die Zeichen
sowohl in einem Alternativ-Zeichensatz als auch im normalen Zeichen-
satz. Somit muß die Definition eines Zeichens den ASCII-Code enthal-
ten, der ihm zugeordnet ist. Außerdem enthält die Definition die
Breite des Zeichens in Punkten sowie die Angabe, ob es sich um ein
Zeichen mit Unterlänge handelt (wie es z. B. beim Kleinbuchstabe g in
den meisten Zeichensätzen der Fall ist). Aus der Breite des Zeichens
in Punkten ergibt sich auch die Anzahl der Pixeldatenbytes, die auf
den String defc folgen. Diese Pixeldatenbytes geben an, an welcher
Stelle innerhalb einer Punktmatrix beim Drucken eines Zeichens
Schwärze aufgetragen werden muß; Anzahl und Form dieser Bytes sind
nachfolgend unter 2-6: "Rastergrafiken" definiert.
Beim Erstellen der terminfo-Einträge geben Sie die Zeichensätze am
besten über ihre Nummer an. Da für den Entwickler damit jedoch keine
Zuordnung zum jeweiligen Zeichensatz möglich ist, kann bei dem String
csnm jeder Nummer ein Name zugeordnet werden.
Wenn der String csnm mit einer Zeichensatz-Nummer in einem tparm-
Aufruf enthalten ist, erzeugt der String den zugehörigen Namen. Diese
Namen sollten nur zur Information verwendet werden. Wenn es auch keine
festen Regeln für die Bildung der Namen gibt, sollte beim Erstellen
eines terminfo-Eintrags für einen Drucker darauf geachtet werden, daß
die benutzten Namen mit den im jeweiligen Drucker-Benutzerhandbuch
aufgeführten Namen konsistent sind. Beim Arbeiten mit einem Anwen-
dungsprogramm sollte ein Benutzer den Zeichensatz sowohl über seine
Nummer angeben können (ob er die korrekte Nummer anhand des Strings
csnm ermitteln möchte, sollte dabei dem Benutzer überlassen werden)
als auch über seinen Namen; im letzteren Fall ermittelt das Anwen-
dungsprogramm die zugehörige Zeichensatz-Nummer anhand des Strings
csnm.
Diese Eigenschaften eignen sich im allgemeinen nur für Matrix- bzw.
Nadeldrucker. Für andere Drucker sollten diese Strings undefiniert
bleiben. Für Drucker mit manuell auszutauschenden Typenrädern oder
Schriftkassetten wird der boolesche Wert daisy gesetzt.
Abschnitt 2-6: Rastergrafiken
Mit Matrixdruckern können Rastergrafiken erzeugt werden. Zur einfach-
reren Erstellung von Rastergrafiken gibt es jetzt drei neue numerische
Werte und drei neue Strings - unabhängig vom Typ des Matrixdruckers
oder der Anzahl der Nadeln bzw. Punkte, die der Drucker gleichzeitig
verarbeiten kann.
Seite 50 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Rastergrafiken
_____________________________________________________________________________
npins Anzahl N der Nadeln im Druckkopf
spinv Abstand der Nadeln in vertikaler Richtung in Nadeln pro Zoll
spinh Anzahl der Punkte in horizontaler Richtung in Punkten pro Zoll
porder Bildet Software-Bits auf Nadeln im Druckkopf ab
sbim Startet das Ausdrucken einer Rastergrafik mit einer Breite von B Bit
rbim Beendet das Ausdrucken einer Rastergrafik
Der String sbim wird mit dem Argument B eingegeben, der Breite des
Druckbilds in Punkten.
Das System zur Beschreibung von Rastergrafiken in terminfo ist dem
Druckverfahren der meisten Matrixdrucker angeglichen: bei jedem Durch-
gang des Druckkopfs wird ein Punktraster mit einer Höhe von N Punkten
und einer Breite von B Punkten generiert. Dabei handelt es sich in der
Regel um ein Quadrat oder Rechteck von Punkten. Die Höhe dieses
Punkte-Rechtecks variiert zwischen den einzelnen Druckern und wird bei
der numerischen Eigenschaft npins angegeben. Die Größe des Rechtecks,
das in 1/n Zoll angegeben wird, variiert ebenfalls zwischen den ein-
zelnen Druckern und kann aus den numerischen Eigenschaften spinv und
spinh abgeleitet werden. Aufgrund dieser drei Werte kann ein Anwen-
dungsprogramm eine vollständige Rastergrafik in mehrere horizontale
Streifen aufteilen, wobei gegebenenfalls durch Interpolation den
unterschiedlichen Punktabständen in vertikaler und horizontaler Rich-
tung Rechnung getragen wird.
Mit den Eigenschaften sbim und rbim wird das Drucken einer Rastergra-
fik gestartet bzw. beendet. Der String sbim hat ein einzelnes Argu-
ment, mit dem die Breite der Rastergrafik in Punkten angegeben wird.
Zwischen den Eigenschaften sbim und rbim wird eine Folge von Pixelda-
tenbytes an den Drucker übermittelt. Die Anzahl der Bytes entspricht
dem ganzzahligen Vielfachen der Breite der Rastergrafik; das Vielfache
sowie die Form jedes Bytes wird, wie im nächsten Abschnitt beschrieben
wird, anhand des Strings porder beschrieben.
Der String porder ist eine durch ein Komma getrennte Liste von Nadel-
Nummern, auf die ein numerischer Offset folgen kann. Der Offset wird
von der Liste gegebenenfalls durch ein Semikolon getrennt. Die Posi-
tion jeder Nadel-Nummer innerhalb der Liste ist einem Bit innerhalb
eines 8-Bit-Datenbytes zugeordnet. Die Nadeln sind entsprechend ihrer
Reihenfolge von 1 bis npins durchnumeriert, wobei die oberste Nadel
die Nummer 1 hat. An dieser Stelle sei darauf hingewiesen, daß der
Begriff Nadel (pin) hier sehr allgemein benutzt wird; so haben Tinten-
strahldrucker zwar keine Nadeln, benutzen zum Auftragen eines einzel-
nen Punkts auf die Druckseite aber ein ähnliches Verfahren wie Matrix-
drucker. Die Bit-Positionen beim String porder sind in Gruppen zu je
acht Positionen zusammengefaßt, wobei die erste Position innerhalb
jeder Gruppe das höchstwertige Bit und die letzte Position das nie-
drigstwertige Bit ist. Ein Anwendungsprogramm erzeugt die 8-Bit-Bytes
entsprechend der Reihenfolge der Gruppen in porder.
Seite 51 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Ein Anwendungsprogramm errechnet die Pixeldatenbytes aus dem internen
Rasterbild, wobei die vertikalen Punkt-Positionen bei jedem Durchgang
des Druckkopfs auf 8-Bit-Bytes abgebildet werden; ist das Bit gesetzt
(1), wird Druckerschwärze auf die Druckseite aufgetragen, ist es nicht
gesetzt (0), wird keine Druckerschwärze aufgetragen. Dies kann durch
die Angabe einer negativen Nadel-Nummer umgekehrt werden (Drucker-
schwärze auftragen bei 0, keine Druckerschwärze auftragen bei 1). Wenn
eine Position bei porder ausgelassen wird, wird ein zurückgesetztes
Bit (0) benutzt. Wenn an einer Position innerhalb des porder-Strings
statt einer Nadel-Nummer der Kleinbuchstabe x steht, wird an der nicht
belegten Position ein gesetztes Bit (1) benutzt. Aus Konsistenzgründen
kann zur Darstellung eines zurückgesetzten, nicht belegten Bits der
Kleinbuchstabe o benutzt werden. Die Anzahl der bei porder angegebenen
belegten bzw. nicht belegten Bit-Positionen muß ein Vielfaches von 8
sein; andernfalls wird das letzte Byte in den niedrigstwertigen Bits
mit zurückgesetzten Bits (0) gefüllt. Der Offset wird gegebenenfalls
auf jedes Datenbyte aufaddiert; der Offset kann auch negativ sein.
Die Benutzung des Strings porder wird nachfolgend anhand einiger Bei-
spiele verdeutlicht. Auf den Druckern AT&T 470, AT&T 475 und C.Itoh
8510 gibt es acht Nadeln für Grafikausdrucke. Die Nadeln sind von oben
nach unten den acht Bits innerhalb eines Bytes (niedrigstwertiges bis
höchstwertiges Bit) zugeordnet. Den porder-Zeicbenketten für diese
Ausdrucke würden die Werte 8,7,6,5,4,3,2,1 zugeordnet. Auf den Druk-
kern AT&T 478 und AT&T 479 gibt es ebenfalls acht Nadeln für Grafi-
kausdrucke. Allerdings sind die Nadeln in umgekehrter Reihenfolge
numeriert, d. h., den porder-Strings für diese Drucker würden die
Werte 1,2,3,4,5,6,7,8 zugeordnet. Auf den Druckern AT&T 5310, AT&T
5320, DEC LA100 und DEC LN03 gibt es sechs Nadeln für Grafikausdrucke.
Den Nadeln sind von oben nach unten die Dezimalwerte 1, 2, 4, 8, 16
und 32 zugeordnet. Diese Werte entsprechen den sechs niedrigstwertigen
Bits innerhalb eines 8-Bit-Bytes, wenn auch auf die Dezimalwerte der
Offset 63 addiert wird. Der porder-String für diese Drucker wäre
,,6,5,4,3,2,1;63 oder o,o,6,5,4,3,2,1;63.
Abschnitt 2-7: Auswirkungen einer Änderung der Auflösung
Durch die Steuerzeichenfolgen zum Ändern des Zeilen- oder Zeichenab-
stands kann es auch zu einem veränderten Nadel- oder Punktabstand kom-
men:
Rastergrafiken - Änderung des Zeichen-/Zeilenabstands
________________________________________________________________________________
cpi Zeichenabstand ändern
cpix Wenn diese Variable gesetzt ist, wird spinh gleichzeitig mit cpi geändert
lpi Zeilenabstand ändern
lpix Wenn diese Variable gesetzt ist, wird spinv gleichzeitig mit lpi geändert
Seite 52 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Programme, die mit cpi oder lpi arbeiten, sollten den Punktabstand neu
berechnen:
Rastergrafiken - Auswirkungen einer Änderung des Zeichen-Zeilenabstands
_______________________________________________________________________
Vorher Nachher
_______________________________________________________________________
Benutzung von cpi bei zurückgesetztem cpix:
spinh' spinh
Benutzung von cpi bei gesetztem cpix:
orhi
spinh' spinh=spinh'.orhi'
Benutzung von lpi bei zurückgesetztem lpix:
spinv' spinv
Benutzung von lpi bei gesetztem lpix:
orhi
spinv' spinv=spinv'.orhi'
Benutzung von chr:
spinh' spinh
Benutzung von cvr:
spinv' spinv
orhi' und orhi sind die Werte für die horizontale Auflösung in Schrit-
ten pro Zoll vor der Benutzung von cpi bzw. nach der Benutzung von
cpi. Ebenso sind orvi' und orvi die Werte für die vertikale Auflösung
in Schritten pro Zoll vor der Benutzung von lpi bzw. nach der Benut-
zung von lpi. Somit ziehen die Änderungen in der Anzahl der Punkte pro
Zoll für Rastergrafiken Änderungen in der Anzahl der Schritte pro Zoll
für die Auflösung nach sich.
Abschnitt 2-8: Druckqualität
Viele Nadeldrucker unterstützen einen Punktabstand, der das Ausdrucken
in NLQ- (Near Letter Quality)- oder Entwurfsqualität ermöglicht. Nor-
malerweise sollte auf jeden Fall eine dieser Druckqualitäten einge-
stellt werden, da die Druckgeschwindigkeit bei einer höheren Druckqua-
lität im allgemeinen zurückgeht. Zur Beschreibung dieser Eigenschaften
gibt es drei neue Strings.
Druckqualität
Seite 53 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
______________________________________________
snlq Drucken in NLQ (Korrespondenzqualität)
snrmq Drucken in normaler Druckqualität
sdrfq Drucken in Entwurfsqualität
Die Eigenschaften sind in absteigender Folge nach der Druckqualität
aufgeführt. Wenn eine der Druckqualitäten von einem Drucker nicht
unterstützt wird, sollte(n) der/die entsprechende(n) String(s) undefi-
niert bleiben.
Abschnitt 2-9: Druckgeschwindigkeit und Puffergröße
Da es kein Standardprotokoll gibt, das ein Programm ständig mit einem
Drucker synchronisiert, und da moderne Drucker die Druckdaten vor dem
Ausdrucken zwischenspeichern können, kann ein Programm im allgemeinen
nicht zu jeder Zeit feststellen, was bereits ausgedruckt worden ist.
Dafür gibt es jetzt zwei neue numerische Werte.
Druckgeschwindigkeit/Puffergröße
___________________________________________________________
cps Nominale Druckgeschwindigkeit (Zeichen pro Sekunde)
bufsz Puffergröße (Anzahl der Zeichen)
cps ist die nominale bzw. durchschnittliche Druckgeschwindigkeit des
Druckers. Wenn dieser Wert nicht angegeben wird, sollte die Druckge-
schwindigkeit auf 1/10 der benutzten Baudrate angesetzt werden. bufsz
ist die maximale Anzahl der Zeichen, die nacheinander im Puffer zwi-
schengespeichert werden können, bevor ein früher übermitteltes Zeichen
garantiert ausgedruckt wird (eine geeignete Flußsteuerung vorausge-
setzt). Wenn dieser Wert nicht angegeben wird, wird davon ausgegangen,
daß der Drucker keine Zeichen zwischenspeichert, sondern sie sofort
bei Empfang ausdruckt.
Angenommen, ein Drucker hat beispielsweise einen 1000-Zeichen-Puffer;
werden in einem derartigen Fall der Kleinbuchstabe "a" sowie 1000
zusätzliche Zeichen an den Drucker übermittelt, so wird der Buchstabe
"a" auf jeden Fall ausgedruckt. Wenn derselbe Drucker mit einer
Geschwindigkeit von 100 Seiten pro Sekunde druckt, sollte das Drucken
sämtlicher Zeichen im Puffer 10 Sekunden in Anspruch nehmen, und weni-
ger als 10 Sekunden, wenn der Puffer nicht voll ist. Ein Programm kann
sich mit dem Drucker synchronisieren, indem es die an den Drucker
übermittelten Zeichen protokolliert und die Druckgeschwindigkeit und
die Puffergröße kennt.
Es wird darauf hingewiesen, daß die meisten Druckerhersteller die
maximale und nicht die nominalen Druckgeschwindigkeit angeben. Um den
für cps geeigneten Wert zu ermitteln, drucken Sie am besten einige
Seiten aus, zählen die Anzahl der druckbaren Zeichen und ermitteln
dann die zum Ausdrucken benötigte Zeit.
Seite 54 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
Anwendungen, die mit diesen Werten arbeiten, sollten auf die variable
Druckgeschwindigkeit eingestellt sein. Bei reinem Text ohne Steuerzei-
chenfolgen, der in kurzen Zeilen enthalten ist, wird die Druckge-
schwindigkeit wahrscheinlich fast bei dem vom Hersteller angegebenen
Wert und wahrscheinlich über dem Wert bei cps liegen. Bei Grafikdaten
dagegen mit vielen Steuerzeichenfolgen oder sehr langen Textzeilen
wird die Druckgeschwindigkeit wahrscheinlich unter dem vom Hersteller
angegebenen Wert und unter dem Wert bei cps liegen. Wenn das Anwen-
dungsprogramm den Zeitbedarf für einen Textblock anhand von cps ermit-
telt, sollte es den Schätzwert etwas hochsetzen. Wenn das Anwendungs-
programm anhand von cps die bereits ausgedruckte Textmenge ermittelt,
sollte es den Schätzwert etwas reduzieren. Das Anwendungsprogramm
"verschätzt" sich damit zum Vorteil des Benutzers, dem vor allem an
einer exakt formatierten Druckseite liegt.
Abschnitt 2-10: Auswählen eines Terminals
Wenn die Umgebungsvariable TERMINFO definiert ist, sucht jedes Pro-
gramm, das curses verwendet, zunächst nach einer lokalen Terminal-
Definition, bevor an der Standardstelle gesucht wird. Wenn TERM bei-
spielsweise auf att4424 gesetzt ist, befindet sich die kompilierte
Terminal-Definition standardmäßig im Pfad:
a/att4424
innerhalb eines implementierungsspezifischen Verzeichnisses.
(Das a wird aus dem ersten Buchstaben von att4424 kopiert, um die
Erstellung riesiger Verzeichnisse zu vermeiden.) Wird TERMINFO aber
auf $HOME/myterms gesetzt, überprüft curses zunächst folgende Datei:
$HOME/myterms/a/att4424
Wird die Definition hier nicht gefunden, überprüft curses den Stan-
dardpfad.
Dies ist zum Beispiel bei der Entwicklung von Testdefinitionen nütz-
lich, oder wenn für die durch die Implementierung definierte Standard-
datenbank kein Schreibzugriff besteht.
Wenn die Umgebungsvariablen LINES und COLUMNS gesetzt sind, oder wenn
das Programm in einer Fensterumgebung ausgeführt wird, überschreiben
Zeilen- und Spaltendaten in der Umgebung die von terminfo gelesenen
Daten.
HINWEISE
Beim Erstellen einer neuen Terminal-Beschreibung geht man am besten
von der bereits vorhandenen Beschreibung eines ähnlichen Terminals in
terminfo aus und entwickelt daraus schrittweise eine neue Beschrei-
bung; die Teilschritte werden am besten mit einem bildschirmorientier-
ten Editor wie z. B. vi auf Fehler überprüft. Besonders einfach kann
eine neue Terminal-Beschreibung ausgetestet werden, indem die Umge-
bungsvariable TERMINFO auf den Pfadnamen eines Verzeichnisses mit der
Seite 55 Reliant UNIX 5.44 Gedruckt 11/98
terminfo(4) terminfo(4)
übersetzten Beschreibung gesetzt wird (die Programme suchen dann in
diesem Verzeichnis nach der neuen Beschreibung und nicht in
/usr/share/lib/terminfo).
Wie die Einträge in terminfo erstellt werden, wird durch die Implemen-
tierung definiert.
Es gibt mehrere Arten, einen terminfo-Eintrag zu schreiben. Ein Mini-
maleintrag würde zum Beispiel den von curses verwendeten Anwendungen
erlauben, das Terminal einzusetzen. Wird der Eintrag erweitert, so daß
er einen größeren Teil der Terminal-Funktionen beschreibt, können
Anwendungen, die curses verwenden, diese Funktionen aufrufen und die
Optimierungsvorteile innerhalb von curses nutzen und somit effizienter
arbeiten. Für die meisten Terminals liegt bereits ein optimaler
terminfo-Eintrag vor.
DATEIEN
/usr/share/lib/terminfo/?/*
Übersetzte Terminalbeschreibungs-Datenbasis
/usr/share/lib/tabset/*
Die Tabulatoreinstellungen für einige Terminals, wobei das Format
sich für eine Ausgabe auf das Terminal eignet (Escape-Sequenzen
zum Einstellen von Rändern und Tabstopps)
SIEHE AUCH
stty(1), tput(1), tty(1), tic(1M), curses(3X), term(4), curses(5),
term(5), termnames(5).
Seite 56 Reliant UNIX 5.44 Gedruckt 11/98