Spezielle Tasten ansteuern in Python!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Hallo zusammen,

ich will momentan ein wenig rumspielen und frage mich wie man speziella Tasten auf der Tastatur ansteuern kann? z.B.: möchte ich der Escape-Taste in meinem Programm eine spezielle Funktion zuweisen. Wie soll ich das anstellen?

Habe jetzt dafuer nur raw_input() gefunden, gibt es noch eine Alternative dafuer?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Schau dir mal Urwid an.
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

OK, habe jetzt gerade mal ein wenig mit urwd rumgespielt und es bietet wahrscheinlich auch alles was ich brauche.

Ich möchte jetzt zwar nicht das Rad neu erfinden, aber wüsste schon gerne, ob dass (also reagieren auf Spezialtasten z.b.: Pfeiltasten, strg, enter, etc.) auch mit Python-Boardmitteln machbar ist.

Ich habe nach ein wenig googlen noch das Python Modul curses gefunden. Ohne da jetzt weiter reingeschaut zu haben. Hat jemand damit Erfahrung bzw. ist es das was ich suche?

VG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bankkind hat geschrieben:Ich habe nach ein wenig googlen noch das Python Modul curses gefunden. Ohne da jetzt weiter reingeschaut zu haben. Hat jemand damit Erfahrung bzw. ist es das was ich suche?
Urwid nutzt curses aber curses willst du gar nicht selbst nutzen, außer du magst rausfinden warum es auf englisch "Flüche" heißt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

OK, habe ich verstanden.

Gibt es ansonsten noch andere alternativen?
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Hallo nochmal zusammen,

ich muss das Thema nochmal aufgreifen, habe leider immer noch keine saubere Loesung gefunden ohne ein MegaModul zu implementieren. ich will ausschliesslich Sondertasten wie z.B.: ESC, Cursor, evtl FUnktionstasten bestimmte Funktionionen zuweisen.

Das muss doch machbar sein? Desweiteren moechte ich eine Loesung die unter Linux und Windows gleichermassen bzw. relativ aehnlich funktioniert.

Gibt es irgendetwas?

Ich muss ja anscheinend nur eine Tasteneingabe abfangen, irgendwie, und das Steuerzeichen uebersetzen/vergleichen oder?
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Ich muss ja anscheinend nur eine Tasteneingabe abfangen, irgendwie, und das Steuerzeichen uebersetzen/vergleichen oder?
Mit den Funktionen kbhit/getch kannst Du die Eingabe direkt abfragen. Für Windows gibts die Funktionen im Modul msvcrt, für POSIX im Netz oder hier --> http://www.python-forum.de/viewtopic.ph ... 32#p151032

So findest Du die Keycodes:

Code: Alles auswählen

while True:
    time.sleep(.1)
    raw = ''
    while kbhit():
        raw += getch()
    if raw:
        print repr(raw)
Die Codes sind allerdings von Terminaltyp abhängig. Windows nutzt völlig andere als ANSI-Terminals, wobei sich letztere auch unterscheiden können (hier reicht Dir wahrscheinlich xterm als Standard). Nicht zuletzt deshalb wurde die curses-Bibliothek entwickelt ;)
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Hallo jerch,

das ist genau das was ich suche.

Allerdings hast du wohl recht, dass das hier ein komplexes Thema ist. Bevor ich da eine Plattform unabhaengige Loesung habe, suche ich mir lieber eine andere Loesung. Bzw. greife doch auf curses zurueck. Wobei es curses nicht unter Win32 gibt oder?
Antworten