0
私は、Pythonで単一のキー押しを読み取る方法について多くの質問をしました。 Windowsの場合、答えは、動作するmsvcrtモジュールを使用すると言います。Python 2.7:Linuxでの単一のキー押下(特殊文字を含む)を読むにはどうすればよいですか?
import termios, fcntl, sys, os
def kbhit():
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while True:
try:
c = sys.stdin.read(1)
return True
except IOError:
return False
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
またはこの:しかし、Linuxの場合、彼らはこのようなものを使用
def __init__(self):
import tty, sys
def __call__(self):
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
getch = _Getch()
これら二つの問題は、彼らがCNTRL-Cなどの特殊文字を読んでいないということです
(^ C)または矢印キー。矢印キーのような特殊文字を含むを含む単一のキー押しを読むLinuxの方法はありますか?