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.html如何檢測蟒詛咒
上面的代碼可以被用於檢測 'Q' 和arrow_up內F1-F12。但是,它不能用於檢測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之後使用下兩個鍵。對於我的情況,我必須提取下四個鍵。
如果你無法檢測到F1等,這是因爲你有'TERM'設置不正確。 –
@ThomasDickey,那麼我應該使用什麼正確的TERM。如果我知道正確的TERM,我不會在這裏發表問題。 – q0987
不同的終端需要**'TERM' **的不同值(你的問題沒有說明你正在使用哪個終端)。 –