有一个简单的程序:
import curses
import time
window = curses.initscr()
curses.cbreak()
window.nodelay(True)
while True:
key = window.getch()
if key != -1:
print key
time.sleep(0.01)
curses.endwin()
如何启用不会忽略标准Enter键,退格键和箭头键功能的模式?或者只是将所有特殊字符添加到elif:
if event == curses.KEY_DOWN:
#key down function
我正在尝试模式curses.raw()
和其他模式,但没有效果......如果可以,请添加示例。
答案 0 :(得分:0)
以下示例允许您保留退格(请记住退格的ASCII代码为127):
import curses
import time
window = curses.initscr()
curses.cbreak()
window.nodelay(True)
# Uncomment if you don't want to see the character you enter
# curses.noecho()
while True:
key = window.getch()
try:
if key not in [-1, 127]:
print key
except KeyboardInterrupt:
curses.echo()
curses.nocbreak() # Reset the program, so the prompt isn't messed up afterwards
curses.endwin()
raise SystemExit
finally:
try:
time.sleep(0.01)
except KeyboardInterrupt:
curses.echo()
curses.nocbreak() # Reset the program, so the prompt isn't messed up afterwards
curses.endwin()
raise SystemExit
finally:
pass
key not in [-1, 127]
忽略打印127(ASCII DEL)或-1(错误)。您可以为此添加其他项目,用于其他字符代码。
try / except / finally用于处理Ctrl-C。这会重置终端,因此您不会在运行时出现奇怪的提示输出
以下是官方Python文档的链接,供将来参考:
https://docs.python.org/2.7/library/curses.html#module-curses
我希望这会有所帮助。
答案 1 :(得分:0)
stackoverflow.com/a/58886107/9028532中的代码可让您轻松使用任何键码!
https://stackoverflow.com/a/58886107/9028532
它表明它不会忽略标准ENTER,Backspace和Arrows键。 getch()正常工作。但是也许操作系统在 getch()自己获得机会之前就已经掌握了一些键。通常可以在操作系统中进行某种程度的配置。