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

时间:2017-10-06 22:10:28

标签: linux ansi-escape

如何在终端应用程序(例如Konsole)发送转义序列时捕获转义序列?例如,如果你点击 PgDown ,会发送什么到虚拟控制台?

我想记录发送到虚拟控制台的字节流(比如当我点击" Ctrl + C"它产生什么转义序列)到一个文件,我可以用hexdump读取。

1 个答案:

答案 0 :(得分:0)

我做了一个小蟒蛇脚本来做这个伎俩:

#!/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()

...清除屏幕,然后键入一个键(例如 a ),然后键入任何内容,并键入与要停止的第一个键相同的键。然后,它将显示收到的所有字节(例如: a [开始录制]   Alt + b [停止录制] a 使用我的终端生成字节:['0x1b', '0x62']