如何捕获终端发送的转义序列?

问题描述:

如何捕获转义序列,因为它们是由终端应用程序发送的(例如Konsole)?例如,如果您点击PgDown,发送到虚拟控制台的是什么?如何捕获终端发送的转义序列?

我想记录发送到虚拟控制台的字节流(例如,当我点击“Ctrl + C”它生成的转义序列)到一个文件,然后我可以用hexdump读取。

+0

[记录的可能的复制终端运行一个安装脚本的排序](https://*.com/questions/6350046/logging-terminal-while-running-an-install-script-of-sorts) –

+0

不,这个问题提供了什么信息脚本编写等来记录它的执行情况,在这里,我想让字节流发送到虚拟控制台 –

+0

你只是正常阅读你的stdin,转义序列是s的一部分tream。顺便说一句Ctrl-C不是一个转义序列,它是一个单独的字符。 –

我做了一个小python脚本做的伎俩:

#!/bin/env python 

import curses 
from pprint import pprint 

buf = '' 

def main(stdscr): 
    global buf 
    curses.noecho() 
    curses.raw() 
    curses.cbreak() 
    stdscr.keypad(False) 

    stop = stdscr.getkey() 
    c = stdscr.getkey() 
    buf = '' 
    while c != stop: 
    buf += c 
    c = stdscr.getkey() 

def run(): 
    curses.wrapper(main) 
    pprint(buf) 
    tmp = buf.encode('latin1') 
    pprint([hex(x) for x in tmp]) 
    pprint([bin(x) for x in tmp]) 

run() 

...这清楚的画面,然后键入一个键(如一个),然后,输入任何东西,然后键入与第一个停止相同的密钥。然后,它会显示接收到的所有字节(例如:一个 [开始记录] Alt键 + b [停止录制] 一个产生字节:['0x1b', '0x62']与我的终端