curses getch()在python中为主窗口和pad返回不同的值
如果按下的键是非ASCII键,则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
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)
确保诅咒为您解释转义序列。是否有任何方法可以自动为所有窗口设置此选项?