Tastaturfunktionen (Keyboard)
Klasse Keyboard
Die Keyboard
-Klasse wird verwendet, um Tastaturantworten zu erfassen. Normalerweise erstellen Sie
ein Keyboard
-Objekt mit der Keyboard()
-Fabrikfunktion, wie in dem
Abschnitt Ein Keyboard erstellen beschrieben.
Beispiel
# Warten auf eine 'z'- oder 'x'-Taste mit einer Zeitüberschreitung von 3000 ms
my_keyboard = Keyboard(keylist=['z', 'x'], timeout=3000)
start_time = clock.time()
key, end_time = my_keyboard.get_key()
response = key
response_time = end_time - start_time
Wissenswertes
Erstellen eines Keyboards
Erstellen Sie normalerweise ein Keyboard
mit der Keyboard()
-Fabrikfunktion:
my_keyboard = Keyboard()
Optional können Sie Antwort-Keywords an Keyboard()
übergeben, um das Standardverhalten festzulegen:
my_keyboard = Keyboard(timeout=2000)
Tastennamen
- Tastennamen können sich zwischen Backends unterscheiden.
- Tasten können entweder durch Zeichen oder Name identifiziert werden und sind nicht auf Groß- und Kleinschreibung angewiesen. Zum Beispiel:
- Die Taste 'a' wird durch 'a' und 'A' dargestellt
- Der Pfeil nach oben wird durch 'up' und 'UP' dargestellt
- Die Taste '/' wird durch '/', 'slash' und 'SLASH' dargestellt
- Die Leertaste wird durch 'space' und 'SPACE' dargestellt
- Um den Namen einer Taste herauszufinden, können Sie:
- Klicken Sie auf die Schaltfläche "Verfügbare Schlüssel auflisten" des keyboard_response-Elements.
- Erfassen Sie einen Tastendruck mit einem keyboard_response-Element und zeigen Sie den Tastennamen durch einen feedback-Artikel mit dem Text "Sie haben [response]" darauf gedrückt an.
Antwort-Keywords
Funktionen, die **resp_args
akzeptieren, nehmen die folgenden Stichwortargumente an:
timeout
gibt einen Timeout-Wert in Millisekunden an oder wird aufNone
gesetzt, um den Timeout zu deaktivieren.keylist
gibt eine Liste der akzeptierten Tasten an oder wird aufNone
gesetzt, um alle Tasten zu akzeptieren.
# Hole einen linken oder rechten Pfeildruck mit einer Zeitüberschreitung von 3000 ms
my_keyboard = Keyboard()
key, time = my_keyboard.get_key(keylist=[u'left', u'right'], timeout=3000)
Antwort-Keywords wirken sich nur auf die aktuelle Operation aus (außer wenn sie an
Keyboard()
übergeben werden). Um das Verhalten für alle nachfolgenden zu ändern
Operationen, setzen Sie die Antwort-Eigenschaften direkt:
# Erhalte zwei Tastendrücke A oder B mit einer Zeitüberschreitung von 5000 ms
my_keyboard = Keyboard()
my_keyboard.keylist = [u'a', u'b']
my_keyboard.timeout = 5000
key1, time1 = my_keyboard.get_key()
key2, time2 = my_keyboard.get_key()
Oder übergeben Sie die Antwortoptionen an [keyboard.init][init]:
# Erhalte zwei Tastendrücke A oder B mit einer Zeitüberschreitung von 5000 ms
my_keyboard = Keyboard(keylist=[u'a', u'b'], timeout=5000)
key1, time1 = my_keyboard.get_key()
key2, time2 = my_keyboard.get_key()
flush(self)
Löscht alle ausstehenden Tastatureingaben, nicht nur auf die Tastatur beschränkt.
Gibt zurück
- True, wenn eine Taste gedrückt wurde (dh wenn es etwas zum Löschen gab), und False andernfalls.
get_key(*arglist, **kwdict)
Sammelt einen einzelnen Tastendruck.
Parameter
- **resp_args: Optionale Antwort-Keywords (
timeout
undkeylist
), die für diesen Aufruf vonKeyboard.get_key()
verwendet werden. Dies wirkt sich nicht auf nachfolgende Operationen aus.
Gibt zurück
- Ein
(key, timestamp)
Tupel.key
ist None, wenn ein Timeout auftritt.
Beispiel
my_keyboard = Keyboard()
response, timestamp = my_keyboard.get_key(timeout=5000)
if response is None:
print(u'Es ist eine Zeitüberschreitung aufgetreten!')
get_key_release(*arglist, **kwdict)
Neu in v3.2.0
Sammelt eine einzelne Tastenfreigabe.
Wichtig: Diese
Funktion geht derzeit von einem QWERTY-Tastaturlayout aus
(unähnlich
Keyboard.get_key()
). Das bedeutet, dass der zurückgegebene
key
falsch sein könnte bei
nicht-QWERTY-Tastaturlayouts. Darüber hinaus ist
diese Funktion nicht für das psycho-Backend implementiert.
Parameter
- **resp_args: Optionale Antwort-Keywords (
timeout
undkeylist
), die für diesen Aufruf vonKeyboard.get_key_release()
verwendet werden. Dies wirkt sich nicht auf nachfolgende Operationen aus.
Gibt zurück
- Ein
(key, timestamp)
Tupel.key
ist None, wenn ein Timeout auftritt.
Beispiel
my_keyboard = Keyboard()
response, timestamp = my_keyboard.get_key_release(timeout=5000)
if response is None:
print(u'Ein Timeout ist aufgetreten!')
get_mods(self)
Gibt eine Liste der momentan gedrückten Tastatur-Moderatoren (z.B. Umschalttaste, Alt, etc.) zurück.
Returns
- Eine Liste der Tastatur-Moderatoren. Eine leere Liste wird zurückgegeben, wenn keine Moderatoren gedrückt sind.
Beispiel
my_keyboard = Keyboard()
moderators = my_keyboard.get_mods()
if u'shift' in moderators:
print(u'Die Umschalttaste ist gedrückt!')
show_virtual_keyboard(visible=True)
Zeigt oder verbirgt eine virtuelle Tastatur, wenn dies von der
Back-End unterstützt wird. Diese Funktion ist nur notwendig, wenn die virtuelle
Tastatur sichtbar bleiben soll, während mehrzeilige Antworten gesammelt werden.
Andernfalls wird Keyboard.get_key()
implizit die Tastatur für eine einzelne Zeichenantwort anzeigen und
ausblenden.
Diese Funktion tut nichts für Back-Ends, die keine virtuellen Tastaturen unterstützen.
Parameter
- visible: True, wenn die Tastatur angezeigt werden soll, False sonst.
Beispiel
my_keyboard = Keyboard()
my_keyboard.show_virtual_keyboard(True)
response1, timestamp1 = my_keyboard.get_key()
response2, timestamp2 = my_keyboard.get_key()
my_keyboard.show_virtual_keyboard(False)
synonyms(key)
Gibt eine Liste von Synonymen für einen Tastennamen oder Tastencode zurück. Synonyme beinhalten alle Variablen als Typen und als Unicode-Zeichenketten (falls zutreffend).
Returns
- Eine Liste von Synonymen
valid_keys(self)
Versucht zu erraten, welche Tastennamen vom Back-End akzeptiert werden. Zur internen Verwendung.
Returns
- Eine Liste gültiger Tastennamen.