不按下回车键即可读取任何按下的键

17 浏览
0 Comments

不按下回车键即可读取任何按下的键

我需要读取用户按下的键,而无需等待回车键。

我想要读取字符和箭头键。

我使用的解决方案与该主题相同。

import sys,tty,termios
def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(3)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch
while(1):
    k=getch()
if k=='\x1b[A':
    print "上"
elif k=='\x1b[B':
    print "下"
elif k=='\x1b[C':
    print "右"
elif k=='\x1b[D':
    print "左"

如果我想要读取箭头键,我使用ch = sys.stdin.read(3),如果我想要读取单个字符,我使用ch = sys.stdin.read(1),但我需要读取两种类型的键。

剩下的脚本是用Python 2.7编写的,将在Linux系统上运行。

因为我不是系统管理员,请不要建议安装新包。

0