我在UNIX下用Python编写一个curses应用程序。我想让用户使用C-Y从一个杀戮环拉Emacs。在
问题是,当然,C-Y被我的shell捕获,然后它将SIGTSTP发送到我的进程。此外,C-Z也会导致SIGTSTP被发送,所以捕捉到信号意味着C-Y和C-Z是不可区分的(尽管没有这个,我能想到的唯一解决方案都是非常老套的)。在
我知道我要问的是可能的(如果不是Python,用C语言),因为Emacs做到了。如何禁用shell对从键盘发送的某些控制字符的特殊处理,并使这些字符出现在进程的stdin上?在
Tags:
请参阅
termios
模块和termios(3)
手册页。对于基本功能,请使用^{} 。例如,调用
tty.setraw(sys.stdin)
将使标准输入的终端进入原始模式。对于更一般的情况,Python附带了一个termios library,但是您可能需要一些termios的经验才能知道如何使用它。
或者,一种廉价的方法是将shell输出到
stty
,这是termios的命令行接口。相关问题 更多 >
编程相关推荐