Commit | Line | Data |
---|---|---|
f5bcab4b WJ |
1 | .Go 10 "TERMCAP" |
2 | .PP | |
3 | \*E uses fairly standard termcap fields for most things. | |
4 | I invented the cursor shape names | |
5 | but other than that there should be few surprises. | |
6 | .SH | |
7 | Required numeric fields | |
8 | .if n .ul 0 | |
9 | .ID | |
10 | :co#: number of columns on the screen (chars per line) | |
11 | :li#: number of lines on the screen | |
12 | .DE | |
13 | .SH | |
14 | Required string fields | |
15 | .ID | |
16 | .if n .ul 0 | |
17 | :ce=: clear to end-of-line | |
18 | :cl=: home the cursor & clear the screen | |
19 | :cm=: move the cursor to a given row/column | |
20 | :up=: move the cursor up one line | |
21 | .DE | |
22 | .SH | |
23 | Boolean fields | |
24 | .if n .ul 0 | |
25 | .ID | |
26 | :am: auto margins - wrap when char is written in last column? | |
27 | :xn: brain-damaged auto margins - newline ignored after wrap | |
28 | :pt: physical tabs? | |
29 | .DE | |
30 | .SH | |
31 | Optional string fields | |
32 | .if n .ul 0 | |
33 | .ID | |
34 | :al=: insert a blank row on the screen | |
35 | :dl=: delete a row from the screen | |
36 | :cd=: clear to end of display | |
37 | :ei=: end insert mode | |
38 | :ic=: insert a blank character | |
39 | :im=: start insert mode | |
40 | :dc=: delete a character | |
41 | :sr=: scroll reverse (insert row at top of screen) | |
42 | :vb=: visible bell | |
43 | :ti=: terminal initialization string, to start full-screen mode | |
44 | :te=: terminal termination, to end full-screen mode | |
45 | :ks=: enables the cursor keypad | |
46 | :ke=: disables the cursor keypad | |
47 | .DE | |
48 | .SH | |
49 | Optional strings received from the keyboard | |
50 | .if n .ul 0 | |
51 | .ID | |
52 | :kd=: sequence sent by the <down arrow> key | |
53 | :kl=: sequence sent by the <left arrow> key | |
54 | :kr=: sequence sent by the <right arrow> key | |
55 | :ku=: sequence sent by the <up arrow> key | |
56 | :kP=: sequence sent by the <PgUp> key | |
57 | :kN=: sequence sent by the <PgDn> key | |
58 | :kh=: sequence sent by the <Home> key | |
59 | :kH=: sequence sent by the <End> key | |
60 | :kI=: sequence sent by the <Insert> key | |
61 | .DE | |
62 | .PP | |
63 | Originally, termcap didn't have any names for the <PgUp>, <PgDn>, <Home>, | |
64 | and <End> keys. | |
65 | Although the capability names shown in the table above are the most common, | |
66 | they are \fInot\fR universal. | |
67 | SCO Xenix uses :PU=:PD=:HM=:EN=: for those keys. | |
68 | Also, if the four arrow keys happen to be part of a 3x3 keypad, | |
69 | then the five non-arrow keys may be named :K1=: through :K5=:, | |
70 | so an IBM PC keyboard may be described using those names instead. | |
71 | \*E can find any of these names. | |
72 | .SH | |
73 | Optional strings sent by function keys | |
74 | .if n .ul 0 | |
75 | .ID | |
76 | :k1=:...:k9=:k0=: codes sent by <F1> through <F10> keys | |
77 | :s1=:...:s9=:s0=: codes sent by <Shift F1> ... <Shift F10> | |
78 | :c1=:...:c9=:c0=: codes sent by <Ctrl F1> ... <Ctrl F10> | |
79 | :a1=:...:a9=:a0=: codes sent by <Alt F1> ... <Alt F10> | |
80 | .DE | |
81 | .PP | |
82 | Note that :k0=: is used to describe the <F10> key. | |
83 | Some termcap documents recommend :ka=: or even :k;=: for describing | |
84 | the <F10> key, but \*E doesn't support that. | |
85 | .PP | |
86 | Also, the :s1=:..., :c1=:..., and :a1=:... codes are very non-standard. | |
87 | The terminfo library doesn't support them. | |
88 | .SH | |
89 | Optional fields that describe character attributes | |
90 | .if n .ul 0 | |
91 | .ID | |
92 | :so=:se=: start/end standout mode (We don't care about :sg#:) | |
93 | :us=:ue=: start/end underlined mode | |
94 | :md=:me=: start/end boldface mode | |
95 | :as=:ae=: start/end alternate character set (italics) | |
96 | :ug#: visible gap left by :us=:ue=:md=:me=:as=:ae=: | |
97 | .DE | |
98 | .SH | |
99 | Optional fields that affect the cursor's shape | |
100 | .PP | |
101 | The :cQ=: string is used by \*E immediately before exiting to undo | |
102 | the effects of the other cursor shape strings. | |
103 | If :cQ=: is not given, then all other cursor shape strings are ignored. | |
104 | .ID | |
105 | :cQ=: normal cursor | |
106 | :cX=: cursor used for reading EX command | |
107 | :cV=: cursor used for reading VI commands | |
108 | :cI=: cursor used during VI input mode | |
109 | :cR=: cursor used during VI replace mode | |
110 | .DE | |
111 | .PP | |
112 | If the capabilities above aren't given, then \*E will try to use the | |
113 | following values instead. | |
114 | .ID | |
115 | :ve=: normal cursor, used as :cQ=:cX=:cI=:cR=: | |
116 | :vs=: gaudy cursor, used as :cV=: | |
117 | .DE | |
118 | .SH | |
119 | An example | |
120 | .PP | |
121 | Here's the termcap entry I use on my Minix-ST system. | |
122 | Some of the fields in it have nothing to do with \*E. | |
123 | Some can only work on my system; | |
124 | I have modified my kernel's screen driver. | |
125 | .sp | |
126 | .LD | |
127 | .ne 14 | |
128 | mx|minix|minixst|ansi:\\ | |
129 | :is=\\E[0~:co#80:li#25:bs:pt:\\ | |
130 | :cm=\\E[%i%d;%dH:up=\\E[A:do=^J:nd=\\E[C:sr=\\EM:\\ | |
131 | :cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:\\ | |
132 | :al=\\E[L:dl=\\E[M:ic=\\E[@:dc=\\E[P:im=:ei=:\\ | |
133 | :so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:\\ | |
134 | :md=\\E[1m:me=\\E[m:as=\\E[1;3m:ae=\\E[m:\\ | |
135 | :ku=\\E[A:kd=\\E[B:kr=\\E[C:kl=\\E[D:\\ | |
136 | :k1=\\E[1~:k2=\\E[2~:k3=\\E[3~:k4=\\E[4~:k5=\\E[5~:\\ | |
137 | :k6=\\E[6~:k7=\\E[17~:k8=\\E[18~:k9=\\E[19~:k0=\\E[20~:\\ | |
138 | :kU=\\E[36~:kQ=\\E[32~:kH=\\E[28~:\\ | |
139 | :GV=3:GH=D:G1=?:G2=Z:G3=@:G4=Y:GC=E:GL=4:GR=C:GU=A:GD=B:\\ | |
140 | :cQ=\\E[k:cX=\\E[2;0k:cV=\\E[16;0k:cI=\\E[k:cR=\\E[16;20k: | |
141 | .DE |