gpt4 book ai didi

python - 在不清除屏幕的情况下读取 linux 终端中的特殊键

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:43 24 4
gpt4 key购买 nike

我有一个程序,我只需要在 linux 终端(xterm 和控制台)中读取特殊键。目前我正在使用 curses 这样做(尽管我绝对不需要 curses 做任何其他事情),并且它完美地工作,除了一个麻烦:我不希望 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 之后延迟字符等等,但我希望这个程序在所有终端上始终如一地使用 F1Home 等特殊键,并且因此它会是 PITA

那么有没有办法要么

  • 避免使用 curses 清屏和改变换行模式(我读到 ncurses 的函数 newterm 可以用于它,但它不是由 Python 实现的),
  • 在清除屏幕后恢复原始屏幕并手动恢复 CRLF 行为等的任何方法,
  • 在 Linux 中有任何其他持续读取特殊键的简单方法吗?

最佳答案

(从评论中移出)

也许看看 https://bitbucket.org/pypy/pyrepl。它是基于诅咒的,但不会清除屏幕。应用程序 pythonipythoni1 提供了一个不使用 readline 的 Python 提示符,但提供了一个类似的界面,带有一些额外功能,例如多行编辑(以防我们尝试键入多行命令)。

回答您的最新评论:箭头键在 pythonipythoni1 中对我有用...

关于python - 在不清除屏幕的情况下读取 linux 终端中的特殊键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26113612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com