Seite 1 von 1

Tasten input darstellen

Verfasst: Sonntag 2. Juli 2017, 18:29
von Sedi.py
Hey,

für mein Projekt würde ich gern gedrückte Tasten darstellen lassen. Es darf jedoch kein Fenster dafür benötigt werden. Ich bin dabei auf pynput gestoßen und mit dem Code funktioniert die Tastenerkennung schon sehr gut:

Code: Alles auswählen

from pynput import keyboard

def on_press(key):
    
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        
        print('special key {0} pressed'.format(
            key))
    
    return key



def on_release(key):
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False





def main (key):

    pressed_key= (on_press(key))
    print(pressed_key)

if __name__ =="__main__":
    main(key)




# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release,
        main = main ) as listener:
    listener.join()
 
das Problem ist nur, dass die Tasten ausschließlich in der on_press Funktion erkannt bzw. ausgegeben werden. Ich würde jedoch gerne mit diesen in der main weiter arbeiten bzw. sie ausgeben lassen. Schwer zu beschreiben, also die on_press-Funktion soll nur eine gedrückte Taste erkennen und an die main übergeben.

Hat jemand dazu Ideen oder Gedanken?
Vielen Dank schon einmal!
:)

Re: Tasten input darstellen

Verfasst: Sonntag 2. Juli 2017, 23:12
von BlackJack
@Sedi.py: Entweder musst Du das so benutzen wie die API nun mal ist, oder Du musst das zum Beispiel über eine `Queue` in den Hauptthread bringen.

Re: Tasten input darstellen

Verfasst: Mittwoch 5. Juli 2017, 14:03
von Sedi.py
Hey, danke für die Antwort!

Wie meinst du das mit der Queue? Hast du dazu etwas was ich mir durchlesen kann wie es in etwa funktioniert?

Ansonsten gibt es keine andere Möglichkeit einen "key press" darzustellen?
Für Windows gibt es Winpy32 mit dem es super einfach funktioniert.

Re: Tasten input darstellen

Verfasst: Mittwoch 5. Juli 2017, 14:21
von BlackJack
@Sedi.py: Wenn eine Taste erkannt wurde schmeisst Du die Information in geeigneter Form in eine `Queue.Queue` (Python 2) oder `queue.Queue` (Python 3) und im Hauptthread holst Du die dann da der Reihe nach raus.

Was willst Du denn eigentlich machen?

Re: Tasten input darstellen

Verfasst: Mittwoch 5. Juli 2017, 16:30
von Sedi.py
Ok, danke! Werde mir das mal genauer angucken.

Ich habe vor eine KI zu Tetris zu programmieren. Und für mein CNN brauche ich Trainingsdaten, dafür brauche ich ein Bild und zu dem aufgenommenem Bild einen Tasten-Input. Den visuellen Part habe ich schon, das Problem ist wie beschrieben, dass ich die gedrückten Tasten mit der Main nicht aufrufen und somit nicht mit abspeichern kann. Ich hoffe ich konnte es einigermaßen verständlich darstellen. :D

Re: Tasten input darstellen

Verfasst: Mittwoch 5. Juli 2017, 16:45
von __deets__
Waere es da nicht viel einfacher ein bestehendes Tetris zu nehmen & einfach eine Tasten-Visualisierung einzubauen?

Zb das hier: http://jordantrudgett.com/stuff/tetris_73.zip