.Go 11 "TERMCAP" .PP \*E uses fairly standard termcap fields for most things. I invented the cursor shape names and some of the function key names, but other than that there should be few surprises. .SH Required numeric fields .if n .ul 0 .ID .ta 12n :co#: number of columns on the screen (chars per line) :li#: number of lines on the screen .DE .SH Required string fields .if n .ul 0 .ID .ta 12n :ce=: clear to end-of-line :cl=: home the cursor & clear the screen :cm=: move the cursor to a given row/column :up=: move the cursor up one line .DE .SH Boolean fields .if n .ul 0 .ID .ta 12n :am: auto margins - wrap when char is written in last column? :xn: brain-damaged auto margins - newline ignored after wrap :pt: physical tabs? .DE .SH Optional string fields .if n .ul 0 .ID .ta 12n :al=: insert a blank row on the screen :dl=: delete a row from the screen :cd=: clear to end of display :ei=: end insert mode :ic=: insert a blank character :im=: start insert mode :dc=: delete a character :sr=: scroll reverse (insert row at top of screen) :vb=: visible bell :ks=: keypad enable :ke=: keypad disable :ti=: terminal initialization string, to start full-screen mode :te=: terminal termination, to end full-screen mode .DE .SH Optional strings received from the keyboard .if n .ul 0 .ID .ta 12n :kd=: sequence sent by the key :kl=: sequence sent by the key :kr=: sequence sent by the key :ku=: sequence sent by the key :kP=: sequence sent by the key :kN=: sequence sent by the key :kh=: sequence sent by the key :kH=: sequence sent by the key :kI=: sequence sent by the key .DE .PP Originally, termcap didn't have any names for the , , , and keys. Although the capability names shown in the table above are the most common, they are \fInot\fR universal. SCO Xenix uses :PU=:PD=:HM=:EN=: for those keys. Also, if the four arrow keys happen to be part of a 3x3 keypad, then the five non-arrow keys may be named :K1=: through :K5=:, so an IBM PC keyboard may be described using those names instead. \*E can find any of these names. .SH Optional strings sent by function keys .if n .ul 0 .ID .ta 20n :k1=:...:k9=:k0=: codes sent by through keys :s1=:...:s9=:s0=: codes sent by ... :c1=:...:c9=:c0=: codes sent by ... :a1=:...:a9=:a0=: codes sent by ... .DE .PP Note that :k0=: is used to describe the key. Some termcap documents recommend :ka=: or even :k;=: for describing the key, but \*E doesn't support that. .PP Also, the :s1=:..., :c1=:..., and :a1=:... codes are very non-standard. The terminfo library doesn't support them. Consequently, if you're using the terminfo library then you might as well add -DNO_SHIFT_FKEY to your CFLAGS setting. .SH Optional fields that describe character attributes .if n .ul 0 .ID .ta 12n :so=:se=: start/end standout mode (We don't care about :sg#:) :us=:ue=: start/end underlined mode :md=:me=: start/end boldface mode :as=:ae=: start/end alternate character set (italics) :ug#: visible gap left by :us=:ue=:md=:me=:as=:ae=: .DE .SH Optional fields that affect the cursor's shape .PP The :cQ=: string is used by \*E immediately before exiting to undo the effects of the other cursor shape strings. If :cQ=: is not given, then all other cursor shape strings are ignored. .ID .ta 12n :cQ=: normal cursor :cX=: cursor used for reading EX command :cV=: cursor used for reading VI commands :cI=: cursor used during VI input mode :cR=: cursor used during VI replace mode .DE .PP If the capabilities above aren't given, then \*E will try to use the following values instead. .ID .ta 12n :ve=: normal cursor, used as :cQ=:cX=:cI=:cR=: :vs=: gaudy cursor, used as :cV=: .DE .SH An example .PP Here's the termcap entry I use on my Minix-ST system. .sp .LD .ne 10 mx|minix|minixst|ansi:\e :is=\eE[0~:co#80:li#25:bs:pt:\e :cm=\eE[%i%d;%dH:up=\eE[A:do=^J:nd=\eE[C:sr=\eEM:\e :cd=\eE[J:ce=\eE[K:cl=\eE[H\eE[J:\e :al=\eE[L:dl=\eE[M:ic=\eE[@:dc=\eE[P:im=:ei=:\e :so=\eE[7m:se=\eE[m:us=\eE[4m:ue=\eE[m:\e :md=\eE[1m:me=\eE[m:as=\eE[1;3m:ae=\eE[m:\e :ku=\eE[A:kd=\eE[B:kr=\eE[C:kl=\eE[D:\e :k1=\eE[1~:k2=\eE[2~:k3=\eE[3~:k4=\eE[4~:k5=\eE[5~:\e :k6=\eE[6~:k7=\eE[17~:k8=\eE[18~:k9=\eE[19~:k0=\eE[20~: .DE