curses getch()为python中的主窗口和pad返回不同的值

时间:2012-10-06 18:16:41

标签: python curses getch

如果按下的键是非ASCII,getch()方法会返回主窗口和打击垫的不同值。例如,按下箭头键我在主窗口中获得了预期的KEY_UPKEY_DOWN等,但在填充中,我得到了65的向上箭头和66向下箭头。为什么这样,并且有没有办法在垫中获得大于255的特殊键值?

我正在使用Python 2.6.5。

以下代码演示了此问题:

import curses

def main(stdscr):
    c = None
    while c != curses.KEY_RIGHT:
        c = stdscr.getch()
        stdscr.addstr(0, 0, "%3d" % c)
        stdscr.refresh()
    pad = curses.newpad(20, 20)
    while True:
        c = pad.getch()
        pad.addstr(0, 0, "%3d" % c)
        pad.refresh(0, 0, 1, 0, 20, 20)

if __name__ == '__main__':
    curses.wrapper(main)

2 个答案:

答案 0 :(得分:6)

你尝试过吗? pad.keypad(1)

这是我第一次需要用Python处理curses,今天早上我遇到了同样的问题。

答案 1 :(得分:1)

我对你的问题没有直接的答案,但我确实观察到65和66是'A'和'B'的ASCII值,这恰好是Up和使用的CSI或SS3命令。向下箭头。