curses.KEY_ENTER
和 curses.KEY_BACKSPACE
的值 stdscr.getch
似乎永远不会返回,那么它们有什么意义呢?我的代码是否应该测试它们?
为什么
c = stdscr.getch()
if c in (curses.KEY_BACKSPACE, curses.ascii.DEL):
...
当
stdscr.getch()
永远不可能具有 curses.KEY_BACKSPACE
的值时?
我读到,
curses.KEY_*
代码对于可能没有 ASCII 值的特殊键很有用,例如 KEY_UP 等,但是如果您正在测试 ascii 键,检查 curses.KEY_*
有什么意义吗?
OP 没有提供完整的代码示例。 如果 python 文档不完整或模糊,请尝试 ncurses 联机帮助页。 一般来说,curses中的
KEY_xxx
符号是通过键盘功能启用的(参见键盘模式):
同一联机帮助页中的注释部分说
有些击键与控制字符无法区分; 为了 例如,
可能与KEY_ENTER
相同,并且^M
可能是 与KEY_BACKSPACE
或^H
相同。 请查阅 terminfo 条目以了解终端类型 确定情况是否如此; 请参阅 infocmp(1)。 一些咒骂 包括 ncurses 在内的实现遵循 terminfo 键定义; 其他人特殊对待此类控制字符。^?
和
curses 区分字母和数字中的 Enter 键 键盘的小键盘部分,因为(大多数)终端都是如此。
指数字键盘上的键,与其他功能键一样, 仅当启用窗口键盘模式时才能可靠识别。KEY_ENTER