Seite 1 von 1

Einzelzeichen auslesen ohne return

Verfasst: Montag 17. Januar 2022, 21:40
von alpich
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

Re: Einzelzeichen auslesen ohne return

Verfasst: Montag 17. Januar 2022, 22:40
von Sirius3
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)

Re: Einzelzeichen auslesen ohne return

Verfasst: Dienstag 18. Januar 2022, 11:55
von alpich
Funktioniert prima. Danke
Alfred