3

我正在UNIX下用Python编写一个curses应用程序。我想让用户能够使用 CY 从 Emacs 的杀戮环中拉出。

当然,问题是 CY 被我的 shell 捕获,然后将 SIGTSTP 发送到我的进程。此外,CZ 还会导致 SIGTSTP 被发送,因此捕获信号意味着 CY 和 CZ 无法区分(尽管即使没有这个,我能想到的唯一解决方案也是非常骇人听闻的)。

我知道我要问的是可能的(如果不是在 Python 中,在 C 中),因为 Emacs 做到了。如何禁用 shell 对从键盘发送的某些控制字符的特殊处理,并使有问题的字符出现在进程的标准输入中?

4

2 回答 2

2

请参阅termios模块和termios(3)手册页。

于 2010-01-13T05:27:45.833 回答
1

对于基本功能,请使用tty. 例如,调用tty.setraw(sys.stdin)会将标准输入的终端置于原始模式。

对于更一般的情况,Python 附带了一个termios 库,但您可能需要一些有关 termios 的经验才能知道如何使用它。

或者,一种廉价的方法是使用 shell stty,它是 termios 的命令行界面。

于 2010-01-13T05:26:30.190 回答