termcap − 终端功能数据库
termcap 数据库是一个过时 (obsolete) 工具,用来描述以字符为单位的终端和打印机的功能。它之所以被保留,是为了兼容古老的程序;新程序应当使用 terminfo(5) 数据库和相关的库。
/etc/termcap 是一个 ASCII 文件 (数据库主控文件),列出了许多不同类型终端的功能。程序可以读取它,来找到控制实际使用的终端的可视化属性的特定的脱逸字符 (escape code)。(终端的其他方面是 stty 处理的。)termcap 数据库按照 TERM 环境变量进行索引。
Termcap 条目必须以单个逻辑行定义,在新行符处应当用 ‘\’ 来续行。字段以 ‘:’ 分隔。每个条目的第一个字段从左边起始,包含一系列终端的名称,以 ’|’ 分隔。
第一个子字段可能 (在 4.3 及以前的 BSD termcap 条目中) 包含由两个字符组成的简称。这个简称可以由大写或小写字母组成。在 4.4BSD termcap 条目中,这个字段被忽略。
第二个子字段 (在较新的 4.4BSD 格式中是第一个字段) 包括环境变量 TERM 使用的名字。只能使用小写字母。可选的硬件功能应当通过附加一个连字符 (hyphen) 和后缀来标记。参见下面的范例。一般使用的后缀是 w (行宽超过 80 个字符),am (自动加边),nam (不自动加边),和 rv (反转视频显示)。
第三个子字段包含一个对这个 termcap 条目的长的描述性的名字。
接下来的字段包含终端功能。任何连续的功能行必须从左边缩进一个指标符 (tab) 位置。
尽管没有定义顺序,建议你将布尔值写在最先,然后是数字值,最后是字符串值;按照字母排序,没有大小写之分。类似功能可以写在同一行。
例如:
Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\
Head line: Vt|vt101-w|DEC VT 101 terminal in (wide) 132 character mode:\
Boolean: :bs:\
Numeric: :co#80:\
String: :sr=\E[H:\
布尔值 Boolean Capabilities
5i |
打印机不在屏幕上回显 |
||
am |
自动加边,意味着自动卷行 |
||
bs |
Control-H (8 dec.) 执行一个退格 (backspace) |
||
bw |
在行的左边退格回到上一行的右边 |
||
da |
显示保留在屏幕上方 |
||
db |
显示保留在屏幕下方 |
||
eo |
一个空格删除光标所在位置的所有字符 |
||
es |
工作在状态行的转义顺序 (escape sequence) 和特殊字符 |
||
gn |
普通设备 |
||
hc |
这是一个硬拷贝终端 |
||
HC |
光标不在底线时几乎看不见 |
||
hs |
有一个状态线 |
||
hz |
Hazeltine bug, 终端不能打印 ~ 符号 |
||
in |
终端插入空字符,不是空格,来填充空白 |
||
km |
终端有一个meta键 |
||
mi |
光标移动是工作在插入模式下 |
||
ms |
光标移动是工作在突出/下划线 (standout/underline) 模式 |
||
NP |
无填充字符 |
||
NR |
ti 不能反转为 te |
||
nx |
无填充,必须使用 XON/XOFF |
||
os |
终端能重击 (将光标置于要改变的字符下面,再通过键盘输入一个字符来替换原来的字符。) |
||
ul |
终端不能被重击,只能下划线 |
||
xb |
蜂窝信号,f1 发射 ESCAPE, f2 发射 ^C |
||
xn |
换行/返转信号 |
||
xo |
终端使用xon/xoff协议 |
||
xs |
打印的文字超过突出的文本,将显示在突出的位置 |
||
xt |
Teleray 信号,破坏tabs 和奇数化突出模式(standout mode) |
数字值 Numeric Capabilities
co |
列数 |
||
dB |
硬拷贝终端上退格 (backspace) 延时,以毫秒为单位 |
||
dC |
硬拷贝终端上回车 (carriage return) 延时,以毫秒为单位 |
||
dF |
硬拷贝终端上打印纸进纸 (form feed) 延时,以毫秒为单位 |
||
dN |
硬拷贝终端上新行符 (new line) 的延时,以毫秒为单位 |
||
dT |
硬拷贝终端上制表符停止位 (tabulator stop) 的延时,以毫秒为单位 |
||
dV |
硬拷贝终端上垂直制表符停止位的延时,以毫秒为单位 |
||
it |
tab 位置间的差分 |
||
lh |
软标签高度 |
||
lm |
内存线(Lines of memory) |
||
lw |
软标签的宽度 |
||
li |
行数 |
||
Nl |
软标签的数目 |
||
pb |
需要填充的最低波特率 |
||
sg |
突出信号 |
||
ug |
下划线信号 |
||
vt |
虚拟终端数目 |
||
ws |
若状态线宽度与屏幕宽度不同时的大小 |
字符串值 String Capabilities
!1 |
转义为保存键 |
||
!2 |
转义为挂起键 |
||
!3 |
转义为撤消键 |
||
#1 |
转义为帮助键 |
||
#2 |
转义为 home 键 |
||
#3 |
转义为输入键 |
||
#4 |
转义为光标左移键 |
||
%0 |
重做 (redo) 键 |
||
%1 |
帮助键 |
||
%2 |
标记键 |
||
%3 |
信息 (message) 键 |
||
%4 |
转移键 |
||
%5 |
下一对象 (next-object) 键 |
||
%6 |
打开键 |
||
%7 |
选项键 |
||
%8 |
上一对象键 |
||
%9 |
打印键 |
||
%a |
转义为信息 (message) 键 |
||
%b |
转义为转移键 |
||
%c |
转义为next键 |
||
%d |
转义为options键 |
||
%e |
转义为previous键 |
||
%f |
转义为打印键 |
||
%g |
转义为redo键 |
||
%h |
转义为替换键 |
||
%i |
转义为光标右移键 |
||
%j |
转义为恢复键 |
||
&0 |
转义为取消键 |
||
&1 |
参考键 |
||
&2 |
刷新键 |
||
&3 |
替换键 |
||
&4 |
重新开始键 |
||
&5 |
恢复键 |
||
&6 |
保存键 |
||
&7 |
挂起键 |
||
&8 |
撤销键 |
||
&9 |
转义为开始键 |
||
*0 |
转义为查找键 |
||
*1 |
转义为命令键 |
||
*2 |
转义为拷贝键 |
||
*3 |
转义为创建键 |
||
*4 |
转义为删除字符 |
||
*5 |
转义为删除行 |
||
*6 |
选择键 |
||
*7 |
转义为结束键 |
||
*8 |
转义为清除行键 |
||
*9 |
转义为退出键 |
||
@0 |
查找键 |
||
@1 |
开始键 |
||
@2 |
取消键 |
||
@3 |
关闭键 |
||
@4 |
命令键 |
||
@5 |
拷贝键 |
||
@6 |
创建键 |
||
@7 |
结束键 |
||
@8 |
回车/发送键 |
||
@9 |
退出键 |
||
al |
插入新行 |
||
AL |
缩进 %1 行 |
||
ac |
成对的图形字符块,映射替代的字符集 |
||
ae |
结束替代的字符集 |
||
as |
为图形字符块开始替代的字符集 |
||
bc |
退格,如果没有 ^H |
||
bl |
铃声 |
||
bt |
移动到前一个tab停止位 |
||
cb |
从行的开始处清除到光标处 |
||
cc |
虚设命令字符 |
||
cd |
清除到屏幕的末端 |
||
ce |
清除到行末 |
||
ch |
水平移动光标到 %1列 |
||
cl |
清除屏幕并将光标置位 |
||
cm |
光标移动到%1行,%2列 (屏幕中) |
||
CM |
光标移动到%1行,%2列 (内存中) |
||
cr |
回车 |
||
cs |
翻滚区域,从%1行到%2行 |
||
ct |
清除tab |
||
cv |
垂直移动光标到%1行 |
||
dc |
删除一个字符 |
||
DC |
删除%1个字符 |
||
dl |
删除一行 |
||
DL |
删除%1行 |
||
dm |
开始delete模式 |
||
do |
光标下移一行 |
||
DO |
光标下移#1行 |
||
ds |
使状态行不可用 |
||
eA |
激活替代的字符集 |
||
ec |
从光标处开始,删除%1个字符 |
||
ed |
结束delete模式 |
||
ei |
结束insert模式 |
||
ff |
硬拷贝终端上的走纸符 |
||
fs |
在进入状态行之前返回字符到他的位置 |
||
F1 |
由功能键F11发送的字符串 |
||
F2 |
由功能键F12发送的字符串 |
||
F3 |
由功能键F14发送的字符串 |
||
... |
... |
||
F9 |
由功能键F19发送的字符串 |
||
FA |
由功能键F20发送的字符串 |
||
FB |
由功能键F21发送的字符串 |
||
... |
... |
||
FZ |
由功能键F45发送的字符串 |
||
Fa |
由功能键F46发送的字符串 |
||
Fb |
由功能键F47发送的字符串 |
||
... |
... |
||
Fr |
由功能键F63发送的字符串 |
||
hd |
移动光标到下一行的中间 |
||
ho |
光标置初始位 |
||
hu |
移动光标到上一行的中间 |
||
i1 |
登录时,初始化的字符串1 |
||
i3 |
登录时,初始化的字符串3 |
||
is |
登录时,初始化的字符串2 |
||
ic |
插入一个字符 |
||
IC |
插入%1个字符 |
||
if |
初始化文件 |
||
im |
开始插入模式 |
||
ip |
插入填充时间和插入后所需要的特殊字符 |
||
iP |
初始化程序 |
||
K1 |
辅助键盘的上左键 |
||
K2 |
辅助键盘的center键 |
||
K3 |
辅助键盘的上右键 |
||
K4 |
辅助键盘的底部左键 |
||
K5 |
辅助键盘的底部右键 |
||
k0 |
功能键0 |
||
k1 |
功能键1 |
||
k2 |
功能键2 |
||
k3 |
功能键3 |
||
k4 |
功能键4 |
||
k5 |
功能键5 |
||
k6 |
功能键6 |
||
k7 |
功能键7 |
||
k8 |
功能键8 |
||
k9 |
功能键9 |
||
k; |
功能键10 |
||
ka |
清除所有的tab键 |
||
kA |
插入行键 |
||
kb |
退格键 |
||
kB |
退回tab停止位 |
||
kC |
清屏键 |
||
kd |
光标下移键 |
||
kD |
删除光标下的字符键 |
||
ke |
关闭辅助键盘 |
||
kE |
清除到行末 |
||
kF |
向前/后滚卷 |
||
kh |
光标置初始位键 |
||
kH |
光标hown down键 |
||
kI |
插入字符/插入模式键 |
||
kl |
光标左移键 |
||
kL |
整行删除键 |
||
kM |
退出插入模式 |
||
kN |
下一页 |
||
kP |
上一页 |
||
kr |
光标右移键 |
||
kR |
向后/前滚卷键 |
||
ks |
开辅助键盘 |
||
kS |
清除到屏幕末端 |
||
kt |
清除这个tab键 |
||
kT |
设置这儿的tab键 |
||
ku |
光标向上键 |
||
l0 |
如果没有f0,第零个标签功能键 |
||
l1 |
如果没有f1,第一个标签功能键 |
||
l2 |
如果没有f2,第二个标签功能键 |
||
... |
... |
||
la |
如果没有f10,第十个标签功能键 |
||
le |
光标左移一个字符 |
||
ll |
移动光标到左底角 |
||
LE |
光标左移%1个字符 |
||
LF |
关闭软标签 |
||
LO |
开启软标签 |
||
mb |
开始闪烁 |
||
MC |
清除软标记 |
||
md |
开始粗体模式 |
||
me |
开始所有的模式如so, us, mb, md 和 mr |
||
mh |
开始半闪烁模式 |
||
mk |
暗模式 (看不见字符) |
||
ML |
设置左软标记 |
||
mm |
使终端为meta模式 |
||
mo |
使终端离开meta模式 |
||
mp |
打开保护属性 |
||
mr |
开始反亮模式 |
||
MR |
设置右软标记 |
||
nd |
光标右移一个字符 |
||
nw |
回车命令 |
||
pc |
填充字符 |
||
pf |
关闭打印机 |
||
pk |
对键%1编程,如同用户打印一样发送字符串%2 |
||
pl |
对键%1编程,以本地模式执行字符串%2 |
||
pn |
对软标签%1编程来显示字符串%2 |
||
po |
打开打印机 |
||
pO |
打开打印机%1 (<256)字节 |
||
ps |
在打印机上打印屏幕内容 |
||
px |
对键%1编程来发送字符串%2给计算机 |
||
r1 |
向设定的终端重置字符串1到sane模式 |
||
r2 |
向设定的终端重置字符串2到sane模式 |
||
r3 |
向设定的终端重置字符串3到sane模式 |
||
RA |
取消自动标记功能 |
||
rc |
恢复存储的光标位置 |
||
rf |
重设字符串文件名 |
||
RF |
终端输入请求 |
||
RI |
光标右移%1个字符 |
||
rp |
重复字符%1,共%2次 |
||
rP |
替换模式中,在字符发送后填充 |
||
rs |
重设字符串 |
||
RX |
关闭XON/XOFF流量控制 |
||
sa |
设置 %1 %2 %3 %4 %5 %6 %7 %8 %9属性 |
||
SA |
激活自动标记功能 |
||
sc |
保存光标位置 |
||
se |
结束突出模式 |
||
sf |
正常滚卷一行 |
||
SF |
正常滚卷%1行 |
||
so |
开始突出模式 |
||
sr |
反向滚卷 |
||
SR |
向上滚卷%1行 |
||
st |
设置所有行的制表符的停止位到当前列 |
||
SX |
打开XON/XOFF流量控制 |
||
ta |
移动到下一个硬件tab |
||
tc |
从另一个登记项读取终端描述 |
||
te |
结束使用光标动作的程序 |
||
ti |
开始光标动作的程序 |
||
ts |
移动光标到状态行的%1列 |
||
uc |
光标下方字符下划线,并向右移动光标 |
||
ue |
结束下划线 |
||
up |
光标向上一行 |
||
UP |
光标向上%1行 |
||
us |
开始下划线 |
||
vb |
可视化闹铃 |
||
ve |
正常的可见光标 |
||
vi |
光标不可见 |
||
vs |
突出光标 |
||
wi |
设置窗口,从%1行到%2行,从3%列到4%列 |
||
XF |
XOFF字符,如果没有 ^S |
还有一些方法定义字符串值功能的控制代码:
通常的字符表示它们自己,除了 ’^’,’´ 和 ’%’ 。
一个 ’^x’ 表示Control-x. |
Control-A等于 1 个10进制数。 |
\x 表示一个特殊的代码。x 可以是以下的一个字符:
E 转义符 Escape (27)
n 换行 Linefeed (10)
r 回车 Carriage return (13)
t 制表符 Tabulation (9)
b 退格 Backspace (8)
f 走纸符 Form feed (12)
0 空字符 Null character. \xxx 指定八进制为 xxx 的字符.
i |
逐一增加参数 |
||
r |
单个参数功能 |
||
+ |
增加下一个字符的值到这个参数并以二进制输出 |
||
2 |
对于2,用一个字段将参数以ASCII输出 |
||
d |
对于3,用一个字段将参数以ASCII输出 |
||
% |
打印一个 ’%’ |
如果你使用二进制输出,那么你应该避免空字符,因为它是字符串的终止符。如果Tab键能够成为一个参数的二进制输出,你应该重新设置Tab键长度。
警告:
以上参数的元字符是针对 Minix 系统的 termcap,可能有一些问题,因为可能不是完全与 Linux 的 termcap 兼容的。
图形字符块通过三个字符串值功能来指定:
as |
开始替代的字符集 |
||
ae |
结束 |
||
ac |
字符对。第一个字符是图形字符块的名称,第二个字符是它的定义。 |
可以用下面这些名称:
+ 右箭头 right arrow (>)
, |
左箭头 left arrow (<) |
||
. |
下箭头 down arrow (v) |
||
0 |
全直角 full square (#) |
||
I |
上箭头 latern (#) |
||
- |
上箭头 upper arrow (^) |
||
’ |
菱形 rhombus (+) |
||
a |
棋板 chess board (:) |
||
f |
度数 degree (’) |
||
g |
加-减 plus-minus (#) |
||
h |
正方形 square (#) |
||
j |
右下角 right bottom corner (+) |
||
k |
右上角 right upper corner (+) |
||
l |
左上角 left upper corner (+) |
||
m |
左下角 left bottom corner (+) |
||
n |
十字 cross (+) |
||
o |
顶线 upper horizontal line (-) |
||
q |
中线 middle horizontal line (-) |
||
s |
下划线 bottom horizontal line (_) |
||
t |
左侧T型 left tee (+) |
||
u |
右侧T型 right tee (+) |
||
v |
底部T型 bottom tee (+) |
||
w |
常规T型 normal tee (+) |
||
x |
垂直线 vertical line (|) |
||
~ |
段落 paragraph (???) |
如果缺少相应功能,将缺省使用圆括号中的值,那是 curses 库使用的值。
termcap(3), curses(3), terminfo(5)
Timebob <timebob AT 21cn DOT com>
2000.12.15
http://cmpp.linuxforum.net