3

getch()如果按下的键不是 ASCII,则该方法会为主窗口和填充键返回不同的值。例如,按箭头键,我在主窗口中得到预期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)
4

2 回答 2

6

你试过了吗 pad.keypad(1)

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

于 2013-07-08T21:13:19.057 回答
1

我没有直接回答你的问题,但我观察到 65 和 66 是 'A' 和 'B' 的 ASCII 值,它们恰好是向上和向下箭头使用的 CSI 或 SS3 命令。

于 2012-10-10T11:17:24.430 回答