我有一个程序,我只需要在linux终端(xterm和console)中读取特殊键。目前我正在使用curses
来做这件事(虽然我绝对不需要其他任何诅咒),除了一个麻烦外它完美无缺:我不想让诅咒清除屏幕并改变CRLF模式
也就是说,这段代码会这样做:
stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
while True:
c = stdscr.getch()
if c == curses.KEY_UP:
scroll_up()
elif c == curses.KEY_DOWN:
scroll_down()
但复杂的是它会清除屏幕,并且看不到终端上的先前内容;此外,后台进程的所有输出都会将换行符转换为换行符。
我知道我可以自己将终端转为未烹饪模式,在ESC
字符之后延迟,等等,但是我希望这个程序能够使用特殊键,例如 F1 , Home 和↑在所有终端上一致,因此它将是PITA
因此有任何方法
newterm
,但它不是由Python实现的),或 < / LI>
答案 0 :(得分:2)
(从评论中移出)
也许看看https://bitbucket.org/pypy/pyrepl
。这是基于诅咒但不清除屏幕。应用程序pythoni
和pythoni1
提供了一个不会使用readline
的Python提示,但提供了一个类似的界面,还有一些额外的内容,如多行编辑(如果我们尝试输入多线命令。)
要回答您的最新评论:箭头键适用于我pythoni
和pythoni1
...