k = stdscr.getch()
if k == curses.KEY_UP:
sys.stdout.write('KEY_UP')
elif k == curses.KEY_F1:
sys.stdout.write('KEY_F1')
elif k == 113:
break
else:
pass
https://docs.python.org/2/library/curses.htmlPythonの呪い内
をF1-F12を検出する方法上記のコードは 'Q' とarrow_upを検出するために使用することができます。ただし、F1の検出には使用できません。
質問>特殊なファンクションキーを検出するために私が使用できるpython cursesの方法はありますか?
[更新]
私の端末タイプはxtermです。
elif k == 269: # 'F5'
elif k == 270: # 'F6'
elif k == 271: # 'F7'
elif k == 272: # 'F8'
elif k == 273: # 'F9'
elif k == 27: # 'ESC'
special_keys = [stdscr.getch(), stdscr.getch(), stdscr.getch(), stdscr.getch()]
if special_keys == [91, 49, 49, 126]:
sys.stdout.write('F1\n')
if special_keys == [91, 49, 50, 126]:
sys.stdout.write('F2\n')
if special_keys == [91, 49, 51, 126]:
sys.stdout.write('F3\n')
if special_keys == [91, 49, 52, 126]:
sys.stdout.write('F4\n')
@pbuckからの提案に基づいて、私は自分の端末をテストし、上記の結果を列挙しました。このソリューションが移植可能かどうかはわかりません。 @pbuckはESCの後に次の2つのキーを使うべきだと提案して以来。私の場合は、次の4つのキーを抽出する必要があります。
F1などを検出できない場合は、 'TERM'が正しく設定されていないためです。 –
@ThomasDickeyので、私は正しいTERMを使用する必要があります。私が正しいTERMを知っていたら、私はここに質問を投稿しません。 – q0987
異なる端末では、** 'TERM' **の値が異なっている必要があります(あなたの質問はあなたが使っている端末を示していません)。 –