Einzelzeichen auslesen ohne return

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
alpich
User
Beiträge: 4
Registriert: Montag 1. Februar 2021, 23:10

Hallo,
ich bin Beginner und habe das Problem ein einzelnes Zeichen einzulesen über die Tastatur ohne mit return abzuschließen.
(Spezial-USB-Tastatur hat nur 2 Zeichen: Leerzeichen und Q, kein Return)

status = os.read(1, 1)
print ("status-",status,"-")
wartet bis zum jüngsten Tag auf das Return, ebenso input ().
Jetzt habe ich schon x Bücher durch geforstet und bin nicht schlauer geworden.
Jeder Editor stellt ein Zeichen sofort dar. Es muss also eine Lösung geben.
Ach ja, mein Englisch reicht nicht um Feinheiten zu erkennen.
hier mein Programmergebnis von oben (nach Eingabe von return nach einem Leerzeichen per Original-Tastatur, die es aber im echten Einsatz nicht mehr geben wird)

:~$ python ~/Ausw.py

status- b' ' -

Wäre dankbar für eine Lösung.
Danke
Alfred
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist halt nichts, was man normalerweise so braucht, und deshalb muß man tief ins System eingreifen.

Code: Alles auswählen

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)
alpich
User
Beiträge: 4
Registriert: Montag 1. Februar 2021, 23:10

Funktioniert prima. Danke
Alfred
Antworten