在expect脚本中发送INSERT和F12

时间:2018-05-29 11:35:05

标签: bash unix expect

我知道为了在expect脚本中发送返回,我会这样做:

send -- "\r"

INSERT F12 键的send命令是什么?我已经在线查看,无法在任何地方找到它。

3 个答案:

答案 0 :(得分:2)

通过运行od -c确定 INSERT 后跟 F12 时终端发送的字符:

$ od -c
^[[2z^[[193z       <-- Press keys here, then ENTER and Ctrl-D
0000000 033   [   2   z 033   [   1   9   3   z  \n
0000013

这意味着您应该send -- "\E\[2z\E\[193z"。请注意,这是终端特定的。上述序列由我的TERM=xterm-256color发送。

答案 1 :(得分:2)

我必须说最初接受的answer不正确,因为

  1. 不同终端类型的真实字符序列不一样;
  2. send -- "[2~"错了,因为
      Tcl中的
    1. [具有特殊含义(命令替换),因此应该反斜杠转义;
    2. 缺少 ESC char(\E输出中的infocmp);
  3. 正确的方法:

    set kf12 [exec tput kf12]
    set kins [exec tput kich1]
    ... ...
    send $kf12
    

    如果您需要手动指定TERM类型,请使用tput -T

      

    <强> -T

         
        

    表示终端的类型。通常,此选项是不必要的,因为默认值取自环境变量TERM。如果指定了-T,那么shell变量LINESCOLUMNS也将被忽略。

      

    对于魔术字符串kf12kich1,请在terminfo manual页面中搜索。

答案 2 :(得分:1)

使用infocmp xterm作为来源:

$ infocmp xterm |grep -oP "f12=\S+|kich1=\S+"
f12=\E[24~,
kich1=\E[2~,
  • INSERT:send -- "[2~"send -- {[2~}
  • F12:send -- "[24~"send -- {[24~}