So erhalten Sie die keycodes in Python
Muss ich wissen, was gedrückt wird, aber nicht noch den code des Zeichens, ich möchte wissen, wenn jemand drücken der 'A' - Taste, auch wenn Sie den Schlüssel erhalten wird, ist 'a' oder 'A', und so mit allen anderen Tasten.
Ich kann nicht mit PyGame oder jede andere Bibliothek (mit Tkinter). Nur Python-Standard-Bibliothek. Und diese müssen getan werden, in einem terminal, nicht eine grafische Oberfläche.
NICHT, MÜSSEN SIE DIE ZEICHEN-CODE. ICH MUSS WISSEN, DEN SCHLÜSSEL-CODE.
Ex:
ord('a') != ord('A') # 97 != 65
someFunction('a') == someFunction('A') # a_code == A_code
- Grafische oder terminal-Benutzeroberfläche?
- Windows oder Linux? Bitte aktualisieren Sie die Frage, anstatt fügen Sie einen weiteren Kommentar.
- Bitte aktualisieren Sie Ihre Frage mit "Edit" markiert, um zu zeigen, wo Sie erweiterte Frage.
- TKinter ist Teil der standard python Bibliothek. Es ist im Lieferumfang von python für viele Jahre.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen tty standard-Modul. Es ermöglicht die Umschaltung vom Standard-line-orientiert (gekocht) - Modus in die char-orientierten (cbreak) - Modus mit tty.setcbreak(sys.stdin). Lesen einzelne char aus sys.stdin wird in der nächsten gedrückten Taste der Tastatur (wenn es code generiert):
Hinweis: die Lösung ist Unix (einschließlich Linux) nur.
Edit: unter Windows versuchen msvcrt.getche()/getwche(). /me ist nirgendwo zu versuchen...
Edit 2: Nutzen Sie win32 low-level console-API über ctypes.windll (siehe Beispiel an SO) mit
ReadConsoleInput
Funktion. Sollten Sie herausfiltern, die Tastendrücke -e.EventType==KEY_EVENT
und suchene.Event.KeyEvent.wVirtualKeyCode
Wert. Beispiel der Anwendung (nicht in Python, nur um eine Vorstellung zu bekommen) finden Sie bei http://www.benryves.com/tutorials/?t=winconsole&c=4.Je nachdem, was Sie versuchen zu erreichen, vielleicht mit Hilfe einer Bibliothek wie pygame würde tun, was Sie wollen. Pygame enthält erweiterte Tastendruck-Handhabung als normalerweise verfügbar mit Python standard-Bibliotheken.
Wahrscheinlich haben Sie zu verwenden Tkinter, das ist die "standard" - Python-gui, und wurde mit python für viele Jahre.
Einem command-line-Lösung ist wahrscheinlich nicht verfügbar, weil die Art der Daten geht in die und aus der command-line-Prozesse. GUI-Programme (von einigen Geschmack oder andere) erhalten alle Benutzer-Eingabe durch ein (eventuell Bibliothek gewickelt) event-stream. Jede Veranstaltung wird eine Aufzeichnung der Veranstaltung details. Für Tastenanschläge, so wird der Datensatz enthält möglicherweise einen Schlüsselcode, Zusatztaste Bitfeld, oder Zeichen in einigen Codierung. Welche Felder und wie Sie benannt sind, hängt von der event-Bibliothek, die Sie anrufen.
Kommandozeilen-Programme erhalten, die Benutzereingaben durch character-streams. Es gibt keine Möglichkeit, Sie zu fangen untere-Ebene-Daten. Als myroslav erklärt in seinem Beitrag, tty ' s können in gekochtem oder ungekochtem-Modus, nur mit dem Unterschied, dass in gekochtem Modus das terminal-Prozess (einige) steuerzeichen für Sie, wie löschen, und geben Sie, so dass der Prozess empfängt die Zeilen der Eingabe, anstatt 1 Zeichen zur Zeit.
Verarbeitung etwas niedriger als erforderlich (OS abhängig) - system-calls oder öffnen character devices in /dev. Python standard-Bibliothek bietet keine standard-Werk für diese.
Wenn Sie brauchen, um in windows arbeiten, nur sollten Sie versuchen,msvcrt.
Die offensichtliche Antwort:
oder, in anderen (Schlüssel -) Worte:
etc...
Hier ist eine Umsetzung des getch-Funktion, die Windows-und Linux-Plattformen, basierend auf diesem Rezept:
diese Funktion gibt den code für die groß-Charakter:
- und dies ist für die Kleinbuchstaben-code:
diese Weise ist viel einfacher, und Sie brauchen nicht zu importieren von externen Bibliotheken.
Müssen Sie wählen Sie eine der zwei Methoden, um die "someFunction" Sie beschrieben Ihre Frage. Hier ist ein Beispiel:
AUSGABE:
Werfen Sie einen Blick auf pynput - Modul in Python. Es hat auch eine schöne tutorial mit denen können Sie problemlos erstellen Tastatur-Hörer für Ihren code.
Den offiziellen Beispiel-für die Zuhörer ist:
Hoffe, das hilft.