Sie können das Curses-Modul verwenden, um den Schlüssel zu bestimmen. Hier ist eine Methode, die nicht davon abhängt https://docs.python.org/ja/3/library/curses.html#constants
Dies ist mein eigenes Memo. Es ist eine einfache Implementierung. Ich möchte feststellen, dass ein Sonderzeichen wie ein Kreuzschlüssel eingegeben wurde.
Voraussetzung ist die Kenntnis der Unicode-Steuerzeichen. wikipedia
getch erhält die Eingabe zeichenweise. Die Pfeiltasten mussten jedoch dreimal eingegeben werden. Auf dem Aufwärtspfeil steht beispielsweise "27 91 65". Wenn nichts unternommen wird, können nicht nur keine Sondertasten wie Pfeiltasten ermittelt werden, sondern es werden auch unerwünschte Eingaben empfangen. Deshalb habe ich es wie folgt implementiert.
getch Eine Funktion, die eine einzelne Zeicheneingabe akzeptiert ord ist eine Funktion, die Zeichen in Unicode konvertiert. chr ist eine Funktion, die Unicode in Zeichen konvertiert. Der Code ist redundant, was für mich auch als Debugging dient.
#Bereiten Sie eine Funktion vor, die Zeichen für Zeichen anstelle von Eingaben empfängt.
#Versuchen Sie es für Windows, außer Nonaka für Linux
try:
from msvcrt import getch
except ImportError:
import sys
import tty
import termios
def getch():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
#Alias für Unicode-Steuerzeichen
EOT = 3
TAB = 9
ESC = 27
#Hauptschleife
while True:
key = ord(getch())
if key == EOT:
break
elif key == TAB:
print('keydown TAB')
elif key == ESC:
key = ord(getch())
if key == ord('['):
key = ord(getch())
if key == ord('A'):
print('keydown uparrow')
continue
elif key == ord('B'):
print('keydown downarrow')
continue
elif key == ord('C'):
print('keydown leftarrow')
continue
elif key == ord('D'):
print('keydown rightarrow')
continue
else:
message = f'keydown {chr(key)}'
print(message)
Sie können sehen, dass das Urteil richtig getroffen wurde.
Ich habe es diesmal nicht implementiert, weil der Code redundant wird. Wenn Sie sich jedoch den Unicode ansehen, wenn Sie einen speziellen Schlüssel eingeben und alle mit bedingter Verzweigung aufzählen, können Sie ein Urteil fällen. Der ähnliche Code in diesem Artikel kann beim Erstellen Ihrer eigenen Anwendung hilfreich sein. Wenn jemand eine gute Schreibweise kennt, lass es mich wissen.