以下以sco unix 5,实达终端为例,目的要把F3、F5、F6定义为VT100下的相应键值:
1、先从以下表格找到要自定义的功能键的“位置码”,
注:(对于PC101键盘 Ctrl+F1~F12óF1~F12即两边是等价的,以下同理。Shift+F11~F12óAlt+F11~F12
对于VT220键盘 Shift+F6~F20óF6~F20)
由表格中查询可知以下功能键之位置码,F3=19,F5=21,F6=24
PC101键盘 |
VT220键盘 |
位置码 |
Ctrl+F1 |
Shift+F6 |
17 |
Ctrl+F2 |
Shift+F7 |
18 |
Ctrl+F3 |
Shift+F8 |
19 |
Ctrl+F4 |
Shift+F9 |
20 |
Ctrl+F5 |
Shift+F10 |
21 |
Ctrl+ESC |
Shift+F11 |
23 |
Ctrl+F6 |
Shift+F12 |
24 |
Ctrl+F7 |
Shift+F13 |
25 |
Ctrl+F8 |
Shift+F14 |
26 |
Shift+F11 |
Shift+Help |
28 |
Shift+F12 |
Shift+Do |
29 |
Ctrl+F9 |
Shift+F17 |
31 |
Ctrl+F10 |
Shift+F18 |
32 |
Ctrl+F11 |
Shift+F19 |
33 |
Ctrl+F12 |
Shift+F20 |
34 |
通过Setup键盘设置中定义键切换可使自定义功能键和固有功能键相互切换。
2、在Sco unix下运行
infocmp vt100,结果如下:
# infocmp vt100
# Reconstructed via infocmp from file: /usr/lib/terminfo/v/vt100
vt100|vt100-am|dec vt100 (w/advanced video),
am, mir, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>,
el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=\t,
hts=\EH, ind=\n, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=\b,
kc1=\EOp, kc3=\EOn, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kent=\EOM, kf0=\EOy, kf1=\EOP,
kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt,
kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, rc=\E8,
rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmso=\E[m$<2>,
rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
sc=\E7,
sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t^N%e^O%;,
sgr0=\E[m^O$<2>, smacs=^N, smso=\E[1;7m$<2>,
smul=\E[4m$<2>, tbc=\E[3g,
注意上面的红色部分,这就是VT100的F3、F5、F6的相应键值,以kf3=\EOR为例,kf3表示功能键F3,在E表示ESC键,后面就是英文字母OR了,注意以上键值是大小写敏感的。
3.现在根据下面的对照表查键值相应的ASCII码,同样以F3的键值EOR为例(注意E代表ESC键)
ESC=21,O=79,R=82
ASCII码 |
键盘 |
ASCII 码 |
键盘 |
ASCII码 |
键盘 |
ASCII 码 |
键盘 |
27 |
ESC |
32 |
SPACE |
33 |
! |
34 |
" |
35 |
# |
36 |
$ |
37 |
% |
38 |
& |
39 |
' |
40 |
( |
41 |
) |
42 |
* |
43 |
+ |
44 |
' |
45 |
- |
46 |
. |
47 |
/ |
48 |
0 |
49 |
1 |
50 |
2 |
51 |
3 |
52 |
4 |
53 |
5 |
54 |
6 |
55 |
7 |
56 |
8 |
57 |
9 |
58 |
: |
59 |
; |
60 |
< |
61 |
= |
62 |
> |
63 |
? |
64 |
@ |
65 |
A |
66 |
B |
67 |
C |
68 |
D |
69 |
E |
70 |
F |
71 |
G |
72 |
H |
73 |
I |
74 |
J |
75 |
K |
76 |
L |
77 |
M |
78 |
N |
79 |
O |
80 |
P |
81 |
Q |
82 |
R |
83 |
S |
84 |
T |
85 |
U |
86 |
V |
87 |
W |
88 |
X |
89 |
Y |
90 |
Z |
91 |
[ |
92 |
\ |
93 |
] |
94 |
^ |
95 |
_ |
96 |
` |
97 |
a |
98 |
b |
99 |
c |
100 |
d |
101 |
e |
102 |
f |
103 |
g |
104 |
h |
105 |
i |
106 |
j |
107 |
k |
108 |
l |
109 |
m |
110 |
n |
111 |
o |
112 |
p |
113 |
q |
114 |
r |
115 |
s |
116 |
t |
117 |
u |
118 |
v |
119 |
w |
120 |
x |
121 |
y |
122 |
z |
123 |
{ |
124 |
| |
125 |
} |
126 |
~ |
4.打开windows下的计算器,切换到科学计算器模式,把上面查到的ASCII转换成十六进制,以上面的结果为例,结果如下
ESC=21=1b,O=79=4f,R=82=52
也就是说,现在F3的十六进制键值为1b4f52
5.按照实达终端的技术手册给出的设置语法,设置F3、F5、F6功能键的unix语句如下
echo "\033P1;1|19/1b4f52;21/1b4f74;24/1b4f75\033\\"
其中,红色部分为我们要修改的部份,其他是固定的标志符序列。
F3键相应的设置为19/1b4f52
F5键的相应的设置为21/1b4f74
F6键的相应的设置为24/1b4f75
6.把这句话加进需要设置些功能键的相应用户的.profile文件中,bingo!!!!