如何捕获终端发送的转义序列?
问题描述:
如何捕获转义序列,因为它们是由终端应用程序发送的(例如Konsole)?例如,如果您点击PgDown,发送到虚拟控制台的是什么?如何捕获终端发送的转义序列?
我想记录发送到虚拟控制台的字节流(例如,当我点击“Ctrl + C”它生成的转义序列)到一个文件,然后我可以用hexdump读取。
答
我做了一个小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']
与我的终端
[记录的可能的复制终端运行一个安装脚本的排序](https://*.com/questions/6350046/logging-terminal-while-running-an-install-script-of-sorts) –
不,这个问题提供了什么信息脚本编写等来记录它的执行情况,在这里,我想让字节流发送到虚拟控制台 –
你只是正常阅读你的stdin,转义序列是s的一部分tream。顺便说一句Ctrl-C不是一个转义序列,它是一个单独的字符。 –