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

curses getch()在python中为主窗口和pad返回不同的值,python,curses,getch,Python,Curses,Getch,如果按下的键是非ASCII键,则getch()方法会为主窗口和键盘返回不同的值。例如,按下箭头键,我在主窗口中获得了预期的键向上,键向下等,但在键盘中,我获得了65的向上箭头和66的向下箭头。为什么会这样?有没有办法让键盘中的特殊键的值大于255 我正在使用Python 2.6.5 以下代码演示了该问题: import curses def main(stdscr): c = None while c != curses.KEY_RIGHT: c = stdsc

如果按下的键是非ASCII键,则
getch()
方法会为主窗口和键盘返回不同的值。例如,按下箭头键,我在主窗口中获得了预期的
键向上
键向下
等,但在键盘中,我获得了
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)

我无法直接回答您的问题,但我观察到65和66是“a”和“B”的ASCII值,这恰好是上下箭头使用的CSI或SS3命令。

您尝试过吗
键盘(1)


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

谢谢@LeoNerd,这让我开始做进一步的调查。我不熟悉术语CSI和SS3,但发现“CSI在7位连接上是ESC后跟左括号([),在8位连接上是十进制155,而SS3在7位连接上是ESC后跟O(大写字母O),在8位连接上是十进制143。”我会点击“这个答案很有用”,但我没有足够的声誉。是的,设置
窗口。键盘(1)
确保诅咒为您解释转义序列。是否有任何方法可以自动为所有窗口设置此选项?