3

getch()押されたキーが非 ASCII の場合、このメソッドはメイン ウィンドウとパッドに対して異なる値を返します。たとえば、矢印キーを押すと、メイン ウィンドウで予期されるKEY_UPなどが表示さKEY_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 に答える