【发布时间】:2017-04-10 08:18:18
【问题描述】:
我正在尝试使用 Python 中的 TIOCSTI 将组合键(如 ALT+.)注入 tty。
对于某些组合键,我使用以下 table 找到了 Bash shell 的相应十六进制代码,效果很好。
从这个表中我可以看到例如 CTRL+A 是'\x01' 等等。
import sys,os,Queue
import termios,fcntl
# replace xx with a tty num
tty_name = "/dev/pts/xx";
parent_fd = os.open(tty_name, os.O_RDWR)
special_char = "Ctrl_a"
if special_char == "Ctrl_a":
send_char = '\x01'
if special_char == "Ctrl_e":
send_char = '\x05'
if special_char == "Ctrl_c":
send_char = '\x03'
fcntl.ioctl(self.parent_fd, termios.TIOCSTI, send_char)
但是我怎样才能获得其他组合的十六进制代码,例如 ALT+f 等。我需要一个完整的列表或方法来获取任何可能的组合的此信息,因为我想实现大多数 bash 快捷方式来移动、操纵历史等注入。
或者有没有其他方法可以使用 TIOCSTI 注入组合键?
由于我只能将单个字符发送到 tty,所以我想知道是否还有其他可能。
非常感谢您的帮助!
【问题讨论】:
标签: bash key combinations tty ioctl