我正在UNIX下用Python编写一个curses应用程序。我想让用户使用C-Y从杀戮戒指和Emacs中拉出来。
当然,问题是我的shell捕获了C-Y,然后将SIGTSTP发送到我的进程。此外,C-Z也会导致SIGTSTP被发送,因此捕获信号意味着C-Y和C-Z无法区分(尽管如此,即使没有这个,我能想到的唯一解决方案是非常hackish)。
我知道我所要求的是什么(在C中,如果不是在Python中),因为Emacs做到了。如何禁用shell对键盘发送的某些控制字符的特殊处理,并在进程'stdin上显示有问题的字符?
答案 0 :(得分:2)
请参阅termios
模块和termios(3)
手册页。
答案 1 :(得分:1)
要获得基本功能,请使用tty
。例如,调用tty.setraw(sys.stdin)
会将标准输入的终端置于原始模式。
对于更一般的情况,Python附带termios library,但您可能需要一些使用termios的经验才能知道如何使用它。
或者,一种廉价的方法是向stty
发送shell,这是termios的命令行界面。