您现在的位置: 爱51代码网 >> 范文 >> 文章正文
为什么不能直接在konsole中按下ESC+[2j这4个字符

当konsole在其显示的文本流中看到一个ESC字符时,
它会非常仔细地查看后面几个字符.如果后面的前三个字符是[2j,
该序列命令konsole执行清屏操作.

我有疑问的是为什么不能直接在konsole中按下ESC+[2j这4个字符.我现在知道需要通过另外某些途径才行.比如在一个C文件中,或者是按键绑定中,或者是linux的某些配置文件中.甚至不一定是ESC,连\r这种转义序列也是.
但这些我都说不清为什么.谁能具体解释下?

其实linux terminal是支持的,不过输入这些special control char比较麻烦而已
不怎么用konsole,用putty给楼主举个例子,我的term是linux

$infocmp
#       Reconstructed via infocmp from file: /usr/share/terminfo/l/linux
linux|linux console,
        am, bce, ccc, eo, mir, msgr, xenl, xon,
...
        clear=\E[H\E[J, cnorm=\E[?25h\E[?0c, cr=^M,

所以在这个term里面,clear screen的sequence 是 "escape + [ + H + escape + [ + J" , \E 表示 escape键

如果我想在shell里面输入这个sequence来达到clear screen的效果,有几种办法
a) 直接执行clear,这个util会输出这串sequence到当前term
     如果检查clear的输出结果就会看到一样的sequence
     $clear |od -tx1
     0000000 1b 5b 48 1b 5b 4a
     0000006
b) 用echo的 -e 模式来输入
     /bin/echo -e "\x1b\x5b\x48\x1b\x5b\x4a"
     注意用/bin/下面的echo而不是shell builtin的echo
c)  楼主所要求的raw 输入, 是用ctl-v来实现的, 键盘序列为
      ctrl-V + escape + [ + H + ctrl-V + escape + [ + J + enter
      会看到类似这样的显示
      $^[[H^[[J

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    awk循环读取文件行内容,如果
    将文件插入到文件的shell代码
    pcre-config for libpcre no
    makefile每运行一个命令都会
    mkdir()每天建一个以日期位名
    扩展lvm时分配空间为0
    error: implicit declaratio
    SMTP server problem No rou
    怎么用sed或awk来进行替换XM
    三星4412开发板uboot烧写板子
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |